データ構造,アルゴリズム,デザインパターン総合スレ 3©2ch.net

■ このスレッドは過去ログ倉庫に格納されています
2016/06/19(日) 14:47:29.63ID:5KvSKdL/
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

アイと研究員とのやり取りに利用するスレッドなので、
関係者以外は書きこまないで下さい。

                  京都大学霊長類研究所

データ構造,アルゴリズム,デザインパターン総合スレ 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
200デフォルトの名無しさん
垢版 |
2016/12/21(水) 20:34:06.08ID:UR5SKYPV
テレンス・タオ ルベーグ積分入門
テレンス タオ
固定リンク: http://amzn.asia/8KaL6NK

「日本の理工系学部ではルベーグ積分は3年次程度の必修相当科目なので、」

↑これっておかしくないですか?

普通、ルベーグ積分なんてやるのは数学科かせいぜい物理学科くらいじゃないですか?
201デフォルトの名無しさん
垢版 |
2016/12/21(水) 20:34:58.70ID:UR5SKYPV
>>199

各 i(k ≦ i ≦ l)に対して、0以上の整数 b_i を以下で定義する:
2016/12/21(水) 20:39:27.31ID:RIWp4Ngq
不完全な問題出しておいて>>186はないよね
203デフォルトの名無しさん
垢版 |
2016/12/21(水) 20:41:22.47ID:UR5SKYPV
>>202

不完全なところはありません。
よく問題文を読んでください。
2016/12/21(水) 20:42:06.97ID:trArLuj5
>>200
力学・解析力学part2
http://rio2016.2ch.net/test/read.cgi/sci/1284697460/479
2016/12/21(水) 20:43:41.56ID:trArLuj5
マルチ小僧w
2016/12/21(水) 20:44:49.22ID:RIWp4Ngq
>>203
mがkからlの間なんて一言もないんだから不完全
207デフォルトの名無しさん
垢版 |
2016/12/21(水) 20:47:08.96ID:UR5SKYPV
>>206

>>183
各 i(k ≦ i ≦ l)に対して、0以上の整数 b_i を以下で定義する
2016/12/21(水) 20:52:23.64ID:RIWp4Ngq
そうだとして、わざと誤読を誘おうとしている悪問だね
でO(log k)のアルゴリズム思いついたから俺は降りるね
2016/12/21(水) 20:53:06.55ID:RIWp4Ngq
O(log l)だった
210デフォルトの名無しさん
垢版 |
2016/12/21(水) 20:55:14.58ID:UR5SKYPV
>>183

の解答は以下です。

http://imgur.com/rAnp3Ga.jpg

赤線を引いたところは「odd」が正しいですね。
211デフォルトの名無しさん
垢版 |
2016/12/21(水) 21:27:34.73ID:UR5SKYPV
実は、この問題には続きがあります。

m, n を m < n を満たす正の整数とします。

このとき、

1/m + 1/(m+1) + … + 1/n

は整数にはならないことを証明せよ。
212デフォルトの名無しさん
垢版 |
2016/12/21(水) 21:29:28.61ID:UR5SKYPV
ちょっとアルゴリズム的な問題からは離れますが。
2016/12/21(水) 21:31:37.14ID:xYX0mlO/
提出日はいつですか?
2016/12/21(水) 22:14:54.89ID:auJA5Ak8
またバカな質問者が暴れてるのか
2016/12/21(水) 23:45:05.79ID:mNaBBYjZ
qiitaでやれ
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 となって矛盾
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 で矛盾
218デフォルトの名無しさん
垢版 |
2017/01/01(日) 00:15:18.27ID:VtFWW7J2
ダイクストラのアルゴリズムの正しさの証明が載っている本で
一番分かりやすい本を教えてください。
219デフォルトの名無しさん
垢版 |
2017/01/02(月) 07:40:19.35ID:03PPbeGI
『アルゴリズムイントロダクション』について質問です。

この本での実数の集合には、 ∞, -∞ が含まれるのでしょうか?

最短路問題の説明で、

実数 a が a≠∞のとき、 a + -∞ = -∞
実数 a が a≠-∞のとき、 a + ∞ = ∞

という記述があるために質問します。
220デフォルトの名無しさん
垢版 |
2017/01/02(月) 08:09:15.65ID:03PPbeGI
実数 a が a≠∞のとき、 a + -∞ = -∞
実数 a が a≠-∞のとき、 a + ∞ = ∞

-∞ + -∞ = -∞
∞ + ∞ = ∞

という等式を含めたいからこのような書き方になったのでしょうか?
2017/01/02(月) 09:29:22.45ID:J77W/v0L
それは実無限派の書き方だが,世の趨勢は可能無限
ほどほどに相手をするだけでいいよ
222デフォルトの名無しさん
垢版 |
2017/01/02(月) 11:22:57.42ID:03PPbeGI
>>221

ということは、『アルゴリズムイントロダクション』での実数の集合の定義には、
∞、-∞ が含まれるというk十ですね。
223デフォルトの名無しさん
垢版 |
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)!

が成り立つことを示せ。
2017/01/02(月) 12:08:43.26ID:GdcUHK9D
宿題は宿題スレへ
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)!) とできますね。
228デフォルトの名無しさん
垢版 |
2017/01/02(月) 12:24:22.04ID:03PPbeGI
もっといい評価はありますでしょうか?
2017/01/02(月) 12:28:36.72ID:GdcUHK9D
判ってるなら効くな
230デフォルトの名無しさん
垢版 |
2017/01/02(月) 14:08:15.59ID:03PPbeGI
ダイクストラ法の正しさの証明で分かりやすい証明を思いつきました。

発表しましょうか?
2017/01/02(月) 14:21:37.12ID:w6ZCrhsc
どうぞどうぞ
2017/01/02(月) 14:27:23.53ID:yIXUnWg3
>>227
オーダーについてあんま良くわかってないんだろうけどO((n-1)!) なんて書き方はないよ
もし書いたとして、それはO(n!)と同じもの
2017/01/02(月) 17:55:38.72ID:J77W/v0L
>>222
実無限はいろいろ破綻するから可能無限にしておいたほうがいいよ
実数の定義に∞, -∞は入らない
というか,そもそも -∞ というのがおかしい存在

つリーマン球面
234デフォルトの名無しさん
垢版 |
2017/01/02(月) 19:04:30.86ID:03PPbeGI
なんか正しさの証明を書いてみると簡単なことなのに長くなりますね。
もし、間違っていたら指摘してください。

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) が成り立つと仮定する。
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) = ∞ が成り立つ。
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) が成り立つ。
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) が成り立つ。
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)) ではありません。
240デフォルトの名無しさん
垢版 |
2017/01/02(月) 19:29:54.44ID:03PPbeGI
したがって、

O(f(n)) と O(g(n)) は異なります。
2017/01/03(火) 08:33:06.09ID:3o9M4oho
この狂人ヤバいなw
242デフォルトの名無しさん
垢版 |
2017/01/03(火) 08:50:16.82ID:hCDXc7Qp
>>224
>>227

閉路を含まないから、各点を高々1回しか通らない。(端点も)

直通の経路が 1
途中でk個所を通過する経路が
 (n-2)(n-3)・・・・・(n-k-1) = (n-2)!/(n-k-2)!
だけある。ただし、k≦n-2
よって
a_n = (n-2)!{1 + 1/1! + 1/2! + … + 1/(n-2)!},

n ≧ 2 のとき、

(n-2)! ≦ (n-2)! * (1 + 1/1! + 1/2! + … + 1/(n-2)!) ≦ e * (n-2)!

したがって、

a_n = Θ((n-2)!)

である。
243デフォルトの名無しさん
垢版 |
2017/01/03(火) 08:52:54.04ID:hCDXc7Qp
>>234-238

のダイクストラのアルゴリズムの正しさの証明に間違いはないという
ことでOKですか?
244デフォルトの名無しさん
垢版 |
2017/01/03(火) 11:39:58.60ID:hCDXc7Qp
Erik DemaineはMITの歴史上最年少で教授になったという天才だそうですね。

今、その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)
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) が確かに
成り立っている。
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)

が成り立つが、これは矛盾である。
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)
となる。
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)
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) となるが、これは矛盾である。
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
252デフォルトの名無しさん
垢版 |
2017/01/05(木) 09:16:14.40ID:4i7P3+nF
アルゴリズムイントロダクションって自明なことをわざわざループ不変量を使ったりして、
証明していて、うざすぎますね。
253デフォルトの名無しさん
垢版 |
2017/01/05(木) 09:16:52.73ID:4i7P3+nF
通常の数学の本なら自明で済ませるようなことをわざわざ証明している。
2017/01/05(木) 09:57:50.61ID:OZq8Y/OW
このバカ、以前も全く同じこと言って暴れたな。
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
こいつだ。

> って当たり前のことをループ不変とかを使って説明しているよね。はっきりいってくどい。
> ループ不変式とかいうのが出てくるけど、当たり前のことを形式的に証明しているだけで、つまらなすぎる。
> 馬鹿の一つ覚えみたいにループ不変式をつかって証明しようとしている。

これぞ「馬鹿の一つ覚え」である。
2017/01/05(木) 10:44:28.31ID:W/+CAQrH
数学とコンピュータ科学の区別がつかない厨房だろう
257デフォルトの名無しさん
垢版 |
2017/01/05(木) 11:01:45.09ID:4i7P3+nF
クヌースの本なんかだと妙なくどさはない。

アルゴリズムイントロダクションはメリハリが全くない。
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なこともそうでないことも平等に扱うという方針が
向いているように思う。

ただ、アルゴリズムの本に線形計画法を入れる理由が分からない。

整数論的アルゴリズムの章はあまりにも簡単すぎる。
高木貞治の本でも読んだ方がよい。
261デフォルトの名無しさん
垢版 |
2017/01/05(木) 11:28:06.54ID:4i7P3+nF
結論として、ベストな本はクヌースが予定しているTAOCPの要約本ということになる。
2017/01/05(木) 11:29:47.36ID:W/+CAQrH
結論として4i7P3+nFはNG行き
2017/01/05(木) 11:33:33.85ID:2uA+A+xC
>>253
自明ほど危ういものは無いんだが
2017/01/05(木) 11:40:35.14ID:OZq8Y/OW
例によって ID:4i7P3+nF が発狂しててワロタ
265デフォルトの名無しさん
垢版 |
2017/01/05(木) 11:44:36.30ID:4i7P3+nF
>>263

では、なぜ、一般に、コンピュータ科学者よりも頭が良いとされる数学者が
自明で済ませることが多いのでしょうか?

もし危ういのなら頭のよい数学者は自明などと書かないはずです。
2017/01/05(木) 11:52:58.57ID:r7KPx/TL
そんな多くねえよちゃんと論文読め
2017/01/05(木) 12:06:11.36ID:2uA+A+xC
自明連発する方が馬鹿なのか
2017/01/05(木) 13:09:24.25ID:c6xYhHVb
>>265
馬鹿丸出し
2017/01/05(木) 13:18:34.40ID:c6xYhHVb
>一般に、コンピュータ科学者よりも頭が良いとされる数学者が
根拠は?
>自明で済ませることが多いのでしょうか?
数学のコンテキストの話

そもそも証明の意味もコンピュータ科学と数学では違うだろ
2017/01/05(木) 14:56:52.93ID:jagWiFjG
なんでバカって本質に関係ないところでギャーギャー騒ぐの?
2017/01/05(木) 14:58:54.44ID:YjTG1plI
うむ
272デフォルトの名無しさん
垢版 |
2017/01/05(木) 19:46:02.51ID:4i7P3+nF
アルゴリズムイントロダクションについて、数学が出来る人向けの本だという人がいる。
そして、数学ができない人はセジウィック&ウエインの本を読めという人がいる。

アルゴリズムイントロダクションが数学的な本だとは全く思わない。数学的な内容については
主に結果だけを書いている。

ただネチネチとアルゴリズムの正しさの証明が書かれているだけのこと。

クヌースの本のように、楽しい本ではない。
2017/01/05(木) 20:37:39.99ID:UiiKd7HR
>>272
>>270
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;
}
2017/01/06(金) 18:06:18.89ID:XtKi9eaG
>>275
えっと
かぅですか?
http://nothingcosmos.blog52.fc2.com/blog-entry-170.html
278デフォルトの名無しさん
垢版 |
2017/01/06(金) 18:36:23.48ID:TSHa+AxL
Wrong Answerになっちゃうんだけど。
279デフォルトの名無しさん
垢版 |
2017/01/06(金) 18:38:07.31ID:TSHa+AxL
例題については正しい答えが計算されるんだけど。
2017/01/06(金) 18:43:00.23ID:LxnclcVs
よかったね
281デフォルトの名無しさん
垢版 |
2017/01/06(金) 20:15:02.80ID:TSHa+AxL
>>277

ソースレベルで再帰を除去する方法が知りたいんですが。
282デフォルトの名無しさん
垢版 |
2017/01/06(金) 20:22:33.43ID:TSHa+AxL
秋葉らのプログラムでもWrong Answerになっていまします。

入出力の問題のようですね。
283デフォルトの名無しさん
垢版 |
2017/01/06(金) 20:27:59.50ID:TSHa+AxL
入出力の問題ってやっかいですね。
出力がどうなっているかとかPOJでは調べられないんですか?
284デフォルトの名無しさん
垢版 |
2017/01/06(金) 20:41:27.59ID:TSHa+AxL
なんなんだろう?

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
2017/01/08(日) 12:31:27.73ID:0mVP2hZ6
O(n^2)
2017/01/08(日) 12:32:34.98ID:0mVP2hZ6
>>285
ここで解説されてる
http://echo.2ch.net/test/read.cgi/tech/1363854937/
288デフォルトの名無しさん
垢版 |
2017/01/08(日) 13:51:15.22ID:E98VLsZL
>>286-287

ありがとうございます。

でも解説されていませんね。
289デフォルトの名無しさん
垢版 |
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)

と解けばいいんですかね?
291デフォルトの名無しさん
垢版 |
2017/01/08(日) 14:07:36.75ID:E98VLsZL
T(n) = c1 + c2*n + T(n-1)
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)

おお、あってるっぽいですね。
293デフォルトの名無しさん
垢版 |
2017/01/08(日) 14:20:56.92ID:E98VLsZL
>>290-292
は我ながら明解な解答ですが、

教科書では、以下のように導出しています。
この導出がよく分からないのですが。

「以前に解かれている部分問題を解くための再帰は直ちに戻るので、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)

このあたりのことを言っているんですね。
2017/01/08(日) 14:27:53.04ID:rSxBm0q1
馬鹿には無理
296デフォルトの名無しさん
垢版 |
2017/01/08(日) 14:28:32.97ID:E98VLsZL
>>289

for文の繰り返し回数=計算量ですね。
297デフォルトの名無しさん
垢版 |
2017/01/08(日) 14:29:42.72ID:E98VLsZL
結局自分ですべて解決してしまいました。
2017/01/08(日) 17:12:11.39ID:8OGZNgRf
よくやった
褒美として自分専用のスレを立てる権利をやろう
2017/01/08(日) 18:45:26.96ID:KkEYpXLY
命名ID:E98VLsZは俺様
■ このスレッドは過去ログ倉庫に格納されています
5ちゃんねるの広告が気に入らない場合は、こちらをクリックしてください。

ニューススポーツなんでも実況