このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。
アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。
京都大学霊長類研究所
データ構造,アルゴリズム,デザインパターン総合スレ 2
http://echo.2ch.net/test/read.cgi/tech/1362301811/
【関連スレ】
3Dアルゴリズム全般
http://toro.2ch.net/test/read.cgi/tech/1164171086/
<集大成>アルゴリズム大辞典
http://toro.2ch.net/test/read.cgi/tech/1086272325/
アルゴリズム総合スレ in ム板
http://toro.2ch.net/test/read.cgi/tech/1217773415/
アルゴリズムとデータ構造 - Kaneko Lab.
ttp://www.kkaneko.com/adp/algo/index.html
アルゴリズムとデータ構造 - ソースコード探険隊
ttp://www.codereading.com/algo_and_ds/
各種アルゴリズムの C++ による実装 - Spaghetti Source
ttp://www.prefield.com/algorithm/
アルゴリズムとデータ構造 - プログラミングスレまとめ in VIP
ttp://vipprog.net/wiki/algo_and_data_const.html
データ構造,アルゴリズム,デザインパターン総合スレ 3©2ch.net
■ このスレッドは過去ログ倉庫に格納されています
2016/06/19(日) 14:47:29.63ID:5KvSKdL/
201デフォルトの名無しさん
2016/12/21(水) 20:34:58.70ID:UR5SKYPV202デフォルトの名無しさん
2016/12/21(水) 20:39:27.31ID:RIWp4Ngq 不完全な問題出しておいて>>186はないよね
203デフォルトの名無しさん
2016/12/21(水) 20:41:22.47ID:UR5SKYPV204デフォルトの名無しさん
2016/12/21(水) 20:42:06.97ID:trArLuj5205デフォルトの名無しさん
2016/12/21(水) 20:43:41.56ID:trArLuj5 マルチ小僧w
206デフォルトの名無しさん
2016/12/21(水) 20:44:49.22ID:RIWp4Ngq >>203
mがkからlの間なんて一言もないんだから不完全
mがkからlの間なんて一言もないんだから不完全
207デフォルトの名無しさん
2016/12/21(水) 20:47:08.96ID:UR5SKYPV208デフォルトの名無しさん
2016/12/21(水) 20:52:23.64ID:RIWp4Ngq そうだとして、わざと誤読を誘おうとしている悪問だね
でO(log k)のアルゴリズム思いついたから俺は降りるね
でO(log k)のアルゴリズム思いついたから俺は降りるね
209デフォルトの名無しさん
2016/12/21(水) 20:53:06.55ID:RIWp4Ngq O(log l)だった
210デフォルトの名無しさん
2016/12/21(水) 20:55:14.58ID:UR5SKYPV211デフォルトの名無しさん
2016/12/21(水) 21:27:34.73ID:UR5SKYPV 実は、この問題には続きがあります。
m, n を m < n を満たす正の整数とします。
このとき、
1/m + 1/(m+1) + … + 1/n
は整数にはならないことを証明せよ。
m, n を m < n を満たす正の整数とします。
このとき、
1/m + 1/(m+1) + … + 1/n
は整数にはならないことを証明せよ。
212デフォルトの名無しさん
2016/12/21(水) 21:29:28.61ID:UR5SKYPV ちょっとアルゴリズム的な問題からは離れますが。
213デフォルトの名無しさん
2016/12/21(水) 21:31:37.14ID:xYX0mlO/ 提出日はいつですか?
214デフォルトの名無しさん
2016/12/21(水) 22:14:54.89ID:auJA5Ak8 またバカな質問者が暴れてるのか
215デフォルトの名無しさん
2016/12/21(水) 23:45:05.79ID:mNaBBYjZ qiitaでやれ
216デフォルトの名無しさん
2016/12/23(金) 00:59:54.04ID:gOElNe3R >>183
そのような m が 2 個ある
m1 < m2
とする
m1 の下位ビット 0 〜 n-1 までは 0で、 ビット n が 1 とする
m2 も同様になる(すなわち b_m1 = b_m2 = n )
m3 = m1 + ( 2 の n 乗 )
と定義すると
m1 < m3 <= m2 であるが、b_m3 > n となって矛盾
そのような m が 2 個ある
m1 < m2
とする
m1 の下位ビット 0 〜 n-1 までは 0で、 ビット n が 1 とする
m2 も同様になる(すなわち b_m1 = b_m2 = n )
m3 = m1 + ( 2 の n 乗 )
と定義すると
m1 < m3 <= m2 であるが、b_m3 > n となって矛盾
217デフォルトの名無しさん
2016/12/23(金) 01:37:11.09ID:gOElNe3R >>211
1/m + 1/(m+1) + … + 1/n = P = 整数
だとする
L = ∏ r ; r = m…n
を両辺に掛ける
L/m + L/(m+1) + … + L/n = LP
すべての項は整数。
b_LP ( LP の連続する下位ビット 0 の個数 ) >= Σ b_r ; r = m…n
m <= x <= n は b_x を最大にするもの
左辺の L/x だけ連続する下位ビット 0 の個数は他より少ない
よって b_左辺 = b_x で矛盾
1/m + 1/(m+1) + … + 1/n = P = 整数
だとする
L = ∏ r ; r = m…n
を両辺に掛ける
L/m + L/(m+1) + … + L/n = LP
すべての項は整数。
b_LP ( LP の連続する下位ビット 0 の個数 ) >= Σ b_r ; r = m…n
m <= x <= n は b_x を最大にするもの
左辺の L/x だけ連続する下位ビット 0 の個数は他より少ない
よって b_左辺 = b_x で矛盾
218デフォルトの名無しさん
2017/01/01(日) 00:15:18.27ID:VtFWW7J2 ダイクストラのアルゴリズムの正しさの証明が載っている本で
一番分かりやすい本を教えてください。
一番分かりやすい本を教えてください。
219デフォルトの名無しさん
2017/01/02(月) 07:40:19.35ID:03PPbeGI 『アルゴリズムイントロダクション』について質問です。
この本での実数の集合には、 ∞, -∞ が含まれるのでしょうか?
最短路問題の説明で、
実数 a が a≠∞のとき、 a + -∞ = -∞
実数 a が a≠-∞のとき、 a + ∞ = ∞
という記述があるために質問します。
この本での実数の集合には、 ∞, -∞ が含まれるのでしょうか?
最短路問題の説明で、
実数 a が a≠∞のとき、 a + -∞ = -∞
実数 a が a≠-∞のとき、 a + ∞ = ∞
という記述があるために質問します。
220デフォルトの名無しさん
2017/01/02(月) 08:09:15.65ID:03PPbeGI 実数 a が a≠∞のとき、 a + -∞ = -∞
実数 a が a≠-∞のとき、 a + ∞ = ∞
-∞ + -∞ = -∞
∞ + ∞ = ∞
という等式を含めたいからこのような書き方になったのでしょうか?
実数 a が a≠-∞のとき、 a + ∞ = ∞
-∞ + -∞ = -∞
∞ + ∞ = ∞
という等式を含めたいからこのような書き方になったのでしょうか?
221デフォルトの名無しさん
2017/01/02(月) 09:29:22.45ID:J77W/v0L それは実無限派の書き方だが,世の趨勢は可能無限
ほどほどに相手をするだけでいいよ
ほどほどに相手をするだけでいいよ
222デフォルトの名無しさん
2017/01/02(月) 11:22:57.42ID:03PPbeGI223デフォルトの名無しさん
2017/01/02(月) 11:23:39.72ID:03PPbeGI 頂点の数が n のグラフで、任意の頂点間に辺が存在するようなものを考える。
ある任意の頂点から別の任意の頂点への閉路をふくまない経路の数を求めよ。
ある任意の頂点から別の任意の頂点への閉路をふくまない経路の数を求めよ。
224デフォルトの名無しさん
2017/01/02(月) 11:26:14.49ID:03PPbeGI 頂点の数が n(≧2) のグラフで、任意の頂点間に辺が存在するようなものを考える。
ある任意の頂点から別の任意の頂点への閉路をふくまない経路の数を a_n とする。
このとき、
(n-1)! ≧ a_n ≧ (n-2)!
が成り立つことを示せ。
ある任意の頂点から別の任意の頂点への閉路をふくまない経路の数を a_n とする。
このとき、
(n-1)! ≧ a_n ≧ (n-2)!
が成り立つことを示せ。
225デフォルトの名無しさん
2017/01/02(月) 12:08:43.26ID:GdcUHK9D 宿題は宿題スレへ
226デフォルトの名無しさん
2017/01/02(月) 12:09:56.00ID:GdcUHK9D 宿題は宿題スレへ
227デフォルトの名無しさん
2017/01/02(月) 12:22:39.27ID:03PPbeGI 宿題ではないのです。
ある本に、頂点 s から t への最短経路を計算する方法として、
s から t へのあらゆる経路の長さを考えて、最小の経路を選ぶとすると、
経路の数が O(n!) だから現実的ではない
という話が書いてあります。
ところが、計算してみると、 O(n!) は荒い評価であって、 O((n-1)!) とできますね。
ある本に、頂点 s から t への最短経路を計算する方法として、
s から t へのあらゆる経路の長さを考えて、最小の経路を選ぶとすると、
経路の数が O(n!) だから現実的ではない
という話が書いてあります。
ところが、計算してみると、 O(n!) は荒い評価であって、 O((n-1)!) とできますね。
228デフォルトの名無しさん
2017/01/02(月) 12:24:22.04ID:03PPbeGI もっといい評価はありますでしょうか?
229デフォルトの名無しさん
2017/01/02(月) 12:28:36.72ID:GdcUHK9D 判ってるなら効くな
230デフォルトの名無しさん
2017/01/02(月) 14:08:15.59ID:03PPbeGI ダイクストラ法の正しさの証明で分かりやすい証明を思いつきました。
発表しましょうか?
発表しましょうか?
231デフォルトの名無しさん
2017/01/02(月) 14:21:37.12ID:w6ZCrhsc どうぞどうぞ
232デフォルトの名無しさん
2017/01/02(月) 14:27:23.53ID:yIXUnWg3233デフォルトの名無しさん
2017/01/02(月) 17:55:38.72ID:J77W/v0L234デフォルトの名無しさん
2017/01/02(月) 19:04:30.86ID:03PPbeGI なんか正しさの証明を書いてみると簡単なことなのに長くなりますね。
もし、間違っていたら指摘してください。
http://imgur.com/PDx2vmZ.jpg
http://imgur.com/DbMiSz5.jpg
ダイクストラのアルゴリズムは↑のものとします。
もし、間違っていたら指摘してください。
http://imgur.com/PDx2vmZ.jpg
http://imgur.com/DbMiSz5.jpg
ダイクストラのアルゴリズムは↑のものとします。
235デフォルトの名無しさん
2017/01/02(月) 19:05:18.10ID:03PPbeGI 節点 s から、ある節点 i への最短経路が存在するとき、その長さを td(i) で表わすことにする。
i への経路、したがって最短経路が存在しないときには、 td(i) = ∞ とする。
ステップ(1)で選ばれる節点 v ∈ V - S に対して、 d(v) = td(v) が成り立つことを数学的帰納法により、以下で証明する。
最初にステップ(1)が実行されるときを考える。
明らかに、 d(s) = td(s) = 0 が成り立つ。
k ≧ 1 とする。
第 1 回目から第 k 回目にステップ(1)が実行されるときに、いつもステップ(1)で選ばれる節点 v ∈ V - S に対して、
d(v) = td(v) が成り立つと仮定する。
i への経路、したがって最短経路が存在しないときには、 td(i) = ∞ とする。
ステップ(1)で選ばれる節点 v ∈ V - S に対して、 d(v) = td(v) が成り立つことを数学的帰納法により、以下で証明する。
最初にステップ(1)が実行されるときを考える。
明らかに、 d(s) = td(s) = 0 が成り立つ。
k ≧ 1 とする。
第 1 回目から第 k 回目にステップ(1)が実行されるときに、いつもステップ(1)で選ばれる節点 v ∈ V - S に対して、
d(v) = td(v) が成り立つと仮定する。
236デフォルトの名無しさん
2017/01/02(月) 19:05:35.40ID:03PPbeGI 第 (k+1) 回目にステップ(1)が実行されるときを考える。
このとき、明らかに #S = k であり、 ∀i ∈ S に対して、 d(i) = td(i) が成り立つ。
第 (k+1) 回目にステップ(1)が実行されるときに選ばれる節点を v ∈ V - S とする。
d(v) = ∞ である場合と d(v) ≠ ∞ である場合で場合分けして考える。
(1) d(v) = ∞ である場合。
td(v) ≠ d(v) = ∞ と仮定して矛盾を導く。
td(v) ≠ ∞ であるから、節点 s から節点 v への経路 s = v_0 → v_1 → … → v_(l-1) → v_l = v が存在する。
明らかに、 td(v_0), td(v_1), …, td(v_(l-1)), td(v_l) ≠ ∞ である。
v_0 ∈ S, v_l ∈ V - S であるから、 v_i ∈ S, v_(i+1) ∈ V - S となるような i が存在する。
∀j ∈ V - S に対して、 d(j) = ∞ であるから、 d(v_(i+1)) = ∞ である。また、 v_i ∈ S であるから、
d(v_i) = td(v_i) ≠ ∞ が成り立つ。
v_i がステップ(2)で S に追加されたときのことを考えれば分かるように、 (v_i, v_(i+1)) ∈ E かつ v_(i+1) ∈ V - S であるから、
d(v_(i+1)) = ∞ ということはない。これは矛盾である。
よって、 d(v) = td(v) = ∞ が成り立つ。
このとき、明らかに #S = k であり、 ∀i ∈ S に対して、 d(i) = td(i) が成り立つ。
第 (k+1) 回目にステップ(1)が実行されるときに選ばれる節点を v ∈ V - S とする。
d(v) = ∞ である場合と d(v) ≠ ∞ である場合で場合分けして考える。
(1) d(v) = ∞ である場合。
td(v) ≠ d(v) = ∞ と仮定して矛盾を導く。
td(v) ≠ ∞ であるから、節点 s から節点 v への経路 s = v_0 → v_1 → … → v_(l-1) → v_l = v が存在する。
明らかに、 td(v_0), td(v_1), …, td(v_(l-1)), td(v_l) ≠ ∞ である。
v_0 ∈ S, v_l ∈ V - S であるから、 v_i ∈ S, v_(i+1) ∈ V - S となるような i が存在する。
∀j ∈ V - S に対して、 d(j) = ∞ であるから、 d(v_(i+1)) = ∞ である。また、 v_i ∈ S であるから、
d(v_i) = td(v_i) ≠ ∞ が成り立つ。
v_i がステップ(2)で S に追加されたときのことを考えれば分かるように、 (v_i, v_(i+1)) ∈ E かつ v_(i+1) ∈ V - S であるから、
d(v_(i+1)) = ∞ ということはない。これは矛盾である。
よって、 d(v) = td(v) = ∞ が成り立つ。
237デフォルトの名無しさん
2017/01/02(月) 19:05:51.66ID:03PPbeGI (2) d(v) ≠ ∞ である場合。
td(v) ≠ d(v) と仮定して矛盾を導く。
ステップ(2)を考えれば明らかなように、 d(v) ≠ ∞ であるから、節点 s から節点 v への
最短経路 s = v_0 → v_1 → … → v_(l-1) → v_l = v が存在する。
よって、 td(v) ≠ ∞ である。
仮定により、 td(v) ≠ d(v) であるから、 td(v) < d(v) が成り立つ。
v_0 ∈ S, v_l ∈ V - S であるから、 v_i ∈ S, v_(i+1) ∈ V - S となるような i が存在する。
td(v_(i+1)) < d(v_(i+1)) である。なぜなら、もし、そうでないと仮定すると、 d(v_(i+1)) = td(v_(i+1)) であるが、
td(v_(i+1)) ≦ td(v) < d(v) であるから、 d(v_(i+1)) < d(v) となってしまい、ステップ(1)での v の
選ばれ方に矛盾するからである。
v_i ∈ S であるから、 d(v_i) = td(v_i) である。
v_i がステップ(2)で S に追加されたときのことを考えれば分かるように、 (v_i, v_(i+1)) ∈ E かつ v_(i+1) ∈ V - S であるから、
d(v_i) + a_(v_i v_(i+1)) ≧ d(v_(i+1)) である。
一方、明らかに、 td(v_i) + a_(v_i v_(i+1)) = td(v_(i+1)) であるから、
td(v_(i+1)) = td(v_i) + a_(v_i v_(i+1)) = d(v_i) + a_(v_i v_(i+1)) ≧ d(v_(i+1)) となるが、これは矛盾である。
よって、 td(v) = d(v) が成り立つ。
td(v) ≠ d(v) と仮定して矛盾を導く。
ステップ(2)を考えれば明らかなように、 d(v) ≠ ∞ であるから、節点 s から節点 v への
最短経路 s = v_0 → v_1 → … → v_(l-1) → v_l = v が存在する。
よって、 td(v) ≠ ∞ である。
仮定により、 td(v) ≠ d(v) であるから、 td(v) < d(v) が成り立つ。
v_0 ∈ S, v_l ∈ V - S であるから、 v_i ∈ S, v_(i+1) ∈ V - S となるような i が存在する。
td(v_(i+1)) < d(v_(i+1)) である。なぜなら、もし、そうでないと仮定すると、 d(v_(i+1)) = td(v_(i+1)) であるが、
td(v_(i+1)) ≦ td(v) < d(v) であるから、 d(v_(i+1)) < d(v) となってしまい、ステップ(1)での v の
選ばれ方に矛盾するからである。
v_i ∈ S であるから、 d(v_i) = td(v_i) である。
v_i がステップ(2)で S に追加されたときのことを考えれば分かるように、 (v_i, v_(i+1)) ∈ E かつ v_(i+1) ∈ V - S であるから、
d(v_i) + a_(v_i v_(i+1)) ≧ d(v_(i+1)) である。
一方、明らかに、 td(v_i) + a_(v_i v_(i+1)) = td(v_(i+1)) であるから、
td(v_(i+1)) = td(v_i) + a_(v_i v_(i+1)) = d(v_i) + a_(v_i v_(i+1)) ≧ d(v_(i+1)) となるが、これは矛盾である。
よって、 td(v) = d(v) が成り立つ。
238デフォルトの名無しさん
2017/01/02(月) 19:06:08.41ID:03PPbeGI 以上より、第 (k+1) 回目にステップ(1)が実行されるときにも、ステップ(1)で選ばれる節点 v ∈ V - S に対して、
d(v) = td(v) が成り立つ。
S に追加される節点はすべて、ステップ(1)で選ばれた 節点 v ∈ V - S であり、一度 S に追加された節点 v の d(v) はそれ以後、
変更されないから、ステップ(1)でアルゴリズムが終了したとき、 ∀i ∈ S = V に対して、 d(i) = td(i) が成り立つ。
d(v) = td(v) が成り立つ。
S に追加される節点はすべて、ステップ(1)で選ばれた 節点 v ∈ V - S であり、一度 S に追加された節点 v の d(v) はそれ以後、
変更されないから、ステップ(1)でアルゴリズムが終了したとき、 ∀i ∈ S = V に対して、 d(i) = td(i) が成り立つ。
239デフォルトの名無しさん
2017/01/02(月) 19:26:36.14ID:03PPbeGI >>232
ある本では、
正定数 c, n0 が存在して、 n ≧ n0 のとき、 T(n) ≦ c*f(n) であるなら、
T(n) は O(f(n)) であるという
と定義されています。
T(n) = n!
f(n) = n!
g(n) = (n-1)!
とします。
このとき、明らかに、
T(n) は O(f(n)) ですが、
T(n) は O(g(n)) ではありません。
ある本では、
正定数 c, n0 が存在して、 n ≧ n0 のとき、 T(n) ≦ c*f(n) であるなら、
T(n) は O(f(n)) であるという
と定義されています。
T(n) = n!
f(n) = n!
g(n) = (n-1)!
とします。
このとき、明らかに、
T(n) は O(f(n)) ですが、
T(n) は O(g(n)) ではありません。
240デフォルトの名無しさん
2017/01/02(月) 19:29:54.44ID:03PPbeGI したがって、
O(f(n)) と O(g(n)) は異なります。
O(f(n)) と O(g(n)) は異なります。
241デフォルトの名無しさん
2017/01/03(火) 08:33:06.09ID:3o9M4oho この狂人ヤバいなw
242デフォルトの名無しさん
2017/01/03(火) 08:50:16.82ID:hCDXc7Qp243デフォルトの名無しさん
2017/01/03(火) 08:52:54.04ID:hCDXc7Qp244デフォルトの名無しさん
2017/01/03(火) 11:39:58.60ID:hCDXc7Qp Erik DemaineはMITの歴史上最年少で教授になったという天才だそうですね。
今、そのErik Demaineの2005年のダイクストラのアルゴリズムについての講義を見ています。
見終わったら、講義の要約について書きます。
今、そのErik Demaineの2005年のダイクストラのアルゴリズムについての講義を見ています。
見終わったら、講義の要約について書きます。
245デフォルトの名無しさん
2017/01/03(火) 13:47:58.01ID:hCDXc7Qp ダイクストラのアルゴリズム:
01: d[s] ← 0
02: for each v ∈ V - {s}:
03: ■■d[v] ← ∞
04: S ← Φ
05: Q ← V
06: while Q ≠ Φ:
07: ■■u ← ExtractMin(Q)
08: S ← S ∪ {u}
09: for each v ∈ Adj[u]:
10: ■■if d[v] > d[u] + w(u, v):
11: ■■■■d[v] ← d[u] + w(u, v)
01: d[s] ← 0
02: for each v ∈ V - {s}:
03: ■■d[v] ← ∞
04: S ← Φ
05: Q ← V
06: while Q ≠ Φ:
07: ■■u ← ExtractMin(Q)
08: S ← S ∪ {u}
09: for each v ∈ Adj[u]:
10: ■■if d[v] > d[u] + w(u, v):
11: ■■■■d[v] ← d[u] + w(u, v)
246デフォルトの名無しさん
2017/01/03(火) 13:49:29.21ID:hCDXc7Qp Correctness I:
d[v] の初期化の直後、およびLine 11の直後において、
すべての v ∈ V に対して、 d[v] ≧ δ(s, v) が
成り立つ。
証明:
d[v] の初期化の直後には、
d[s] = 0 かつすべての v ∈ S - {v} に対して、d[v] = ∞
が成り立っている。
δ(s, s) = 0 かつすべての v ∈ S に対して、 δ(s, v) ≦ ∞
であるから、d[v] の初期化の直後には、
すべての v ∈ V に対して、 d[v] ≧ δ(s, v) が確かに
成り立っている。
d[v] の初期化の直後、およびLine 11の直後において、
すべての v ∈ V に対して、 d[v] ≧ δ(s, v) が
成り立つ。
証明:
d[v] の初期化の直後には、
d[s] = 0 かつすべての v ∈ S - {v} に対して、d[v] = ∞
が成り立っている。
δ(s, s) = 0 かつすべての v ∈ S に対して、 δ(s, v) ≦ ∞
であるから、d[v] の初期化の直後には、
すべての v ∈ V に対して、 d[v] ≧ δ(s, v) が確かに
成り立っている。
247デフォルトの名無しさん
2017/01/03(火) 13:49:56.08ID:hCDXc7Qp Line 11の直後において、すべての v ∈ V に対して、
d[v] ≧ δ(s, v) が成り立つことを背理法により示す。
Line 11の直後において、 d[v] ≧ δ(s, v) が
成り立たないような v ∈ V が存在するとする。
v をそのような点の中で、最初の点とする。
d[v] < δ(s, v)
d[v] < δ(s, v) ≦ ∞ であるから、
ダイクストラのアルゴリズムのLine 11は少なくとも1回は
実行されているはずである。そのような最後の実行を
d[v] ← d[u] + w(u, v)
とすると、
d[u] + w(u, v) = d[v] < δ(s, v)
が成り立つ。
一方、 d[u] ≧ δ(s, u) であるから、
d[u] + w(u, v) ≧ δ(s, u) + w(u, v)
≧ δ(s, u) + δ(u, v)
≧ δ(s, v)
が成り立つが、これは矛盾である。
d[v] ≧ δ(s, v) が成り立つことを背理法により示す。
Line 11の直後において、 d[v] ≧ δ(s, v) が
成り立たないような v ∈ V が存在するとする。
v をそのような点の中で、最初の点とする。
d[v] < δ(s, v)
d[v] < δ(s, v) ≦ ∞ であるから、
ダイクストラのアルゴリズムのLine 11は少なくとも1回は
実行されているはずである。そのような最後の実行を
d[v] ← d[u] + w(u, v)
とすると、
d[u] + w(u, v) = d[v] < δ(s, v)
が成り立つ。
一方、 d[u] ≧ δ(s, u) であるから、
d[u] + w(u, v) ≧ δ(s, u) + w(u, v)
≧ δ(s, u) + δ(u, v)
≧ δ(s, v)
が成り立つが、これは矛盾である。
248デフォルトの名無しさん
2017/01/03(火) 13:51:21.27ID:hCDXc7Qp Correctness Lemma:
s → … → u → v を s から v への一つの最短路とする。
d[u] = δ(s, u) であるとする。
このとき、Line10-11を実行すると、
d[v] = δ(s, v)
が成り立つ。
証明:
δ(s, v) = w(s → … → u) + w(u, v)
= δ(s, u) + w(u, v)
Correctness Iより、 d[v] ≧ δ(s, v)
(1)Line10-11の実行前に、 d[v] = δ(s, v) である場合。
Line10-11の実行後も d[v] = δ(s, v) である。
(2)Line10-11の実行前に、 d[v] > δ(s, v) である場合。
d[v] > δ(s, v) = δ(s, u) + w(u, v) = d[u] + w(u, v)
Line10-11の実行後は、 d[v] = d[u] + w(u, v) = δ(s, v)
となる。
s → … → u → v を s から v への一つの最短路とする。
d[u] = δ(s, u) であるとする。
このとき、Line10-11を実行すると、
d[v] = δ(s, v)
が成り立つ。
証明:
δ(s, v) = w(s → … → u) + w(u, v)
= δ(s, u) + w(u, v)
Correctness Iより、 d[v] ≧ δ(s, v)
(1)Line10-11の実行前に、 d[v] = δ(s, v) である場合。
Line10-11の実行後も d[v] = δ(s, v) である。
(2)Line10-11の実行前に、 d[v] > δ(s, v) である場合。
d[v] > δ(s, v) = δ(s, u) + w(u, v) = d[u] + w(u, v)
Line10-11の実行後は、 d[v] = d[u] + w(u, v) = δ(s, v)
となる。
249デフォルトの名無しさん
2017/01/03(火) 13:52:06.64ID:hCDXc7Qp Correctness II:
ダイクストラのアルゴリズムが終了したとき、
すべての v ∈ V に対して、 d[v] = δ(s, v) が成り立つ。
証明:
d[v] は v が S に追加された後は、不変である。
よって、 v が S に追加されたときに、
d[v] = δ(s, v) であることを示せばよい。
背理法で示す。
v が S に追加されたときに、 d[v] ≠ δ(s, v) であるような
v ∈ V が存在すると仮定する。
u をそのような点の中で、最初に S に追加された点とする:
d[u] ≠ δ(s, u)
Correctness Iより、
d[u] > δ(s, u)
ダイクストラのアルゴリズムが終了したとき、
すべての v ∈ V に対して、 d[v] = δ(s, v) が成り立つ。
証明:
d[v] は v が S に追加された後は、不変である。
よって、 v が S に追加されたときに、
d[v] = δ(s, v) であることを示せばよい。
背理法で示す。
v が S に追加されたときに、 d[v] ≠ δ(s, v) であるような
v ∈ V が存在すると仮定する。
u をそのような点の中で、最初に S に追加された点とする:
d[u] ≠ δ(s, u)
Correctness Iより、
d[u] > δ(s, u)
250デフォルトの名無しさん
2017/01/03(火) 13:52:49.71ID:hCDXc7Qp 今、 u が S に追加される直前の状況を考えることにする。
u はまだ S に追加されていないから、 u ∈ Q である。
p を s から u への一つの最短路とすると、 w(p) = δ(s, u) である。
s ∈ S, u ∈ Q であるから、 p 上の辺 (x, y) で x ∈ S, y ∈ Q となる
ような辺が存在する。そのような辺の一つを (x, y) とする。
すると、 p は以下のようになる。
p : s → … → x → y → … → u
x ∈ S であるから、 u に関する仮定より、
d[x] = δ(s, x) が成り立つ。また、明らかに、
s → … → x → y は s から y への一つの最短路であるから、
Correctness Lemmaより、 d[y] = δ(s, y) が成り立つ。
明らかに、 δ(s, y) ≦ δ(s, u) であるから、
d[y] ≦ δ(s, y)
また、Line07を見れば分かるように、
d[u] ≦ d[y] である。
よって、
d[u] ≦ δ(s, u) となるが、これは矛盾である。
u はまだ S に追加されていないから、 u ∈ Q である。
p を s から u への一つの最短路とすると、 w(p) = δ(s, u) である。
s ∈ S, u ∈ Q であるから、 p 上の辺 (x, y) で x ∈ S, y ∈ Q となる
ような辺が存在する。そのような辺の一つを (x, y) とする。
すると、 p は以下のようになる。
p : s → … → x → y → … → u
x ∈ S であるから、 u に関する仮定より、
d[x] = δ(s, x) が成り立つ。また、明らかに、
s → … → x → y は s から y への一つの最短路であるから、
Correctness Lemmaより、 d[y] = δ(s, y) が成り立つ。
明らかに、 δ(s, y) ≦ δ(s, u) であるから、
d[y] ≦ δ(s, y)
また、Line07を見れば分かるように、
d[u] ≦ d[y] である。
よって、
d[u] ≦ δ(s, u) となるが、これは矛盾である。
251デフォルトの名無しさん
2017/01/03(火) 13:55:46.21ID:hCDXc7Qp Lec 17 | MIT 6.046J / 18.410J Introduction to Algorithms (SMA 5503), Fall 2005
https://youtu.be/xhG2DyCX3uA
https://youtu.be/xhG2DyCX3uA
252デフォルトの名無しさん
2017/01/05(木) 09:16:14.40ID:4i7P3+nF アルゴリズムイントロダクションって自明なことをわざわざループ不変量を使ったりして、
証明していて、うざすぎますね。
証明していて、うざすぎますね。
253デフォルトの名無しさん
2017/01/05(木) 09:16:52.73ID:4i7P3+nF 通常の数学の本なら自明で済ませるようなことをわざわざ証明している。
254デフォルトの名無しさん
2017/01/05(木) 09:57:50.61ID:OZq8Y/OW このバカ、以前も全く同じこと言って暴れたな。
255デフォルトの名無しさん
2017/01/05(木) 10:02:39.43ID:OZq8Y/OW http://hissi.org/read.php/tech/20160422/cGVtVmVaYUg.html
http://hissi.org/read.php/tech/20160612/YkttemlBQ3Y.html
こいつだ。
> って当たり前のことをループ不変とかを使って説明しているよね。はっきりいってくどい。
> ループ不変式とかいうのが出てくるけど、当たり前のことを形式的に証明しているだけで、つまらなすぎる。
> 馬鹿の一つ覚えみたいにループ不変式をつかって証明しようとしている。
これぞ「馬鹿の一つ覚え」である。
http://hissi.org/read.php/tech/20160612/YkttemlBQ3Y.html
こいつだ。
> って当たり前のことをループ不変とかを使って説明しているよね。はっきりいってくどい。
> ループ不変式とかいうのが出てくるけど、当たり前のことを形式的に証明しているだけで、つまらなすぎる。
> 馬鹿の一つ覚えみたいにループ不変式をつかって証明しようとしている。
これぞ「馬鹿の一つ覚え」である。
256デフォルトの名無しさん
2017/01/05(木) 10:44:28.31ID:W/+CAQrH 数学とコンピュータ科学の区別がつかない厨房だろう
257デフォルトの名無しさん
2017/01/05(木) 11:01:45.09ID:4i7P3+nF クヌースの本なんかだと妙なくどさはない。
アルゴリズムイントロダクションはメリハリが全くない。
Trivialなこともそうでないことも平等に扱いすぎている。
要するに本を書くセンスがない。
アルゴリズムイントロダクションはメリハリが全くない。
Trivialなこともそうでないことも平等に扱いすぎている。
要するに本を書くセンスがない。
258デフォルトの名無しさん
2017/01/05(木) 11:02:52.69ID:4i7P3+nF セジウィックとウエインの本のほうがずっとよい。
259デフォルトの名無しさん
2017/01/05(木) 11:07:44.54ID:4i7P3+nF 日本語の本について言及しておく。
例えば、評判のよい茨木俊秀の本。
こんな薄いスカスカの本をよくも恥ずかしげもなく出版するものだとあきれる。
例えば、評判のよい茨木俊秀の本。
こんな薄いスカスカの本をよくも恥ずかしげもなく出版するものだとあきれる。
260デフォルトの名無しさん
2017/01/05(木) 11:19:31.17ID:4i7P3+nF アルゴリズムイントロダクションの悪口を書いたがいいところもある。
例えば、第29章線形計画法。
線形計画法に対しては、Trivialなこともそうでないことも平等に扱うという方針が
向いているように思う。
ただ、アルゴリズムの本に線形計画法を入れる理由が分からない。
整数論的アルゴリズムの章はあまりにも簡単すぎる。
高木貞治の本でも読んだ方がよい。
例えば、第29章線形計画法。
線形計画法に対しては、Trivialなこともそうでないことも平等に扱うという方針が
向いているように思う。
ただ、アルゴリズムの本に線形計画法を入れる理由が分からない。
整数論的アルゴリズムの章はあまりにも簡単すぎる。
高木貞治の本でも読んだ方がよい。
261デフォルトの名無しさん
2017/01/05(木) 11:28:06.54ID:4i7P3+nF 結論として、ベストな本はクヌースが予定しているTAOCPの要約本ということになる。
262デフォルトの名無しさん
2017/01/05(木) 11:29:47.36ID:W/+CAQrH 結論として4i7P3+nFはNG行き
263デフォルトの名無しさん
2017/01/05(木) 11:33:33.85ID:2uA+A+xC >>253
自明ほど危ういものは無いんだが
自明ほど危ういものは無いんだが
264デフォルトの名無しさん
2017/01/05(木) 11:40:35.14ID:OZq8Y/OW 例によって ID:4i7P3+nF が発狂しててワロタ
265デフォルトの名無しさん
2017/01/05(木) 11:44:36.30ID:4i7P3+nF266デフォルトの名無しさん
2017/01/05(木) 11:52:58.57ID:r7KPx/TL そんな多くねえよちゃんと論文読め
267デフォルトの名無しさん
2017/01/05(木) 12:06:11.36ID:2uA+A+xC 自明連発する方が馬鹿なのか
268デフォルトの名無しさん
2017/01/05(木) 13:09:24.25ID:c6xYhHVb >>265
馬鹿丸出し
馬鹿丸出し
269デフォルトの名無しさん
2017/01/05(木) 13:18:34.40ID:c6xYhHVb >一般に、コンピュータ科学者よりも頭が良いとされる数学者が
根拠は?
>自明で済ませることが多いのでしょうか?
数学のコンテキストの話
そもそも証明の意味もコンピュータ科学と数学では違うだろ
根拠は?
>自明で済ませることが多いのでしょうか?
数学のコンテキストの話
そもそも証明の意味もコンピュータ科学と数学では違うだろ
270デフォルトの名無しさん
2017/01/05(木) 14:56:52.93ID:jagWiFjG なんでバカって本質に関係ないところでギャーギャー騒ぐの?
271デフォルトの名無しさん
2017/01/05(木) 14:58:54.44ID:YjTG1plI うむ
272デフォルトの名無しさん
2017/01/05(木) 19:46:02.51ID:4i7P3+nF アルゴリズムイントロダクションについて、数学が出来る人向けの本だという人がいる。
そして、数学ができない人はセジウィック&ウエインの本を読めという人がいる。
アルゴリズムイントロダクションが数学的な本だとは全く思わない。数学的な内容については
主に結果だけを書いている。
ただネチネチとアルゴリズムの正しさの証明が書かれているだけのこと。
クヌースの本のように、楽しい本ではない。
そして、数学ができない人はセジウィック&ウエインの本を読めという人がいる。
アルゴリズムイントロダクションが数学的な本だとは全く思わない。数学的な内容については
主に結果だけを書いている。
ただネチネチとアルゴリズムの正しさの証明が書かれているだけのこと。
クヌースの本のように、楽しい本ではない。
273デフォルトの名無しさん
2017/01/05(木) 20:37:39.99ID:UiiKd7HR274デフォルトの名無しさん
2017/01/05(木) 22:15:16.24ID:WPj32BYO 書評したければ別のところでやれ
275デフォルトの名無しさん
2017/01/06(金) 17:19:30.91ID:TSHa+AxL 再帰の除去についてやり方が詳しく書いてある本を教えてください。
276デフォルトの名無しさん
2017/01/06(金) 17:43:03.36ID:TSHa+AxL プログラミングコンテストチャレンジブック第2版のp.35
Lake Counting(POJ No.2386)
の解答として、以下のプログラムはあっていますか?
void dfs(i, j, n){
if(i < 0 || i >= N || j < 0 || j >= M){
return;
}
if(field[i][j] != 'W'){
return;
}
if(visit[i][j] == true){
return;
}
visit[i][j] = true;
dfs(i-1, j-1, n+1);
dfs(i-1, j, n+1);
dfs(i-1, j+1, n+1);
dfs(i, j-1, n+1);
dfs(i, j+1, n+1);
dfs(i+1, j-1, n+1);
dfs(i+1, j, n+1);
dfs(i+1, j+1, n+1);
if(n == 0){
count++;
}
return;
}
Lake Counting(POJ No.2386)
の解答として、以下のプログラムはあっていますか?
void dfs(i, j, n){
if(i < 0 || i >= N || j < 0 || j >= M){
return;
}
if(field[i][j] != 'W'){
return;
}
if(visit[i][j] == true){
return;
}
visit[i][j] = true;
dfs(i-1, j-1, n+1);
dfs(i-1, j, n+1);
dfs(i-1, j+1, n+1);
dfs(i, j-1, n+1);
dfs(i, j+1, n+1);
dfs(i+1, j-1, n+1);
dfs(i+1, j, n+1);
dfs(i+1, j+1, n+1);
if(n == 0){
count++;
}
return;
}
277デフォルトの名無しさん
2017/01/06(金) 18:06:18.89ID:XtKi9eaG278デフォルトの名無しさん
2017/01/06(金) 18:36:23.48ID:TSHa+AxL Wrong Answerになっちゃうんだけど。
279デフォルトの名無しさん
2017/01/06(金) 18:38:07.31ID:TSHa+AxL 例題については正しい答えが計算されるんだけど。
280デフォルトの名無しさん
2017/01/06(金) 18:43:00.23ID:LxnclcVs よかったね
281デフォルトの名無しさん
2017/01/06(金) 20:15:02.80ID:TSHa+AxL282デフォルトの名無しさん
2017/01/06(金) 20:22:33.43ID:TSHa+AxL 秋葉らのプログラムでもWrong Answerになっていまします。
入出力の問題のようですね。
入出力の問題のようですね。
283デフォルトの名無しさん
2017/01/06(金) 20:27:59.50ID:TSHa+AxL 入出力の問題ってやっかいですね。
出力がどうなっているかとかPOJでは調べられないんですか?
出力がどうなっているかとかPOJでは調べられないんですか?
284デフォルトの名無しさん
2017/01/06(金) 20:41:27.59ID:TSHa+AxL なんなんだろう?
scanf,printfを使っていたらダメだったのが、cinとcoutにしたらOKになった。
scanf,printfを使っていたらダメだったのが、cinとcoutにしたらOKになった。
285デフォルトの名無しさん
2017/01/08(日) 12:26:37.82ID:E98VLsZL F(p, n, r) の計算量を教えてください。
n: 整数
p, r: 整数配列(インデックス0からn-1)
F(p, n, r):
■■if r[n] ≧ 0:
■■■■return r[n]
■■if n == 0:
■■■■q = 0
■■else:
■■■■q = -∞
■■■■for i = 1 to n:
■■■■■■q = max(q, p[i] + F(p, n-i, r))
■■r[n] = q
■■return q
n: 整数
p, r: 整数配列(インデックス0からn-1)
F(p, n, r):
■■if r[n] ≧ 0:
■■■■return r[n]
■■if n == 0:
■■■■q = 0
■■else:
■■■■q = -∞
■■■■for i = 1 to n:
■■■■■■q = max(q, p[i] + F(p, n-i, r))
■■r[n] = q
■■return q
286デフォルトの名無しさん
2017/01/08(日) 12:31:27.73ID:0mVP2hZ6 O(n^2)
287デフォルトの名無しさん
2017/01/08(日) 12:32:34.98ID:0mVP2hZ6288デフォルトの名無しさん
2017/01/08(日) 13:51:15.22ID:E98VLsZL289デフォルトの名無しさん
2017/01/08(日) 13:57:19.77ID:E98VLsZL どうやって計算量を見積もるんですか?
何を単位にするんですか?
何を単位にするんですか?
290デフォルトの名無しさん
2017/01/08(日) 14:06:13.08ID:E98VLsZL T(n)
=
c1 + c2 * n + T(n-1) + … + T(0)
=
c1 + c2 * n + T(n-1) + c3*(n-1)
と解けばいいんですかね?
=
c1 + c2 * n + T(n-1) + … + T(0)
=
c1 + c2 * n + T(n-1) + c3*(n-1)
と解けばいいんですかね?
291デフォルトの名無しさん
2017/01/08(日) 14:07:36.75ID:E98VLsZL T(n) = c1 + c2*n + T(n-1)
T(0) = c3
この漸化式の解を求めればいいんですかね?
T(0) = c3
この漸化式の解を求めればいいんですかね?
292デフォルトの名無しさん
2017/01/08(日) 14:12:15.21ID:E98VLsZL T(n)
=
[T(n) - T(n-1)] + [T(n-2) - T(n-3)] + … + [T(1) - T(0)] + T(0)
=
[c1 + c2*n] + [c1 + c2*(n-1)] + … + [c1 + c2*1] + c3
=
c1*n + c2*(1/2)*n*(n+1) + c3
=
Θ(n^2)
おお、あってるっぽいですね。
=
[T(n) - T(n-1)] + [T(n-2) - T(n-3)] + … + [T(1) - T(0)] + T(0)
=
[c1 + c2*n] + [c1 + c2*(n-1)] + … + [c1 + c2*1] + c3
=
c1*n + c2*(1/2)*n*(n+1) + c3
=
Θ(n^2)
おお、あってるっぽいですね。
293デフォルトの名無しさん
2017/01/08(日) 14:20:56.92ID:E98VLsZL >>290-292
は我ながら明解な解答ですが、
教科書では、以下のように導出しています。
この導出がよく分からないのですが。
「以前に解かれている部分問題を解くための再帰は直ちに戻るので、Fは
各部分問題をただ1度だけ解く。この手続きはサイズが0,1,....,nの部分問題
を解く。サイズがnの部分問題を解くために、for文がn回繰り返される。したがって、
Fの再帰呼び出し全体における、このfor文の繰り返し回数は等差数列を形成し、
総繰り返し回数はΘ(n^2)となる。」
は我ながら明解な解答ですが、
教科書では、以下のように導出しています。
この導出がよく分からないのですが。
「以前に解かれている部分問題を解くための再帰は直ちに戻るので、Fは
各部分問題をただ1度だけ解く。この手続きはサイズが0,1,....,nの部分問題
を解く。サイズがnの部分問題を解くために、for文がn回繰り返される。したがって、
Fの再帰呼び出し全体における、このfor文の繰り返し回数は等差数列を形成し、
総繰り返し回数はΘ(n^2)となる。」
294デフォルトの名無しさん
2017/01/08(日) 14:26:56.39ID:E98VLsZL あーあ、分かりました。
T(n)
=
c1 + c2 * n + T(n-1) + … + T(0)
=
c1 + c2 * n + T(n-1) + c3*(n-1)
このあたりのことを言っているんですね。
T(n)
=
c1 + c2 * n + T(n-1) + … + T(0)
=
c1 + c2 * n + T(n-1) + c3*(n-1)
このあたりのことを言っているんですね。
295デフォルトの名無しさん
2017/01/08(日) 14:27:53.04ID:rSxBm0q1 馬鹿には無理
296デフォルトの名無しさん
2017/01/08(日) 14:28:32.97ID:E98VLsZL297デフォルトの名無しさん
2017/01/08(日) 14:29:42.72ID:E98VLsZL 結局自分ですべて解決してしまいました。
298デフォルトの名無しさん
2017/01/08(日) 17:12:11.39ID:8OGZNgRf よくやった
褒美として自分専用のスレを立てる権利をやろう
褒美として自分専用のスレを立てる権利をやろう
299デフォルトの名無しさん
2017/01/08(日) 18:45:26.96ID:KkEYpXLY 命名ID:E98VLsZは俺様
300デフォルトの名無しさん
2017/01/08(日) 20:55:21.87ID:E98VLsZL プログラミングコンテストチャレンジブック
p.45 Best Cow Lineっていう問題の解答のプログラムって無駄がありますよね。
この本を難しいという人がいますが、そんなに難しいですかね?
p.45 Best Cow Lineっていう問題の解答のプログラムって無駄がありますよね。
この本を難しいという人がいますが、そんなに難しいですかね?
■ このスレッドは過去ログ倉庫に格納されています
ニュース
- 【速報】中国、水産物輸入停止と通達 日本政府に ★2 [おっさん友の会★]
- 中国側が首相答弁の撤回要求、日本側拒否★6 [夜のけいちゃん★]
- 「厚かましい挑発的発言だ」中国国連大使が高市首相発言に強く反発 日本の常任理事国入りに明確に反対 [ぐれ★]
- 【速報】 米大使「はっきりさせておこう、米国は尖閣諸島含め日本の防衛に全面コミット、中国がどうしようが変わらない」 [お断り★]
- 自民、経済対策で子ども1人に2万円給付へ 児童手当に上乗せ 所要額は約4000億円 [ぐれ★]
- 債券・円・株「トリプル安」に…長期金利1.755%まで上昇、円は対ユーロで史上最安値 ★3 [蚤の市★]
- 米タイム紙、日中の台湾問題を全力解説で中国の高市早苗批判を全力で拡散。ネトウヨは英語で反論がんばって! [792931474]
- 【高市訃報】ホタテ業者、死亡😇😇😇 [573041775]
- 【終国悲報】高市早苗、たったの10日で莫大な経済的損失を叩き出す [165981677]
- 日中の協議の写真を巡り日本側が頭を下げているというデマが流されてしまう...実際は通訳の方に耳を傾けただけと主張!高市早苗がんばれ [856698234]
- 【緊急】高市早苗 月内辞任か [695089791]
- 【悲報】近衛文麿「国民政府を相手とせず😤」高市早苗「共産政府を相手とせず😤」 [616817505]
