2ちゃんねる スマホ用 ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

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

1 :デフォルトの名無しさん:2016/06/19(日) 14:47:29.63 ID:5KvSKdL/.net
このスレッドは天才チンパンジー「アイちゃん」が
言語訓練のために立てたものです。

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

                  京都大学霊長類研究所

データ構造,アルゴリズム,デザインパターン総合スレ 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

2 :デフォルトの名無しさん:2016/06/19(日) 14:52:46.31 ID:5KvSKdL/.net
ttp://hissi.org/read.php/tech/20160619/YW80V0xnZlg.html
へんなのが居着いたな

981 :デフォルトの名無しさん[sage]:2016/06/19(日) 12:16:06.94 ID:ao4WLgfX
>>980
いつも思うんだけれども,この碁の勝負,棋譜は公開されているの?

985 :デフォルトの名無しさん[sage]:2016/06/19(日) 12:47:45.21 ID:ao4WLgfX
>>982
どこに貼ってあるかな?たぶん公開されてないんじゃないかな

986 :デフォルトの名無しさん[sage]:2016/06/19(日) 12:59:15.60 ID:ao4WLgfX
http://blogs.yahoo.co.jp/ten_nan_91/35774553.html

988 :デフォルトの名無しさん[sage]:2016/06/19(日) 13:02:20.35 ID:ao4WLgfX
ありがとう

1000:デフォルトの名無しさん[sage]:2016/06/19(日) 14:49:22.87 ID:ao4WLgfX
0

3 :デフォルトの名無しさん:2016/06/19(日) 15:04:05.74 ID:IRfn+3ke.net
>1 乙

4 :デフォルトの名無しさん:2016/06/19(日) 16:13:42.43 ID:gP7jNw8f.net
>>2
え、変なのはお前だろ。http://hissi.org/read.php/tech/20160619/NUt2U0tkTC8.html

5 :デフォルトの名無しさん:2016/06/19(日) 17:17:34.69 ID:ao4WLgfX.net
ruby って変な人が多いんだね,俺も今 ruby をマスターしようと必死ではあるが

6 :デフォルトの名無しさん:2016/06/19(日) 17:37:31.60 ID:X+E3gNs8.net
>>2
盛大な自演だったってこと?

7 :デフォルトの名無しさん:2016/06/19(日) 19:39:00.16 ID:iKM7Z0CI.net
Haskellって勉強する意味ある?
実用性はないよね?

8 :デフォルトの名無しさん:2016/06/19(日) 19:46:20.75 ID:0JS60cqV.net
雇われプログラマには不要

9 :デフォルトの名無しさん:2016/06/19(日) 20:49:00.89 ID:iKM7Z0CI.net
なぜ、HaskellやSchemeをありがたがる人がいるの?
どう考えてもC#とかのほうが生産性が高いのに。
単なるかっこつけ?

10 :デフォルトの名無しさん:2016/06/19(日) 20:49:49.63 ID:iKM7Z0CI.net
MITのコンピュータの入門書もSchemeを使っていたりする。

11 :デフォルトの名無しさん:2016/06/19(日) 20:59:07.46 ID:Axw7zBsF.net
言語としてのlisp最強論は理解できるけどね。
実用的ではないのは言語自体の問題ではなくてシェアとかサポートする企業の存在とかコミュニティの問題。

12 :デフォルトの名無しさん:2016/06/19(日) 23:46:31.97 ID:XG1Xog94.net
haskellやschemeは勉強したくない奴には不要
雇われには言語選択権はないので、かりにそれらがよいものであったとしたとしても、フラストレーションたまるだけだろ

一言でいうなら自分で一から十まで計算を構築するための言語だな
ライブラリ駆使して、なんとかすることが求められている人間にはこんなものは不要

13 :デフォルトの名無しさん:2016/06/20(月) 00:15:53.04 ID:VsbhBHIt.net
>>12
マジかよ

14 :デフォルトの名無しさん:2016/06/20(月) 00:57:04.30 ID:rbqmVuz6.net
>>12
> ライブラリ駆使して、なんとかすることが求められている人間にはこんなものは不要

ライブラリを駆使するのが今のプログラマに求められている技術だからな。

MITがSICPを教えなくなった理由
https://ezoeryou.github.io/blog/article/2016-05-05-sicp.html
> 今日では、状況が変わっている。今のエンジニアは、自分が完全に理解していない複雑なハードウェアの
> ためのコードを日常的に書いている(そして、大抵の場合、企業秘密により完全に理解するのは不可能である)。
> ソフトウェアでも状況は同じだ。プログラミング環境は、多大な機能を提供する巨大なライブラリ群の集合として存在している。
> Sussmanの今日の生徒は、その時間の大半を、ライブラリのマニュアルを読み、どのように組み合わせれば目的が
> 達成できるのかを把握することに費やしている。Sussman曰く、今日のプログラミングは、「より科学に近い。
> ライブラリを持ち寄って、つっつき回すのだ。プログラムを書くには、突っつき回して、どのように動作するかを観察する。
> そして、「目的を達成するために改造できるか」と考えるのだ」。SICPの「合成による解析」という物の見方である、
> 小さな、単純な部品を組み合わせて大きなシステムを作るということは、もはや今日の状況にそぐわなくなった。
> 今や、我々のプログラミングはつっつき回すことで行われている。
>
> なぜPythonを選んだかということについて、Sussmanは、"late binding"に決定したと冗談を飛ばした。
> Pythonには大量のライブラリがあり、教育者の様々な実習に使いやすい(たとえば、ロボットを制御するソフトウェアを書くなど)

15 :デフォルトの名無しさん:2016/06/20(月) 06:52:18.91 ID:1vrQKLsp.net
HaskellやSchemeの利点は?
少なくとも、分かりにくいよね。

16 :デフォルトの名無しさん:2016/06/20(月) 08:05:44.62 ID:8yK3ULXk.net
オブジェクト指向程ではないけどな

17 :デフォルトの名無しさん:2016/06/20(月) 12:30:23.83 ID:iz9OSKHh.net
エンジニアの選定時の足切りにちょうどいいよ

18 :デフォルトの名無しさん:2016/06/20(月) 18:11:51.85 ID:Z8Or5TTF.net
その基準で剪定できるのはかなり恵まれてる気が

19 :デフォルトの名無しさん:2016/06/20(月) 18:23:24.04 ID:78XmmaUt.net
>>14
>今日のプログラミングは、「より科学に近い。

ここは変だな
「より工学に近い。」
というなら判るが

20 :デフォルトの名無しさん:2016/06/20(月) 18:31:26.30 ID:1vrQKLsp.net
SICPをプログラミング初学者に教えるというのは確かに異様だよね。

やっとまともになったというだけの話。

21 :デフォルトの名無しさん:2016/06/20(月) 18:35:05.72 ID:1vrQKLsp.net
コンピュータサイエンスの中でアルゴリズムとデータ構造ってどれくらい重要な科目なの?

22 :デフォルトの名無しさん:2016/06/20(月) 18:50:31.57 ID:FhfmjeRD.net
アルゴリズム + データ構造 = プログラム。
ということは。
プログラムの占める割合と等価なのでは。

23 :デフォルトの名無しさん:2016/06/20(月) 18:52:50.90 ID:1vrQKLsp.net
なんか計算の理論とかのほうが上みたいな感じじゃない?

24 :デフォルトの名無しさん:2016/06/20(月) 18:53:47.25 ID:1vrQKLsp.net
コンピュータサイエンスで最も重要な科目は、コンパイラとかOS?

25 :デフォルトの名無しさん:2016/06/20(月) 18:53:55.59 ID:K++azvDQ.net
自演乙

26 :デフォルトの名無しさん:2016/06/20(月) 19:14:10.85 ID:/YC1nkci.net
>>18
この道30年の修業でようやく一人前

27 :デフォルトの名無しさん:2016/06/20(月) 20:44:30.75 ID:EiR/M7I9.net
寿司職人乙

28 :デフォルトの名無しさん:2016/06/20(月) 20:58:16.94 ID:amTC+NJd.net
schemeやらないとアルゴリズムとデータ構造を組み立てるってことがどういうことなのか、コードでわからないだろうな

29 :デフォルトの名無しさん:2016/06/20(月) 21:06:41.52 ID:taQ4Dh1l.net
>>28
javaでよくない?

30 :デフォルトの名無しさん:2016/06/20(月) 21:24:25.76 ID:iSiyYjqf.net
javaでconsを表現するときにどうすればいいか知ってますか?

31 :デフォルトの名無しさん:2016/06/20(月) 21:29:28.84 ID:1vrQKLsp.net
>>28

アルゴリズムとデータ構造の本に疑似コードが載っていることがあるけど、
Scheme風に書かれていることなど決してない。

32 :デフォルトの名無しさん:2016/06/20(月) 21:47:01.99 ID:eW3OX+fW.net
>>27
植木職人

33 :デフォルトの名無しさん:2016/06/20(月) 22:10:02.53 ID:iz9OSKHh.net
>>18
未経験でも理解出来るならとりあえず地雷の可能性は下がる

34 :デフォルトの名無しさん:2016/06/20(月) 22:22:55.57 ID:m9phkWTx.net
恵まれてない会社だと全員切る羽目になるって話だろw

35 :デフォルトの名無しさん:2016/06/20(月) 22:43:48.30 ID:zvz85rzc.net
31
そのSICPはschemeでかかれているわけで
昨今のライブラリ重視の観点からいえば、javaがいいっていうのはとおるけど、アルゴリズムかくのにjavaがいいってのは、センスないというか、お手入れ大好きなんだろうな

36 :デフォルトの名無しさん:2016/06/20(月) 22:49:30.47 ID:eW3OX+fW.net
引用できないやつに言われると

37 :デフォルトの名無しさん:2016/06/20(月) 22:50:33.93 ID:zvz85rzc.net
スマホで>>うつのめんどいんだよ

38 :デフォルトの名無しさん:2016/06/22(水) 04:43:48.40 ID:W4spe1mc.net
日立、新型半導体コンピュータの実用化に向けた前処理アルゴリズムを開発
http://news.mynavi.jp/news/2016/06/21/172/

新型半導体コンピュータの実用化に向けて、
要素間の複雑なつながりを規則的な構造に自動変換する前処理アルゴリズムを開発
http://www.hitachi.co.jp/New/cnews/month/2016/06/0621a.html

関連記事
日立、量子コンピュータに匹敵する性能の室温動作の新型コンピュータを試作
http://news.mynavi.jp/news/2015/02/23/121/

39 :デフォルトの名無しさん:2016/06/22(水) 07:14:40.76 ID:rmORGvIR.net
日本人の書いたアルゴリズムとデータ構造の本でまともなのって1冊もないの?

40 :デフォルトの名無しさん:2016/06/22(水) 07:53:05.39 ID:HSGRYDR8.net
>>39
まともとは?

41 :デフォルトの名無しさん:2016/06/22(水) 07:59:50.23 ID:rmORGvIR.net
日本人の書いた本は薄っぺらくて説明も十分ではなく厳密でもなく網羅性もない本ばかりに思う。

42 :デフォルトの名無しさん:2016/06/22(水) 08:00:26.15 ID:rmORGvIR.net
杉原厚吉の本は特にひどいと思った。

43 :デフォルトの名無しさん:2016/06/22(水) 11:07:15.76 ID:DmPvlaR4.net
>>39
そのものズバリでアルゴリズムとデータ構造という本が岩波から出てる

44 :デフォルトの名無しさん:2016/06/22(水) 12:53:15.55 ID:YevSrNYa.net
まともな本とは?
argolythm introduction?
knuth本?
どっちも使い物にならないが

45 :デフォルトの名無しさん:2016/06/22(水) 13:50:41.86 ID:WHe3DbmR.net
>>44
1単語に3箇所もミス入れるなよ

46 :デフォルトの名無しさん:2016/06/22(水) 14:13:53.39 ID:sEqYA8cS.net
根幹のタームの綴りも知らん半可通に何を教われというのか

47 :デフォルトの名無しさん:2016/06/22(水) 14:17:48.79 ID:yBOVYSwe.net
3ヶ所もあると誤り訂正も利かないんじゃまいか

48 :デフォルトの名無しさん:2016/06/22(水) 14:22:16.34 ID:EwWgL4+X.net
バースト発生させんな

49 :デフォルトの名無しさん:2016/06/22(水) 15:16:40.79 ID:2z7j8yec.net
????????????

50 :デフォルトの名無しさん:2016/06/22(水) 21:44:16.49 ID:MWgF3eo3.net
>>44
そんな頭じゃ使いものにならんのも頷けるわ

51 :デフォルトの名無しさん:2016/06/22(水) 22:23:26.91 ID:Z2xvvdgM.net
こんな揚げ足とりの老害から何を学べと?

52 :デフォルトの名無しさん:2016/06/22(水) 22:52:24.12 ID:X6XCfxlz.net
馬鹿の自己紹介されても困る

53 :デフォルトの名無しさん:2016/06/24(金) 11:47:43.21 ID:hSLmnyaY.net
>>19
は?変なのはお前だ
プログラミングは最初から工学的だろ何言ってんだ?

そもそもお前は工学と科学を理解してないから可笑しなことを言うんだ

54 :デフォルトの名無しさん:2016/07/15(金) 12:10:18.78 ID:P21uCIN+.net
何ヶ月か前に近代科学社に電話でセジウィックアルゴリズムの第四版の翻訳の予定はありますか、と訊いてみたが無いって返事だったんだよな
書いて欲しいんだがな

55 :デフォルトの名無しさん:2016/07/16(土) 08:00:53.05 ID:Akpk7DL9.net
アルゴリズムさえ知ってりゃ動くプログラムは書けるから他は優先度低いと考えてた結果
データ構造すら分からない化石プログラマになってしまった

今必死にデータ構造とデザインパターン勉強中だけど、わかってくると楽しいね

アルゴリズムみたいにオーダー詰める楽しみはないけど…

56 :デフォルトの名無しさん:2016/07/18(月) 09:37:52.19 ID:YPoLSDg9.net
両方大事だろ。
データ構造が整理されてないとアルゴリズムも煩雑になるし。

57 :デフォルトの名無しさん:2016/07/21(木) 23:06:49.37 ID:TpMXx+Na.net
vEB木の「僕の考えた最強のデータ構造」感が大好きなんだが誰か共感してくれる人いる?

58 :デフォルトの名無しさん:2016/07/22(金) 07:32:19.08 ID:ot11jjQx.net
データ構造の基本は、以下の2つと、他にはハッシュがある

A → B → C → D
のように、メモリ上の位置がバラバラなオブジェクトを、リンクでつないでいくものと、
(シーケンシャルアクセス)

ABCD
のように、連続したメモリ位置に、オブジェクトやオブジェクトの参照が確保されていて、
単純な計算式で、各オブジェクトにアクセスできるもの(ランダムアクセス)

シーケンシャルは、リンクをたどるから、アクセスには時間がかかるけど、
要素の追加・削除では、リンクを付け替えるだけで、要素をずらさないから速い

59 :デフォルトの名無しさん:2016/07/26(火) 06:56:53.95 ID:HN1KCMsQ.net
letの時代がもうすぐそこまで来ているよね

60 :デフォルトの名無しさん:2016/07/26(火) 14:27:18.12 ID:z5g/0KTZ.net
let
-------
 λ

61 :スモモンガー:2016/09/23(金) 22:08:49.88 ID:oKXONAGb.net
どうも、お久しぶりです。スモモンガーです。(誰って感じだと思いますがそれで結構です)
以前紹介したアルゴリズムですが、結局全然応用分野は見つかっておりません。
前回は画像処理分野を中心に解説しましたが今回はより簡単に実装ができる
探索分野に絞って動画を作ってみました。つたない動画で大変申し訳ございませんが
見てみていただけたら幸いです。特許などは取得しておりませんのでどうかご自由に
お使いください。長文失礼いたします。痛いのは承知なのですが応用分野を必死に
探しているのでどうかご協力よろしくお願いします。

https://youtu.be/5m3kPHO2w98

以上、どうぞよろしくお願いします

62 :デフォルトの名無しさん:2016/09/23(金) 22:16:41.76 ID:xWgfj234.net
誰だ

63 :デフォルトの名無しさん:2016/09/23(金) 22:42:52.63 ID:fJ2M8QeM.net
帰れ

64 :デフォルトの名無しさん:2016/09/24(土) 09:14:59.70 ID:osPXZH57.net
>>61
最初の数分見ましたが..

1) 何の探索なの?最初は「探索」と聞いて「グラフかな?」とか思ったけど配列みたいだし、最初に想定される入力を明確にした方がいいですね

2) プレゼンが文章を読み上げてるだけでイメージが湧きにくい
1,4,10,20,25 …
の例ではイラストを用いた方がわかりやすいと思います

3) Kangaroo Method とはのスライドでデータがソートされていて、キーの差が (中略) バイナリサーチと同等の効率を .. とありますが、例では入力が完全にソートされているようです。これなら最初からバイナリサーチを使います

また、11m10s くらいのところで「Sinカーブは整ってる」とありますが、「整っている」の定義がよくわかりません。その後の例も見ましたが、どのくらいまで途中に想定されていないデータが混じっていても許容範囲なのかが不明です

4) 先に長所短所のスライドを持ってきて、擬似コードとオーダーも明記し、「一部ソートされてなくても O(logn) で探索できます」みたいなのを書いて、見ている人を「それならもうちょっと続きを見てみようか」みたいな気にさせられればもっといいですね

以上、感想でした

65 :デフォルトの名無しさん:2016/09/24(土) 09:32:41.92 ID:n5/uj8Su.net
64さん。ありがとうございます。私はこういうスライドを作る機会があまりないのでこんな形になってしまいました。
実は整っているという抽象的な単語を使っていますが、実は定量的にこれを測る方法はまだ思いついていません。
そのほかのご指摘はその通りだと思います。
貴重なご意見ありがとうございます

66 :デフォルトの名無しさん:2016/09/24(土) 09:49:16.96 ID:B225F1SQ.net
動画見るの面倒だから3行で説明して

67 :デフォルトの名無しさん:2016/09/24(土) 09:53:53.39 ID:trsNBxRI.net




68 :デフォルトの名無しさん:2016/09/24(土) 09:55:26.18 ID:n5/uj8Su.net
>>66
まず目的のキーと現在探索中のキーの差をとる。
それを隣接するキーの最大値で割る。
その値だけ進む。

まあ、原理は単純なアルゴリズムです

69 :デフォルトの名無しさん:2016/09/24(土) 10:46:59.06 ID:iZTaxfZT.net
>隣接するキーの最大値

これをあらかじめ求めておかなきゃならんってのが一番のネックだな。
一般のデータに対する探索だと、バイナリサーチと比較したメリットと言っていたものの大半が消し飛んでしまう。

70 :デフォルトの名無しさん:2016/09/24(土) 10:49:01.89 ID:9ZsTQHH6.net
>>61
印象としては
1. 要素間の差の最大値を求めるのに線形時間
2. 各要素の値の差が一定でないと性能を発揮しない(最大値を求めるのも含め)
3. 探索の最悪時間が線形時間、恐らく平均も線形時間
4. ソートされていなくても探索可能な条件が不明瞭
5. データの内容に探索コストが大きく左右される

例えば
1 2 4 9 15 24 100 120 1002 1225
とあった時、差の最大値は
1002-120=882
1002を探索すると
1002-1=1001, 1001/882=1
1002-2=1000, 1000/882=1
1002-4=998, 998/882=1
1002-9=993, 993/882=1
...
と線形時間になる(やり方あってるよね?)
演算している分、比較だけの線形探索より処理速度が遅くなる

71 :デフォルトの名無しさん:2016/09/24(土) 11:09:23.58 ID:n5/uj8Su.net
>>69
>>70
確かにキーの最大値を求めるのは線形時間かかります。なのであらかじめ、隣接するキーの最大値が分かっているデータに使用可能です。
探索の最悪時間は線形時間ですが、平均時間はlogのオーダーになるのではないでしょうか。私が不勉強なもので理論的には、示めせませんが多分logのオーダーになると思います。
ソートしなくても探索できるのは差の絶対値を取るからです。動画に入れるのを忘れました。すいません。
計算についてはそれであっています。わざわざご指摘ありがとうございます

72 :デフォルトの名無しさん:2016/09/25(日) 01:17:16.51 ID:MeFnEkA4.net
>>71
上でも指摘されているが整っているの定義が不明
二分探査の場合は、存在しないこともlog n で確認可能だが、この手法は整っているの定義次第では存在しない者の確認が非常に時間かかる(ソートされている場合は存在するものと同等だが、そうすると二分探索よりも利点が少なくなる)
平均計算量を求めるのはちと難しそうだけど、格納される値の値域に依存するかな
たぶん、log n 程良くはないと思う

73 :デフォルトの名無しさん:2016/09/25(日) 09:29:52.06 ID:byM8xGto.net
>>72
ご指摘ありがとうございます。確かに整っているの定義ができていないのが一番の難点ですよね。いつか勉強して考えたいと思います

74 :デフォルトの名無しさん:2016/09/25(日) 12:26:29.96 ID:3wiQalb8.net
>>67
ごめん
みたけど
だめだこりゃ

75 :デフォルトの名無しさん:2016/09/25(日) 12:52:11.14 ID:NTqjAG/u.net
>>71
各要素間の差が一定であればO(1)、当たり前だけど、これは計算で求まる
各要素間の差の分布数が要素数に近づき、尚且つその落差が激しい場合
著しく線形時間になる

で、探索したい数値と差の最大値の商が1だった場合
その探索したい数値がある位置以下の数値探索はO(n)になる
データ列の後半に行くほど1回の演算で要素をステップする数が増えるけど
その移動は微々たるもの
データ列の内容に左右されることを差っ引いても、O(log n)からは程遠いと思う
詳しい計算は出来ないが、これを線形時間としても無理はないと思う

参考として
0 1 3 6 10 15 21 28 36 45
このデータ列では、15以下の探索はO(n)、
21は5回、28は4回、36は4回、45は3回の演算

結論として
このアルゴリズムの最大の欠点は差の最大値が必要な事を含めて
データ列の内容に左右されてしまうことだな
この手のアルゴリズムはデータの外側にあるべきだな

76 :デフォルトの名無しさん:2016/09/25(日) 14:20:01.83 ID:8PebKpFu.net
>>74
88

77 :デフォルトの名無しさん:2016/09/26(月) 13:42:01.27 ID:ymOrEJcI.net
>>61
すもモンがnewton法をガチで知らないのであればnewton法をまず勉強するべき
カンガルーの敵はバイナリではなくnewtonだ

78 :スモモンガー:2016/09/26(月) 20:32:40.67 ID:7l1kSKga.net
確かにデータ間の差に一様離散分布を使ったのは公平ではなかったです。
なので、データを完全にランダムにして調べてみました。
データはCのrand()%1000000で10000個生成しソートして、
探索の時配列のうちランダムな値を探すキーとし間を線形探索、カンガルー法
バイナリサーチで100回比べてみました。
その結果線形探索では平均比較回数約4963回最大比較回数は9972回でした
カンガルー法は平均比較回数約70回 最大比較回数は111回でした。
バイナリーサーチはやはり一番はやく、平均比較回数約12回、最大比較回数は14回でした
皆さんがご指摘の通りやはりバイナリーサーチが一番はやいようです。
ただ、例えばKMP法が逆行がないから使われているようにカンガルー法も逆行がないので
使うことはできないでしょうか?もし、とんちんかんなこと言ってたらすいません。

79 :デフォルトの名無しさん:2016/09/26(月) 20:37:55.45 ID:7l1kSKga.net
>>74
www確かにそうかもしれませんね。
>>77
一応私はニュートン法については知っています。Newton法は求める関数の微分した値を
しっていなければならないとおもうのですが、現実の探索だと関数が微分できないことも
多いかと思います。ちょっと、私が使った例が悪くてsinカーブや円を使ったのがよく
なかったのかもしれません。整っていてソートされていないデータとして扱いやすかったので
sin関数を使ったのであってとくにデータが微分可能である必要はありません。円と
Y切片の交点も中学生でも二次方程式ときゃいいのでもっと簡単にできますが、本来は
多角形とさまざまな図形の交点を探るアルゴリズムです。円を使ったのは例をわかりやすく
したかったからです。

80 :デフォルトの名無しさん:2016/10/16(日) 18:51:48.49 ID:LqkHCFhg.net
状態遷移ってどういうステータス持てばいいの?

A と B のステータスがあって、お互いが切り替わるのに n秒 かかる
切り替わりに失敗したら切り替えをリトライする
AはBになろうとし、BはAになろうとする

というとき、A と B のほかに AからBになるのを待ってる状態と
BからAになるを待ってる状態の 2つがさらに状態として必要?
過渡状態も状態?

81 :デフォルトの名無しさん:2016/10/17(月) 07:56:46.27 ID:TukeUWYl.net
>>80
システムの設計次第。
切り替え中、待ち中が状態として存在するのならプログラムでも状態にすればいい

82 :デフォルトの名無しさん:2016/10/17(月) 15:43:18.44 ID:srAFoI0L.net
>>81
そりゃそうだけど
状態がn個あると過渡状態がたくさんになるのは
辛い

83 :デフォルトの名無しさん:2016/10/17(月) 17:53:14.06 ID:75S5w4gh.net
現在の状態と次の状態のペアにすれば?

84 :デフォルトの名無しさん:2016/10/17(月) 21:23:44.83 ID:sc7L52q+.net
辛かろうが状態が存在するのならしょうがあるまい。
あるいは遷移をアトミックにして遷移中状態そのものを無くすか、遷移中の動作を共通化
できるなら遷移先をパラメータ化して「*への遷移中」という1状態にしてしまうとか。

85 :デフォルトの名無しさん:2016/10/17(月) 23:34:18.88 ID:WkWdUImM.net
>>82には無理ということで

86 :デフォルトの名無しさん:2016/11/05(土) 20:41:10.12 ID:PXYcOtjJ.net
ポリモーフィックなクラスの相互作用において特定の型の組み合わせの場合のみ処理を特殊化したい場合はどうすればいいのだろう?

x = xFactory.create(...);
y = yFactory.create(...);

if(x.typeCode() == X.Foo && y.typeCode() == Y.Hoge)
executeSpecial((Foo) x, (Hoge) y);
else if (...)
...
else
executeNormal(x, y);

87 :デフォルトの名無しさん:2016/12/12(月) 23:13:40.61 ID:IcWOSn01.net
デザインパターンを使って実装すると、年長プログラマーから、またこんなことしやがって的な拒否反応が帰ってくるんだがどうすれば

88 :デフォルトの名無しさん:2016/12/12(月) 23:42:41.92 ID:bt79hYqC.net
排除する他道は無い。

89 :デフォルトの名無しさん:2016/12/12(月) 23:50:03.81 ID:hGpJarHd.net
転職しろ

90 :デフォルトの名無しさん:2016/12/13(火) 03:19:26.34 ID:neuXXcOh.net
若者で組合(または派閥)を創る

91 :デフォルトの名無しさん:2016/12/13(火) 08:14:05.45 ID:5xcG7lRc.net
>>87 がどんなコードを書いたかも分からんのに

92 :デフォルトの名無しさん:2016/12/13(火) 18:53:42.04 ID:MUcELcjh.net
下手くそがデザインパターンとか使うと逆にこんがらがるからなぁ
老害とどっこいどっこいだろ

93 :デフォルトの名無しさん:2016/12/13(火) 21:32:18.83 ID:lYWHr0pJ.net
マルチスレッドで、なんの考えもなくオブザーバー使いまくられて、データ破壊しまくられた時には、本気で殺意を抱いたよ

94 :デフォルトの名無しさん:2016/12/16(金) 15:12:11.72 ID:kO0vFktz.net
『プログラミングコンテスト攻略のためのアルゴリズムとデータ構造』

の優先度付きキューについてのプログラムについて質問です。

p.241の heapIncreaseKey(A, i, key) という関数内で、

「if key < A[i] エラー:新しいキーは現在のキーより小さい」

というのがあります。

これがなぜ必要なのかが分かりません。

insert(key) を見れば分かるように、この本の使われ方では、
key < A[i] になることは決してありません。

よろしくお願いします。

95 :デフォルトの名無しさん:2016/12/16(金) 15:34:53.22 ID:n8JQ6xp/.net
assertionじゃね

96 :デフォルトの名無しさん:2016/12/17(土) 16:05:18.68 ID:lvQHWty7.net
完成形をいきなり見てると不思議に思うよね。
でも実際には作成中のバグを考慮して、最初にチェックを入れておくもんなんだよね。
まあ、一言で言えばassertなんだけど。

ただ、作業やデバッグ用には必須であっても、その本の例示として必要か?と言われれば、確かにいらない気がする。

97 :デフォルトの名無しさん:2016/12/17(土) 16:09:26.93 ID:GDWdcO6h.net
>>95-96

『プログラミングコンテスト攻略のためのアルゴリズムとデータ構造』の参考文献に
挙げられている『アルゴリズムイントロダクション』を見てみたら、全く同じプログラム
が載っていました。

完全にパクっていますね。

>>96
デバッグ用にどうして必要なのかが分かりません。

『プログラミングコンテスト攻略のためのアルゴリズムとデータ構造』はお持ちでしょうか?
もし、お持ちでないようでしたら該当箇所の画像をアップロードします。

98 :デフォルトの名無しさん:2016/12/17(土) 16:23:27.88 ID:GDWdcO6h.net
>>94

念のため、該当箇所の画像をアップロードさせていただきます。
読めば読むほど意味不明です。

http://imgur.com/zKVWzAJ.jpg
http://imgur.com/owa8NkX.jpg
http://imgur.com/NmCczss.jpg

99 :デフォルトの名無しさん:2016/12/17(土) 16:42:25.50 ID:a9hyyPvt.net
>>97
参考文献ならパクってるとは言わない

100 :デフォルトの名無しさん:2016/12/17(土) 16:43:27.67 ID:a9hyyPvt.net
>>98
こういうのが本当のパクり
訴えられたら負ける

101 :デフォルトの名無しさん:2016/12/17(土) 18:12:28.79 ID:rDdwnYMe.net
>>97
他の本も読んでみるとわかると思うけど、プライオリティキューを二分木ヒープで実装するのは定番で、どの本でも大体同じことが書いてある

102 :デフォルトの名無しさん:2016/12/17(土) 19:29:55.59 ID:GDWdcO6h.net
>>98

「if key < A[i] エラー:新しいキーは現在のキーより小さい」

というのが、デバッグ用であるとは思えないのですが、これは一体何なんでしょうか?

heapIncreaseKey(A, i, key) を何か別の用途に使う場合があって、そのときに必要に
なるのならば納得しますが。

103 :デフォルトの名無しさん:2016/12/17(土) 19:31:29.47 ID:GDWdcO6h.net
>>101

「if key < A[i] エラー:新しいキーは現在のキーより小さい」

という意味不明のコードも『アルゴリズムイントロダクション』のプログラムには
書いてあります。

こんな余計なコードは普通は入れないと思います。

完全にパクりだと思います。

104 :デフォルトの名無しさん:2016/12/17(土) 19:35:00.61 ID:a9hyyPvt.net
>>103
参考文献に書いてあるんだからパクリも糞も無い罠
参考文献に書き漏れたら小保方さんみたいに突っ込まれるが

105 :デフォルトの名無しさん:2016/12/17(土) 19:35:29.11 ID:GDWdcO6h.net
『プログラミングコンテスト攻略のためのアルゴリズムとデータ構造』の
他のプログラムもおそらくすべて『アルゴリズムイントロダクション』の
プログラムをそのまま使っています。

恥を知れと言いたいです。

106 :デフォルトの名無しさん:2016/12/17(土) 19:36:34.73 ID:GDWdcO6h.net
参考文献に文献を挙げれば何でも許されるということはないと思いますが。

107 :デフォルトの名無しさん:2016/12/17(土) 19:39:42.80 ID:GDWdcO6h.net
『アルゴリズムイントロダクション』のほうをよく読んでいませんが、

「if key < A[i] エラー:新しいキーは現在のキーより小さい」

というのも『アルゴリズムイントロダクション』のほうでは意味があるのかもしれません。

それをそのまま何も考えずにコピペしたために、意味不明なことになっているのかも
しれません。

>>98

を見て、誰か納得のいく説明ができるでしょうか?

意味不明としか言えないかと思います。

108 :デフォルトの名無しさん:2016/12/17(土) 19:42:21.87 ID:C/wQAZQ3.net
『アルゴリズムイントロダクション』のほうをよく読んでいませんが、
『アルゴリズムイントロダクション』のほうもまたどっか別の本からのパクリの悪寒。

109 :デフォルトの名無しさん:2016/12/17(土) 19:47:48.93 ID:YhK78PBA.net
"error: heap underflow" でググるといっぱい出てくる

110 :デフォルトの名無しさん:2016/12/17(土) 19:57:50.69 ID:rDdwnYMe.net
ID:GDWdcO6h は何をそんなに怒ってるの?
問題が解けなくてイライラしてるだけ?

どんな本も参考文献があり、どんなアルゴリズム、データ構造も元をたどれば最初に「ヒープで実装すればうまく行くぞ!」と発見した人の論文があるはず

新しい本を書くときは参考文献よりもわかりやすくなるように、説明やイラスト、擬似コードを変えたり、あるいは同じものを流用することもあるだろう

111 :デフォルトの名無しさん:2016/12/17(土) 20:55:04.47 ID:jmPH7DRp.net
disるのがはやってるらしい

112 :デフォルトの名無しさん:2016/12/18(日) 00:45:20.51 ID:aCKcGLhu.net
プログラミングコンテスト攻略のための、
アルゴリズムとデータ構造、渡部有隆(わたのべ ゆたか)、2015
Ozy(協力), 秋葉 拓哉(協力)

Aizu Online Judge(AOJ、会津大学)

プログラミング・コンテスト・チャレンジブック、第2版、2012
秋葉 拓哉, 岩田 陽一, 北川 宜稔

元々は、3人の東大大学院生が作った、チャレンジブックが大ヒットした。
今までは、こういうコンテストの問題を研究した本が無かった

一方、すでに海外では、TopCoder, Google Code Jam などが、
プログラマーの主戦場となっていて、日本では、AOJ が後を追っている状態

渡部有隆の本は、チャレンジブックの後に出した。
協力に、秋葉 拓哉の名前もある

プログラマ脳を鍛える数学パズル
シンプルで高速なコードが書けるようになる70問、増井 敏克、2015

一方、増井は、Rubyで解く、このパズル本で、
「ITエンジニアに読んでほしい!技術書・ビジネス書 大賞(ITエンジニア本大賞)」を受賞している

113 :デフォルトの名無しさん:2016/12/18(日) 00:49:54.79 ID:VFzWAIXP.net
めんどくさ

114 :デフォルトの名無しさん:2016/12/18(日) 01:14:58.25 ID:aCKcGLhu.net
漏れも、JavaScriptで、2分ヒープ(BinaryHeap)を実装したので、参照して
http://jsdo.it/michihito/bGH5

2分ヒープは、優先度つきキュー (順位キュー、priority queue)や、
ダイクストラ法 (Dijkstra's Algorithm)で使う

配列の[0]は使わない。[1]から始めると計算が楽
親1, 左右の子は2, 3で、親n, 子2n, 2n+1

プログラミング・コンテスト・チャレンジブックでは、[0]から始めていますが、
もし[0]から始めると、
親0, 左右の子は1, 2で、
親1, 左右の子は3, 4で、
親n, 子2n+1, 2n+2、となり複雑だから

115 :デフォルトの名無しさん:2016/12/18(日) 01:56:35.37 ID:05Ug+E6t.net
>>114
汚すぎるコードだ。なんだろう。初心者とも違うな。
まるで20年ぐらい前から成長してない人が書いたコードのようだ。

116 :デフォルトの名無しさん:2016/12/18(日) 02:12:34.14 ID:KR24tnjc.net
>>115
ド素人と丸出しの感想文だな

117 :114:2016/12/18(日) 04:57:12.61 ID:aCKcGLhu.net
すまぬ

JavaScriptも、よく知らずに書いたのだw
本当は、== ではなく、型も一致する厳密等価演算子、=== を使うべきだろう

まあ、JSなどで、とても開発はできない。
Haxe で書き直せばよいのだろうが

Kotlin, Electron やら何やら、最近の言語に、ついていけてないw

118 :デフォルトの名無しさん:2016/12/18(日) 08:19:04.80 ID:05Ug+E6t.net
> 本当は、== ではなく、型も一致する厳密等価演算子、=== を使うべきだろう
そういうレベルじゃない。

無駄なロジック、意味不明な変数名、多すぎるコメント、
コードの意味を何一つ分かってないとしか思えないといってんの

119 :デフォルトの名無しさん:2016/12/18(日) 11:08:48.21 ID:7J/3tpZx.net
俺はむしろここ
> このソースコードのライセンスは、MIT License です
> Original Copyright (c) 2014 Michihito Seto All Rights Reserved.
残飯を神棚に飾るが如く宣言
ここにこそ初心者らしさが凝縮されてる

120 :デフォルトの名無しさん:2016/12/18(日) 11:50:21.36 ID:5nrc1ooF.net
>>114

『プログラミングコンテスト攻略のためのアルゴリズムとデータ構造』の

「if key < A[i] エラー:新しいキーは現在のキーより小さい」

というのは意味があるのでしょうか?

121 :デフォルトの名無しさん:2016/12/18(日) 11:50:54.72 ID:05Ug+E6t.net
jsdo使ってるやつって汚いコードが多いよな。
素人が使いたくなる機能でもあんのか?
ブラウザだけで開発ができるとか?

122 :デフォルトの名無しさん:2016/12/18(日) 11:53:36.61 ID:5nrc1ooF.net
デバッグなど必要のないくらい簡単なコードなので、デバッグ用とは考えられないかと思います。

123 :デフォルトの名無しさん:2016/12/18(日) 11:57:14.52 ID:0+9ctOie.net
馬鹿ほど自説に拘るw

124 :デフォルトの名無しさん:2016/12/18(日) 12:12:58.36 ID:5nrc1ooF.net
Introduction to AlgorithmsよりもAlgorithms(Sedgewick、赤い本)のほうがいい本ですね。

読んでいて楽しい。

125 :デフォルトの名無しさん:2016/12/18(日) 12:18:23.69 ID:5nrc1ooF.net
日本語のデータ構造とアルゴリズムの本だと、茨木の本が有名だけど、
どこがいいのかさっぱりわからない。

翻訳書ではない日本語の本でまともなのは、浅野孝夫の本くらいではないでしょうか?

126 :デフォルトの名無しさん:2016/12/18(日) 12:18:30.80 ID:d5jVhhWj.net
アルゴリズムやコードのライセンスってどの程度のものから付けていいんだ
あんまり簡単なものだと既出すぎてライセンス付けられるのか?って考えてしまう
かといってじゃあライセンス付けていい最低ラインは何なんだという話になる

127 :デフォルトの名無しさん:2016/12/18(日) 12:20:00.87 ID:5nrc1ooF.net
>>126

ライセンスとか書いてあっても一部だけコピペして利用したら、分からないですよね。

どうやって、だれかのコードを流用したか判定するのか、それに興味があります。

128 :デフォルトの名無しさん:2016/12/18(日) 12:30:54.60 ID:RB5DyRP2.net
アルゴリズムには著作権ないよ
あるのはそれをどう表現したか
簡単なアルゴリズムには表現バリエーションなんて限られてるから
ある程度似るのはどうしようもない

129 :デフォルトの名無しさん:2016/12/18(日) 12:37:57.44 ID:5nrc1ooF.net
特許ならありますよね。

130 :デフォルトの名無しさん:2016/12/18(日) 13:02:47.44 ID:PELrVlNw.net
デザインパターンの本高い・・・
一冊持ってたけど引っ越しのごたごたでなくしちゃった
無料で網羅できるサイトありませんかね
一冊読んではあるので、さらっと構造や仕組みを紹介してくれていればいいし
英語もある程度は読めます

基本のデザインパターンだけでもありがたいし
マルチスレッド対応に踏み込んだサイトならなおありがたいです

131 :デフォルトの名無しさん:2016/12/18(日) 13:22:26.46 ID:d5jVhhWj.net
基本的な考え方覚えたら幾らでも応用できるだろ
カタログを後生大事にとっておく意味はない

132 :デフォルトの名無しさん:2016/12/18(日) 13:35:15.82 ID:PELrVlNw.net
覚えてないんすよ
記憶力ないんで忘れちゃって、ぼんやりとしか覚えてないんです
だから概要をしっかり覚え直したいなと思って

133 :デフォルトの名無しさん:2016/12/18(日) 13:42:55.97 ID:+dKTlaSP.net
>>132
いや、デザパタ本こそ手元においておくべき
わけのわからん二次情報を見るとどんどんブレていくぞ

134 :デフォルトの名無しさん:2016/12/18(日) 13:45:05.00 ID:RB5DyRP2.net
リファレンスとしてはどの本がいい?

135 :デフォルトの名無しさん:2016/12/18(日) 13:45:12.43 ID:5nrc1ooF.net
ソフトウェア工学的な本って重要なんですか?

136 :デフォルトの名無しさん:2016/12/18(日) 13:45:59.00 ID:5nrc1ooF.net
学問的には全く面白くない分野ですよね。

137 :デフォルトの名無しさん:2016/12/18(日) 14:08:17.53 ID:PELrVlNw.net
TECHSCOREのデザインパターンのページ見ることで自己解決しました

138 :デフォルトの名無しさん:2016/12/18(日) 15:45:37.97 ID:VFzWAIXP.net
デザパタカタログは便利だよね
煮詰まったときに、休憩がてらパターンを眺めてると、閃くときがある

139 :デフォルトの名無しさん:2016/12/18(日) 16:24:54.12 ID:+Ko1jSRc.net
ねーわ、普通のコードが99.99%

140 :デフォルトの名無しさん:2016/12/18(日) 18:22:27.13 ID:d5jVhhWj.net
基本的な発想を学んだらカタログはポイ
パターンに執着してもデザインがぎこちなくなるだけ

141 :114:2016/12/18(日) 23:03:56.86 ID:aCKcGLhu.net
>>119
jsdo.it では、全員のソースコードが、サイト内に限り、MITになる

漏れが、わざわざ、MITと書いておいたのは、サイト外でも使ってほしいという意味。
学生が勉強することも多いから、コメントも一杯書いた

2分ヒープ、AVL、赤黒木など、アルゴリズムの実装は、どうしても汚いソースコードになる

142 :デフォルトの名無しさん:2016/12/18(日) 23:11:13.26 ID:f3M2Oqre.net


143 :デフォルトの名無しさん:2016/12/18(日) 23:11:21.17 ID:5nrc1ooF.net
2分ヒープって簡単なアルゴリズムですよね。

汚くなりようがないように思うのですが。

144 :デフォルトの名無しさん:2016/12/18(日) 23:12:19.64 ID:5nrc1ooF.net
計算幾何学って難しい割に見返りが少ないように思います。

だからあんまり人気がないのかもしれないですね。

145 :デフォルトの名無しさん:2016/12/19(月) 00:01:07.57 ID:hSWjQy3F.net
漏れw

146 :デフォルトの名無しさん:2016/12/19(月) 01:06:56.52 ID:8cVREo5r.net
流石に漏れは笑う

147 :デフォルトの名無しさん:2016/12/19(月) 08:08:43.72 ID:judB9f5Y.net
>>144
全体的なリテラシの底上げがされるまではどうしてもね。

148 :デフォルトの名無しさん:2016/12/19(月) 12:42:11.26 ID:z9XVuDpo.net
>>144
理論的な上限値をあらかじめ計算することが出来て
無駄な努力や試行錯誤をしなくて済むというメリットがあるよ

149 :デフォルトの名無しさん:2016/12/19(月) 17:37:02.75 ID:ic0p/3Yf.net
長さnの整数からなる列(a_1 ,a_2, ..., a_n) があるとして、列の大きさを
|a_1|+...+|a_n|で定義します。、
大きさがmの任意の列を大きさm-1の列の中の一つの値だけ1違う
列一つに対応させたいんですけど
対応のさせ方がわかりません、教えてください。
例えば n=3のとき(1, -1, 1)は大きさが3で、これに対応する長さ2の列は
(0 ,-1 ,1), (1,0,1),(1,-1,1),(1,-1,0)とかあるので一つには定まってません。
なのでその対応をする関数をおしえてください。

150 :間違ってたので直します:2016/12/19(月) 17:39:59.34 ID:ic0p/3Yf.net
長さnの整数からなる列(a_1 ,a_2, ..., a_n) があるとして、列の大きさを
|a_1|+...+|a_n|で定義します。、
大きさがmの任意の列を大きさm-1の列の中の一つの値だけ1違う
列一つに対応させたいんですけど
対応のさせ方がわかりません、教えてください。
例えば n=3のとき(1, -1, 1)は大きさが3で、これに対応する大きさ2の列は
(0 ,-1 ,1), (1,0,1),(1,-1,0)とかあるので一つには定まってません。
なのでその対応をする関数をおしえてください。

151 :デフォルトの名無しさん:2016/12/19(月) 17:48:27.12 ID:z9XVuDpo.net
(1,-1,1)の長さが2?

152 :デフォルトの名無しさん:2016/12/19(月) 17:53:09.70 ID:yHCszZUX.net
>なのでその対応をする関数をおしえてください。

意味不明です。

153 :デフォルトの名無しさん:2016/12/19(月) 17:55:40.11 ID:yHCszZUX.net
(a_1, a_2, ..., a_i, ..., a_n)

a_i > 0 のときには、

(a_1, a_2, ..., a_i-1, ..., a_n)

a_i < 0 のときには、

(a_1, a_2, ..., a_i+1, ..., a_n)

a_i = 0 のときには、

(a_1, a_2, ..., a_i±1, ..., a_n)

を返せばいいのでは?

154 :デフォルトの名無しさん:2016/12/19(月) 17:57:14.37 ID:yHCszZUX.net
(a_1, a_2, ..., a_i, ..., a_n)

a_i > 0 のときには、

(a_1, a_2, ..., a_i-1, ..., a_n)

a_i < 0 のときには、

(a_1, a_2, ..., a_i+1, ..., a_n)

を返せばいいのでは?

a_i = 0 のときには、条件を満たす列は存在しないね。

155 :デフォルトの名無しさん:2016/12/19(月) 17:58:07.65 ID:yHCszZUX.net
>>150

何がやりたいのかが不明確。

156 :デフォルトの名無しさん:2016/12/19(月) 17:58:17.41 ID:hSWjQy3F.net
>>149
列の最初の数字だけ1足すなり引くなりして返せばいいだけじゃないの?

157 :デフォルトの名無しさん:2016/12/19(月) 18:01:17.72 ID:yHCszZUX.net
>例えば n=3のとき(1, -1, 1)は大きさが3で、これに対応する大きさ2の列は
>(0 ,-1 ,1), (1,0,1),(1,-1,0)とかあるので一つには定まってません。
>なのでその対応をする関数をおしえてください。

一つに定まらないから、すべての結果を返したいのか、
任意の一つの結果を返したいのか?

158 :デフォルトの名無しさん:2016/12/19(月) 18:02:09.41 ID:yHCszZUX.net
明らかに、

(0, 0, ..., 0) に対しては条件を満たす結果は存在しないね。

159 :デフォルトの名無しさん:2016/12/19(月) 18:50:37.10 ID:ic0p/3Yf.net
0はスタート地点なので

160 :デフォルトの名無しさん:2016/12/19(月) 18:57:02.98 ID:ic0p/3Yf.net
>>154
a_2を1としたとき(-1, 1)のとき(-1,0)を返し
a_1を-1としたとき (-1,1)は(0,1)をかえすことになるので
一つに定まりません

161 :デフォルトの名無しさん:2016/12/19(月) 19:06:19.22 ID:ic0p/3Yf.net
>>157
大きさn>0の任意の列aにたいしてf(a)=bでbがn-1の大きさでaと列の中の値が1だけ違う
列を出力する関数fを求めるということです。

162 :デフォルトの名無しさん:2016/12/19(月) 19:13:51.38 ID:ic0p/3Yf.net
>>156
初めはそんな風に考えてる時期もありました
もう2か考えてるけれど全然わからないのでここで質問してみました

163 :デフォルトの名無しさん:2016/12/19(月) 19:16:05.63 ID:hSWjQy3F.net
>>161
問題文を鸚鵡返しするんじゃなくて、質問者の質問に答えたら?

164 :デフォルトの名無しさん:2016/12/19(月) 19:23:49.64 ID:ic0p/3Yf.net
>>163
fの出力は列の集合じゃないから普通わかりますよね

165 :デフォルトの名無しさん:2016/12/19(月) 19:31:58.40 ID:hSWjQy3F.net
>>164
fが返すのは集合じゃないってのはどこに書いてある?

166 :デフォルトの名無しさん:2016/12/19(月) 19:34:42.99 ID:ic0p/3Yf.net
>>165
14行上に書いてあります

167 :デフォルトの名無しさん:2016/12/19(月) 19:47:31.40 ID:hSWjQy3F.net
>>166
Mateだと>>156って書いてあるわ
自分の中ではこれは当然みたいな条件がいろいろあるんだろうけど、それを人に説明するのが下手なんじゃね

168 :デフォルトの名無しさん:2016/12/19(月) 20:02:25.40 ID:ic0p/3Yf.net
改行コードの数を数えてますか?
文の折り返しと改行とは違いますよ?

169 :デフォルトの名無しさん:2016/12/19(月) 20:17:02.98 ID:2q/Y95iw.net
こりゃまたひどい質問者だな

170 :デフォルトの名無しさん:2016/12/19(月) 20:18:06.39 ID:Xx/umGft.net
課題の丸投げ、しかも「日本語」が

171 :デフォルトの名無しさん:2016/12/19(月) 20:25:56.12 ID:ic0p/3Yf.net
課題という証拠はありますか?
実際課題じゃなくプログラミングしていたら出てきた問題なので
全然課題じゃないです

172 :デフォルトの名無しさん:2016/12/19(月) 20:33:03.53 ID:ic0p/3Yf.net
>>170
あなたには誤った文を訂正する能力がないんですか?
それでは人間ではなくコンパイラーと同じですよ

173 :デフォルトの名無しさん:2016/12/19(月) 20:37:51.17 ID:ic0p/3Yf.net
>>169
面白い問題とつまらない問題を区別する能力が数学的推測には
一番必要なんんです
この問題がつまらないと思うのなら解かないでいいです

174 :デフォルトの名無しさん:2016/12/19(月) 20:50:46.99 ID:2q/Y95iw.net
問題をきちんと記述する能力に欠けている

175 :デフォルトの名無しさん:2016/12/19(月) 20:52:23.54 ID:2q/Y95iw.net
あと、面白い問題だと思うなら、それこそ自分で解くのが楽しいのでは
ここで聞かずに

176 :デフォルトの名無しさん:2016/12/19(月) 21:27:51.26 ID:ic0p/3Yf.net
>>175
楽しいものは独り占めるのではなく分け与えようと習わなかったのでは?

177 :デフォルトの名無しさん:2016/12/19(月) 21:44:43.60 ID:ic0p/3Yf.net
>>174
今読み返してみましたがキチンと書かれてますよ
どこがキチンと書かれてないのか言ってくれたら
それは理解力の無さなので説明してもいいです

178 :デフォルトの名無しさん:2016/12/19(月) 22:34:08.82 ID:2q/Y95iw.net
十分楽しんだからあとは一人で楽しんでくれていいよ

179 :デフォルトの名無しさん:2016/12/19(月) 22:53:51.02 ID:Xx/umGft.net
>>172
馬鹿乙

180 :デフォルトの名無しさん:2016/12/19(月) 23:04:39.12 ID:L2gIhLeK.net
先頭から非0を探して、はじめの要素が正なら1ひく、負なら1足す
これで終わりじゃないの?

181 :デフォルトの名無しさん:2016/12/19(月) 23:45:15.82 ID:Xx/umGft.net
アルゴリズムは自分で考えるじゃ、ボケ

182 :デフォルトの名無しさん:2016/12/20(火) 13:05:59.52 ID:lAXr92yw.net
>>171
茶か尿かもう判らんって意見があるけど
検出時のガスクロのデータ見直したら判るはずという話がある
仮にそれでお茶だとしてももう発表はないだろう

183 :デフォルトの名無しさん:2016/12/21(水) 18:35:54.54 ID:UR5SKYPV.net
数列 1, 2, 3, …

すなわち、

数列 {a_n} = {n}

を考える。

{a_n} の任意の連続する有限部分列を a_k, a_(k+1), …, a_l(k ≦ l)とする。

各 i(k ≦ i ≦ l)に対して、0以上の整数 b_i を以下で定義する:

「2^(b_i) は a_i を割り切るが、 2^(b_i+1) は a_i を割り切らない」

このとき、 #{m | k ≦ i ≦ l である任意の i に対して、 b_i ≦ b_m} = 1 であることを示せ。

また、有限部分列 a_k, a_(k+1), …, a_l(k ≦ l)が与えられたとき、 k ≦ i ≦ l である
任意の i に対して、 b_i ≦ b_m となるような m を求めるプログラムを作れ。

184 :デフォルトの名無しさん:2016/12/21(水) 18:45:01.91 ID:trArLuj5.net
お断りいたします

185 :デフォルトの名無しさん:2016/12/21(水) 18:49:10.92 ID:IT3zLaEf.net
俺も断るわ

186 :デフォルトの名無しさん:2016/12/21(水) 19:41:25.65 ID:UR5SKYPV.net
早くも降参宣言か。

187 :デフォルトの名無しさん:2016/12/21(水) 19:55:05.40 ID:RIWp4Ngq.net
mなんていくらでもあるんじゃないの?
なんで#{m}=1?

188 :デフォルトの名無しさん:2016/12/21(水) 20:06:55.96 ID:UR5SKYPV.net
>>187

一意的です。そこがちょっと面白いところです。

反例を作ろうと思ってもできないはずです。

189 :デフォルトの名無しさん:2016/12/21(水) 20:09:57.40 ID:trArLuj5.net
>>183
分からない問題はここに書いてね421 [無断転載禁止]©2ch.net
http://rio2016.2ch.net/test/read.cgi/math/1480771004/493

190 :デフォルトの名無しさん:2016/12/21(水) 20:12:10.26 ID:RIWp4Ngq.net
k=1, l=2で、{m}={2,4,6,8,...}
k=l=1で、{m}=自然数の集合
じゃないの?

191 :デフォルトの名無しさん:2016/12/21(水) 20:16:47.08 ID:UR5SKYPV.net
>>190

{a_n} の任意の*連続する*有限部分列を a_k, a_(k+1), …, a_l(k ≦ l)とする。

192 :デフォルトの名無しさん:2016/12/21(水) 20:18:48.11 ID:UR5SKYPV.net
k=1, l=2で、{m}={2,4,6,8,...}
k=l=1で、{m}=自然数の集合
じゃないの?

a_1, a_2 = 1, 2

なので、 b_1, b_2 = 0, 1

です。

なので、 {m} = {2} です。

193 :デフォルトの名無しさん:2016/12/21(水) 20:19:15.67 ID:UR5SKYPV.net
>>191
は勘違いです。

194 :デフォルトの名無しさん:2016/12/21(水) 20:20:14.23 ID:UR5SKYPV.net
a_1 = 1

なので、

b_1 = 0

です。

なので、

{m} = {1}

です。

195 :デフォルトの名無しさん:2016/12/21(水) 20:21:17.66 ID:RIWp4Ngq.net
k=1, l=2も、k=l=1も、当然連続する部分列でしょ
{b_i}を10個ぐらい挙げてみてよ

196 :デフォルトの名無しさん:2016/12/21(水) 20:22:42.50 ID:RIWp4Ngq.net
mの条件が足りないんじゃないの?

197 :デフォルトの名無しさん:2016/12/21(水) 20:24:46.75 ID:RIWp4Ngq.net
b_i ≦ b_mさえ満たせばいいんならmなんていくらでもあるでしょ

198 :デフォルトの名無しさん:2016/12/21(水) 20:32:03.58 ID:UR5SKYPV.net
b_m は b_i の最大値です。

その最大値となる b_m の m が一意的であるということです。

199 :デフォルトの名無しさん:2016/12/21(水) 20:32:36.28 ID:El82f3CE.net
k≦m≦lという条件が抜けているっぽいね

200 :デフォルトの名無しさん:2016/12/21(水) 20:34:06.08 ID:UR5SKYPV.net
テレンス・タオ ルベーグ積分入門
テレンス タオ
固定リンク: http://amzn.asia/8KaL6NK

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

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

普通、ルベーグ積分なんてやるのは数学科かせいぜい物理学科くらいじゃないですか?

201 :デフォルトの名無しさん:2016/12/21(水) 20:34:58.70 ID:UR5SKYPV.net
>>199

各 i(k ≦ i ≦ l)に対して、0以上の整数 b_i を以下で定義する:

202 :デフォルトの名無しさん:2016/12/21(水) 20:39:27.31 ID:RIWp4Ngq.net
不完全な問題出しておいて>>186はないよね

203 :デフォルトの名無しさん:2016/12/21(水) 20:41:22.47 ID:UR5SKYPV.net
>>202

不完全なところはありません。
よく問題文を読んでください。

204 :デフォルトの名無しさん:2016/12/21(水) 20:42:06.97 ID:trArLuj5.net
>>200
力学・解析力学part2
http://rio2016.2ch.net/test/read.cgi/sci/1284697460/479

205 :デフォルトの名無しさん:2016/12/21(水) 20:43:41.56 ID:trArLuj5.net
マルチ小僧w

206 :デフォルトの名無しさん:2016/12/21(水) 20:44:49.22 ID:RIWp4Ngq.net
>>203
mがkからlの間なんて一言もないんだから不完全

207 :デフォルトの名無しさん:2016/12/21(水) 20:47:08.96 ID:UR5SKYPV.net
>>206

>>183
各 i(k ≦ i ≦ l)に対して、0以上の整数 b_i を以下で定義する

208 :デフォルトの名無しさん:2016/12/21(水) 20:52:23.64 ID:RIWp4Ngq.net
そうだとして、わざと誤読を誘おうとしている悪問だね
でO(log k)のアルゴリズム思いついたから俺は降りるね

209 :デフォルトの名無しさん:2016/12/21(水) 20:53:06.55 ID:RIWp4Ngq.net
O(log l)だった

210 :デフォルトの名無しさん:2016/12/21(水) 20:55:14.58 ID:UR5SKYPV.net
>>183

の解答は以下です。

http://imgur.com/rAnp3Ga.jpg

赤線を引いたところは「odd」が正しいですね。

211 :デフォルトの名無しさん:2016/12/21(水) 21:27:34.73 ID:UR5SKYPV.net
実は、この問題には続きがあります。

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

このとき、

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

は整数にはならないことを証明せよ。

212 :デフォルトの名無しさん:2016/12/21(水) 21:29:28.61 ID:UR5SKYPV.net
ちょっとアルゴリズム的な問題からは離れますが。

213 :デフォルトの名無しさん:2016/12/21(水) 21:31:37.14 ID:xYX0mlO/.net
提出日はいつですか?

214 :デフォルトの名無しさん:2016/12/21(水) 22:14:54.89 ID:auJA5Ak8.net
またバカな質問者が暴れてるのか

215 :デフォルトの名無しさん:2016/12/21(水) 23:45:05.79 ID:mNaBBYjZ.net
qiitaでやれ

216 :デフォルトの名無しさん:2016/12/23(金) 00:59:54.04 ID:gOElNe3R.net
>>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 となって矛盾

217 :デフォルトの名無しさん:2016/12/23(金) 01:37:11.09 ID:gOElNe3R.net
>>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.27 ID:VtFWW7J2.net
ダイクストラのアルゴリズムの正しさの証明が載っている本で
一番分かりやすい本を教えてください。

219 :デフォルトの名無しさん:2017/01/02(月) 07:40:19.35 ID:03PPbeGI.net
『アルゴリズムイントロダクション』について質問です。

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

最短路問題の説明で、

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

という記述があるために質問します。

220 :デフォルトの名無しさん:2017/01/02(月) 08:09:15.65 ID:03PPbeGI.net
実数 a が a≠∞のとき、 a + -∞ = -∞
実数 a が a≠-∞のとき、 a + ∞ = ∞

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

という等式を含めたいからこのような書き方になったのでしょうか?

221 :デフォルトの名無しさん:2017/01/02(月) 09:29:22.45 ID:J77W/v0L.net
それは実無限派の書き方だが,世の趨勢は可能無限
ほどほどに相手をするだけでいいよ

222 :デフォルトの名無しさん:2017/01/02(月) 11:22:57.42 ID:03PPbeGI.net
>>221

ということは、『アルゴリズムイントロダクション』での実数の集合の定義には、
∞、-∞ が含まれるというk十ですね。

223 :デフォルトの名無しさん:2017/01/02(月) 11:23:39.72 ID:03PPbeGI.net
頂点の数が n のグラフで、任意の頂点間に辺が存在するようなものを考える。

ある任意の頂点から別の任意の頂点への閉路をふくまない経路の数を求めよ。

224 :デフォルトの名無しさん:2017/01/02(月) 11:26:14.49 ID:03PPbeGI.net
頂点の数が n(≧2) のグラフで、任意の頂点間に辺が存在するようなものを考える。

ある任意の頂点から別の任意の頂点への閉路をふくまない経路の数を a_n とする。

このとき、

(n-1)! ≧ a_n ≧ (n-2)!

が成り立つことを示せ。

225 :デフォルトの名無しさん:2017/01/02(月) 12:08:43.26 ID:GdcUHK9D.net
宿題は宿題スレへ

226 :デフォルトの名無しさん:2017/01/02(月) 12:09:56.00 ID:GdcUHK9D.net
宿題は宿題スレへ

227 :デフォルトの名無しさん:2017/01/02(月) 12:22:39.27 ID:03PPbeGI.net
宿題ではないのです。

ある本に、頂点 s から t への最短経路を計算する方法として、
s から t へのあらゆる経路の長さを考えて、最小の経路を選ぶとすると、
経路の数が O(n!) だから現実的ではない

という話が書いてあります。

ところが、計算してみると、 O(n!) は荒い評価であって、 O((n-1)!) とできますね。

228 :デフォルトの名無しさん:2017/01/02(月) 12:24:22.04 ID:03PPbeGI.net
もっといい評価はありますでしょうか?

229 :デフォルトの名無しさん:2017/01/02(月) 12:28:36.72 ID:GdcUHK9D.net
判ってるなら効くな

230 :デフォルトの名無しさん:2017/01/02(月) 14:08:15.59 ID:03PPbeGI.net
ダイクストラ法の正しさの証明で分かりやすい証明を思いつきました。

発表しましょうか?

231 :デフォルトの名無しさん:2017/01/02(月) 14:21:37.12 ID:w6ZCrhsc.net
どうぞどうぞ

232 :デフォルトの名無しさん:2017/01/02(月) 14:27:23.53 ID:yIXUnWg3.net
>>227
オーダーについてあんま良くわかってないんだろうけどO((n-1)!) なんて書き方はないよ
もし書いたとして、それはO(n!)と同じもの

233 :デフォルトの名無しさん:2017/01/02(月) 17:55:38.72 ID:J77W/v0L.net
>>222
実無限はいろいろ破綻するから可能無限にしておいたほうがいいよ
実数の定義に∞, -∞は入らない
というか,そもそも -∞ というのがおかしい存在

つリーマン球面

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

http://imgur.com/PDx2vmZ.jpg
http://imgur.com/DbMiSz5.jpg

ダイクストラのアルゴリズムは↑のものとします。

235 :デフォルトの名無しさん:2017/01/02(月) 19:05:18.10 ID:03PPbeGI.net
節点 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.40 ID:03PPbeGI.net
第 (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.66 ID:03PPbeGI.net
(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.41 ID:03PPbeGI.net
以上より、第 (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.14 ID:03PPbeGI.net
>>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.44 ID:03PPbeGI.net
したがって、

O(f(n)) と O(g(n)) は異なります。

241 :デフォルトの名無しさん:2017/01/03(火) 08:33:06.09 ID:3o9M4oho.net
この狂人ヤバいなw

242 :デフォルトの名無しさん:2017/01/03(火) 08:50:16.82 ID:hCDXc7Qp.net
>>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.04 ID:hCDXc7Qp.net
>>234-238

のダイクストラのアルゴリズムの正しさの証明に間違いはないという
ことでOKですか?

244 :デフォルトの名無しさん:2017/01/03(火) 11:39:58.60 ID:hCDXc7Qp.net
Erik DemaineはMITの歴史上最年少で教授になったという天才だそうですね。

今、そのErik Demaineの2005年のダイクストラのアルゴリズムについての講義を見ています。

見終わったら、講義の要約について書きます。

245 :デフォルトの名無しさん:2017/01/03(火) 13:47:58.01 ID:hCDXc7Qp.net
ダイクストラのアルゴリズム:

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.21 ID:hCDXc7Qp.net
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.08 ID:hCDXc7Qp.net
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.27 ID:hCDXc7Qp.net
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.64 ID:hCDXc7Qp.net
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.71 ID:hCDXc7Qp.net
今、 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.21 ID:hCDXc7Qp.net
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.40 ID:4i7P3+nF.net
アルゴリズムイントロダクションって自明なことをわざわざループ不変量を使ったりして、
証明していて、うざすぎますね。

253 :デフォルトの名無しさん:2017/01/05(木) 09:16:52.73 ID:4i7P3+nF.net
通常の数学の本なら自明で済ませるようなことをわざわざ証明している。

254 :デフォルトの名無しさん:2017/01/05(木) 09:57:50.61 ID:OZq8Y/OW.net
このバカ、以前も全く同じこと言って暴れたな。

255 :デフォルトの名無しさん:2017/01/05(木) 10:02:39.43 ID:OZq8Y/OW.net
http://hissi.org/read.php/tech/20160422/cGVtVmVaYUg.html
http://hissi.org/read.php/tech/20160612/YkttemlBQ3Y.html
こいつだ。

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

これぞ「馬鹿の一つ覚え」である。

256 :デフォルトの名無しさん:2017/01/05(木) 10:44:28.31 ID:W/+CAQrH.net
数学とコンピュータ科学の区別がつかない厨房だろう

257 :デフォルトの名無しさん:2017/01/05(木) 11:01:45.09 ID:4i7P3+nF.net
クヌースの本なんかだと妙なくどさはない。

アルゴリズムイントロダクションはメリハリが全くない。
Trivialなこともそうでないことも平等に扱いすぎている。

要するに本を書くセンスがない。

258 :デフォルトの名無しさん:2017/01/05(木) 11:02:52.69 ID:4i7P3+nF.net
セジウィックとウエインの本のほうがずっとよい。

259 :デフォルトの名無しさん:2017/01/05(木) 11:07:44.54 ID:4i7P3+nF.net
日本語の本について言及しておく。
例えば、評判のよい茨木俊秀の本。

こんな薄いスカスカの本をよくも恥ずかしげもなく出版するものだとあきれる。

260 :デフォルトの名無しさん:2017/01/05(木) 11:19:31.17 ID:4i7P3+nF.net
アルゴリズムイントロダクションの悪口を書いたがいいところもある。

例えば、第29章線形計画法。

線形計画法に対しては、Trivialなこともそうでないことも平等に扱うという方針が
向いているように思う。

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

整数論的アルゴリズムの章はあまりにも簡単すぎる。
高木貞治の本でも読んだ方がよい。

261 :デフォルトの名無しさん:2017/01/05(木) 11:28:06.54 ID:4i7P3+nF.net
結論として、ベストな本はクヌースが予定しているTAOCPの要約本ということになる。

262 :デフォルトの名無しさん:2017/01/05(木) 11:29:47.36 ID:W/+CAQrH.net
結論として4i7P3+nFはNG行き

263 :デフォルトの名無しさん:2017/01/05(木) 11:33:33.85 ID:2uA+A+xC.net
>>253
自明ほど危ういものは無いんだが

264 :デフォルトの名無しさん:2017/01/05(木) 11:40:35.14 ID:OZq8Y/OW.net
例によって ID:4i7P3+nF が発狂しててワロタ

265 :デフォルトの名無しさん:2017/01/05(木) 11:44:36.30 ID:4i7P3+nF.net
>>263

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

もし危ういのなら頭のよい数学者は自明などと書かないはずです。

266 :デフォルトの名無しさん:2017/01/05(木) 11:52:58.57 ID:r7KPx/TL.net
そんな多くねえよちゃんと論文読め

267 :デフォルトの名無しさん:2017/01/05(木) 12:06:11.36 ID:2uA+A+xC.net
自明連発する方が馬鹿なのか

268 :デフォルトの名無しさん:2017/01/05(木) 13:09:24.25 ID:c6xYhHVb.net
>>265
馬鹿丸出し

269 :デフォルトの名無しさん:2017/01/05(木) 13:18:34.40 ID:c6xYhHVb.net
>一般に、コンピュータ科学者よりも頭が良いとされる数学者が
根拠は?
>自明で済ませることが多いのでしょうか?
数学のコンテキストの話

そもそも証明の意味もコンピュータ科学と数学では違うだろ

270 :デフォルトの名無しさん:2017/01/05(木) 14:56:52.93 ID:jagWiFjG.net
なんでバカって本質に関係ないところでギャーギャー騒ぐの?

271 :デフォルトの名無しさん:2017/01/05(木) 14:58:54.44 ID:YjTG1plI.net
うむ

272 :デフォルトの名無しさん:2017/01/05(木) 19:46:02.51 ID:4i7P3+nF.net
アルゴリズムイントロダクションについて、数学が出来る人向けの本だという人がいる。
そして、数学ができない人はセジウィック&ウエインの本を読めという人がいる。

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

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

クヌースの本のように、楽しい本ではない。

273 :デフォルトの名無しさん:2017/01/05(木) 20:37:39.99 ID:UiiKd7HR.net
>>272
>>270

274 :デフォルトの名無しさん:2017/01/05(木) 22:15:16.24 ID:WPj32BYO.net
書評したければ別のところでやれ

275 :デフォルトの名無しさん:2017/01/06(金) 17:19:30.91 ID:TSHa+AxL.net
再帰の除去についてやり方が詳しく書いてある本を教えてください。

276 :デフォルトの名無しさん:2017/01/06(金) 17:43:03.36 ID:TSHa+AxL.net
プログラミングコンテストチャレンジブック第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;
}

277 :デフォルトの名無しさん:2017/01/06(金) 18:06:18.89 ID:XtKi9eaG.net
>>275
えっと
かぅですか?
http://nothingcosmos.blog52.fc2.com/blog-entry-170.html

278 :デフォルトの名無しさん:2017/01/06(金) 18:36:23.48 ID:TSHa+AxL.net
Wrong Answerになっちゃうんだけど。

279 :デフォルトの名無しさん:2017/01/06(金) 18:38:07.31 ID:TSHa+AxL.net
例題については正しい答えが計算されるんだけど。

280 :デフォルトの名無しさん:2017/01/06(金) 18:43:00.23 ID:LxnclcVs.net
よかったね

281 :デフォルトの名無しさん:2017/01/06(金) 20:15:02.80 ID:TSHa+AxL.net
>>277

ソースレベルで再帰を除去する方法が知りたいんですが。

282 :デフォルトの名無しさん:2017/01/06(金) 20:22:33.43 ID:TSHa+AxL.net
秋葉らのプログラムでもWrong Answerになっていまします。

入出力の問題のようですね。

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

284 :デフォルトの名無しさん:2017/01/06(金) 20:41:27.59 ID:TSHa+AxL.net
なんなんだろう?

scanf,printfを使っていたらダメだったのが、cinとcoutにしたらOKになった。

285 :デフォルトの名無しさん:2017/01/08(日) 12:26:37.82 ID:E98VLsZL.net
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

286 :デフォルトの名無しさん:2017/01/08(日) 12:31:27.73 ID:0mVP2hZ6.net
O(n^2)

287 :デフォルトの名無しさん:2017/01/08(日) 12:32:34.98 ID:0mVP2hZ6.net
>>285
ここで解説されてる
http://echo.2ch.net/test/read.cgi/tech/1363854937/

288 :デフォルトの名無しさん:2017/01/08(日) 13:51:15.22 ID:E98VLsZL.net
>>286-287

ありがとうございます。

でも解説されていませんね。

289 :デフォルトの名無しさん:2017/01/08(日) 13:57:19.77 ID:E98VLsZL.net
どうやって計算量を見積もるんですか?

何を単位にするんですか?

290 :デフォルトの名無しさん:2017/01/08(日) 14:06:13.08 ID:E98VLsZL.net
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.75 ID:E98VLsZL.net
T(n) = c1 + c2*n + T(n-1)
T(0) = c3

この漸化式の解を求めればいいんですかね?

292 :デフォルトの名無しさん:2017/01/08(日) 14:12:15.21 ID:E98VLsZL.net
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.92 ID:E98VLsZL.net
>>290-292
は我ながら明解な解答ですが、

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

「以前に解かれている部分問題を解くための再帰は直ちに戻るので、Fは
各部分問題をただ1度だけ解く。この手続きはサイズが0,1,....,nの部分問題
を解く。サイズがnの部分問題を解くために、for文がn回繰り返される。したがって、
Fの再帰呼び出し全体における、このfor文の繰り返し回数は等差数列を形成し、
総繰り返し回数はΘ(n^2)となる。」

294 :デフォルトの名無しさん:2017/01/08(日) 14:26:56.39 ID:E98VLsZL.net
あーあ、分かりました。

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.04 ID:rSxBm0q1.net
馬鹿には無理

296 :デフォルトの名無しさん:2017/01/08(日) 14:28:32.97 ID:E98VLsZL.net
>>289

for文の繰り返し回数=計算量ですね。

297 :デフォルトの名無しさん:2017/01/08(日) 14:29:42.72 ID:E98VLsZL.net
結局自分ですべて解決してしまいました。

298 :デフォルトの名無しさん:2017/01/08(日) 17:12:11.39 ID:8OGZNgRf.net
よくやった
褒美として自分専用のスレを立てる権利をやろう

299 :デフォルトの名無しさん:2017/01/08(日) 18:45:26.96 ID:KkEYpXLY.net
命名ID:E98VLsZは俺様

300 :デフォルトの名無しさん:2017/01/08(日) 20:55:21.87 ID:E98VLsZL.net
プログラミングコンテストチャレンジブック

p.45 Best Cow Lineっていう問題の解答のプログラムって無駄がありますよね。

この本を難しいという人がいますが、そんなに難しいですかね?

301 :デフォルトの名無しさん:2017/01/08(日) 22:46:42.12 ID:E98VLsZL.net
プログラミングコンテストチャレンジブック
プログラミングコンテスト攻略のためのアルゴリズムとデータ構造
最強最速アルゴリズマー養成講座

この3冊に共通していることですが、日本語が下手ですよね。

一番ひどいのが

最強最速アルゴリズマー養成講座

ですね。

302 :デフォルトの名無しさん:2017/01/08(日) 22:50:51.06 ID:E98VLsZL.net
一番面白いのは、

プログラミングコンテストチャレンジブック

だと思いますけど、例えば、貪欲法でなぜうまくいくのかの証明が書いてないですね。

303 :デフォルトの名無しさん:2017/01/08(日) 22:51:13.67 ID:Qw43e7Zm.net
ここはプログラミング問題集書評のスレなの?

304 :デフォルトの名無しさん:2017/01/09(月) 06:08:00.57 ID:JOAqSyBk.net
>>301
うむ
日本語下手なのはもちろん英語も下手みたいだな

305 :デフォルトの名無しさん:2017/01/09(月) 06:09:36.68 ID:cSodeH17.net
頭の使い方が下手というかそもそも頭が不自由なんだろう

306 :デフォルトの名無しさん:2017/01/09(月) 10:59:50.63 ID:TqLncjlX.net
アルゴリズムイントロダクションの練習問題15.1-3の解答って以下であっていますか?

BOTTOM-UP-CUT-ROD(p, c, n)
1 r[0..n] を新しい配列とする
2 r[0] = 0
3 for j = 1 to n
4 ■■q = -∞
5 ■■for i = 1 to j-1
6 ■■■■q = maxx(q, p[i] + r[j-i] - c)
7 ■■q = max(q, p[j])
8 ■■r[j] = q
9 return r[n]

307 :デフォルトの名無しさん:2017/01/09(月) 11:02:45.57 ID:TqLncjlX.net
15.1-2

反例

p[1] = 1
p[2] = 5
p[3] = 7

308 :デフォルトの名無しさん:2017/01/09(月) 13:21:16.77 ID:TqLncjlX.net
F_0 = 0
F_1 = 1
F_i = F_(i-1) + F_(i-2) (i≧2)

F_n を O(n) 時間で計算する動的計画アルゴリズムを設計せよ。
対応する部分問題グラフを描け。
このグラフにはいくつの頂点と辺が存在するか?


↑はアルゴリズムイントロダクションの練習問題15.1-5なんですけど、
なんか簡単すぎるようにみえるんですけど、落とし穴があるんですかね?

なんでΘ(n)じゃなくてO(n)と書いてあるんですかね?

309 :デフォルトの名無しさん:2017/01/09(月) 13:34:48.26 ID:TqLncjlX.net
配列を使わないとDPとは言えないですか?
配列いらないですよね。
でもi = 0〜nに対して、F[i]が求まるという意味はありますね。


F[0] = 0
F[1] = 1
for i = 2 to n
■■F[n] = F[n-1] + F[n-2]

明らかにΘ(n)ですよね。

部分問題グラフは以下ですよね:

http://imgur.com/WUQMG8R.jpg

#V = n + 1
#E = 2*(n - 1)

ですね。

310 :デフォルトの名無しさん:2017/01/09(月) 13:37:23.94 ID:TqLncjlX.net
あ、ひっかけがありましたね。
訂正します:

n > 0 のとき、

#V = n + 1
#E = 2*(n - 1)

n = 0 のとき

#V = n + 1
#E = 0

ですね。

311 :デフォルトの名無しさん:2017/01/09(月) 15:27:31.58 ID:TqLncjlX.net
アルゴリズムイントロダクションに、以下の事実を1955年にRobbinsが発見したと書いてあります。

--------------------------------------------
すべての n ≧ 1 に対して

n! = sqrt(2*π*n) * (n/e)^n * exp(α_n)

と書ける。

ただし、 1/(12*n+1) < α_n < 1/(12*n)
--------------------------------------------

本当にこんな比較的簡単にみえる結果が1955年という比較的最近になって発見された
のでしょうか?

312 :デフォルトの名無しさん:2017/01/09(月) 15:37:47.20 ID:4OeNzyzM.net
>>308
フィボナッチだろ
√5が出て来る公式
O(1)になるかも試練が

313 :デフォルトの名無しさん:2017/01/09(月) 15:46:27.18 ID:FSSb8O2Z.net
>>311
      r ‐、
      | ○ |         r‐‐、
     _,;ト - イ、      ∧l☆│∧  良い子の諸君!
    (⌒`    ⌒ヽ   /,、,,ト.-イ/,、 l  
    |ヽ   ~~⌒γ ⌒ ) r'⌒ `!´ `⌒) よく頭のおかしい数学者気取りのバカが
   │ ヽー―'^ー-'  ( ⌒γ ⌒~~ / 「誰も気付かなかった事を発見したことを発表」とほざくが
   │  〉    |│  |`ー^ー― r' | 大抵それは「先人が思いついたけどあえて発表しなかった」ことだ
   │ /───| |  |/ |  l  ト、 |  王道が何故面白いか理解できない人間に面白い話は
   |  irー-、 ー ,} |    /     i 作れないぞ!
   | /   `X´ ヽ    /   入  |

314 :デフォルトの名無しさん:2017/01/10(火) 20:16:10.65 ID:Zd0v4023.net
アルゴリズムイントロダクションが難しいという人がいますけど、
この本は馬鹿丁寧に書かれていますよね。

いわゆる「書きすぎ」ですね。

「書きすぎ」れば分かりやすくなると思い込んでいますね、著者らは。

315 :デフォルトの名無しさん:2017/01/10(火) 20:19:42.26 ID:kxFYGz06.net
http://hissi.org/read.php/tech/20160614/U2lCYS9zNTM.html

マジ基地だな。壊れたレコードかよ。

316 :デフォルトの名無しさん:2017/01/13(金) 21:58:42.65 ID:wiy2qrIv.net
プログラミング言語のパーサーってどういう仕組みで動いてるんですか?
文字列をトークンの配列に分ける
特定のパターンにマッチするトークンの部分集合をひとまとめにして新しいトークンに置き換える
再帰的に同じ事を繰り返す
こんな感じ?

317 :デフォルトの名無しさん:2017/01/13(金) 22:37:46.17 ID:+ExxsU2F.net
>>316
Java 再帰下降構文解析超入門
http://qiita.com/7shi/items/64261a67081d49f941e3

ビジュアル構文解析
http://www.csg.ci.i.u-tokyo.ac.jp/~ichikawa/visual_parsing.pdf

318 :デフォルトの名無しさん:2017/01/14(土) 00:10:28.40 ID:H4kTcvBH.net
>>317
これ考えた奴は天才だな

319 :デフォルトの名無しさん:2017/01/16(月) 17:57:37.27 ID:YH2Bx58z.net
Lisperか
BNF

320 :デフォルトの名無しさん:2017/01/19(木) 09:40:05.52 ID:uhfgjGGl.net
https://chrome.google.com/webstore/detail/%E3%81%AF%E3%81%A6%E3%81%AAng/mbgdnfmdelffjdhkdggilmphfdihnmcj?hl=ja

321 :デフォルトの名無しさん:2017/05/14(日) 13:16:07.97 ID:SQILU9sh.net
類似スレ検索とかのアルゴリズムって何がいいのかな?
編集距離とか数字部分のマスキングくらいしか浮かばない
形態素解析して要素の一致率とかもあるみたいだけど、スレタイみたいな短い文字じゃ弱そう

322 :デフォルトの名無しさん:2017/05/14(日) 13:20:48.12 ID:SQILU9sh.net
むしろ短くて重要な単語が多いスレタイこそ一致率うまく働きそうか
毎回評価してたら検索速度悪そうだけど

323 :デフォルトの名無しさん:2017/05/14(日) 13:56:17.84 ID:CjOSHdvj.net
Baka ha sinanakya
Naoranai
Fucky ou

324 :デフォルトの名無しさん:2017/05/26(金) 14:08:00.89 ID:fOPo0M5r.net
アルゴリズムイントロダクション

当たり前のことを定理などとよんで回りくどく証明していますね。

なんなんですか?この本。

例えば、p.506定理22.9とか。

325 :デフォルトの名無しさん:2017/05/26(金) 19:39:06.33 ID:GnitEmTF.net
当たり前のことを2chで指摘して回りくどくdisっていますね。
なんなんですか?あなた。
例えば、 >>324 とか。

326 :デフォルトの名無しさん:2017/05/26(金) 21:10:54.45 ID:ovKX6RUR.net
>>324
当たり前が何故当たり前なのかを知るのは割と重要だが。

327 :デフォルトの名無しさん:2017/05/26(金) 22:50:21.07 ID:fOPo0M5r.net
>>324

しかも「証明」が長い。当たり前のことを長々と書いている。
その「証明」自体も意外性ゼロ。

328 :デフォルトの名無しさん:2017/05/26(金) 22:52:14.04 ID:fOPo0M5r.net
しかも徹底していない。

ある命題は明らかで済ませている。
その一方である命題には長々と「証明」をつけている。

基準がさっぱりわからない。

329 :デフォルトの名無しさん:2017/05/26(金) 22:52:58.46 ID:ovKX6RUR.net
初級アルゴリズム本持ち出して何なんですか言われてもねぇ。。。
物足りなかったら上のクラスの本買えば?

330 :デフォルトの名無しさん:2017/05/26(金) 23:04:15.09 ID:fOPo0M5r.net
とにかくしつこい本。

この著者らの感性は、おかしいと思う。

丁寧というよりしつこい。

クヌースの本は丁寧という感じ。

結局、教科書の書き手として優れていない。

331 :デフォルトの名無しさん:2017/05/27(土) 03:04:18.64 ID:V3ffhZkY.net
きっとアスペなんだろう

332 :デフォルトの名無しさん:2017/05/27(土) 03:30:20.38 ID:6GQ16ypm.net
アルゴリズムでは、セジウィックが有名。他に、

入門 データ構造とアルゴリズム、2013、オライリー
Narasimha Karumanchi(インド人) 著

プログラミング・コンテスト・チャレンジブック、第2版、2012

333 :デフォルトの名無しさん:2017/05/27(土) 05:56:26.58 ID:0xIYYFUk.net
http://hissi.org/read.php/tech/20160422/cGVtVmVaYUg.html
http://hissi.org/read.php/tech/20160612/YkttemlBQ3Y.html
http://hissi.org/read.php/tech/20160614/U2lCYS9zNTM.html
http://hissi.org/read.php/tech/20160619/NUt2U0tkTC8.html
http://hissi.org/read.php/tech/20170526/Zk9QbzBNNXI.html

壊れかけの脳味噌。

334 :デフォルトの名無しさん:2017/05/27(土) 08:08:34.68 ID:tcRpjIho.net
浅野孝夫の新しく出た2冊の本はどうですか?

335 :デフォルトの名無しさん:2017/05/27(土) 11:29:04.28 ID:tcRpjIho.net
アルゴリズムイントロダクションは訳もひどいね。

意味不明だと思って原著を調べるといつも誤訳。

今読んでいるところにも誤訳を見つけた。

本当に理解して訳しているか?

336 :デフォルトの名無しさん:2017/05/27(土) 11:54:19.85 ID:tcRpjIho.net
Let v be the first vertex to be discovered in c, and let (u, v) be the preceding edge in c.

の訳が、

c の中で最初に発見される頂点を v, c において v に向かう辺を (u, v) とする。
(したがって、 u は c における v の先行点である。)

日本語としてまずおかしいし、 u は v の先行点では、もちろんない。

337 :デフォルトの名無しさん:2017/05/27(土) 13:19:03.94 ID:olQh0zw8.net
>>333
徳永乙

338 :デフォルトの名無しさん:2017/05/27(土) 14:45:49.59 ID:m5ivKvT+.net
本ばかり読んでコードも書かない典型だな

339 :デフォルトの名無しさん:2017/05/31(水) 19:10:09.21 ID:uNlt1YRD.net
今扱ってるライブラリのコンストラクタとか生成系のメソッドとかの引数が多すぎるんで何とかしたいんだがビルダーパターンぐらいしかないのかな
今は引数用の構造体を用意して成のメソッドの呼び出し時に構造体を参照させるようにしてるんだが、お前らどう思う?

340 :デフォルトの名無しさん:2017/05/31(水) 19:13:07.12 ID:uNlt1YRD.net
>>339
s/成のメソッド/生成のメソッド

341 :デフォルトの名無しさん:2017/05/31(水) 22:35:13.68 ID:NSe5u++m.net
クラスを作りまくって引数を減らすんだよ

342 :デフォルトの名無しさん:2017/06/01(木) 07:33:57.31 ID:9lL7NugS.net
まあ、ファクトリかビルダだろうな

引数をオーバーライドメソッドでなるべく少なくなる工夫しつつ

343 :デフォルトの名無しさん:2017/06/01(木) 07:40:31.13 ID:PJoLYMb9.net
グラフ理論のアルゴリズムを実装したときに、正しいかどうか
チェックするのって、グラフを用意しなきゃならなくて大変だけど
サンプルのグラフってどこかに公開されていないの?

344 :デフォルトの名無しさん:2017/06/01(木) 08:27:11.96 ID:RM67mdjD.net
>>341
>>342
やっぱそれぐらいしかないか
レスさんくす

345 :デフォルトの名無しさん:2017/06/01(木) 09:01:58.44 ID:dZ2VO+v4.net
>343

Knuth先生のThe Stanford Graphbase

http://www-cs-staff.stanford.edu/~knuth/sgb.html

346 :デフォルトの名無しさん:2017/06/01(木) 09:26:44.84 ID:bUIwnMhK.net
ダイクストラなどのグラフは、Python

347 :デフォルトの名無しさん:2017/06/05(月) 16:05:46.39 ID:gPC56aZq.net
2つのグラフが同型かどうか判定するアルゴリズムを教えてください。

348 :デフォルトの名無しさん:2017/06/05(月) 18:35:40.61 ID:Vm0ObO74.net
ちょっと手間を減らすなら、次数でソートしたりゴニョゴニョできるけど、NPだからあとは力技

349 :デフォルトの名無しさん:2017/06/05(月) 19:30:33.86 ID:SUt02FhH.net
最終的に力業になることが分かってる問題って悲しいよね。

350 :デフォルトの名無しさん:2017/06/05(月) 20:28:56.86 ID:gPC56aZq.net
>>348-349

ありがとうございました。

基本的で重要な問題なのにアルゴリズムの本で見かけなかったのは効率的な
アルゴリズムが存在しないからだったんですね。

効率的なアルゴリズムが存在しない場合でも、小さい問題は解けるわけですから、
それなりの工夫でもいいから、教科書に載せてほしいです。

351 :デフォルトの名無しさん:2017/06/05(月) 20:36:06.74 ID:gPC56aZq.net
>>348-349

グラフが同型かどうかくらいならプログラムを誰でも作れると思います。

効率的なアルゴリズムが存在しない問題の場合、教科書にはアルゴリズムが
載っていないことが多いと思います。自分で力任せのプログラムを書ける場合
はいいですが、力不足で力任せのプログラムすら書けない場合って困りますね。

352 :デフォルトの名無しさん:2017/06/05(月) 21:01:13.00 ID:sad0uPoZ.net
>347
networkXっていうPythonのグラフアルゴリズムのライブラリに、グラフ同型判定の関数があるよ。
is_isomorphic()
ソースコードも見れるから、実装の参考にしては。
VF2アルゴリズムというのを使っているらしい。どういうのかは、知らない。。

353 :デフォルトの名無しさん:2017/06/05(月) 21:17:56.80 ID:gPC56aZq.net
>>352

今、グラフ理論の本を読んでいるのですが、その演習問題の
答えを計算機で計算したいと思いプログラムを作っています。

手計算でできる問題なので計算量とかは無問題です。

情報、ありがとうございました。

354 :デフォルトの名無しさん:2017/06/08(木) 13:28:45.57 ID:oPuedIYN.net
>>352
thx

355 :デフォルトの名無しさん:2017/06/10(土) 01:09:12.89 ID:yRjB/26o.net
セジウィックのアルゴリズムCはコルメン他の本とは対極にあるような本だね。
どっちもどっち。

356 :デフォルトの名無しさん:2017/06/10(土) 22:49:54.03 ID:bkNNwNFI.net
セジウィックのアルゴリズムCは言葉足らず。

357 :デフォルトの名無しさん:2017/06/11(日) 08:24:40.56 ID:7PvmoOJK.net
セジウィックのアルゴリズムCは定義がダメダメ。

例:
連結グラフの極大木とは、すべての頂点を含む部分グラフであって、
木である限りできるだけ多くの辺をもつものをいう。

この定義だと連結グラフに極大木が常に存在するというのが定理になってしまう。
が、証明せずに、この事実を以下で使っている。

358 :デフォルトの名無しさん:2017/06/11(日) 11:00:58.83 ID:7PvmoOJK.net
セジウィックのアルゴリズムCは、訳も最低。

359 :デフォルトの名無しさん:2017/06/16(金) 18:04:24.35 ID:ixzzoI9b.net
浅野孝夫著『アルゴリズムの基礎とデータ構造 数理とCプログラム』(近代科学社)

ポインタを使えるCでアルゴリズムを実装しておきながらポインタを使わず、
配列を使ってポインタの機能を実現するという面倒なことをしています。

著者は何を考えているのでしょうか?

360 :デフォルトの名無しさん:2017/06/16(金) 18:08:47.36 ID:1eQLQexT.net
javaの逆ポートだろう

361 :デフォルトの名無しさん:2017/06/16(金) 18:30:17.58 ID:ixzzoI9b.net
浅野孝夫著『アルゴリズムの基礎とデータ構造 数理とCプログラム』(近代科学社)

の公式ページからソースコードをダウンロードできます。

たくさんのソースコードがあるのですが、こういうのを実行するときってみなさんは
どうしていますか?

Visual Studio を使っているのですが、一つのソースファイルに対して、いちいち
プロジェクトを作っていると面倒なんですが、どうすればいいですか?

362 :デフォルトの名無しさん:2017/06/16(金) 18:31:46.91 ID:ixzzoI9b.net
コマンドプロンプトからコマンドを実行してコンパイルをしたりする原始的なやり方
は避けたいです。

363 :デフォルトの名無しさん:2017/06/16(金) 18:47:18.97 ID:1eQLQexT.net
なんだ
ステマか

364 :デフォルトの名無しさん:2017/06/16(金) 20:42:10.07 ID:1imKhLwB.net
原始的なやり方×
基本的なやり方〇

365 :デフォルトの名無しさん:2017/06/16(金) 20:54:00.90 ID:RYT773NB.net
探せば学習用のC言語インタプリタとかあるんじゃない

366 :デフォルトの名無しさん:2017/06/16(金) 21:27:28.11 ID:vP51FB3m.net
ちょっとサンプルコードを走らせるかって程度なら
Online IDEとか使えばよいのに

367 :デフォルトの名無しさん:2017/06/16(金) 21:42:24.80 ID:SNTjPZEm.net
そもそも何でファイルごとにわざわざプロジェクト作るような原始的なことやってるの

368 :デフォルトの名無しさん:2017/06/16(金) 22:44:29.43 ID:e6Uo8nQP.net
mainの数だけプロジェクトが必要だから?

369 :デフォルトの名無しさん:2017/06/17(土) 15:06:03.16 ID:SdcHR0BJ.net
プロセス増えるだけだからプロジェクトは増やさなくてもいいんじゃね

370 :デフォルトの名無しさん:2017/06/17(土) 18:14:18.11 ID:DtePX3I4.net
アルゴリズムとデータ構造の本のソースコードを見ると、よくグローバル変数を
多用していて非常に分かりにくいことが多いです。

グローバル変数を使うのは良くないというのをよく目にしますが、なぜ、
コンピュータサイエンスのプロであるはずのアルゴリズムとデータ構造の本の
著者がそんなプログラムを書くのでしょうか?

371 :デフォルトの名無しさん:2017/06/17(土) 18:18:02.53 ID:DtePX3I4.net
例えば、

浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)

という本のソースプログラムが分かりにくいです。

拡張子が「.h」のファイルにグローバル変数を定義して使いまわしています。

さらに、その拡張子が「.h」のファイル内で「emaxsize」というのがありますが
それが何なのかが書いてありません。

その拡張子が「.h」のファイルを利用するファイル内で、「emaxsize」を設定しています。

こういうのはありなんでしょうか?

あちこちいろいろなファイルを見ないと、全体が分かりません。

372 :デフォルトの名無しさん:2017/06/17(土) 18:18:09.88 ID:n14YEU6w.net
サンプルだから

373 :デフォルトの名無しさん:2017/06/17(土) 18:19:41.47 ID:n14YEU6w.net
>>371
Javaしか使ったことない人が知ったかぶりでCの本出すからそうなる
捨てろ

374 :デフォルトの名無しさん:2017/06/17(土) 18:19:49.58 ID:DtePX3I4.net
全然、プログラム作りの参考になりません。

ただ、例外もあります。

セジウィックの『Algorithms』という赤い本は、参考になります。

375 :デフォルトの名無しさん:2017/06/17(土) 18:21:15.46 ID:DtePX3I4.net
>>373

でも、コード自体は非常に巧妙で優れています。

376 :デフォルトの名無しさん:2017/06/17(土) 20:50:11.36 ID:DtePX3I4.net
そういえば、茨木俊秀の本のプログラムもひどかったような。

377 :デフォルトの名無しさん:2017/06/17(土) 22:37:25.92 ID:tNCJKlzg.net
グローバル変数を避けようとかはソフトウェア工学の話で、コンピューター科学とは別の分野なんだよ。

378 :デフォルトの名無しさん:2017/06/17(土) 23:06:32.77 ID:L9yKSdqC.net
ソフトウェア工学の基本すら知らないんですかね?

379 :デフォルトの名無しさん:2017/06/18(日) 00:34:44.62 ID:o43mtcr6.net
グローバル変数を使った方が、説明しやすいとか、
ソースコードがわかりやすいとか

本の目的が、アルゴリズムの説明だから、
グローバル変数を使って、わかりやすく説明するのも、OK

物事には強弱・重要度があるから、
重要な事を説明する際、重要でない事は無視してもよい

これを、TPO と言って、強弱を付けられる人は、空気を読める

ちょっとしたプログラミングに、型チェックする、Javaなどを使わず、
Rubyで書くのもそう。
ラフな会合に、盛装して行かないのもそう

380 :デフォルトの名無しさん:2017/06/18(日) 12:26:58.32 ID:HTlYPuIB.net
掲示板のTPO弁えない人にTPO語ってもしょうがないよ

381 :デフォルトの名無しさん:2017/06/18(日) 12:39:15.20 ID:4GAQ5Lgy.net
グローバル変数を明らかに、分かりにくいやり方で使っています。

何の利点もないと思います。

382 :デフォルトの名無しさん:2017/06/18(日) 13:30:23.31 ID:4GAQ5Lgy.net
もしかして、理論ばかりに興味があり、プログラムを作ったことがないんですかね?

383 :デフォルトの名無しさん:2017/06/18(日) 14:37:44.92 ID:7v+ppDWb.net
プログラム教本ではなくアルゴリズム解説本だからでしょ
擬似言語で書いている場合のが多いと思うけど

384 :デフォルトの名無しさん:2017/06/18(日) 15:37:30.01 ID:xPH4G83l.net
最初から完成してたらおまいらの仕事無くなっちゃうだろ

385 :デフォルトの名無しさん:2017/06/18(日) 18:10:10.06 ID:L/LJrXI/.net
楽器やってるひとがいってたよ。自分がつかえる技術を全部つかうわけじゃない

386 :デフォルトの名無しさん:2017/06/18(日) 20:13:26.60 ID:4GAQ5Lgy.net
浅野孝夫の本。

ちょっと説明が足りないところがある。
完成度がやや低い。
他の日本人の本よりはまし。

プログラムは巧妙。

387 :デフォルトの名無しさん:2017/06/18(日) 20:48:27.00 ID:wscBwMor.net
こんなところに日記書く人って、相当追い詰められてるんだろうな。

388 :デフォルトの名無しさん:2017/06/19(月) 04:29:40.16 ID:+M9YR/5M.net
こんなところだから何書いてもいいよ

389 :デフォルトの名無しさん:2017/06/19(月) 09:50:06.41 ID:JRZAs/i8.net
ステマよりグロい

390 :デフォルトの名無しさん:2017/06/19(月) 12:02:27.97 ID:0IiK5rsw.net
浅野孝夫の本。

深さ優先探索とか幅優先探索の説明を言葉で長々としています。
そんなことするより、コードを見せたほうがいいと思うんですよね。
コードを見れば一目で分かりますよね。

391 :デフォルトの名無しさん:2017/06/19(月) 12:05:01.80 ID:TXA5MC9f.net
もうおめーが執筆しろよ

392 :デフォルトの名無しさん:2017/06/19(月) 13:13:41.68 ID:YgkoP+sD.net
コードはあくまで例なので解説が先

393 :デフォルトの名無しさん:2017/06/21(水) 10:56:36.24 ID:CsbvaOkp.net
http://imgur.com/9QGwvmM.jpg
http://imgur.com/j3Dp32V.jpg
http://imgur.com/iJhKoqM.jpg

↑は浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)です。

重大な誤りを発見しました。

G が二部グラフであるための必要十分条件は、G を幅優先探索したときに同じ深さの補木辺がないことであると書かれていますが、
完全な誤りです。

具体的に言うと、「同じ深さの点を結ぶ補木辺がないときは、この色の割当てが実際に2彩色になっている。」と書かれていますが、
間違っています。

反例は3枚目の画像を参照してください。

394 :デフォルトの名無しさん:2017/06/21(水) 11:00:57.46 ID:CsbvaOkp.net
訂正します:

http://imgur.com/9QGwvmM.jpg
http://imgur.com/j3Dp32V.jpg
http://imgur.com/iJhKoqM.jpg

↑は浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)です。

重大な誤りを発見しました。

G が二部グラフであるための必要十分条件は、G を幅優先探索したときに同じ深さの点を結ぶ補木辺がないことであると書かれていますが、完全な誤りです。

具体的に言うと、「同じ深さの点を結ぶ補木辺がないときは、この色の割当てが実際に2彩色になっている。」と書かれていますが、
間違っています。

反例は3枚目の画像を参照してください。

395 :デフォルトの名無しさん:2017/06/21(水) 11:11:21.29 ID:CsbvaOkp.net
商品の説明
内容紹介
ネットワーク・人工知能の基礎となるグラフ・ネットワークを学ぶ

アマゾンに商品説明として、↑のように書かれています。

人工知能とグラフ・ネットワーク理論に何の関係があるのでしょうか?

この出版社は、「世界標準MIT教科書」などとタイトルに書いたり、売るためには
手段を選ばない出版社ですね。

396 :デフォルトの名無しさん:2017/06/21(水) 12:35:50.38 ID:TkpRSZSL.net
>>395
自分の想像力の欠如で批判しないほうがいいよ

397 :デフォルトの名無しさん:2017/06/21(水) 12:37:14.26 ID:L1LFWazB.net
外国には「たのしいRuby」が無い

日本人が20時間で勉強できることを、何十時間も掛けて勉強して、なおかつ理解できない。
だから、MIT に頼る

外人でも知っている人は、Ruby でツールを作る。
Chef, Vagrant, SASS とか

Homebrew もRubyで作られているのだから、
Apple は、もっとRubyに力を入れるべき

398 :デフォルトの名無しさん:2017/06/21(水) 12:53:00.17 ID:TkpRSZSL.net
>>394
幅優先探索わかる?

399 :デフォルトの名無しさん:2017/06/21(水) 12:54:37.96 ID:Y4WM7moX.net
>>394
3枚目は補木辺があって2部グラフではないので、
別におかしくないのでは

400 :デフォルトの名無しさん:2017/06/21(水) 13:14:54.71 ID:CsbvaOkp.net
>>399

「同じ深さの点を結ぶ補木辺がないときは、この色の割当てが実際に2彩色になっている。」

3枚目の画像には同じ深さの点を結ぶ補木辺がありません。
ですが、2彩色ではありません。

401 :デフォルトの名無しさん:2017/06/21(水) 13:31:42.95 ID:srnzKpaS.net
松坂君のアスペ日記3

Daniel Marcus Graph Theory を読む。 [無断転載禁止]©2ch.net
http://rio2016.2ch.net/test/read.cgi/math/1497007079/

402 :デフォルトの名無しさん:2017/06/21(水) 13:33:59.73 ID:CsbvaOkp.net
要するに、↓が間違っているわけです。

「補木辺は、同じ深さの点を結んでいるか、あるいは深さが 1 異なる点を結んでいることに注意しよう。」

403 :デフォルトの名無しさん:2017/06/21(水) 13:55:32.90 ID:BP6mUhEj.net
ここじゃなくて著者なり出版社なりに連絡しなよ
その方がちゃんと議論できるだろうし修正されればあとから読む人の為になるよ

404 :デフォルトの名無しさん:2017/06/21(水) 14:30:39.96 ID:TkpRSZSL.net
>>400
幅優先で探索木作ったら同じ深さを結ぶ補木辺ができるから二部グラフでないことがわかる

405 :デフォルトの名無しさん:2017/06/21(水) 16:12:29.38 ID:e3wPbus7.net
>394
三枚目の図は、反例になっていない。
あなたが幅優先探索を理解できていないだけで、書籍の記述は間違っていないよ。
根でない2つの頂点は、どちらも、根から辺が張られていて、根と隣接しているのだから、同じ深さの位置にある。

406 :デフォルトの名無しさん:2017/06/21(水) 18:57:35.69 ID:CsbvaOkp.net
あ、勘違いしました。

無向グラフでしたね。

407 :デフォルトの名無しさん:2017/06/21(水) 19:28:34.24 ID:TkpRSZSL.net
教科書だって間違いはいくらでもある。
だからといって、間違いらしきものを見つけて喜々としてあげつらうのではなく、
自分の解釈ではこうだが違うのだろうかという態度で質問しておけばよかったね。

408 :デフォルトの名無しさん:2017/06/21(水) 22:04:49.64 ID:GPdgYp3Z.net
何がいんだろ

409 :デフォルトの名無しさん:2017/06/23(金) 09:05:15.05 ID:0OdP20aK.net
>>393-394
他人の誤りを指摘するときに
自分でも誤るとか恥ずかしくないか

410 :デフォルトの名無しさん:2017/06/23(金) 13:07:58.26 ID:IBCt0Ik9.net
間違いを恐れるな

411 :デフォルトの名無しさん:2017/06/23(金) 13:38:13.56 ID:8e+v7OlS.net
馬鹿、アスペを恐れるな

412 :デフォルトの名無しさん:2017/06/23(金) 19:23:07.84 ID:vbPiU/7d.net
KIZLA7]]]

%≒72%,M,L,TO"JYOJA"

413 :デフォルトの名無しさん:2017/06/26(月) 15:07:57.81 ID:wjem+ipT.net
浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)ですが、この
本には強連結成分分解のアルゴリズムは書いてあるのですが、その正しさについて
の説明がありません。

「アルゴリズムの正当性については演習問題とする。」などと書かれているだけです。
そして、解答がありません。

解答をつけないほど簡単な問題でしょうか?

エイホ、ホップクロフト、ウルマン著『データ構造とアルゴリズム』に分かりやすい説明がありました。

414 :デフォルトの名無しさん:2017/06/26(月) 15:09:29.86 ID:wjem+ipT.net
あ、よくみたら解答がありました。

415 :デフォルトの名無しさん:2017/06/26(月) 15:14:33.33 ID:wjem+ipT.net
強連結成分分解のアルゴリズムはグラフ理論的な観点からは興味深いですが、
応用についてはあまりないようですね。

浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)の「はじめに」に
「強連結成分分解はシステムの故障診断や効率的解析への応用があると言われている。」
などと書かれいます。浅野さん自身は応用について具体的な詳細を知らないと宣言して
いるようなものですね。

416 :デフォルトの名無しさん:2017/06/26(月) 15:27:14.29 ID:H+izVTcm.net
ステマ乙としか

417 :デフォルトの名無しさん:2017/06/26(月) 15:32:39.93 ID:wjem+ipT.net
ところで、LEDAというライブラリはお勧めですか?

418 :デフォルトの名無しさん:2017/06/26(月) 16:23:39.69 ID:xVfkWcpc.net
病人が粘着してる

419 :デフォルトの名無しさん:2017/06/27(火) 13:16:02.75 ID:NGLAHv1W.net
浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)を読んでいます。

G のトポロジカルラベリングについては説明があるのですが、トポロジカルソートの応用例が
全く書かれていません。

勉強するモチベーションが全くありません。

著者は一体何を考えているのでしょうか?

420 :デフォルトの名無しさん:2017/06/27(火) 14:05:21.18 ID:41er5Tk4.net
NGにしてほしいんじゃね

421 :デフォルトの名無しさん:2017/06/27(火) 14:08:46.74 ID:7kGXm9Ae.net
勉強しなきゃいいのに

422 :デフォルトの名無しさん:2017/06/27(火) 15:22:28.20 ID:LAkf1Hly.net
馬鹿のアスペの気持ちなんか分からん

423 :デフォルトの名無しさん:2017/06/27(火) 17:51:10.93 ID:LqFx/Quf.net
本人だったりして

424 :デフォルトの名無しさん:2017/06/27(火) 19:32:13.18 ID:NGLAHv1W.net
あ、その後の有向無閉路ネットワークの最長パスを求めるアルゴリズムで
トポロジカルラベリングが使われていました。

なかなか面白い応用ですね。

この本、説明にちょっと粗雑なところもありますが、見せ場があって楽しいですね。

425 :デフォルトの名無しさん:2017/06/27(火) 19:34:40.25 ID:NGLAHv1W.net
有向無閉路ネットワークという制限が強すぎますね。

でもこの制限のおかげでちょっと面白いトポロジカルラベリングの応用例が見れたわけですね。

426 :デフォルトの名無しさん:2017/06/27(火) 21:47:11.43 ID:i+35CN1y.net
プログラミング・コンテスト・チャレンジブック、第2版、2012

ほとんど全てのアルゴリズムを網羅。
問題数も多く、パズル感覚で楽しめる。
AIやシミュレーションゲームの参考になる

427 :デフォルトの名無しさん:2017/06/27(火) 21:55:21.79 ID:NGLAHv1W.net
>>426

網羅からはほど遠いと思います。

428 :デフォルトの名無しさん:2017/06/27(火) 21:58:43.82 ID:NGLAHv1W.net
>>426

それとアルゴリズムの正当性のまともな説明がありません。

計算量の評価についてもまともな説明はありません。

429 :デフォルトの名無しさん:2017/06/27(火) 22:34:26.12 ID:Tdvy+2PR.net
一から百まで説明しないとダメな奴、すなわち無能

430 :デフォルトの名無しさん:2017/06/28(水) 02:20:53.63 ID:W36D2Opo.net
入門 データ構造とアルゴリズム、2013、オライリー
Narasimha Karumanchi(インド人) 著

アルゴリズムなら、セジウィックでも読めば?

プログラミング・コンテスト・チャレンジブックは、
コンテストの問題を集めた本だから、便利

一々、ウェブサイトの問題を見なくても良いから、楽

431 :デフォルトの名無しさん:2017/06/28(水) 05:10:12.09 ID:6P8PW2pA.net
>>430

そのインド人の本は、アルゴリズムの正当性のまともな説明がありません。

計算量の評価についてもまともな説明がありmせん。

セジウィックのAlgorithms 4th Editionはいい本ですが、計算量の評価については
まともな説明がないように思います。

432 :デフォルトの名無しさん:2017/06/28(水) 05:17:01.98 ID:6P8PW2pA.net
D40

T をグラフ G の全域木とする。
C を G のサイクルとする。
AB を C および T に含まれる辺とする。

このとき、 T から AB を除去し、辺 UV を追加したときに、
依然として G の全域木であるような辺 UV が C の中に
含まれることを示せ。

433 :デフォルトの名無しさん:2017/06/28(水) 06:24:05.46 ID:6P8PW2pA.net
>>432


T は木であるからサイクルを含まない。
よって、 C には T に含まれないような辺が少なくとも一つは存在する。
T は全域木であるから、そのような辺の両端点を結ぶ T の辺のみからなる(一意的な)パスが存在する。

仮に、 T に含まれないような C の辺たちの両端点を結ぶ T の辺のみからなるパスたちがすべて AB を含まない
と仮定すると、 A から B への T の辺のみからなるパスで辺 AB を含まないようなものが存在することになる。
A, B という A から B へのパスは、辺 AB を含み T の辺のみからなる。よって、 A から B への T の辺のみから
なるパスが2つ以上存在することになるが、これは木の性質に反する。

よって、 T に含まれないような C の辺たちの両端点を結ぶ T の辺のみからなるパスたちの中には、 AB を含む
ようなものが存在する。そのようなパスを U, …, A, B, …, V とする。 T から AB を除去し、辺 UV を追加し
たときにできる部分グラフは明らかに T と同じ数の辺をもち、依然として連結なままである。点の数が v で
辺の数が v - 1 であるような連結なグラフは木であるから、そうような部分グラフは木である。

434 :デフォルトの名無しさん:2017/06/28(水) 06:52:24.02 ID:6P8PW2pA.net
>>432

ヒントとして、 「T - AB は2成分からなる森である」と書いてあるのですが、
このヒントを利用した解答はどうなるのでしょうか?

435 :デフォルトの名無しさん:2017/06/28(水) 10:22:23.33 ID:6P8PW2pA.net
浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)を読んでいます。

↓は、ある点から各点への最長パスを求めるプログラムのメイン関数です。
「出発点を入力してください」などと出力していますが、出発点は 1 でないとダメです。
なぜかというと depth_first() 関数がかならず 1 から深さ優先探索を開始するからです。
↓を見ると、あたかも、出発点に選択の余地があるかのようです。なぜ、こんなことを
しているのか意味不明です。

int main(void){
■■■■directed_network_input();
■■■■// 有向ネットワークの辺数m,点数n,各辺の始点,終点,長さが決定される
■■■■dicomp_incidence_list_construct(); // 接続辺リストが構成される
■■■■printf("出発点を入力してください\n");
■■■■scanf("%d", &s);
■■■■printf("出発点 = %d \n", s); // sからすべての点が到達可能であることを仮定
■■■■depth_first(); // 深さ優先探索をして後行順ラベルを求める
■■■■tpsort(); // トポロジカルソートを行う(tporder[1]==sとなることを仮定)
■■■■longestpath_from(s);// sからの到達可能な点への最長パスが計算される
■■■■longestpath_output();// sからの到達可能な点への最長パスが出力される
■■■■return 0;
}

436 :デフォルトの名無しさん:2017/06/28(水) 10:54:52.65 ID:6P8PW2pA.net
浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)を読んでいます。

ひどいバグを発見しました。

void longestpath_from(int s){// sからの到達可能な点への最長パスを計算する関数
■■■■int a, j, v, w;
■■■■dmax[s]=0; // sからsへの最長パスの長さは0である
■■■■path[s]=0; // sからの到達可能な点への最長パス木の根がsである
■■■■for (j = 1; j <= n; j++) {// トポロジカルソートに基づいて
■■■■■■■■v= tporder[j];
■■■■■■■■// sからvまでの最長パスの長さdmax[v]とパス上でvの直前の点path[v]の計算
■■■■■■■■a=revedgefirst[v]; // vを終点とする辺のリストの先頭の辺がaである
■■■■■■■■w=tail[a]; // wはaの始点
■■■■■■■■if(j == 1) printf("v = %2d, a = %2d, w = %2d", v, a, w); //debug
■■■■■■■■dmax[v]=dmax[w]+length[a]; // 式(4.2)に基づくdmax[v]の初期設定
■■■■■■■■path[v]=w; // 式(4.2)に基づくpath[v]の初期設定
■■■■■■■■a=revedgenext[a]; // aの次の辺をaとする
■■■■■■■■while (a != 0) {// vを終点とする辺のリストの末尾の辺になるまで繰り返す
■■■■■■■■■■■■w=tail[a]; // wはaの始点
■■■■■■■■■■■■if (dmax[v] < dmax[w]+length[a]){// wを経由したほうがより長いとき
■■■■■■■■■■■■■■■■dmax[v] = dmax[w]+length[a]; // wを経由するほうに更新する
■■■■■■■■■■■■■■■■path[v]=a; // aに更新する
■■■■■■■■■■■■}
■■■■■■■■■■■■a=revedgenext[a]; // aの次の辺をaとする
■■■■■■■■}
■■■■}
}

437 :デフォルトの名無しさん:2017/06/28(水) 10:57:07.89 ID:+O8L6XqQ.net
366 :nobodyさん 2017/05/29(月) 16:07:39.16 ID:6v4UcGhE
今回の民法改正、ソフトウェア受託開発の場合、(検収後ではなく)バグ発見後1年瑕疵担保責任があるということで、地獄かよ、と思ったが、
元々問題が起きがちな受託案件がビジネス的に成立しなくなることで強制的に業界再編につながるなら良いことかもと思うようになった。
一部で地獄を見ても。
https://twitter.com/yukihiro_matz/status/869061879389343744

367 :nobodyさん 2017/05/29(月) 16:28:06.55 ID:6v4UcGhE
ニュース - 改正民法が成立、「瑕疵担保責任」などシステム開発契約に影響大:ITpro
http://b.hatena.ne.jp/entry/itpro.nikkeibp.co.jp/atcl/news/17/052601508/

372 :nobodyさん2017/05/29(月) 19:10:37.12 ID:???
Railsでシステム作って納品する

Railsはマイナー、メジャーのアップデートが半年以内に必ずある

客がアップデートする。アップデートによるエラーやバグ、動作の不具合に気づく

気づいてから1年以内に通知すれば、5年間無料保証ゲット

つまりRailsがアップデートするたびに、無償の修正作業を発生するということかな

376 :nobodyさん2017/05/30(火) 09:20:20.09 ID:L5po86sS
>>378>>379>>375
客が瑕疵担保責任法の法改正を知ってくると思うから、今後5年無償保証をお願いされるだろう
営業がそれでも仕事を取ってこれるか?たぶん無理だろう。無限の直していたら赤字になる。
こういう保守に弱い言語、ころころ仕様が変わる言語は仕事として発生しなくなってくる。
これは変わり目だ。お前らも早く逃げたほうがいいぞ。RubyやPHPなど動的言語は確実に廃れる。
保守に強い言語のみ生き残れる。

438 :デフォルトの名無しさん:2017/06/28(水) 11:02:48.67 ID:6P8PW2pA.net
↑の for 文は j = 1 から始まっています。

v == tporder[1] == 1 です。
a == revedgefirst[1] == 0 です。

ところが、この本では配列のインデックスは 1 からしか利用していません。
インデックスが 0 の要素は初期化すらしていません。
どうも配列を初期化しないと値は不定だそうですが、実際には 0 で初期化されることが
多いようです。

仕様では不定であるはずの

tail[0]
dmax[0]
length[0]

がたまたま 0 で初期化されるため、偶然、問題なく動作しています。

正しくは、

for 文は j = 2 から始めなくては駄目です。

439 :デフォルトの名無しさん:2017/06/28(水) 11:19:51.44 ID:6P8PW2pA.net
あ、もう一つバグがありました↑

path[v]=w; // 式(4.2)に基づくpath[v]の初期設定

となっていますが、

path[v]=a; // 式(4.2)に基づくpath[v]の初期設定

でなければなりません。

440 :デフォルトの名無しさん:2017/06/28(水) 12:31:24.06 ID:W36D2Opo.net
>>438
>インデックスが 0 の要素は初期化すらしていません

配列[0] を使わないのなら、初期化する必要はない

441 :デフォルトの名無しさん:2017/06/28(水) 12:34:24.00 ID:6P8PW2pA.net
>>440

そうですが、

for(j = 1;

とすると

意図せず配列[0]を使うことになってしまいます。

この値がたまたま 0 で初期化されていて、かつ 0 であれば正しく動くため、
問題が表面化していないだけです。

442 :デフォルトの名無しさん:2017/06/28(水) 12:37:24.37 ID:6P8PW2pA.net
有向無閉路ネットワークの最長パスをトポロジカルラベリングを利用して、
求めるアルゴリズムって他の本に載っていますか?

あまりにも特殊すぎて載っていないのではないかと推測しますが。

この本は、鮮やかに解けるように問題を特殊化して見せ場を作っていますね。

443 :デフォルトの名無しさん:2017/06/28(水) 13:17:27.40 ID:6P8PW2pA.net
>>426

その本を読むのでしたら、

浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)

のほうがCプログラムも載っていますし、面白いと思いますよ。

オイラーグラフの一筆書きのプログラムがあったりします。

444 :デフォルトの名無しさん:2017/06/28(水) 14:35:33.86 ID:itdARVty.net
外部変数は0で初期化される。

445 :デフォルトの名無しさん:2017/06/28(水) 15:46:50.33 ID:7M5wzg7m.net
j=1で始まってんのに意図せず配列[0]を参照するの意味がわからん

446 :デフォルトの名無しさん:2017/06/28(水) 16:26:43.89 ID:mp82Jtm6.net
それでも馬鹿のアスペの荒らしをスルーできない

447 :デフォルトの名無しさん:2017/06/28(水) 18:29:25.09 ID:6P8PW2pA.net
>>444

このプログラムだけ見てももちろん分からないと思います。

a == revedgefirst[1] == 0 なので、 tail[a] == tail[0] です。

448 :デフォルトの名無しさん:2017/06/28(水) 18:29:51.34 ID:6P8PW2pA.net
訂正します:

>>445

このプログラムだけ見てももちろん分からないと思います。

a == revedgefirst[1] == 0 なので、 tail[a] == tail[0] です。

449 :デフォルトの名無しさん:2017/06/28(水) 18:33:38.48 ID:6P8PW2pA.net
さらに、

v == tporder[1] == 1 です。

450 :デフォルトの名無しさん:2017/06/29(木) 11:58:28.12 ID:df4uIsIb.net
http://imgur.com/A84Qz1i.jpg
http://imgur.com/NsXCsS1.jpg
http://imgur.com/Bm7ANHm.jpg
http://imgur.com/iSqMNes.jpg

↑は浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)です。
1枚目と2枚目の画像が連結な有向オイラーグラフの一筆書きを求めるアルゴリズムです。
3枚目と4枚目の画像がそのアルゴリズムの正しさの証明です。


「連結グラフ G が一筆書きできるための必要十分条件は、 G がオイラーであることである。」

という定理の証明において、十分性は、↑の3枚目と4枚目の画像の定理5.3により分かるということが書いてあります。

↑の3枚目と4枚目の画像を読めば分かりますが、十分性について証明されていないように思います。

どうでしょうか?

451 :デフォルトの名無しさん:2017/06/29(木) 12:19:34.40 ID:df4uIsIb.net
むしろ、十分性が成り立つことを前提にしてアルゴリズムの正しさを証明しているように思います。

452 :デフォルトの名無しさん:2017/06/30(金) 09:51:08.15 ID:pDIkSJMf.net
粘着

453 :デフォルトの名無しさん:2017/06/30(金) 13:39:18.75 ID:8CLI6C9V.net
浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)

ホップクロフト - カープのアルゴリズムのところを読んでいます。

段々、面白いアルゴリズムが登場してきていますね。

日本語のアルゴリズムの本は本当に初歩的な本が多いですが、なぜなのでしょうか?

例えば、ホップクロフト - カープのアルゴリズムが載っている本はあるでしょうか?

日本語の本に載っているのは、

リスト、ハッシュ、ヒープ、2分探索木、平衡木、ソート、最短経路、文字列

とかそんなもんだけですよね。

454 :デフォルトの名無しさん:2017/06/30(金) 19:08:50.27 ID:OVGL+Zaw.net
初歩的な問題すら理解できずにドヤ顔で間違った反例晒すやつがいるからだよ

455 :デフォルトの名無しさん:2017/06/30(金) 20:21:27.99 ID:QJcLAte5.net
それ以上の難解アルゴリズムに挑戦する頭脳があれば英語の習得は容易いので、結果すでにある英語本を買うようになると予想

456 :デフォルトの名無しさん:2017/07/01(土) 09:37:54.54 ID:OLSj8alI.net
浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)
ホップクロフト - カープのアルゴリズムのところを読んでいます。


do {// マッチされていない左端点からマッチされていない右端点へのパスがある限り
■■■■levelgraph(); // レベルグラフの構成
■■■■if (t_found != n+2) augmentation(); // パスがあるときにはマッチングの更新
} while (t_found != n+2);

などというコードがあります。

do {// マッチされていない左端点からマッチされていない右端点へのパスがある限り
■■■■levelgraph(); // レベルグラフの構成
■■■■if (t_found == n+2) break;
■■■■else augmentation(); // パスがあるときにはマッチングの更新
} while (1);

と書いた方が分かりやすいですよね。

augmentation() 内では、グローバル変数 t_found の値は変更されません。
なので、以下のように書くのが標準的だと思います。

levelgraph();
while(t_found != n + 2){
■■■■augmentation();
■■■■levelgraph();
}

457 :デフォルトの名無しさん:2017/07/01(土) 09:42:20.68 ID:OLSj8alI.net
浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)を読んでいます。

a = edgefirst[v1];
while(a != 0){
■■■■
■■■■
■■■■
■■■■
■■■■
■■■■
■■■■
■■■■
■■■■
a = edgenext[a];
}

などというコードが本書のソースコードのいたるところで使われています。

↓のように書くべきですよね。

for(a = edgefirst[v1]; a != 0; a = edgenext[a]){
■■■■
■■■■
■■■■
■■■■
■■■■
■■■■
■■■■
■■■■
■■■■
}

458 :デフォルトの名無しさん:2017/07/01(土) 09:46:11.85 ID:OLSj8alI.net
茨木俊秀さんの本でも感じましたが、ひどいコードを書く人が多いですよね。

一番、驚いたのが野崎昭弘さんの本です。

goto 文を使わなくていいところで常用しています。

459 :デフォルトの名無しさん:2017/07/01(土) 09:53:17.51 ID:w5457acR.net
粗さがしが得意みたいだから、出版社で校正でもやったら良いのでは?

460 :デフォルトの名無しさん:2017/07/01(土) 09:55:39.01 ID:PrUYVLVg.net
伏字かと思ったらインデントかよ。
これが見やすいと思ったんだろうか?ここに辿り着くまでの思考過程を見てみたいわ。

461 :デフォルトの名無しさん:2017/07/01(土) 09:59:03.29 ID:OLSj8alI.net
浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)
ホップクロフト - カープのアルゴリズムのところを読んでいます。

for (v = 1; v <= n; v++) parent[v] = unvisited;

というコードがあります。

点 v の親の処理ですが、深さ優先探索で使う定数である unvisited == -1 を流用しています。
親は訪問するものではないにもかかわらずです。
単に -1 という値が使いたいだけです。

ひどいコードです。

462 :デフォルトの名無しさん:2017/07/01(土) 12:24:50.45 ID:HZmJrzKI.net
>>460
基地外の思考過程なんて見たらSAN値下がるぞ。

463 :デフォルトの名無しさん:2017/07/01(土) 12:35:14.71 ID:OLSj8alI.net
浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)
ホップクロフト - カープのアルゴリズムのところを読んでいます。

このプログラムですが、意味不明に冗長なところがあるので超分かりにくいです。

もし、この本を読む人は、注意した方がいいです。

分かりやすい等価なコードにすこしずつ変えながら読んでいます。

464 :デフォルトの名無しさん:2017/07/01(土) 20:40:17.40 ID:OLSj8alI.net
浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)
ホップクロフト - カープのアルゴリズムのところを読んでいます。

プログラムに、非常に非効率な部分を発見しました。

深さ優先探索で最短パスを探す部分があるのですが、一つの最短パスを
発見した後も、うろうろと探索を続けています。 return 文で呼び出し元へと
遡って戻るべき箇所です。

具体的にいうと、p.95の void bipartite_dfs(int) 関数内の

bipartite_dfs(w1);

は、

bipartite_dfs(w1);
if(pathfound) return;

とすべきです。

465 :デフォルトの名無しさん:2017/07/01(土) 22:15:24.31 ID:fqWBe1B0.net
俺様のアスペ日記

466 :デフォルトの名無しさん:2017/07/01(土) 23:27:45.18 ID:OLSj8alI.net
浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)

のHopcroft-Karpのアルゴリズムのプログラムを一切変更を加えずに使用して、
Aizu Online Judgeの2部グラフのマッチングの問題を解かせてみたら、
1問目から正しい結果が得られませんでした。

浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)

では一つの例に対して、プログラムをチェックしているだけです。
その例に対しては正しい結果が得られます。

著者はおそらく他の例についてはチェックしていないと思われます。

これから原因を究明しようと思います。

ちなみに

浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)

での例ですが、この著者の旧著でも全く同じ例を使っています。

使いまわしですね。他の例は一度もチェックしていないようです。 👀
Rock54: Caution(BBR-MD5:0be15ced7fbdb9fdb4d0ce1929c1b82f)


467 :デフォルトの名無しさん:2017/07/01(土) 23:59:37.67 ID:OLSj8alI.net
あ、勘違いでした。

入力のフォーマットが会津と浅野の本で違いました。

468 :デフォルトの名無しさん:2017/07/02(日) 12:42:08.55 ID:KDfMECXZ.net
マッチングといっても、いろいろな問題があるんですね。

安定マッチングと最大マッチングは互いに何の関係もない全く異なる問題ですね。

↓の講義は、安定マッチングについてですが、簡単ですね。

https://ocw.mit.edu/courses/electrical-engineering-and-computer-science/6-042j-mathematics-for-computer-science-fall-2010/video-lectures/lecture-7-matching-problems/#vid_related

MITの微分積分の講義を見ると学生のレベルが低いという印象ですが、この講義を見ると
そうでもないような印象です。

469 :デフォルトの名無しさん:2017/07/02(日) 13:22:29.16 ID:KDfMECXZ.net
>>468

なんか明らかなことをダラダラと証明していますね。

470 :デフォルトの名無しさん:2017/07/03(月) 08:45:45.65 ID:b174092u.net
浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)

を読んでいます。

定理:
G のマッチング M に対して、 M が最大マッチングであるための必要十分条件は M に
関する増加パスが存在しないことである。

という定理が書いてあります。

十分性の証明が長すぎます。見た目はちょっとすっきりとしていていいのですが、長くて
素朴な証明法ではありません。

471 :デフォルトの名無しさん:2017/07/03(月) 08:46:22.05 ID:b174092u.net
以下のような証明が素朴なよい証明だと思います。

G のマッチング M に対して、 M が最大マッチングであるための必要十分条件は M に関する増加パスが存在しないことである。

必要性は明らかである。

十分性について証明する。

G は連結である場合に証明できれば、 G が連結でない場合にも、明らかに定理は成り立つ。
そのため、 G は連結であると仮定する。

G には、 M に関する増加パスが存在しないと仮定する。
M の辺に接続されていない点をFreeな点と呼ぶことにする。

G にFreeな点が2点以上存在することはないことを背理法によって証明しよう。
a, b を G の任意のFreeな2点とする。 G は連結だから、 a, b を結ぶ単純なパスが存在する。
a = a_1, …, a_k = b をその単純なパスとする。
このとき、 a_1, …, a_i に含まれるFreeな点の数が 2 であるような i ≧ 2 が存在することは明らかである。
単純なパス a_1, …, a_i は明らかに増加パスである。
これは、 G には、 M に関する増加パスが存在しないという仮定に反する。

よって、 G にFreeな点が2点以上存在することはない

G にFreeな点が1点存在する場合には、 G の点の数は、奇数であり、明らかに M は最大マッチングである。
G にFreeな点が1点も存在しない場合には、 G の点の数は、偶数であり、明らかに M は最大マッチングである。

472 :デフォルトの名無しさん:2017/07/03(月) 08:55:27.46 ID:b174092u.net
なんか他の本を調べてみても、

>>471

のような素朴な証明法が載っていませんね。

ソートするアルゴリズムが存在することを示せ

という問題があったとして、答えとして、バブルソートをあげれば十分であるにもかかわらず、
ヒープソートをあげるようなもんですね。

473 :デフォルトの名無しさん:2017/07/03(月) 12:01:19.36 ID:2KgtUC+G.net
>471

頂点a b c d eがあって、
辺が、
a b
a c
a d のとき、
Mとして
a bを選べば、増加パスはないけど、
cとdはFreeな頂点になるのでは?

474 :デフォルトの名無しさん:2017/07/03(月) 12:17:16.61 ID:b174092u.net
>>473

ありがとうございます。

>>471
は間違いですね。

475 :デフォルトの名無しさん:2017/07/03(月) 22:09:21.73 ID:d7TtC2S/.net
>>474

ズコーッ

476 :デフォルトの名無しさん:2017/07/03(月) 23:57:03.23 ID:kWtGcdOg.net
>>474

ヽ(・ω・)/ズコー

477 :デフォルトの名無しさん:2017/07/06(木) 14:52:18.01 ID:MPcf+VnS.net
松坂君はおつむ弱いなー

478 :デフォルトの名無しさん:2017/07/07(金) 10:19:21.25 ID:LuN3QDVY.net
浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)を読んでいます。

ネットワークフローについてですが、
ソースから流出する総フローが、
シンクに流入する総フローに
等しいということを自明のこととして、
証明していません。

これはOKなのでしょうか?

479 :デフォルトの名無しさん:2017/07/07(金) 10:33:49.72 ID:Hkhwo5qO.net
おつむが弱いアスペ参上

480 :デフォルトの名無しさん:2017/07/07(金) 11:03:27.05 ID:LuN3QDVY.net
やはり証明は必要なんですね。
↓の本に証明が載っていました。

組合せ数学入門 II (共立全書)
C.L.リウ
https://www.amazon.co.jp/dp/4320005422

481 :デフォルトの名無しさん:2017/07/07(金) 11:04:16.11 ID:LuN3QDVY.net
浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)

は、計算量の評価の説明がひどすぎます。

ほとんど結果しか書いていません。

482 :デフォルトの名無しさん:2017/07/07(金) 11:53:23.95 ID:LuN3QDVY.net
>>478

少し後のところで、
ソースから流出する総フローが、
シンクに流入する総フローに
等しいという結果を特別な場合として
含むような結果を示していました。

ソースから流出する総フローが、
シンクに流入する総フローに
等しいということが自明なことならば、
そのより一般化された結果も自明です。

著者の態度は矛盾していますね。

483 :デフォルトの名無しさん:2017/07/07(金) 13:13:44.59 ID:G2hd19q1.net
僕の肛門から流出するソースの総フローがシンクに流入します

484 :デフォルトの名無しさん:2017/07/07(金) 17:37:48.39 ID:LuN3QDVY.net
今、ウィルソンのグラフ理論の本を見てみたのですが、内容がスカスカですね。

アルゴリズム的なグラフ理論の本のほうが分かりやすいし、面白いですね。

485 :デフォルトの名無しさん:2017/07/07(金) 19:30:12.19 ID:LchmZiK1.net
「29歳既婚、2年前に会社を辞めた。ボードゲーム作りを始めて3700万円を
売り上げたけど何か聞きたいことはある?」回答いろいろ
http://labaq.com/archives/51880196.html
日本ボードゲーム界の異端児に聞く!ボードゲームデザイナーとして生きていくには?
https://bodoge.hoobby.net/columns/00013
カードゲームを自作する1 【自宅でカード印刷】
http://tanishi.org/?p=801
100円ショップでボードゲームを自作しよう
https://sites.google.com/site/jun1sboardgames/blog/makeyourbg
ノーアイデアでボードゲームを作ろう第1回「100円ショップで物を買う」
http://boardgamelove.com/archives/boardgame-make-1/
ボードゲーム市場がクラウドファンディングの出現で急成長を遂げ市場規模を拡大中
http://gigazine.net/news/20150820-board-game-crowdfunding/
自作ゲーム即売会「ゲームマーケット」に1万人超
http://www.nikkansports.com/general/nikkan/news/1750500.html
ボードゲームの展示イベント「ゲームマーケット」の成長記録からこれからの
市場に必要なことを妄想してみた。6年間の来場者数推移(2016年4月時点調べ)
https://bodoge.hoobby.net/columns/00001

486 :デフォルトの名無しさん:2017/07/08(土) 06:00:28.99 ID:h3/vqusb.net
>>484
あ? スカトロが何だって?

487 :デフォルトの名無しさん:2017/07/08(土) 09:51:52.03 ID:bx7kaphQ.net
浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)の
Ford - Fulkerson のアルゴリズムのプログラムを読んでいます。

ひどいプログラムです。

たとえば、深さ優先探索を行う関数を見てください↓

void dfs(int v, int path[]){// vからの深さ優先探索
■■■■int afwd, abk, w;
■■■■afwd = edgefirst[v];
■■■■while (afwd != 0 && rescap[afwd] == 0) afwd = edgenext[afwd];
■■■■while (t_found == false && afwd != 0) {// 増加パスはまだ発見されいない限り
■■■■■■■■w = head[afwd];
■■■■■■■■if (path[w] == unvisited) {// wが未訪問であったらwへ前進
■■■■■■■■■■■■abk = afwd+1; // abkはafwdの逆向きの辺
■■■■■■■■■■■■if (afwd % 2 ==0) abk = afwd-1;
■■■■■■■■■■■■path[w] = abk; // afwdの逆向きの辺abkをpath[w]に記憶する
■■■■■■■■■■■■if (w != t) dfs(w,path); // wからの深さ優先探索へ進む
■■■■■■■■■■■■else {// w == t なので増加パスPが見つかった
■■■■■■■■■■■■■■■■t_found=true; // dfs(v,path)の強制終了へ
■■■■■■■■■■■■}
■■■■■■■■}
■■■■■■■■if (t_found == false) { // dfs(v,path)が強制終了になっていないときのみ
■■■■■■■■■■■■ afwd = edgenext[afwd]; //次の辺に移る
■■■■■■■■■■■■ while (afwd != 0 && rescap[afwd] == 0) afwd = edgenext[afwd];
■■■■■■■■}
■■■■}
}

488 :デフォルトの名無しさん:2017/07/08(土) 10:04:34.97 ID:gbIBpGm+.net
基地外こえーな

489 :デフォルトの名無しさん:2017/07/08(土) 10:07:07.69 ID:bx7kaphQ.net
↓は、↑と等価なプログラムです。

すっきりとしていて分かりやすいですね。↓

void dfs(int v, int path[]){
■■■■int afwd, abk, w;
■■■■afwd = edgefirst[v];
■■■■for(afwd = edgefirst[v]; afwd != 0; afwd = edgenext[afwd]){
■■■■■■■■if(rescap[afwd] == 0) continue;
■■■■■■■■w = head[afwd];
■■■■■■■■if(path[w] == unvisited){
■■■■■■■■■■■■if(afwd % 2 == 0){
■■■■■■■■■■■■■■■■abk = afwd - 1;
■■■■■■■■■■■■}else{
■■■■■■■■■■■■■■■■abk = afwd + 1;
■■■■■■■■■■■■}■■■■■■■■
■■■■■■■■■■■■path[w] = abk;
■■■■■■■■■■■■if(w != t){
■■■■■■■■■■■■■■■■dfs(w, path);
■■■■■■■■■■■■}else{
■■■■■■■■■■■■■■■■t_found = true;
■■■■■■■■■■■■■■■■return;
■■■■■■■■■■■■}
■■■■■■■■}
■■■■}
}

490 :デフォルトの名無しさん:2017/07/08(土) 10:10:00.82 ID:bx7kaphQ.net
浅野孝夫著『グラフ・ネットワークアルゴリズムの基礎』(近代科学社)のプログラムは
すべて↑こんな感じなので、いちいち自分でまともな等価なプログラムに改善してから
読む必要に迫られます。

491 :デフォルトの名無しさん:2017/07/08(土) 10:29:14.58 ID:W4vGtvme.net
海苔弁プログラムと呼ぶことにしよう

492 :デフォルトの名無しさん:2017/07/08(土) 10:35:19.17 ID:dHGGPCH1.net
アホのアスペ日記

493 :デフォルトの名無しさん:2017/07/08(土) 14:20:34.28 ID:bx7kaphQ.net
for-2ch-codes/FlowLibrary.h

↓こちらが浅野さんの Ford - Fulkerson のアルゴリズムのソースコードです:
for-2ch-codes/asano_fordfulkerson.c

↑なぜ、こんな分かりにくいコードを書けるのか不思議です。
アルゴリズムの研究者なのに、プログラミングをしたことがないのでしょうか?

↓こちらが浅野さんのコードを読みやすくした等価なコードです:
for-2ch-codes/my_fordfulkerson.c

494 :デフォルトの名無しさん:2017/07/08(土) 14:21:50.45 ID:bx7kaphQ.net
https://github.com/for-2ch/for-2ch-codes/blob/master/FlowLibrary.h

↓こちらが浅野さんのソースコードです:
https://github.com/for-2ch/for-2ch-codes/blob/master/asano_fordfulkerson.c

↑なぜ、こんな分かりにくいコードを書けるのか不思議です。
アルゴリズムの研究者なのに、プログラミングをしたことがないのでしょうか?

↓こちらが浅野さんのコードを読みやすくした等価なコードです:
https://github.com/for-2ch/for-2ch-codes/blob/master/my_fordfulkerson.c

495 :デフォルトの名無しさん:2017/07/08(土) 14:46:01.89 ID:shVOEDs/.net
■■■■■■■■■■■■■
■■このスレ闇が深すぎ■■
■■■■■■■■■■■■■

496 :デフォルトの名無しさん:2017/07/08(土) 15:34:28.51 ID:/nxmjkTk.net
すみません、松坂くんて誰ですか

497 :デフォルトの名無しさん:2017/07/08(土) 16:30:54.37 ID:/Hl6yXpd.net
>>496
教科書の荒さがして著者をdisることを生きがいとしてる厨房

ID:bx7kaphQ

Daniel Marcus Graph Theory を読む。 [無断転載禁止]©2ch.net
http://rio2016.2ch.net/test/read.cgi/math/1497007079/

498 : ◆QZaw55cn4c :2017/07/08(土) 18:49:23.91 ID:/o9ObF5e.net
>>497
高等な趣味だと思うよ,よく頑張っているね

499 :デフォルトの名無しさん:2017/07/08(土) 19:37:28.26 ID:ICTsGxtb.net
馬鹿アスペ同士仲良く

500 :デフォルトの名無しさん:2017/07/09(日) 17:28:01.51 ID:X4hx0gz3.net
お前ら、ちゃんと次スレ立ててやれよ?
隔離スレさえあればこっちに被害は及ばないからな

501 :デフォルトの名無しさん:2017/07/09(日) 17:29:01.52 ID:ZR+XIVIQ.net
お前がやれよ

502 :デフォルトの名無しさん:2017/07/10(月) 01:48:04.10 ID:LYhH/bN3.net
よし、今日からワイがM坂だ!

503 :デフォルトの名無しさん:2017/07/10(月) 10:06:36.48 ID:BQfNYjN8.net
比較によるソートの比較回数の下限についての議論で決定木が登場します。

決定木の葉の数が n! 以上だという記述があるのですが、ちょうど n! ではないのでしょうか?

意味不明です。

504 :デフォルトの名無しさん:2017/07/10(月) 13:49:55.16 ID:BQfNYjN8.net
そもそも決定木って何ですか?

505 :デフォルトの名無しさん:2017/07/10(月) 14:01:08.40 ID:BQfNYjN8.net
例えば、決定木の内部ノードに 1: 2 というのノードにおいて、
a_1 ≧ a_2 であるか a_1 < a_2 であるかを計算しますが、
その計算結果を捨ててしまってもいいんですよね?

506 :デフォルトの名無しさん:2017/07/10(月) 14:02:15.57 ID:BQfNYjN8.net
例えば、決定木の内部ノードに 1: 2 というノードがあったとすると、そのノードにおいて、
a_1 ≧ a_2 であるか a_1 < a_2 であるかを計算しますが、その計算結果を捨ててしまっ
て以後利用しなくてもいいんですよね?

507 :デフォルトの名無しさん:2017/07/10(月) 17:02:14.26 ID:BQfNYjN8.net
http://imgur.com/XyDXq0t.jpg

↑は普通の決定木です。

http://imgur.com/zqlLVWW.jpg

↑のような決定木はどう扱うのでしょうか?

508 :デフォルトの名無しさん:2017/07/10(月) 17:11:43.87 ID:OAwCY67i.net
どこでもたちまち糞日記スレにしてしまう恐ろしさ

509 :デフォルトの名無しさん:2017/07/10(月) 17:39:12.62 ID:S+vnKcL6.net
他にも被害スレが?

510 :デフォルトの名無しさん:2017/07/10(月) 18:34:52.99 ID:BQfNYjN8.net
段々、言いたいことが分かってきました。

a1, a2, a3, a4 を比較によってソートするあるアルゴリズムがあるとします。

そのアルゴリズムには対応する決定木 T が存在します。

深さ k の決定木の葉の数の最大値は明らかに 2^k です。(深さ k の完全2分木の場合)

a1, a2, a3, a4 の大小関係の可能性は、以下の 4! = 24 通りあります。

a1 < a2 < a3 < a4
a1 < a2 < a4 < a3

a4 < a3 < a2 < a1

そのすべての可能性に対してそのアルゴリズムはソートしなければならないので、
T の葉の数はちょうど 24 であるはずです。

深さ 1 の決定木はただ一つ存在し、葉の数は 2 です。
24 ≠ 2 なので、 T の深さは 1 ではありません。

深さ 2 の決定木の葉の数の最大値は 2^2 = 4 です。

24 ≦ 4 ではないため深さ 2 の決定木では、 24 個の葉を収容できません。

深さ 3 の決定木の葉の数の最大値は 2^3 = 8 です。

24 ≦ 8 ではないため深さ 3 の決定木では、 24 個の葉を収容できません。

511 :デフォルトの名無しさん:2017/07/10(月) 18:37:08.78 ID:BQfNYjN8.net
深さ 4 の決定木の葉の数の最大値は 2^4 = 16 です。

24 ≦ 16 ではないため深さ 4 の決定木では、 24 個の葉を収容できません。

深さ 5 の決定木の葉の数の最大値は 2^5 = 32 です。

24 ≦ 32 であるため深さ 5 の決定木には、 24 個の葉を収容可能です。

以上から、決定木 T の葉の深さは最低でも 5 である必要があります。

512 :デフォルトの名無しさん:2017/07/10(月) 18:52:50.18 ID:BQfNYjN8.net
a_1, a_2, …, a_n を比較によってソートするあるアルゴリズムがあるとします。

そのアルゴリズムには対応する決定木 T が存在します。

深さ k の決定木の葉の数の最大値は明らかに 2^k です。(深さ k の完全2分木の場合)

a_1, a_2, …, a_n の大小関係の可能性は、以下の n! 通りあります。

a_1 < a_2 < … a_(n-1) < a_n
a_1 < a_2 < … a_n < a_(n-1)

a_n < a_(n-1) < … < a_1

そのすべての可能性に対してそのアルゴリズムはソートしなければならないので、
T の葉の数はちょうど n! であるはずです。

n! 個の葉を収容するためには、 T の深さを k とすると、

n! ≦ 2^k

が成り立たなければなりません。

よって、

lg(n!) ≦ lg(2^k) = k*lg(2) = k

が成り立たなければなりません。

513 :デフォルトの名無しさん:2017/07/10(月) 18:53:05.24 ID:BQfNYjN8.net
lg(n!) = Θ(n*lg(n)) ですので、

Θ(n*lg(n)) ≦ k

が成り立ちます。

以上より、比較によってソートする最高速度のアルゴリズムでも、その決定木の深さは
少なくとも Θ(n*lg(n)) の深さがあります。

よって、その最高速度のアルゴリズムにとって最悪のデータ a_1, a_2, …, a_n を与えた場合、
少なくとも Θ(n*lg(n)) 回の比較が必要です。

514 :デフォルトの名無しさん:2017/07/10(月) 18:57:08.74 ID:BQfNYjN8.net
訂正します:

lg(n!) = Ω(n*lg(n)) ですので、

Ω(n*lg(n)) ≦ k

が成り立ちます。

以上より、比較によってソートする最高速度のアルゴリズムでも、その決定木の深さは
少なくとも Ω(n*lg(n)) の深さがあります。

よって、その最高速度のアルゴリズムにとって最悪のデータ a_1, a_2, …, a_n を与えた場合、
少なくとも Ω(n*lg(n)) 回の比較が必要です。

515 :デフォルトの名無しさん:2017/07/10(月) 19:00:21.22 ID:BQfNYjN8.net
なんか非常に大雑把な議論で Ω(n*lg(n)) という評価を得ているのに、
ヒープソートやマージソートのような O(n*lg(n)) のアルゴリズムが存在する
というところが不思議ですね。

516 :デフォルトの名無しさん:2017/07/10(月) 19:15:23.77 ID:wVcu7osF.net
この人DHAだろ

517 :デフォルトの名無しさん:2017/07/10(月) 19:19:20.07 ID:TpSxkkBl.net
マグロの目?

518 :デフォルトの名無しさん:2017/07/10(月) 20:08:22.69 ID:BQfNYjN8.net
アマゾンってダメダメですね。

【全品10%ポイント還元】マンガ・雑誌など本全品がお買い得
7/10 18:00〜7/11 23:59のプライムデー限定で全ての商品が10%ポイント還元中! >今すぐチェック

ヤフーショッピングとかで買えば実質30%引きくらいで買えるときもありますよね。

519 :デフォルトの名無しさん:2017/07/10(月) 20:27:20.96 ID:Di3Z2y8c.net
>>516
ADHD?唯の馬鹿のアスペだと思う

520 :デフォルトの名無しさん:2017/07/11(火) 02:13:19.92 ID:kTultHtx.net
URLとかファイルパスとかコマンドとかをクッソ汚い文字列として
文字列処理で結合したり変数埋込みしたり正規表現使ったり
するコードとか、
エンコードされたり、エスケープ混じりのぐちゃぐちゃな文字列とか
とにかく汚くて長くて改行されてない文字列処理にも
データ構造やデザインパターンて適用できるの?
またはデータ構造やデザインパターンでソースをきれいに
整形できたりする?

521 :デフォルトの名無しさん:2017/07/11(火) 10:51:23.09 ID:GFhKOZAg.net
文字列処理っつってもいろいろあんだろ
どういう処理がしたいのかもわからんのにデザパタ適用もクソもあるかよ

522 :デフォルトの名無しさん:2017/07/11(火) 11:15:39.29 ID:oEYLH8ZM.net
Stringというデータ構造

523 :デフォルトの名無しさん:2017/07/11(火) 19:00:22.76 ID:XmA15/s4.net
クッソ汚いもぐちゃぐちゃも個人の感想だから伝わらない

524 :デフォルトの名無しさん:2017/07/11(火) 21:26:37.33 ID:rybeffro.net
おう、松坂!
次スレな

俺は賢い、ディープラーニング教えて [無断転載禁止]©2ch.net
https://mevius.2ch.net/test/read.cgi/tech/1498636978/l50

525 :デフォルトの名無しさん:2017/07/12(水) 14:44:43.08 ID:sNyzU/qO.net
著者名NGに入れて連鎖あぽーんですっきりするな

526 :デフォルトの名無しさん:2017/07/12(水) 18:59:57.68 ID:BkmceXb8.net
繁野麻衣子著『ネットワーク最適化とアルゴリズム』を読んでいます。

http://imgur.com/RI1TvXi.jpg

部分グラフの定義がおかしいです。

こんな基礎的なところで間違いを犯しているというのが信じられません。

527 :デフォルトの名無しさん:2017/07/12(水) 19:25:04.11 ID:BkmceXb8.net
あ、グラフになっていないと部分グラフとは言わないからOKなんですね。

でも分かりにくい表現ですね。

528 :デフォルトの名無しさん:2017/07/12(水) 19:35:27.04 ID:BkmceXb8.net
A' が空集合の場合はどうするんですかね?

529 :デフォルトの名無しさん:2017/07/12(水) 19:40:24.94 ID:BkmceXb8.net
空写像って何ですか?

530 :デフォルトの名無しさん:2017/07/12(水) 19:50:43.67 ID:sNyzU/qO.net
中学生?

531 :デフォルトの名無しさん:2017/07/13(木) 01:49:26.96 ID:dTYbVLC2.net
ただの基地外だろう。

532 :デフォルトの名無しさん:2017/07/16(日) 19:13:54.39 ID:jm8THNZB.net
D40
http://imgur.com/i8hq9mG.jpg

↑この問題に対する解答ですが、

https://github.com/for-2ch/for-2ch/blob/master/Chapter_D.ipynb

の解答であっていますか?

2週間くらい前に書いたものですが、理解ができません。

仮に、 T に含まれないような C の辺たちの両端点を結ぶ T の辺のみからなる
パスたちがすべて辺 AB を含まないと仮定すると、 A から B への T の辺のみ
からなるパスで辺 AB を含まないようなものが存在することになる。

↑ここが理解できません。

533 :デフォルトの名無しさん:2017/07/16(日) 19:22:48.15 ID:jm8THNZB.net
あー理解できました。

ここは分かりやすく書き直したほうがいいですね。

534 :デフォルトの名無しさん:2017/07/16(日) 19:35:47.89 ID:jm8THNZB.net
仮に、 T に含まれないような C の辺たちの両端点を結ぶ T の辺のみからなる
パスたちがすべて辺 AB を含まないと仮定します。

A_1 := A
A_n ;= B

とします。

サイクル C が以下であるとします:

A_1 → … → A_n → A_1

もしも、

辺 A_i → A_(i+1) が T に含まれないときには、

サイクル C の A_i → A_(i+1) の部分を A_i から A_(i+1) への(一意的な) T の辺のみから
なるパスに置き換えます。

すると、 A から B への T の辺のみからなるパスで辺 AB を含まないようなパスが構成できます。

これは A から B への T の辺のみからなるパスが一意的であるという木の性質に反します。
(ほかに A → B という T の辺のみからなる長さ 1 のパスが存在することに注意。)

535 :デフォルトの名無しさん:2017/07/16(日) 19:54:31.53 ID:oSRVjDnX.net
糞日記

分からない問題はここに書いてね428 [無断転載禁止]©2ch.net
http://rio2016.2ch.net/test/read.cgi/math/1498222858/749

536 :デフォルトの名無しさん:2017/07/19(水) 22:52:51.73 ID:W3gBCwo8.net
データ構造とアルゴリズムを勉強するときに、プログラム作成の言語は何がおすすめでしょうか?

なぜ、いまだにC++が幅を利かせているのでしょうか?

537 : ◆QZaw55cn4c :2017/07/20(木) 01:30:17.29 ID:NeFB4pBD.net
>>536
C/C++が基本だから

538 :デフォルトの名無しさん:2017/07/20(木) 07:32:28.47 ID:JPSYgWUy.net
JAVAやC#はなぜ主流じゃないんですか?

539 :デフォルトの名無しさん:2017/07/20(木) 08:06:18.81 ID:VwfBeboA.net
遅いから。
でも、JAVAはアルゴリズムの教科書でも使われていることあるよ。

540 :デフォルトの名無しさん:2017/07/20(木) 13:39:20.43 ID:+UhdLUtU.net
Golangは爆速やで〜

541 :デフォルトの名無しさん:2017/07/21(金) 05:47:07.66.net
Foo foo; と
Foo foo = new Foo();
は何が違うの?

あるクラス内で
private String field; のとき

public String method(String field){
return field;
}
と、
public String method(){
return this.field;
}
は何が違うの?

542 : ◆QZaw55cn4c :2017/07/21(金) 08:00:44.54.net
>>541
>Foo foo; と
>Foo foo = new Foo();
C/C++ か、それとも C#/Java か、はっきりさせよ

543 :デフォルトの名無しさん:2017/07/21(金) 08:35:20.75.net
命名規約的にJavaだろ

544 :デフォルトの名無しさん:2017/07/21(金) 10:31:24.26.net
>>541
Foo foo; // 参照型変数fooを宣言
Foo foo = new Foo(); // さらに、メモリのヒープ領域ってとこにFoo型のインスタンスを作成し、その場所を代入

コンストラクタとかでよく見ることになると思うけど
Foo(String name) {
this.name = name;
}
これは想像どおりの挙動をしてくれる
引数とフィールドに同じ名前があったとき
フィールドのものを使いたいときあえてthisつける
Foo() {
String name = "bar";
this.name = name;
}
みたいなときも同じ
名前が被ったとき、フィールド側の変数を選ぶのがthis

545 :デフォルトの名無しさん:2017/07/21(金) 19:57:34.85 ID:+Ec9GEX5.net
>>539
著者はズレてるよな。

546 :デフォルトの名無しさん:2017/07/21(金) 20:06:52.80 ID:+Ec9GEX5.net
データ構造、アルゴリズムはCで勉強して、デザパタはC++で勉強するのがいいな。

547 :デフォルトの名無しさん:2017/07/22(土) 13:37:57.58 ID:S+qzOSdo.net
本当はGoやRuby Python JavaScript Kotlinあたりやりたいのに、
本格的なプログラミングとか設計勉強しようとすると
必ずJava, C, C++ あたりで解説されるから覚えざるを得ないというジレンマ。

548 :デフォルトの名無しさん:2017/07/22(土) 13:46:49.67 ID:0HjhMGYw.net
おらLispやれLispゥ!

549 :デフォルトの名無しさん:2017/07/22(土) 18:31:48.46 ID:Yr9CVNZl.net
>>547
インプレイス、という概念を植えつけられない言語でアルゴリズムをやるのは問題
でも Java が使われるのは疑問

550 :デフォルトの名無しさん:2017/07/22(土) 19:09:29.77 ID:3d/mUXex.net
Javaだと問題があるのでしょうか?

セジウィックの本の第4版がJavaですが。

551 :デフォルトの名無しさん:2017/07/22(土) 19:10:22.08 ID:fXxiASxC.net
>>547
GoやRuby Python JavaScript Kotlinあたりに入門ちゃんと済ませて、これから本格的なプログラミングとか設計を勉強していくぞって人なら
具体例の説明に使われる程度のJavaやCなんて、無勉でもある程度は読めるでしょ

552 :デフォルトの名無しさん:2017/07/22(土) 19:12:56.74 ID:3d/mUXex.net
例えば、Pythonだとソートとかハッシュとかリストとかが用意されていますが、
データ構造を学ぶ上では高級すぎるのではないでしょうか?

553 :デフォルトの名無しさん:2017/07/22(土) 19:21:52.44 ID:fJRG67nz.net
Sedgwick のアルゴリズムの教科書は、C++版やJava版があるよね。
C++版はちょっと古くて、C++11以降のモダンな書き方で改訂版を出してほしい。

自分は、アルゴリズムの教科書は疑似コードのみを示すの(MITのCormenの)で勉強したんだけど、失敗だったと思っている。
疑似コードを真似してそのまま実装してたから、一文字変数あまりまえ、クラスや構造体を定義することはなく、何でもかんでも配列で済ませるというクセがついてしまった。
もうちょっと、オブジェクト指向とかを勉強してからにすればよかったのかも。

554 :デフォルトの名無しさん:2017/07/23(日) 11:49:40.37 ID:cZonGhlD.net
Javaとか連想配列使うだけでもいちいちnewとかキャストとか
鬱陶しい。

555 :デフォルトの名無しさん:2017/07/23(日) 14:58:46.77 ID:CNTwKpOF.net
アルゴリズムは抽象的で、言語仕様とは切り離されたものであるべきなのだ。
そうは言っても手続き型を意識したものになりがちで、これを関数型に書き直せと言われても一目難しいものがままある

556 :デフォルトの名無しさん:2017/07/23(日) 15:44:19.76 ID:G5QCCj7S.net
アルゴリズムイントロダクションを読んでいます。

http://imgur.com/xbuAPtJ.jpg

↑は、 ω 記法についてです。

「if the limit exists」

と書かれていますが、なぜこんなことを書いているのでしょうか?

意味不明です。

557 :デフォルトの名無しさん:2017/07/23(日) 15:46:31.20 ID:G5QCCj7S.net
g(n) が漸近的に正であるような関数であれば、

f(n) = ω(g(n))



lim f(n) / g(n) = ∞

ではないでしょうか?

「if the limit exists」などと書いてある理由が分かりません。

558 :デフォルトの名無しさん:2017/07/23(日) 15:51:14.63 ID:G5QCCj7S.net
アルゴリズムイントロダクションって結構いい加減ですよね。

やっぱりクヌースの本を読んだ方がいいのかもしれませんね。

559 :デフォルトの名無しさん:2017/07/23(日) 15:54:26.92 ID:G5QCCj7S.net
漸近的に正である関数
漸近的に非負である関数

について説明がありますが、

なぜ、漸近的に正である関数だけを考えないのでしょうか?

漸近的に非負である関数などこの本で登場する機会はあるのでしょうか?

560 :デフォルトの名無しさん:2017/07/23(日) 15:55:21.76 ID:p86Uodim.net
松坂君の夏休みの糞日記

561 :デフォルトの名無しさん:2017/07/23(日) 16:03:03.18 ID:I43wPtVl.net
>>556-559
この基地外が人様を害さないことを祈るばかりだ。

562 :デフォルトの名無しさん:2017/07/23(日) 16:05:04.45 ID:7bD+iXj9.net
>>555
現実問題、アルゴリズムを書くコードはC、C++に限られる。
Fortran、Java、Python、C#など他の言語はそれで書かれたライブラリを呼ぶだけだ。

563 :デフォルトの名無しさん:2017/07/23(日) 16:09:19.74 ID:cZonGhlD.net
機械のパフォーマンスを追求するあまりに
人間時間のパフォーマンスを際限なく犠牲にする池沼

564 :デフォルトの名無しさん:2017/07/23(日) 18:48:09.61 ID:wW+3pobQ.net
>>563
それはお前みたいな業務プログラマの視点

565 :デフォルトの名無しさん:2017/07/23(日) 19:06:54.73 ID:cZonGhlD.net
>>564
何だよ業務プログラマって
俺は人に使役されてないし、インフラも構築できるし、
人工知能や数学もやってるんだぞ。
お前みたいなパフォーマンスオタクのほうが頭おかしいから。

566 :デフォルトの名無しさん:2017/07/23(日) 20:44:29.00 ID:Js688EZT.net
>Javaとか連想配列使うだけでもいちいちnewとかキャストとか
>鬱陶しい。


567 :デフォルトの名無しさん:2017/07/23(日) 20:46:56.02 ID:LRxsFVvF.net
>>565
なんでそんなに必死なの?

568 :デフォルトの名無しさん:2017/07/23(日) 21:10:16.48 ID:7eA3s3Ch.net
>>562
Youがライブラリ作ってもいいんだぞ

569 :デフォルトの名無しさん:2017/07/23(日) 23:45:48.25 ID:G5QCCj7S.net
アルゴリズムイントロダクションを読んでいます。

「関数 n^(1 + sin(n)) の指数部の値は 0 と 2 の間で振動し、その中間にあるすべての値をとる」

などと書かれていますが、明らかに間違っていますよね。

sin(n) = 1/sqrt(2) となるような自然数 n は存在しません。

何を考えているのでしょうか?

570 :デフォルトの名無しさん:2017/07/23(日) 23:54:11.92 ID:G5QCCj7S.net
n と書いておきながら n が R を動くと仮定しているとかそんなことはないですよね?

571 :デフォルトの名無しさん:2017/07/24(月) 00:08:11.63 ID:1mGhcU0l.net
原文なの? IT関係の翻訳は誤訳だらけだよ。

572 :デフォルトの名無しさん:2017/07/24(月) 00:10:01.69 ID:dw4Kx5PQ.net
オリジナルのほうにも、

p.52
the value of the exponent in n^(1 + sin(n)) oscillates between 0 and 2, taking on all values in between

と書いてあります。

573 :デフォルトの名無しさん:2017/07/24(月) 00:21:28.79 ID:BT4s6Lxv.net
>557
0<=c g(n) < f(n)

って書いてあるのだから、(0 < c g(n) でなく、0 <= c g(n) であることに注意)
g(n) = 0, if n > 3
1, if n <= 3
とかなら、
f(n)/g(n) の極限は存在しないよ。
だから、もし極限が存在すれば、という限定をつけたのだと思うよ。

574 :デフォルトの名無しさん:2017/07/24(月) 00:25:53.48 ID:dw4Kx5PQ.net
>>573

それだと、

極限が存在するかしないか以前に、

f(n) / g(n) は n ≦ 3 に対してしか定義されませんよね。

lim f(n) / g(n) と書いた以上は

∃n0 s.t. n ≧ n0 ⇒ g(n) ≠ 0

でないといけないと思います。

575 :デフォルトの名無しさん:2017/07/24(月) 00:27:22.94 ID:dw4Kx5PQ.net
たとえば、

関数 h(n) の定義域が {0, 1, 2, 3} のときに、

lim h(n) などそもそも考えられないわけです。

576 :デフォルトの名無しさん:2017/07/24(月) 00:31:02.81 ID:dw4Kx5PQ.net
>>573

まず、

0 <= c g(n)

となっているのが問題だと考えます。

g(n) は漸近的に正であるような関数でなければならないはずです。

577 :デフォルトの名無しさん:2017/07/24(月) 00:32:17.21 ID:dw4Kx5PQ.net
このあたりのところを4人の著者のうち誰が書いたのか知りませんが、
非常に出来が悪いですね。

世界標準とはとてもいえないと思います。

578 :デフォルトの名無しさん:2017/07/24(月) 00:33:52.43 ID:1mGhcU0l.net
書いてあるとおりにしか取れない。キミの解釈がむしろ分らない。
the value of the exponent って(1 + sin(n)) だよな。それは between 0 and 2で、taking on all values in betweenだよな。

nが自然数なのかは知らんけど、sin(n) = 1/sqrt(2) という解釈はどこから?

579 :デフォルトの名無しさん:2017/07/24(月) 00:36:55.54 ID:dw4Kx5PQ.net
「if the limit exists」と書いてある理由について考えられる唯一の可能性があります。

それは以下の可能性です。

f(n) = ω(g(n)) の定義では、 n は N を動くと考えている。

一方、

lim f(n) / g(n) = ∞

という式の n は R を動くと考えている。

580 :デフォルトの名無しさん:2017/07/24(月) 00:41:44.60 ID:dw4Kx5PQ.net
>>578

例としてそのような値を考えたということです。

0 < 1 + 1/sqrt(2) < 2

ですが、

1 + sin(n) = 1 + 1/sqrt(2) となるような n ∈ N は明らかに存在しません。

1 + sin(n) = 0
1 + sin(n) = 2

となるような n ∈ N も明らかに存在しませんが、 in between というのが

0 と 2 を含まない可能性を考えて、↑のような例にしました。

581 :デフォルトの名無しさん:2017/07/24(月) 00:51:03.16 ID:dw4Kx5PQ.net
やっぱりクヌースの本の完成度は群を抜いていますね。

582 :デフォルトの名無しさん:2017/07/24(月) 01:21:19.59 ID:1mGhcU0l.net
> the value of the exponent in n^(1 + sin(n)) oscillates between 0 and 2, taking on all values in between

書いてあるそのままの意味で、これは数学的に真で、
1 + sin(n) = 1 + 1/sqrt(2) を満たす自然数nが存在するなんてどこにも書いてないし、言ってない。
直前にnは自然数と定義してるならそれも引用してもらわないと判断のしようがない。おそらくnumberの略だろう。変数n。

583 :デフォルトの名無しさん:2017/07/24(月) 01:46:14.40 ID:1mGhcU0l.net
もっと本質的な勘違いか。
AならばBはA=Bではないし、AならばBは、BならばAでもないぞ。
言ってるのはthe value, taking on all values in between だけだからな。

584 :デフォルトの名無しさん:2017/07/24(月) 03:48:35.95 ID:qy6/mYOI.net
>>582

n については何も記述がありません。

そもそも、普通なら関数について書くときには、定義域を書くはずですが、
書いてありません。

習慣として、 n と書けば自然数の集合を動く変数ということになりますので、
そう解釈するのが妥当です。

1 + sin(n) が 0 と 2 の間のすべての値をとるのであれば、当然、

0 < 1 + 1/sqrt(2) < 2 ですので、値 1 + 1/sqrt(2) もとります。

585 :デフォルトの名無しさん:2017/07/24(月) 03:58:43.71 ID:qy6/mYOI.net
念のため、公式ページの正誤表を見てみましたが、書いてありませんでした。

かなり売れている本だと思いますが、飛ばし読みしている人ばかりなのでしょうか?

586 :デフォルトの名無しさん:2017/07/24(月) 04:32:03.26 ID:1mGhcU0l.net
数学の世界ならそうだろうが、数学本じゃなくてプログラミングの本なんだろ?
sin(n) と書いてあればプログラマはたいてい n をfloat型かdouble型の変数だと解釈する。
= 一つとっても大抵のプログラミング言語は等式ではなく、代入演算子と定義している。
分野が違うのだから論理的におかしいと思ったらまずは定義を疑う。数学だってブール代数で1+1=1って書く場合もあるだろう。
今のプログラミング言語は+や-の演算子すら再定義できるのだ。

仮に自然数だとしても、次に本質的な論理問題。>>583 これ。

> 0 と 2 の間のすべての値をとる

これも怪しい。take on All Value なので、on 〜の上にという意味で、日本語にするならば結果がその範囲内に収まるだろう。
All values in between take the valueではないのだ。AはBのとき、BはAか?もちろん偽。
つまり1 + sin(n) = 1 + 1/sqrt(2)を保証する記述ではない。

587 :デフォルトの名無しさん:2017/07/24(月) 09:36:19.03 ID:yBhCO73J.net
馬鹿のアスペにかまうな

588 :デフォルトの名無しさん:2017/07/24(月) 15:13:09.34 ID:BdqEvISL.net
>>569
>「関数 n^(1 + sin(n)) の指数部の値は 0 と 2 の間で振動し、その中間にあるすべての値をとる」


指数部の値は 0 と 2 の間で振動し、その中間にあるすべての値をとるんじゃね?

589 :デフォルトの名無しさん:2017/07/25(火) 00:02:25.50 ID:6PSqyxlH.net
nが自然数か何かも書いてないのに勝手に自然数だと勘違いして発狂するとか何考えてんでしょうね

590 :デフォルトの名無しさん:2017/07/25(火) 08:35:49.61 ID:drKlbZNX.net
sin(n) = 1/sqrt(2) のとき n = 約0.785。 degだと45度。
って、そういう話じゃなくて?

591 :デフォルトの名無しさん:2017/07/25(火) 16:29:58.97 ID:GyEh+ENJ.net
nが自然数でも問題ない

592 :デフォルトの名無しさん:2017/07/25(火) 16:30:50.54 ID:GyEh+ENJ.net
そもそも指数部(1 + sin(n))の話しかしてないんだから

593 :デフォルトの名無しさん:2017/07/26(水) 01:18:42.44 ID:lXGGezLP.net
え?

594 :デフォルトの名無しさん:2017/07/26(水) 09:54:26.90 ID:xcmFWevw.net


595 :デフォルトの名無しさん:2017/07/28(金) 14:53:29.74 ID:+gMyuDZP.net
凄いことにきずいたぜ!
「ポリモーフィズム」と「ラッパー」は反対の関係にあるんだ。
これによって「メソッド名」と「中身」が 多対多の関係にできるってことだぜ。

596 :デフォルトの名無しさん:2017/07/29(土) 09:28:33.20 ID:eHtT0zBv.net
ライブラリってログを吐いてもいいの?

597 :デフォルトの名無しさん:2017/08/06(日) 03:45:40.20 ID:tlOocLRL.net
シーケンス図とかスタックトレースって都庁なんだな。
おれの言いたいことが分かるか?「東京都庁」なんだよ。

598 :デフォルトの名無しさん:2017/08/06(日) 03:55:13.24 ID:tlOocLRL.net
待てよ・・・ピラミッドやサクラダファミリアも同じ形をしてるじゃないか!
この世界の真実を見たぞ・・・

599 :デフォルトの名無しさん:2017/08/06(日) 16:19:04.74 ID:J9/QEsgx.net
ムーの読みすぎ

600 :デフォルトの名無しさん:2017/08/08(火) 23:50:20.23 ID:/cPMGZTq.net
つかオブジェクト名繋げないでいきなり関数とは変数とか
呼ぶやつまじでやめて。
継承した変数や関数なのか、このクラスで定義した変数や関数
のかわからないじゃん。
このクラスで定義したものだったら thisつけろよ。

601 :デフォルトの名無しさん:2017/08/09(水) 01:40:35.40 ID:MPlilw1q.net
>>600
ちょっと何言ってるかよくわからない

602 :デフォルトの名無しさん:2017/08/09(水) 06:04:34.33 ID:Iqk5vMYz.net
言語なによ

603 :デフォルトの名無しさん:2017/08/09(水) 16:52:44.18 ID:dpRGvEHE.net
javascriptωじゃね

604 :デフォルトの名無しさん:2017/08/11(金) 13:57:12.96 ID:Vbqo8hQM.net
デザパタは覚えたし、クラス図やシーケンス図も読める、クラス図の通り
にコーディングもできるし、だいたい何らかのパターンに当てはめ
ればなんとか動く。
命名規則も全部決めてるからその規則通りに書けば自動的に動く
でも「なんでそうなるの?」って質問されるとさっぱりわからないんだよなぁ…
デザパタに則っていないコードとか、俺と違う命名規則の人が書いた
コードも一切理解不能(無能)。

605 :デフォルトの名無しさん:2017/08/11(金) 14:22:23.73 ID:OJhNtZ6y.net
>>604
ただの作業員じゃん(笑)

606 :デフォルトの名無しさん:2017/08/11(金) 16:40:01.48 .net
>>604
なんとなくだけど、将棋弱そう

607 :デフォルトの名無しさん:2017/08/11(金) 16:48:21.14 ID:IcABKbyR.net
>>604
なんとなくだけど、頭弱そう

608 :デフォルトの名無しさん:2017/08/11(金) 17:03:34.23 ID:4Gx5aAK7.net
IQ90くらいだろ

609 :デフォルトの名無しさん:2017/08/11(金) 17:12:35.31 ID:07jWFZnC.net
そんなに煽ってやるなよ

610 :デフォルトの名無しさん:2017/08/11(金) 17:20:22.56 ID:4bbWTV9L.net
372仕様書無しさん2017/08/11(金) 10:31:43.41
フリーランスで検索すると引っかかる零細ITがやっているサイトはだめだ。
高額に見せているけど実際は50万前後
JIET加入した方がいいよ。案件は毎日千件以上末端価格は60万円 平凡な稼働時間の80万円の案件もある。
ユー子が求人をだしてる。名刺も渡せる。ユー子に名刺が渡せるんだぞ。夢のようだ

それらの案件まさぐってHPで転売していたのが零細ITがやるフリーランスサイト

自称エージェントはJIETから流れてくる案件を転売してるだけだった。
JIETに加入すれば誰でも案件に応募することができた。収入が40万50万台にならなくて済む

473非決定性名無しさん2017/08/03(木) 15:21:30.71

JIETに加入すれば誰でも3次60万からスタートだ。フリーランスのサイトをやってる
自称エージェントもそこから案件情報を取得しきてる。サイトで60万で釣って40万から55万の
間でやらしている。

611 :デフォルトの名無しさん:2017/08/11(金) 22:22:00.80 ID:vOciZ7Dc.net
>>604
キミは理想のPGだよ。

612 :デフォルトの名無しさん:2017/08/11(金) 23:53:53.43 ID:VT8Bdzbq.net
>>604
いまどきデザインパターン?

613 :デフォルトの名無しさん:2017/08/12(土) 05:31:45.11 ID:mqOU9Lu0.net
オートマ限定免許だな

614 :デフォルトの名無しさん:2017/08/12(土) 11:21:25.45 ID:2oFLTBe8.net
ちょww俺煽られすぎwww
でも、モノは完成するようになったぜ。
要求、仕様から動作原理すっ飛ばして、命名規則だけで
モノが完成するから結構職場では役立ってるぜ。
他のプログラマはフレームワークの使い方がやっとだし
一人だけ技術力があるゴリラ野郎は人望がなくて自分の技術力が
人に盗まれるのを極力恐れているから基本的に部下に意地悪して
教えてあげれば済むことも何も教えてくれない。
社長はどんどん仕事取ってきて、だいたい半数のプロジェクトが進まずに凍結状態に
なり、ブチ切れた客をなんとかかわし続ける日々だ。
そんな状況で俺の場合動くモノを比較的完成する方だからゴリラには結構
気に入られて給料は上がったよ。会社がいつまで持つかは分からんが。

615 :デフォルトの名無しさん:2017/08/12(土) 11:28:43.73 ID:WyVA8Sgg.net
このスレは初心者スレだったな。

616 :デフォルトの名無しさん:2017/08/12(土) 11:55:15.14 ID:NKT9PAHK.net
>>614
どこを縦読み?

617 :デフォルトの名無しさん:2017/08/12(土) 14:08:41.06 ID:D9kn9WR2.net
戦隊もので言えばブラックじゃないですか!

618 :デフォルトの名無しさん:2017/09/01(金) 03:15:32.30 ID:D43WgHq0.net
状態遷移のように汎用的に使える技術って他にも何かありますか?

619 :デフォルトの名無しさん:2017/09/01(金) 09:04:39.07 ID:s82kToZ5.net
ストラテジーが最強

620 :デフォルトの名無しさん:2017/09/01(金) 15:05:22.49 ID:D43WgHq0.net
デザインパターンですか?汎用性ありますかね

621 :デフォルトの名無しさん:2017/09/03(日) 14:32:35.28 ID:8cpPGlhh.net
>>620
概念と用語だけマスターすれば良い。

あとは実務に合わせて使えるところは利用するし、合わない部分は気にしない。

622 :デフォルトの名無しさん:2017/09/03(日) 15:06:35.15 ID:+qi04Kz7.net
>>621
なるほど
ありがとうございます

623 :デフォルトの名無しさん:2017/09/03(日) 17:00:04.12 ID:VeRuY65E.net
>>622
>>621みたいに、わかったような口を叩くけど実際にやらせてみたら手が動かないカスになったらダメ
自分でどんどん適用してみて、メリットもデメリットも自分の体験として語れるようになった方がいい

624 :デフォルトの名無しさん:2017/09/03(日) 21:20:14.64 ID:+qi04Kz7.net
>>623
なるほど
ありがとうございます

625 :デフォルトの名無しさん:2017/09/03(日) 22:05:38.94 ID:+qi04Kz7.net
https://ideone.com/mWu6mC
写経してみたけどどんな時に使えるのかいまいちわかりませんでした・・・

626 :デフォルトの名無しさん:2017/09/03(日) 23:18:58.10 ID:SkKZ7pGs.net
正解です。

627 :デフォルトの名無しさん:2017/09/04(月) 23:07:19.92 ID:NGSv2EGo.net
>>625
さらっと読んで写経したぐらいで理解できると思わない方がいい
そのうちわかってくるから、とにかく手を動かしコードを動かす経験を積み重ね続けるんだ

628 :デフォルトの名無しさん:2017/09/14(木) 20:19:04.82 ID:VdbIWmI2.net
Introduction to Algorithms 3rd Editionを読むスレ [無断転載禁止]©2ch.net
http://mevius.2ch.net/test/read.cgi/tech/1505387171/

629 :デフォルトの名無しさん:2017/09/15(金) 07:54:04.88 ID:gy747Xnp.net
>>618
>汎用的に使える技術
良い質問だなこれ
遅レスだけど考えたい

地味だけど基礎的なデータ構造が
一番汎用的なんじゃないか?
連結リストとか二分木とかそういうの

630 :デフォルトの名無しさん:2017/09/15(金) 11:43:47.38 ID:NePdqYQx.net
隣接行列とか

631 :デフォルトの名無しさん:2017/09/16(土) 07:20:33.50 ID:DwhIrlJj.net
>>629
それは言えてるかもしれない
汎用的=基礎的

632 :デフォルトの名無しさん:2017/09/16(土) 09:24:14.80 ID:pDAu8pHG.net
consセル?

633 :デフォルトの名無しさん:2017/09/17(日) 17:09:50.02 ID:7slIJ8sy.net
Kleinberg & Tardosの本に以下のような内容の記述があります。
でも、 n > 1 のとき、 H が universal になることは決してないですよね。
u = v のとき、常に、 h(u) = h(v) なので、問題の確率は 1 ですから。



--------------------------------------------------
U を要素数の非常に多い有限集合とする。

H を U から {0, 1, ..., n-1} へのすべての写像の集合のある部分集合とする。

u, v ∈ U に対して、ランダムに選んだ h ∈ H が h(u) = h(v) を満たす確率はたかだか 1/n であるとき、
H は universal であるという。

634 :デフォルトの名無しさん:2017/09/17(日) 17:30:37.45 ID:7slIJ8sy.net
S を #S ≦ n であるような任意の U の部分集合とする。
u を U の任意の要素とする。
X を ランダムな選択 h ∈ H に対して、値 #{s ∈ S | h(s) = h(u)} をとるようなランダム変数とする。

このとき、

E[X] ≦ 1

である。

証明:

s ∈ S に対し、
h(s) = h(u) であるならば、 1
h(s) ≠ h(u) であるならば、 0
となるようなランダム変数を X_s とする。

仮定により、 H は universal であるから、
E[X_s] = Pr[Xs = 1] ≦ 1/n

X = Σ X_s だから期待値の線形性により、

E[X] = ΣE[X_s] ≦ #S * (1/n) ≦ 1

635 :デフォルトの名無しさん:2017/09/17(日) 17:32:48.13 ID:7slIJ8sy.net
この証明は、

u ∈ S であるとき、破綻しますよね。

636 :デフォルトの名無しさん:2017/09/17(日) 17:37:20.77 ID:7slIJ8sy.net
Kleinbergはネヴァンリンナ賞を受賞した人だそうですが、大丈夫な人なのでしょうか?

637 :デフォルトの名無しさん:2017/09/17(日) 18:52:52.16 ID:qJGXQCnw.net
ID:7slIJ8syは馬鹿アスペの松坂君

638 :デフォルトの名無しさん:2017/09/17(日) 23:18:40.22 ID:2kxiy1Rb.net
> u = v のとき、常に、

また勝手におれ条件を付け加えてるな。

639 :デフォルトの名無しさん:2017/10/06(金) 23:28:50.73 ID:5xvc7oH2.net
T(n) = Ω(g(n))



T(n) ≧ c*g(n) となる n が無限に多く存在するような定数 c が存在する。


という定義がありますが、なぜ、ほとんどすべての n ではないのでしょうか?

640 :デフォルトの名無しさん:2017/10/07(土) 08:08:49.02 ID:oYr2GY5l.net
「B木」の「B」の由来って謎なのかよ。

641 :デフォルトの名無しさん:2017/10/07(土) 08:55:33.93 ID:uFxBTiFA.net
>>639

Knuthは、

T(n) = Ω(g(n))



ほとんどすべての n に対して、 T(n) ≧ c*g(n) が成り立つ。

と定義するのがいいと書いていますが。

642 :デフォルトの名無しさん:2017/10/07(土) 10:32:49.92 ID:yM1og+Z2.net
Binary(嘘)
Balance(へ?)

643 :デフォルトの名無しさん:2017/10/07(土) 14:37:48.61 ID:a6QcCG6E.net
Boeing

644 :デフォルトの名無しさん:2017/10/07(土) 19:13:27.20 ID:htJPCTEu.net
バランスだろ

645 :デフォルトの名無しさん:2017/10/08(日) 09:18:29.57 ID:IlB/Yh1D.net
A木があるだから、その次ってことでB木だろ

646 :デフォルトの名無しさん:2017/10/08(日) 10:08:31.18 ID:S5+imH6k.net
C木、D木、・・・、Z木

647 :デフォルトの名無しさん:2017/10/08(日) 11:43:33.94 ID:I0zVkG9n.net
乃木、高木、猪木

648 :デフォルトの名無しさん:2017/10/08(日) 12:52:27.73 ID:u+rv4D7i.net
Θ(f(n)) を使うべきところで、 O(f(n)) を使っているという批判をする人がいますが、
具体的にはどういう状況でしょうか?

649 :デフォルトの名無しさん:2017/10/08(日) 19:44:09.13 ID:bBgzVIcc.net
シータオメガなんて数学以外で使ったことない

650 :デフォルトの名無しさん:2017/10/08(日) 20:36:16.81 ID:IlB/Yh1D.net
FFでよく使う

651 :デフォルトの名無しさん:2017/10/08(日) 20:44:05.42 ID:97xX0KxU.net
AAでまれに使う

652 :デフォルトの名無しさん:2017/10/09(月) 18:34:06.40 ID:vbK8I5kP.net
浅野孝夫著『アルゴリズムの基礎とデータ構造』を読んでいます。

「上の挿入ソートの例のように、基本演算回数(比較回数)は入力サイズ n にのみ
依存するとは言えない。そこで、入力サイズ n の入力のうちでアルゴリズムが最も
多くの基本演算を必要とする入力を考えて、それに対する基本演算回数を、本書ではん、
サイズ n の入力に対するアルゴリズムの計算量(time complexity of an algorithm)と
呼ぶ。すなわち、最悪の場合を想定してアルゴリズムの計算量を定めていることになる。
このようにして定められたアルゴリズムの計算量 T はもちろん n にのみ依存する関数で
あるので T(n) と書ける。上の挿入ソートの例では T(n) = n*(n-1)/2 である。」

と書いてあります。

その後、マージソートのところには、

「マージソートの計算量は T(n) = O(n*log(n)) である」

と書いてあります。

T(n) は最悪の場合の計算量ですから、

T(n) = Θ(n*log(n)) が正しいのではないでしょうか?

ちなみに、浅野さんは、この本の最初のほうで O, Ω, Θ を定義しています。

653 :デフォルトの名無しさん:2017/10/09(月) 18:35:57.26 ID:vbK8I5kP.net
もちろん、 f(n) ∈ Θ(n*log(n)) ⇒ f(n) ∈ O(n*log(n)) ですが。

654 :デフォルトの名無しさん:2017/10/09(月) 18:51:59.25 ID:vbK8I5kP.net
浅野さんは、挿入ソートの計算量を

O(n^2)

と書いています。

これも

Θ(n^2)

と書くべきですよね。

>>652

に引用したように、

「上の挿入ソートの例では T(n) = n*(n-1)/2」

ですから。

655 :デフォルトの名無しさん:2017/10/09(月) 20:59:07.08 ID:kKYMaHZG.net
馬鹿アスペの連投

656 :デフォルトの名無しさん:2017/10/09(月) 21:39:35.32 ID:HQb3QT54.net
ID:vbK8I5kP くらいの基地外になれば、100連投だって容易い。

657 :デフォルトの名無しさん:2017/10/15(日) 10:39:26.70 ID:Cy7I/MU1.net
ソートの決定木についてですが、葉の数が「少なくとも」 n! 個あると説明されることが多いですが、
ちょうど n! 個と書かない理由は何ですか?

658 :デフォルトの名無しさん:2017/10/15(日) 10:46:56.72 ID:Cy7I/MU1.net
既に順序が決定されているにもかかわらず、さらに無駄な比較をするようなプログラムの
ことを想定しているのでしょうか?

659 :デフォルトの名無しさん:2017/10/15(日) 10:48:49.83 ID:Cy7I/MU1.net
そうだとすると、決定木のある部分木で、その葉がすべて同じ順序に対応するようなものが
存在することになります。

660 :デフォルトの名無しさん:2017/10/15(日) 10:49:46.78 ID:Cy7I/MU1.net
ソートの決定木について厳密に論じている本はありますか?

661 :デフォルトの名無しさん:2017/10/15(日) 11:09:38.82 ID:Cy7I/MU1.net
This result serves as a guide for us to know, when designing a sorting algorithm, how
well we can expect to do. For example, without such a result, one might set out to try
to design a compare-based sorting algorithm that uses half as many compares as does
mergesort, in the worst case. The lower bound in Proposition I says that such an effort
is futile?no such algorithm exists

662 :デフォルトの名無しさん:2017/10/15(日) 11:10:24.51 ID:Cy7I/MU1.net
>>661

この説明は間違っていますよね?

663 :デフォルトの名無しさん:2017/10/15(日) 11:13:29.73 ID:Cy7I/MU1.net
最悪時にマージソートの半分の比較しか必要でないソートのアルゴリズムが存在しないこと
は証明できるのでしょうか?

664 :デフォルトの名無しさん:2017/10/15(日) 11:54:45.59 ID:Cy7I/MU1.net
あ、勘違いしました。

>>661

合っていますね。明らかに。

665 :デフォルトの名無しさん:2017/10/15(日) 13:42:57.88 ID:IuOQVSqs.net
馬鹿アスペの連投

666 :デフォルトの名無しさん:2017/10/21(土) 16:32:10.02 ID:edOw+XtB.net
浅野孝夫著『アルゴリズムの基礎とデータ構造』を読んでいます。

以下の問題に対する浅野さんの解答が↓です。

「このとき根は葉ではないので左の子 v および右の子 w をもつ。」などと書いていますが、
深さ d > 0 の二分木で左の子もしくは右の子を持たないものも当然存在します。
おかしな解答ですね。

二分木において、深さ d までの葉の総数は 2^d 以下であることを示せ。

d に関する帰納法で証明できる。 d = 0 のときは根は葉になるので明らかに成立する。 d > 0 未満で
成立すると仮定し d のときを考える。このとき根は葉ではないので左の子 v および右の子 w をもつ。
v を根とする部分木の深さ d - 1 までの葉が元々の二分木の深さ d までの葉になるがそのような葉の
総数は帰納法の仮定より、 2^(d-1) 以下である。同様に w を根とする部分木の深さ d - 1 までの葉の
総数も 2^(d-1) 以下であり、したがって、元々の二分木の深さ d までの葉の総数は 2^d 以下であることが
言えた。

この問題文自体もおかしいです。

この問題の結果が本文中で使われていてそこを読めばわかるのですが、問題文の意味は、
「深さ d の二分木の葉の総数は 2^d 以下であることを示せ」です。以下のような解答が模範解答ですね。

深さ d の二分木でその葉の総数が 2^d + 1 個以上であるような二分木が存在すると仮定する。
そのような二分木のうち葉の総数が最多であるような二分木を T とする。
すべての葉の深さが d であるような二分木の葉の総数は明らかに 2^d 個である。
よって T の葉にはその深さが d 未満であるような葉が存在する。この葉に子ノードを持たせれば
深さ d の二分木で葉の総数が T の葉の総数よりも多い二分木を作ることができるがこれは矛盾である。
よって、深さ d の二分木の葉の総数は 2^d 個以下である。

667 :デフォルトの名無しさん:2017/10/21(土) 16:38:07.00 ID:FeyeuQ+N.net
>すべての葉の深さが d であるような二分木の葉の総数は明らかに 2^d 個である。

これ出しちゃったらそれで証明おしまいのような気がするが。

668 :デフォルトの名無しさん:2017/10/21(土) 16:43:21.60 ID:edOw+XtB.net
あ、問題文はおかしくないようです。

二分木において、深さ d までの葉の総数は 2^d 以下であることを示せ。

という問題でOKです。

669 :デフォルトの名無しさん:2017/10/21(土) 16:51:58.42 ID:edOw+XtB.net
二分木において、深さ d までの葉の総数が 2^d + 1 個以上である二分木が存在すると仮定する。
深さ d までの葉の総数が最多である二分木を T とする。

このとき、 T には深さ d 未満の葉が少なくとも一つ存在する。もしそうでないと仮定すると、 T の
すべての葉の深さは d 以上であるから、明らかに深さ d までの葉の総数は 2^d 個以下に
なってしまうが、これは矛盾である。

T の深さ d 未満の葉に子ノードを持たせれば、深さ d までの葉の総数が T よりも多い二分木が存在する
ことになってしまい矛盾が発生する。

よって、において、深さ d までの葉の総数は 2^d 個以下である。

670 :デフォルトの名無しさん:2017/10/21(土) 18:35:04.55 ID:JlJoedU7.net
馬鹿アスペの連投

671 :デフォルトの名無しさん:2017/10/21(土) 18:51:41.34 ID:FeyeuQ+N.net
二分木じゃなくて三分木なら2^d以下ではないわけだけど、>>669の証明を二分木から三分木に変えても
論理展開に違いが出ないから明らかにおかしいだろう。

672 :デフォルトの名無しさん:2017/10/21(土) 19:21:45.75 ID:edOw+XtB.net
三分木では、

「もしそうでないと仮定すると、 T のすべての葉の深さは d 以上であるから、明らかに深さ d までの葉の総数は 2^d 個以下に
なってしまう」

が成り立ちません。

673 :デフォルトの名無しさん:2017/10/21(土) 19:24:01.05 ID:edOw+XtB.net
三分木の場合の証明は以下のようになりますね。


三分木において、深さ d までの葉の総数が 3^d + 1 個以上である三分木が存在すると仮定する。
深さ d までの葉の総数が最多である三分木を T とする。

このとき、 T には深さ d 未満の葉が少なくとも一つ存在する。もしそうでないと仮定すると、 T の
すべての葉の深さは d 以上であるから、明らかに深さ d までの葉の総数は 3^d 個以下に
なってしまうが、これは矛盾である。

T の深さ d 未満の葉に子ノードを持たせれば、深さ d までの葉の総数が T よりも多い三分木が存在する
ことになってしまい矛盾が発生する。

よって、において、深さ d までの葉の総数は 3^d 個以下である。

674 :デフォルトの名無しさん:2017/10/21(土) 19:33:58.53 ID:FeyeuQ+N.net
>が成り立ちません。

成り立たないことがわかっているなら証明いらんだろうw
逆に言うと、それが成り立たないことが証明されていない。

>>673
3^dってどこから出てきたわけ?

675 :名無しさん@そうだ選挙に行こう! Go to vote!:2017/10/22(日) 15:43:58.38 ID:PJF1xk0l.net
2分ヒープは完全二分木を使ったデータ構造ですが。

この完全二分木のことを半順序のついた木というのはなぜでしょうか?

676 :デフォルトの名無しさん:2017/10/23(月) 05:47:03.23 ID:iFI38Dlw.net
%%%%1000%%%%

000-[HUM%58*73.1\%]/2I/3NM/61.3SNMK%?%3%51.22222222222221%
001-[[[%6/4$17.6135412α3]]]]+DOM+SIL+7%
002-UML7%[61.2[31.5[!%32∂LM17.36%!16.3!%<<<%!HSTOL7%!Q!S!=3m=<2TOL<3Q9A<2.1GHz%,DOK,HAOARA,
003-[[[HEMLOT47[<\41.2%Q,===>[MLS<DPNO<\2.3>#ESOLA!5%!3MLA!>LTOSA>7TONSA>%>%end

677 :デフォルトの名無しさん:2017/10/24(火) 00:30:44.81 ID:jO+jDbIG.net
バッチ処理, ジョブ制御に有効なデザインパターンって何?

678 :デフォルトの名無しさん:2017/10/24(火) 09:45:11.29 ID:JWUKPJot.net
バッジパターン

679 :デフォルトの名無しさん:2017/11/05(日) 08:35:59.08 ID:0dKYGWWl.net
ヤフーブログの https://blogs.yahoo.co.jp/kamyu_2010 にデザパタ解説を発見した。

680 :デフォルトの名無しさん:2017/11/05(日) 13:49:09.49 ID:kyKiHR5g.net
>>675
再帰的に、親は両方の子以下の数値をもつ。
左右の子の大小関係は考慮しない

ここでは説明しやすいように、配列の[0]は使わない。
[1]から始めると計算が楽。
親1, 左右の子は2, 3で、法則は、親n, 子2n, 2n+1

もし[0]から始めると、
親0, 左右の子は1, 2で、親1, 左右の子は3, 4で、
法則は、親n, 子2n+1, 2n+2、となり複雑

親[1] → 子[2, 3]
[1]3, [2]10, [3]30

[2] → [4, 5]
[4]100, [5]20

[3] → [6, 7]
[6]70, [7]200

JavaScript で、漏れが作った、2分ヒープ
http://jsdo.it/michihito/bGH5

681 :デフォルトの名無しさん:2017/11/05(日) 13:58:55.54 ID:lcYDevpf.net
で、半順序はどこに登場するんですか?

682 :デフォルトの名無しさん:2017/11/05(日) 19:58:31.80 ID:kyKiHR5g.net
>左右の子の大小関係は考慮しない

683 :デフォルトの名無しさん:2017/11/06(月) 23:54:10.39 ID:Xbh99dPN.net
シングルトンがいけないとかたまに聞くんだけど
シングルトンなしでどうやるのか誰か教えて

シングルトン使わないで済むならシングルトン辞めることには吝かではないんだが
どうやるのかが分からない

HolderとかRepository作るとどうしてもシングルトンになっちゃう
誰か助けて

684 :デフォルトの名無しさん:2017/11/07(火) 08:06:23.75 ID:FkpvBRAi.net
シングルトンの何がいけないのかをわかっていれば別に使ってもいいんじゃないか?
と思うんだが

685 :デフォルトの名無しさん:2017/11/08(水) 03:27:16.05 ID:pi2d/ZnM.net
staticでおk

686 :デフォルトの名無しさん:2017/11/10(金) 09:56:08.91 ID:O+5a47Rv.net
内部ノード数 n の 2色木の Black Height を h であらわすと以下の不等式が成り立つ。

2^(h-1) - 1 ≦ n ≦ 2^(2*h-1) - 1

よって、 h = O(log(n))


とある本に書いてあります。

これっておかしいですよね?

h は n の関数ではありません。内部ノード数から2色木の Black Height は一意的にはきまらないからです。

もちろん、 O(log(n)) の左辺には n の関数が来るきまりです。

ですので、 h = O(log(n)) と書くのはおかしいのではないでしょうか?

687 :デフォルトの名無しさん:2017/11/10(金) 12:02:03.17 ID:WtBM3Wp4.net
メッセージキューイングって
Commandパターンで実装するで合ってる?

688 :デフォルトの名無しさん:2017/11/12(日) 17:56:18.04 ID:5J9eZD00.net
>>686
>>2^(h-1) - 1 ≦ n ≦ 2^(2*h-1) - 1 ・・・(1)
>>よって、 h = O(log(n)) ・・・(2)

一見すると正しそうに見えるけど、どっちがどうおかしいと?

689 :デフォルトの名無しさん:2017/11/12(日) 19:28:20.81 ID:2NYvmr0h.net
h が n の関数ではないにもかかわらず

h ∈ O(log(n))

と書いているのがナンセンスです。

690 :デフォルトの名無しさん:2017/11/12(日) 19:46:50.82 ID:wWQbf7ET.net
>>689
nとhの関係は(1)で示されているんじゃね?
不等式を変形すれば良いのでは?

691 :デフォルトの名無しさん:2017/11/12(日) 20:23:32.92 ID:2NYvmr0h.net
n から h は一意的に決まりません。

よって、

h は n の関数ではありません。

692 :デフォルトの名無しさん:2017/11/12(日) 21:38:49.52 ID:wkhRVmHI.net
>>691
(1)より一意に決まらなくても計算量は同じでしょ?

693 :デフォルトの名無しさん:2017/11/13(月) 18:01:47.14 ID:O+WFbO9G.net
>もちろん、 O(log(n)) の左辺には n の関数が来るきまりです。
ここの時点でおかしい

694 :デフォルトの名無しさん:2017/11/13(月) 18:49:03.12 ID:TURt7nwr.net
>>693

何がおかしいのでしょうか?

695 :デフォルトの名無しさん:2017/11/14(火) 16:22:50.14 ID:kwaLWx7P.net
抽象メソッドしか定義されない型のことを
「インタフェース」ってネーミングセンスは頭おかしいんじゃないの?
インタフェースって言ったら通常「UI」とか外部の窓口になったり、
外部デバイスとの接続ポイントになるコネクタのことを言うじゃん。
オブジェクトの型のことを「インタフェース」なんて言ったら誤解を招くだろ。

696 :デフォルトの名無しさん:2017/11/14(火) 16:49:12.95 ID:dN7NjwRx.net
>>695
interfaceには境界面とか接点の意味がある

クラスが持つ他との接点の意味で合ってる

697 :デフォルトの名無しさん:2017/11/14(火) 18:46:26.43 ID:9XknVuf7.net
外部の窓口になったり、外部デバイスとの接続ポイントになるのが抽象メソッドだから。
つまりそれしか定義されてないということは、インターフェースそのものと言っていいだろう。

698 :デフォルトの名無しさん:2017/11/14(火) 20:12:16.44 ID:R1CE9PkA.net
デザパタスキル、エンベッデイドスキルなんやかや言うが、みんな大事な部分は閃きなんだがなぁ・・・
作曲と同じ。 閃き・・・ とどのつまり、神が書かせているという事。
そこを理解できない限り、そのプログラマーは聖職では無い。

699 :デフォルトの名無しさん:2017/11/15(水) 13:14:29.24 ID:qga1lTtf.net
神などと妄想するようになったら科学の全否定の始まり。無知が故の過ち。

700 :デフォルトの名無しさん:2017/11/18(土) 18:23:02.44 ID:SgBQyEr/.net
神「共通化せよ――」
僕「はい」
神「ごめん間違えた――」
僕「うわぁぁああぁああ!!!」

701 :デフォルトの名無しさん:2017/11/18(土) 18:29:25.85 ID:ebkB7QGA.net
神とは強いて言えば可能性

702 :デフォルトの名無しさん:2017/11/19(日) 23:12:44.83 ID:opsy6abA.net
以下で定義される写像 A : N × N → N を Ackermann 関数という。

A(1, j) = 2^j for j = 1, 2, 3, …
A(i, 1) = A(i-1, 2) for i = 2, 3, 4, …
A(i, j) = A(i-1, A(i, j-1)) for i = 2, 3, 4, … for j = 2, 3, 4, …

α(m, n) = min {i ≧ 1 | A(i, floor(m/n)) > log_2(n)}

で定義される写像 α : {(m, n) | m, n ∈ N, m ≧ n} → N を Ackermann 逆関数という。



なぜ、この α を Ackermann 関数の逆関数と呼ぶのでしょうか?

703 :デフォルトの名無しさん:2017/11/20(月) 20:37:12.88 ID:Sdx1OtwZ.net
courseraのセジウィックとウエインの講義を受講しています。

プログラミングの課題のチェックが超厳しいですね。

'if' is not followed by whitespace.

「if」の後ろにスペースを入れないといけないなんて初めて聞きました。
そんなことまで強制されたらたまりませんね。

704 :デフォルトの名無しさん:2017/11/20(月) 20:40:14.03 ID:uYx1UAMq.net
大概のプロジェクトで採用されてるスタイルだから従っとけ
スペース軽視するやつ多すぎ

705 :デフォルトの名無しさん:2017/11/20(月) 20:43:51.90 ID:Y8ntE/6M.net
>>703
K&R2 に従っておけば文句が来ることはない
if ()
while ()
for ()

706 :デフォルトの名無しさん:2017/11/20(月) 20:54:20.19 ID:XqE+Nf2F.net
フオーマッタの設定の指定とか無いの?

707 :デフォルトの名無しさん:2017/11/20(月) 23:10:14.23 ID:ohy70QIE.net
一般的なコーディングルールには従ったほうがよい
最近の言語環境では放っておいてもツッコミ入れてくれたりもするが

708 :デフォルトの名無しさん:2017/11/21(火) 07:03:23.42 ID:G6ETZwfO.net
業務システムでオブジェクト指向不要って意見はどう思いますか
大抵スパゲティークエリになってる印象ですが

709 :デフォルトの名無しさん:2017/11/21(火) 07:13:27.16 ID:OOffmQFA.net
途中からオブジェクト指向混ぜられても困るだろ
実行効率や記述効率は悪くたって別に構わないのだから(ここわかってない人多し)、プロジェクトに来た全員が理解利用できる書き方が最優先

無論技術的にも業務的にもうんこだが、そこを追求すべき場所ではないところで勝手に追及を始めるのはそれこそうんこのやること
ゼロからオーバーホールを提案してもよいが最後まで自己責任で看取れ

710 :デフォルトの名無しさん:2017/11/21(火) 17:43:16.86 ID:M9cr/U+S.net
>>709
サブクエリ五重の塔を見て上長にキツいと報告したら世界にはバベルの塔がいっぱいあるのに根をあげるなと叱られました

せめて何をしたいのかドキュメント欲しいと言ったらコードが全てだとも言われました

IT業界の厳しさを知りました

711 :デフォルトの名無しさん:2017/11/21(火) 18:14:34.60 ID:3zrw9He/.net
>>710
マ板にどうぞ

712 :デフォルトの名無しさん:2017/11/22(水) 09:23:31.55 ID:milfaijK.net
courseraのセジウィックとウエインの講義の最初の課題であるパーコレーションだけど
backwashを防ぐにはどうすればいいんですか?

713 :デフォルトの名無しさん:2017/11/22(水) 10:42:20.23 ID:milfaijK.net
あ、分かりました。

virtual topにはつなぐがvirtual bottomにはつながないUF
virtual topにもvirtual bottomにもつなぐUF

を使えばいいんですね。

714 :デフォルトの名無しさん:2017/11/22(水) 10:51:20.09 ID:milfaijK.net
成績が100点満点中97点になりました。

715 :デフォルトの名無しさん:2017/11/22(水) 10:52:40.54 ID:milfaijK.net
成績が100点満点中98点になりました。

716 :デフォルトの名無しさん:2017/11/22(水) 11:48:25.03 ID:vqOaIl/E.net
今日のNG ID:milfaijK

717 :デフォルトの名無しさん:2017/11/22(水) 15:34:31.81 ID:milfaijK.net
ついに、成績が100点満点中100点になりました。

https://imgur.com/apwKZnf.jpg

718 :デフォルトの名無しさん:2017/11/22(水) 15:35:42.67 ID:milfaijK.net
快挙ですね。

719 :デフォルトの名無しさん:2017/11/23(木) 12:04:48.38 ID:Le5wB72/.net
デザインパターンで規定されるいろいろなクラスがあるけど
これらのクラスはそれぞれレイヤー化アーキテクチャのどこに
属すのか知りたい。
たとえばStateパターンがあった場合に、
・<<interface>>State
・ConcreteState x n
・Context
があったとき、

これらは、クラスを配置する場所的に
・プレゼンテーション層(UI層)
・App層
・サービス層
・ビジネスロジック層
・パーシステンス層
のどこの層として配置すればいいのか

720 :デフォルトの名無しさん:2017/11/23(木) 12:18:16.35 ID:DeXlBicR.net
> デザインパターンで規定されるいろいろなクラスがあるけど
> これらのクラスはそれぞれレイヤー化アーキテクチャのどこに
> 属すのか知りたい。

デザパタはレイヤ化アーキテクチャに属すものだという考え方が謎なんだけど

721 :デフォルトの名無しさん:2017/11/23(木) 12:18:26.01 ID:fJlhhdGs.net
>>719
どの層にも配置していいんじゃね

その層の機能とかを実現するのにそのデザインパターンが必要なら使えばいいのではないか

レイヤーとデザインパターンは独立に組み合わせ可能と思う

722 :デフォルトの名無しさん:2017/11/23(木) 13:43:59.34 ID:veVPgurQ.net
>>719
これでも読めよ

J2EEデザインパターン
https://www.amazon.co.jp/dp/4873111781/

723 :デフォルトの名無しさん:2017/11/25(土) 15:28:17.03 ID:unmm6CwQ.net
java用語発表されてもなー

724 :デフォルトの名無しさん:2017/11/27(月) 07:16:56.92 ID:DtvpiAcr.net
デザパタを適用したクラスがどのレイヤにあっても構わんのじゃ無いか
定石があってもフレームワークごと違うから説明無理だと思う

725 :デフォルトの名無しさん:2017/11/28(火) 09:02:37.93 ID:VA+yl+li.net
1以上1000以下の整数からなる集合の部分集合で、
その任意の異なる2元 x, y をとったとき、
「x は y を割り切らず、 y も x を割り切らない」
という性質をもつものを考える。

そのような部分集合の中で元の数が最大になるような
集合の元の数を求めよ。

726 :デフォルトの名無しさん:2017/11/28(火) 09:32:48.27 ID:EZT/19IX.net
めっちゃ勘だが、334から666と、667以上の奇数でどうだろうか

727 :デフォルトの名無しさん:2017/11/28(火) 11:34:19.17 ID:VA+yl+li.net
答えは500以下です。



1 から 1000 までの整数を 2^n * (2*m + 1) の形で表す。

2*m + 1 の部分は、

2*0 + 1, 2*1 + 1, …, 2*499 + 1

の500個のパターンのいずれかに一致する。

よって、1 から 1000 までの整数の中から501個以上の異なる整数を選び出せば、
その中には、かならず、

2^n1 * (2*m + 1), 2^n2 * (2*m + 1)

という二つの整数が含まれる。

この二つの整数は一方が他方を割り切る。

728 :デフォルトの名無しさん:2017/11/28(火) 12:05:52.85 ID:TRWRICOE.net
どっかから問題と回答を拾ってきてドヤ顔してる人ってなんなの?

729 :デフォルトの名無しさん:2017/11/28(火) 14:07:31.97 ID:g+QmVGb1.net
>>727
何をしているのかちゃんと理解したいのですが、
m や n は実数ですか?

730 :デフォルトの名無しさん:2017/11/28(火) 15:55:11.56 ID:8wOk3LC1.net
>>729
>>727が言葉が足りてないのは確かだが、もうちょっと数学のセンス磨こうぜ

731 :デフォルトの名無しさん:2017/11/28(火) 17:12:15.85 ID:g+QmVGb1.net
>>730
n=0 にして、m=0, 1, 2 ...
n=1 にして、m=0, 1, 2 ...
...
とやって確かめたら、なんとなく自然数を網羅できそうなのは確認できました。

ただ、本当に網羅できるのか証明はまだできてません。

これ以上はスレチも甚だしいので、独りで頑張ってみます。

流れぶった切ってすみません。
>>725 さん、どうぞ続けてください。

732 :デフォルトの名無しさん:2017/11/28(火) 17:15:22.43 ID:VA+yl+li.net
>>729

整数を 2 で割れるだけ割ると 2^n * (2*m + 1) の形になります。

例:

120 = 2^3 * 15 = 2^3 * (2*7 + 1)

この場合、 n = 3, m = 7 です。

733 :デフォルトの名無しさん:2017/11/28(火) 17:16:45.10 ID:VA+yl+li.net
2^n * 奇数

です。

734 :デフォルトの名無しさん:2017/11/28(火) 17:26:27.93 ID:VA+yl+li.net
1 = 2^0 * (2*0 + 1)
2 = 2^1 * (2*0 + 1)
3 = 2^0 * (2*1 + 1)



999 = 2^0 * (2*499 + 1)
1000 = 2^3 * (2*62 + 1)

となります。

1, 2, …, 1000 をすべて

2^n * (2*m + 1)

という形に表します。

m は 0 から 499 までの 500 個の整数のどれかになります。

ですので、 1, 2, …, 1000 の中から 501 個以上の整数を取ってきて、それらすべてを

2^n * (2*m + 1)

という形に表すと、

2*m + 1

の部分が同じになるような異なる2つの整数があります。
2*m + 1 の部分は同じで、 2^n の部分が異なります。それら2つの整数は
2^n1 * (2*m + 1), 2^n2 * (2*m + 1) のようにあらわされます。 n1 < n2 と仮定して一般性を失いません。
2^n2 * (2*m + 1) は 2^n1 * (2*m + 1) で割り切れます。 2^n2 * (2*m + 1) ÷ 2^n1 * (2*m + 1) = 2^(n2-n1)

735 :デフォルトの名無しさん:2017/11/28(火) 17:58:11.47 ID:8wOk3LC1.net
500以下なのはわかった。500ある例>>726も見つかった。
で、一般に1からNのとき、何個になるのよ?

736 :デフォルトの名無しさん:2017/11/28(火) 19:31:53.85 ID:VA+yl+li.net
>>726

{501, 502, …, 1000} でもOKですね。

737 :デフォルトの名無しさん:2017/11/28(火) 19:37:23.97 ID:VA+yl+li.net
>>735

ceiling(n/2)

ではないでしょうか?

738 :デフォルトの名無しさん:2017/11/28(火) 19:54:30.86 ID:8wOk3LC1.net
あんまり面白くない結果だね

739 :デフォルトの名無しさん:2017/11/30(木) 18:59:28.31 ID:A1E/mSxW.net
セジウィックとウエインのcourseraのオンライン講義を聴講しています。

java.util.List
java.util.Stack
java.util.Queue

は最低だそうですね。

Best practices: Use our implementations of Stack, Queue, and Bag.

だそうです。

740 :デフォルトの名無しさん:2017/12/02(土) 11:57:41.11 ID:6Ds5e+ud.net
最近傍探索で、最も近いものが複数個あった場合、どうするのが自然ですか?

また、k近傍探索でも、クエリからk番目に近いものが複数あった場合、どうするのが自然ですか?

741 :デフォルトの名無しさん:2017/12/02(土) 12:30:23.76 ID:LweVlrmz.net
セジウィックとウエインのcourseraのオンライン講義を聴講しています。

なんかやけに課題が厳しくないですか?

742 :デフォルトの名無しさん:2017/12/02(土) 13:12:04.17 ID:LweVlrmz.net
セジウィックとウエインのcourseraのオンライン講義Algorithms Part 1のWeek 2の課題、できた人いますか?

743 :デフォルトの名無しさん:2017/12/02(土) 17:04:18.29 ID:Rnsbf7Hs.net
今日のNG ID:LweVlrmz

744 :デフォルトの名無しさん:2017/12/02(土) 20:12:18.77 ID:LweVlrmz.net
courseraのセジウィックとウエインの講義を聴講している人はいますか?

745 :デフォルトの名無しさん:2017/12/04(月) 13:54:02.89 ID:fGqdieY2.net
>>740
好きなようにするのが自然

746 :デフォルトの名無しさん:2017/12/05(火) 09:10:03.39 ID:bL4Z2L1G.net
↓この仕様の RandomizedQueue の実装できる人いますか?

http://coursera.cs.princeton.edu/algs4/assignments/queues.html

747 :デフォルトの名無しさん:2017/12/05(火) 09:40:42.14 ID:71Ul9rRS.net
>>746
宿題なら自分でやれ
そうでないなら読むのめんどくさいから要約しろ

748 :デフォルトの名無しさん:2017/12/05(火) 09:45:48.47 ID:afEItlvW.net
松坂君につきスルー推奨

749 :デフォルトの名無しさん:2017/12/05(火) 12:21:40.49 ID:bL4Z2L1G.net
あ、仕様Memory量の見積を勘違いしていました。

できそうですね。

Item 型のデータを格納する Linked List

Linked List の各要素への参照を格納する Item[] 型の
配列を用意すれば実現できますね。

750 :デフォルトの名無しさん:2017/12/05(火) 12:25:30.33 ID:bL4Z2L1G.net
あ、でも Item[] 型の配列を ResizingArray で実現したとしても、
常に、Memoryの制限である 48*n + 192 bytes というのを満たすのは
無理ですね。

どうすればいいんですかね?

もう少しだけメモリの制限が緩ければ実現可能ですが。

751 :デフォルトの名無しさん:2017/12/05(火) 12:30:24.08 ID:bL4Z2L1G.net
Performance requirements.

Your randomized queue implementation must support each randomized queue
operation (besides creating an iterator) in constant amortized time.

That is, any sequence of m randomized queue operations (starting from an empty
queue) must take at most cm steps in the worst case, for some constant c.

↑これと↓を両立させることはできるのでしょうか?

A randomized queue containing n items must use at most 48n + 192 bytes of
memory.

752 :デフォルトの名無しさん:2017/12/05(火) 13:24:03.96 ID:bL4Z2L1G.net
あ、なんだ

簡単でしたね。

Item[] 型の Resizing Array を使えば、

メモリ使用量 〜 8*n

だから、4倍くらいメモリを無駄に使っても

48*n を超えませんね。

753 :デフォルトの名無しさん:2017/12/05(火) 13:25:09.16 ID:bL4Z2L1G.net
あ、なんだ

簡単でしたね。

Item[] 型の Resizing Array を使えば、

無駄が全くないときのメモリ使用量 〜 8*n

だから、4倍くらいメモリを無駄に使っても

48*n を超えませんね。

754 :デフォルトの名無しさん:2017/12/05(火) 13:27:33.45 ID:bL4Z2L1G.net
これから実装しますが、また100点満点中100点になりそうです。

755 :デフォルトの名無しさん:2017/12/05(火) 13:43:27.58 ID:bL4Z2L1G.net
あ、やっぱりだめですね。

dequeue の計算量がネックになりますね。

756 :デフォルトの名無しさん:2017/12/05(火) 13:45:25.54 ID:bL4Z2L1G.net
あ、分かりました。
一様ランダムに選択された a[i] に a[N] を移せばいいんですね。

757 :デフォルトの名無しさん:2017/12/05(火) 16:58:02.34 ID:Z65eXqg0.net
本日のNGID:bL4Z2L1G

758 :デフォルトの名無しさん:2017/12/05(火) 21:20:28.14 ID:YaGuI/6t.net
経路探査でray cast algorithmというのがあるらしいんだが、わかりやすいサイトない?

759 :遊園:2017/12/07(木) 01:30:59.64 ID:AoT+leNM.net
おちんちん に ベロが届くアルゴリズムを教えて下さい。

760 :デフォルトの名無しさん:2017/12/07(木) 09:29:15.88 ID:lQf/9LHk.net
お金が儲かるアルゴリズムを教えてください

761 :デフォルトの名無しさん:2017/12/08(金) 13:48:57.43 ID:6WtIjESa.net
>>759
ム板らしく

香川大
https://www.youtube.com/watch?v=J_R7fgo0FLc
早稲田大
http://www.takanishi.mech.waseda.ac.jp/top/research/voice/movie/Tongue_Phoneme_s.mpg
http://www.takanishi.mech.waseda.ac.jp/top/research/voice/movie/Tongue_EMA_s.mpg
http://www.takanishi.mech.waseda.ac.jp/top/research/voice/index_j.htm
購入可能
https://auctions.yahoo.co.jp/seller/obaba1212

762 :デフォルトの名無しさん:2017/12/09(土) 02:58:56.19 ID:ouHX+Izy.net
>>760
「お金が儲かるアルゴリズム」で儲かる方法を書いた本を売る

763 :デフォルトの名無しさん:2017/12/09(土) 09:08:05.27 ID:hr/9uBAF.net
子供の言い返しみたい

764 :デフォルトの名無しさん:2017/12/09(土) 12:25:33.81 ID:GX7M220U.net
それは結構知能が高い子供だなw

765 :デフォルトの名無しさん:2017/12/09(土) 16:48:02.91 ID:oqulgHhz.net
https://www.amazon.co.jp/dp/4040800044/ref=cm_sw_r_cp_awdb_c_Kt5kAbQR1S9HF

似たタイトルの本あるな

766 :デフォルトの名無しさん:2017/12/19(火) 17:58:55.99 ID:E2JharMg.net
関数型言語ってUML使うんですか?
クラス図とかメソッドどう書くんだろうと

767 :デフォルトの名無しさん:2017/12/24(日) 12:09:02.25 ID:croU9pw3.net
ちょっと質問させてください。
状況: トータル1000行くらいある巨大メソッドの改修
言語; PHPだがどの言語でもそう関係のない内容

・まずコントローラのアクションメソッドがあって

public function action(引数){

/* 500行くらいの既存コード */

/*今回改修を加えたい50行位のコード */

/* 500行位の既存コード */
}
となっている。

768 :デフォルトの名無しさん:2017/12/24(日) 12:16:40.00 ID:croU9pw3.net
・ここで、改修要件は、中間にある「/* 50行くらいの既存コード */」を
  if文で分岐させて分岐次第で違う処理を入れる。というもの。
  したがって、

public function action(引数){

  /* 500行くらいの既存コード */

  if(条件1){
    /* 新規追加コード */
    if(条件1-1){
      /* 新規追加コード */
    }else{
      /* 既存コード */
    }
  }else if(条件2){
    /* 新規追加コード */
  }else{
    /* 既存コード */
  }

  /* 500行位の既存コード */
}

みたいにひたすら条件分岐して既存コードと新規追加コード
が何回も実行されるようにしたい。

769 :デフォルトの名無しさん:2017/12/24(日) 12:22:57.90 ID:croU9pw3.net
・ここで、俺は「/* 既存コード */」の中身を知っている必要は
 ないと思った。だから、このコードの詳細を読まずに「func()」
 として「action()メソッド内部」に切り出した。
・外部に切り出したのではなく、内部に切り出したのはその処理が
 他のアクションメソッドでは共有されるような汎用的なものではないだろうと
 判断したのと、そのメソッド内で処理を追いやすいようにというのを
 優先させたため。何より、その処理内で使っている関数内ローカル変数の
 依存性の関係上そうせざるを得ないと思った。

public function action(引数){

  /* 500行くらいの既存コード */

  private function __legacy(){
    /* 50行くらいの既存コード */    
  }

  if(条件1){
    /* 新規追加コード */
    if(条件1-1){
      /* 新規追加コード */
    }else{
      __legacy();
    }
  }else if(条件2){
    /* 新規追加コード */
  }else{
    __legacy();
  }

  /* 500行位の既存コード */
}

770 :デフォルトの名無しさん:2017/12/24(日) 12:31:59.59 ID:croU9pw3.net
・【訂正】上記で「func()」として切り出したと言っているが、
  「__legacy()」に変更しました。すみません。
・上記のように改修した所、レビューを受けたときに怒られた。
・まず、「この__legacy()の中身ちゃんと読んだ? 把握して書いている?」
 という指摘。
・そして「ここメソッド内だけどどうして関数定義しているの?
 他の人そんなことしてないでしょ。どうして変わったことするの?」
 という指摘。

・まず1つめの指摘に対して異議がある。
 ブラックボックス化しなければ大規模なコードは書けないんじゃない?
 ということが言いたい。ライブラリとかフレームワークの機能も全部
 先に中身をよくよく読んでおかなければ使ってはいけないことになるじゃん。

・2つの指摘に対して、
 「周りの人がやっていること」が正しいとは思えない。
 処理を切り出していないから1000行もある巨大なメソッドになっていて、
 汚いコメントで汚しながら機能追加しまくっているんじゃないのかと。
 ローカル変数を使いまくりの同じ処理を何回も実行するのに
 他に良い手段があるとしたら皆さんに教えて頂きたい。

771 :デフォルトの名無しさん:2017/12/24(日) 13:24:11.47 ID:d+M5RyEv.net
汎用的でない50行のコードをコピペしてるんなら関数化してもインライン化してもどっちもどっちだな
DRYを意識したのかもしれんがKISSが抜けてる
それにブラックボックスが許されるのは有名なライブラリやフレームワークのようなテストにテストを重ね、かつ多くの利用者による実績があるものだけだよ
社内コードなんて大概クソコードだしブラックボックスにしても後で痛い目を見るのは自分や他の開発者
何なら単に今把握するだけじゃなくて、未来の自分や開発者のためにわかりにくいところをコメントで説明書きしてもいいくらいだ

あと関数内関数より無名関数を変数に代入した方がいいんじゃね
そもそも新規追加したif文も詳細はわからないがデータよりもロジックに寄っててわかりにくそうな匂いがプンプンする

それに上司には理由を聞かれてるんだから同じローカル変数に別の値を入れて使い回すことの危険性、関数化による参照透明の確保や保守性、メンテナンス性の向上を論理的に答えればいいだけ

772 :デフォルトの名無しさん:2017/12/24(日) 13:31:29.00 ID:ZUclbhk1.net
>>770
レビュアーが言ってることを正しいと仮定すれば
・1つ目の指摘は既存のコードがカプセル化されてないからだ
・2つ目の指摘はリファクタリングするだけの時間やお金や技術がないからだ
という前提が必要になるから、まあそういうことなんじゃなかろうかと

残念なコードっていうのはあるからね
それを修正する費用と修正して得られる効果を比較対照して
これだけの効果があるんだからこうするべきだと提案をまとめて
説得するのがいいのだろうけど、技術に理解のある人がいないとなかなか難しいね

レビュアーの立場で考えると以下の作業があるんじゃないかと
・改修要件を満たす改修
・既存のコードをカプセル化する
・リファクタリングする

レビュアーは既存のコードとの一貫性を維持しつつ
改修要件を満たす最小の改修をやって欲しいのだろうね

たとえ汚らしいコードであってもいままで動いてきた実績があると
変更に対しては既存のコードをできるだけ変えないようにと保守的になるものだよ

レビュアーがそれをきちんと説明できればいんだけど
コードはクソ、レビュアーもクソなんてことはザラにあるんですよこれが

773 :デフォルトの名無しさん:2017/12/24(日) 13:35:53.06 ID:croU9pw3.net
>>771 なるほど勉強になります。
少し質問したいが、
・「KISSが抜けている」と言うのはどこらへんでしょうか?
・関数内関数と無名関数の変数化の違いがわからないので教えてください。
 (面倒なら調べます。)
・あなたならどう対応する?
・「理由を聞かれてるんだから答えればいいだけ。」
 →多分論理的に説明したら「じゃあもう何も教えないよ。好きにやって」
  が返って来ると思われる。
  そう言われると、必要な情報も来なくなるし聞けなくなる。

774 :デフォルトの名無しさん:2017/12/24(日) 13:38:47.27 ID:croU9pw3.net
>>772
なるほど、俺自身が「既存コードのカプセル化」と
「改修要件」という概念と「改修要件を最小に満たす」という
ことについて詳しくないことに問題がありそうだね。
ありがとう、ここらへんをキーワードにして調べてみます。

775 :デフォルトの名無しさん:2017/12/24(日) 13:55:23.50 ID:d+M5RyEv.net
>>773
多分もっと細かく汎用的な(publicにできる)関数の集まりに分解して、汎用的でない部分は最小限に出来るんじゃないかなーって思った
実際のコード見てないから予想だけど

関数内関数だとわざわざprivateかけないと外からアクセス出来ちゃうし、元の親関数抜けても子関数が死なない

そもそも上司とあんまり仲良くないの?
論理的にメリットを売り込んだときに感情論で否定されるくらいの関係性だと下っ端プログラマーはしんどいよ?
まぁ俺ならその段階なら折れて普通にコピペして、もっと実績残して仲良くなってから似たような案件のときに改めて売り込むかな

776 :デフォルトの名無しさん:2017/12/24(日) 16:09:59.00 ID:RfRGBvGh.net
ひとつのメソッドに1000行も書かせる会社はまず危ない

アルゴリズムとかそれ以前

777 :デフォルトの名無しさん:2017/12/24(日) 16:57:23.08 ID:croU9pw3.net
>>775
なるほど、「まるまる関数化」というのが
ちゃんと機能を意識してカプセル化していないってことか。
一応privateは欠けているけど、関数オブジェクトと
関数定義の違いはあまり詳しくないね。そうか、親関数が抜けたとき
子関数が死ぬか否かの違いがあるわけね。
入りたてだから人間関係はいいも悪いもない。
ただ、本来責任ある人はバタバタしていて、経験ある人が自分の意志で
新人のレビューをバラバラに行っている感じ。

>>776
会社がそうさせているというよりはそれぞれの人員が
これまでの追加の仕方を真似て機能追加した結果メソッドがブクブクと太っている
という状況に見える。
メソッド内で各追加機能がコメントで区画されていてそれなら
別関数にすりゃいいのにって思っている。
俺をレビューした人も、別に会社の工程でそうなっているわけでなく、
進捗を見たかったからだと思うが、書き直しを要求してきて困惑している。
ただ彼は業務要件については圧倒的に俺より詳しいから無視すべきではないと
思っている。

778 :デフォルトの名無しさん:2017/12/24(日) 17:21:20.21 ID:d+M5RyEv.net
>>777
カプセル化はオブジェクト指向において関連するものをまとめる作業だから、ちょっと違うかな?
どちらかというと今回の話は関数型プログラミングの考え方に近い
まぁぶっちゃけ職場のコードなんて割り切らんとやってけんよ
出世してコーディングスタイルに口を出せるようになる日を待つしかない

779 :デフォルトの名無しさん:2017/12/24(日) 18:02:16.50 ID:ZlmBMffH.net
>>777
そんな仕事を放置する会社、と言うことだ

780 :デフォルトの名無しさん:2017/12/26(火) 20:02:37.53 ID:IVX+3dWv.net
名前だらけのコードってどうやって解読すればいいんだ?
変数化するとそのデータの型が何なのか物量的にどれだけの
規模が格納されているかが見えない。
もちろんログに吐けば見えるが、吐き出さなければパッと見で
何をどう処理しているのか分からない。

781 :デフォルトの名無しさん:2017/12/26(火) 22:58:59.01 ID:SjDDNmHA.net
俺は君の話が見えない

782 :デフォルトの名無しさん:2017/12/27(水) 07:26:44.87 ID:uxDwhrz8.net
関数型言語の仕様書ってUMLで良いの?

データと振る舞い分離してるからクラス図使って良いのかなと

783 :デフォルトの名無しさん:2017/12/27(水) 08:35:11.41 ID:F/9ZaRBN.net
>>782
ちょうど stackoverflow に同じトピックがありました。
参考にしてください。
https://stackoverflow.com/questions/2457903/can-uml-be-used-to-model-a-functional-program

784 :デフォルトの名無しさん:2017/12/28(木) 07:02:18.99 ID:THqyhi+6.net
>>783
英語敷居たけえ

まあデータと振る舞いを書いたクラス設計は関数型言語でも同じように使えるし問題ないか

785 :デフォルトの名無しさん:2018/01/10(水) 18:14:12.30 ID:hBlQ00sP.net
http://coursera.cs.princeton.edu/algs4/assignments/8puzzle.html

↑この問題分かる人いますか?

786 :デフォルトの名無しさん:2018/01/10(水) 18:27:49.76 ID:1dOsaXCv.net
粗探しは止めたのか?

787 :デフォルトの名無しさん:2018/02/03(土) 08:08:45.43 .net
今どきデザインパターンって死語なの?
ちょっと参照したいことがあって書店でデザインパターンの本を探したけど見つからなかった。
リファクタリングの本はあって多少はデザインパターンの話も出てきたけど。
結局は家に帰ってから10年前に買ったデザインパターンの本を参照するしかなかった。

788 :デフォルトの名無しさん:2018/02/03(土) 08:51:29.86 ID:KIp4GWtx.net
ブームが去っただけかな?
銀の弾丸などないと気がついただけ

789 :デフォルトの名無しさん:2018/02/03(土) 09:20:07.32 ID:i7L7gFeB.net
今更デザインパターンについて新しい本なんて不要

790 :デフォルトの名無しさん:2018/02/03(土) 12:22:10.78 ID:ROxRBp/z.net
デザパタは元々バカの為にまとめられたものだったけどバカには無理だった代物
一方リファクタリングはバカ程好むからなかなか廃れない

791 :デフォルトの名無しさん:2018/02/03(土) 19:53:28.27 ID:4eWkMwg8.net
21世紀最新のデザインパターン本て誰か書かないかね
Singleton→大抵はstaticでOK
みたいなの

792 :デフォルトの名無しさん:2018/02/03(土) 20:04:20.16 ID:gMMiWrqd.net
>>791
それ以外に何か書くことあんのか?

793 :デフォルトの名無しさん:2018/02/04(日) 00:33:23.10 ID:P/Ibpspu.net
デザインパターンて結局何だったんだ?
高い本まで買ったがほとんど身に付かなかったな

794 : :2018/02/04(日) 00:43:54.12 ID:p5zvJFKF.net
>>793
もともと C++ 界隈で発生したテーマですので、C++ をやっているとデザパタの意義がよくわかります
C++ は細かしいことまで自分で記述しなければならないので、こういう大枠思考がもてはやされたのだと思います

795 : :2018/02/04(日) 00:44:42.44 ID:p5zvJFKF.net
ああ、でも C++ はテンプレートの世界観に移行してしまったので、デザパタ、今はあんまり使いません!

796 :デフォルトの名無しさん:2018/02/25(日) 14:54:54.10 ID:LHXgrTbX.net
>>793
アルゴリズムの話するときの共通語が必要になって
ついでに良し悪しもまとめておこうという話になった

797 :デフォルトの名無しさん:2018/02/25(日) 16:52:44.22 ID:bfs3ZT86.net
アルゴリズムとパターンて違うんじゃね?

798 :デフォルトの名無しさん:2018/02/25(日) 18:39:48.45 ID:hAg+nb3o.net
デザインパターンそこに至る考え方を身につけないと
というわけで、オブジェクト指向のこころをオススメしとく

799 :デフォルトの名無しさん:2018/02/25(日) 18:59:31.93 ID:z/Jlakx1.net
>>798
書評読んでもなかなかよさげだな

800 :デフォルトの名無しさん:2018/03/05(月) 21:38:39.67 ID:aiLdZy6r.net
『アルゴリズムイントロダクション』を読んでいます。

ヒープソートのところに、

「サイズ n のヒープ上の MAX-HEAPIFY の最悪実行時間が Ω(lg n) であることを示せ。」

という問題があります。

最悪実行時間が Θ(lg n) であることはすぐに分かります。
なぜ、 Ω(lg n) であることを示せという問題なのでしょうか?

最悪実行時間や最良実行時間については、 Θ 記法で書くのが自然だと思います。

801 :デフォルトの名無しさん:2018/03/06(火) 01:54:34.90 ID:bDrXTt4P.net
まるちんこ

802 :デフォルトの名無しさん:2018/03/07(水) 21:29:45.52 ID:ukyKg6LA.net
セジウィックさんはいい加減ですね。

近代科学社から出ている『アルゴリズムC』の最小全域木のところを読んでいますが、
同じ重みの辺が2つ以上あると議論が破綻するところがありますね。

Wayneさんと共著の『Algorithms』では、すべての重みが異なるという仮定をおいていますね。

いずれにしてもひどい本です。

803 :デフォルトの名無しさん:2018/03/07(水) 21:31:54.51 ID:MzP8rhu8.net
キミはまだアルゴリズムの勉強していたのか。

人には向き不向きというのがあってだな。

804 :デフォルトの名無しさん:2018/03/07(水) 21:33:49.91 ID:ukyKg6LA.net
すべての重みが異なるというのは異常な仮定ですよね。

805 :デフォルトの名無しさん:2018/03/07(水) 22:27:03.62 ID:ukyKg6LA.net
茨木俊秀著『アルゴリズムとデータ構造』を読んでいます。

この本のクラスカルのアルゴリズムの正しさの証明に使われる補題の証明ですが、
読んでも分からなかったのですが、やはりおかしかったんですね。

同じ著者の『Cによるアルゴリズムとデータ構造』を読むと補題の証明が修正されています。

この分野っていい加減な本が多いですよね。

806 :デフォルトの名無しさん:2018/03/08(木) 19:38:26.94 ID:NHHLXFak.net
任意の連結無向グラフ G = (V, E) は |E| ≧ |V| - 1 を満たすことを示せ。

807 :デフォルトの名無しさん:2018/05/12(土) 10:59:28.10 ID:pDgCeBjY.net
共同ツール 1
https://seleck.cc/685

https://trello.com/
ボードのメニュー → Power-Upsから拡張可能 Slack DropBoxなど
Trello Chrome拡張機能 elegant
ttp://www.kikakulabo.com/service-eft/
trelloのオープンソースあり

共同ツール 2
https://www.google.com/intl/ja_jp/sheets/about/

共同ツール 3
https://slack.com/intl/ja-jp
https://www.dropbox.com/ja/
https://bitbucket.org/
https://ja.atlassian.com/software/sourcetree
https://sketchapp.com/extensions/plugins/
ttp://photoshopvip.net/103903

ttps://goodpatch.com/blog/sketch-plugins/

808 :デフォルトの名無しさん:2018/05/23(水) 20:11:35.70 ID:Au5e7VGg.net
僕の知り合いの知り合いができたパソコン一台でお金持ちになれるやり方
役に立つかもしれません
グーグルで検索するといいかも『ネットで稼ぐ方法 モニアレフヌノ』

BU06O

809 :デフォルトの名無しさん:2018/06/24(日) 11:32:17.25 ID:cbD8du/l.net
AVL木について詳しく載っている本は何ですか?

810 :デフォルトの名無しさん:2018/06/24(日) 14:42:02.78 ID:/GtGgmfo.net
詳しいと言えるかどうかは別にしてAVL木に関する説明が分かりやすいと思ったのは次の本の該当箇所(§6.3)だ

浅野哲夫『データ構造』、アルゴリズムシリーズ1、近代科学社 (1992)

811 :デフォルトの名無しさん:2018/06/24(日) 15:07:06.81 ID:F1zD07yq.net
ステマ

812 :デフォルトの名無しさん:2018/07/04(水) 22:09:33.44 ID:gFgZc5FG.net
C5O

813 :デフォルトの名無しさん:2018/07/05(木) 16:33:38.42 ID:AeL6VB/V.net
C5O

814 :デフォルトの名無しさん:2018/07/21(土) 20:42:50.98 ID:4Q935nRZ.net
1つ言えるのはオブジェクト指向のなんかよりも
データ構造とアルゴリズムの方がよっぽど重要だということ。
昔はオブジェクト指向の勉強を頑張っていたけどそのときは
全然プログラミングがうまくならなかった。
現代の世の中はガチガチに設計されたライブラリを使って
コードを書くだけだから生半可なオブジェクト指向の知識なんて
ゴミ同然だよ。80年代90年代に考えられた思想とか、もうゴミに
なってしまった思想が多くて有害だよ。
結局現場でやることは「メソッドの使い方を求めてQiitaやStack OverFlowを
漁って成功するコードを見つけるまで疲れ果てる」ことに変わりはない。
せっかく勉強した内容が時代遅れで「裏切られる」ことのほうが多い。

815 :デフォルトの名無しさん:2018/07/21(土) 20:51:29.70 ID:4Q935nRZ.net
一方、データ構造とアルゴリズムをガッツリと勉強してから
様々なデータ構造の使い方、問題の解決がうまくなった。
ブロックチェーンのアルゴリズムの理解や
データ分析の数学的演算がコーディング
できるようになってプログラミングが格段に楽しくなった。
スマートにオブジェクト指向で設計する力なんかより
「ゴリゴリとアルゴリズムを書く力」の方がよっぽど重要。
「再利用性」?「変更の影響」だって?そんなものゴミだね。
それは自分以外の人間のメリットのための技術であって、
自分へ還元されるためのメリットではない。
再利用性は自分の書いたコードなら信頼できるしコピペして使えばいい。
自分の書いたコードのコピペは全然ありだと思う。
適したメソッドが見つからなかったらQiitaを漁ったりせずに
自分でゼロから実装したほうが速い。
その場で手っ取り早くコードを生成しているから、
どんな既存コードにも頼っていないから俺の実装したコードは
依存性は低い。

816 :デフォルトの名無しさん:2018/07/21(土) 21:29:45.12 ID:BkDv2dG7.net
ただし>>814-815は何かのアプリを作ったことはない

817 : :2018/07/21(土) 21:58:56.02 ID:vWALYQin.net
>>815
一つ重要な視点を提供しましょうか
自分の記憶などあてになりません、3ヶ月前自分が書いたコードは、もはや他人が書いたコードとなんら変わりありません

818 :デフォルトの名無しさん:2018/07/21(土) 22:06:10.19 ID:BkDv2dG7.net
>>814-815はすでに解いたことのある問題なら
忘れたとしても、少し時間をかければ解けると考えている

つまり誰かが出した出題を解くという作業をしている

819 :デフォルトの名無しさん:2018/07/21(土) 22:34:33.64 ID:4Q935nRZ.net
>>>817, 818
自分のいつも使うアルゴリズムのパターンが身についていれば
そのパターンや命名規則から何をやっているかは解読できる。
読みにくくなるのは外部から取り込んだ機能の実行や
継承している部分。

820 :デフォルトの名無しさん:2018/07/21(土) 23:12:43.54 ID:BkDv2dG7.net
>>819
やっぱり「解読」してるんだw

すでに証明済みの問題を自分の力で証明するという
お勉強をやってるだけだね

821 :デフォルトの名無しさん:2018/07/21(土) 23:21:07.94 ID:evbWgLmC.net
研究者で無い限り新しい証明考える必要ないっしょ

822 :デフォルトの名無しさん:2018/07/21(土) 23:22:28.87 ID:evbWgLmC.net
解読の工程は業務でも必要であるし
遊びとしても面白い
それが勉強になるならとても有益じゃん

823 :デフォルトの名無しさん:2018/07/21(土) 23:34:47.51 ID:4Q935nRZ.net
「車輪」は大きさ、材質、シャフトの接合部の形、色…大まかな形や役割は似ているが微妙に違うものが無数にある。
ちょっとでもこれらの特徴がずれたものは他への転用を考えるとすぐに不具合となって使い物にならない。
車輪を最初に「発明」した人物はこれらの無数の車輪を全て発明したわけではない。
だから他の人が死ぬほど似たようなものを作っていたとしても自分で作る必要がある。
他人が作った車輪は無条件で役にたつわけがない、
手直しして組み込むより「自分の規格で」作った方が早い。

824 :デフォルトの名無しさん:2018/07/21(土) 23:43:56.82 ID:s1Wh2Ul8.net
車輪ってすごいな

825 :デフォルトの名無しさん:2018/07/22(日) 00:34:31.50 ID:J1Nh86LO.net
車輪が小さかったからゴム巻いたらなんとかなった
これがオブジェクト指向です

826 :デフォルトの名無しさん:2018/07/22(日) 02:15:34.77 ID:+JtpRhMz.net
時代が違うからな。アルゴリズム考えてうんうん唸る時代は終わってるんだよ
今はそういうアルゴリズムが実装されたライブラリを組み合わせて
アプリを作る時代だってMITも言ってる

MIT「今は基礎よりライブラリ組み合わせてアプリ作る時代」 [無断転載禁止]©2ch.net
https://medaka.5ch.net/test/read.cgi/prog/1462443213/





MITがSICPを教えなくなった理由
http://cpplover.blogspot.jp/2016/05/mitsicp.html

今日では、状況が変わっている。

今のエンジニアは、自分が完全に理解していない複雑なハードウェアのための
コードを日常的に書いている(そして、大抵の場合、企業秘密により完全に理解するのは不可能である)。

ソフトウェアでも状況は同じだ。プログラミング環境は、多大な機能を提供する
巨大なライブラリ群の集合として存在している。

Sussmanの今日の生徒は、その時間の大半を、ライブラリのマニュアルを読み、
どのように組み合わせれば目的が達成できるのかを把握することに費やしている。

Sussman曰く、今日のプログラミングは、「より科学に近い。ライブラリを持ち寄って、
つっつき回すのだ。プログラムを書くには、突っつき回して、どのように動作するかを観察する。
そして、「目的を達成するために改造できるか」と考えるのだ」。

SICPの「合成による解析」という物の見方である、小さな、単純な部品を組み合わせて大きなシステムを作るということは、
もはや今日の状況にそぐわなくなった。今や、我々のプログラミングはつっつき回すことで行われている。

827 :デフォルトの名無しさん:2018/07/22(日) 06:06:47.04 ID:woAlzZC1.net
車輪の再利用だけ考えて車輪職人が居なくなるって話かな?

828 :デフォルトの名無しさん:2018/07/22(日) 06:11:43.36 ID:+JtpRhMz.net
そうだね。そもそもソフトウェアは他の製品と違って
完全に同じものを複製するのに技術がいらないからね
コピーすればいいだけだし。

その点、何かを作る職人とはぜんぜん違うよね
そいういう寸分違わないものを作り出す職人は不要な業界

829 :デフォルトの名無しさん:2018/07/22(日) 09:02:23.96 ID:XlZUepQP.net
>>825
そして、今は鉄道以外のほぼすべてのタイヤの接地面はゴムです。
そういうところもオブジェクト指向と、似てますね。

830 :デフォルトの名無しさん:2018/07/22(日) 09:20:35.56 ID:hOelEibu.net
以上、内容無し

831 :デフォルトの名無しさん:2018/07/22(日) 13:32:55.77 ID:snsF+l1o.net
>>826
この論理は完全にお花畑。
完全無欠のライブラリがありそれが唯一無二なら
つつっつき回すだけでいいだろうさ。
だけど現実はほぼ似たような機能で構文が違う、
それに加え実行環境もバージョンも違うライブラリたちが乱立してるんだぜ、
それに加わりローカルで作られた野良ライブラリがある。
当然人によってそれらの使い方の認識に齟齬が生まれる。
信用できるのは、自身の即興のデータ構造定義能力と、
アルゴリズム構築能力だけだ。

832 :デフォルトの名無しさん:2018/07/22(日) 13:34:08.83 ID:LiIRy0eu.net
今必要なのは解読ではなくて解脱

833 :デフォルトの名無しさん:2018/07/22(日) 14:02:08.11 ID:+JtpRhMz.net
>>831
> だけど現実はほぼ似たような機能で構文が違う、
> それに加え実行環境もバージョンも違うライブラリたちが乱立してるんだぜ、

乱立しているからなんだっていうんだろう?
乱立してるから自分で作れってことにはならないよな?
何が言いたいんだろう

> それに加わりローカルで作られた野良ライブラリがある。

自分自身で作成したもの = 他人から見れば野良ライブラリだからね
野良ライブラリは作るべきじゃないね

だから乱立されている中のどれかを使うってことになるわけだけど
そういう結論を言いたかったんだよね?

834 :デフォルトの名無しさん:2018/07/22(日) 14:02:42.93 ID:YGqHpPTt.net
>>831
データ構造作るだけだと付加価値が低いというか
ただの作業員でしかなくない?
新しい仮想通貨作るとかだったらすごいけど

835 :デフォルトの名無しさん:2018/07/22(日) 14:06:57.17 ID:+JtpRhMz.net
まあ言えるのは、データ構造やアルゴリズムを作るだけの仕事なんて無いってことだな

やりたいからといって、それで金がもらえるわけじゃない
金を出す方がやってもらいたいことをやって金が出る

似たようなものを自作して、乱立させたって
そんなものに金を出す人はいない

836 :デフォルトの名無しさん:2018/07/22(日) 14:18:22.79 ID:LiIRy0eu.net
>>835
うむ

>>834
やったことないやつには判らんよ

837 :デフォルトの名無しさん:2018/07/22(日) 14:24:06.48 ID:t9f4aq96.net
座禅だな

838 :デフォルトの名無しさん:2018/07/22(日) 17:42:32.79 ID:bmpyz9fo.net
>>827
いや、ちょっと違う
プログラマという職業が、車輪を一から設計できる職人群と
それを再利用する専門家へと二極化していくというお話だよ

この二極化は以前から言われていたことだけど、
それを天下のMITが言い切って行動に移したことに>>826の意義がある

839 : :2018/07/22(日) 18:20:24.01 ID:+jM3tBOE.net
>>838
「職人」と「専門家」が逆ではないですか?

840 :デフォルトの名無しさん:2018/07/22(日) 19:59:44.17 ID:bmpyz9fo.net
いや、逆ではないよ

MITは計算機工学に特化しているわけでもなく、
機械工学、ロボティクス、生産工学、データ解析といった
あらゆる工学分野の専門家を養成し輩出している

そういった(計算機工学を除く)大半の「専門家」の卵達にとって、
優先すべきは(旧コースでSchemを使って学んでいた)計算機の動作原理ではなく、
計算機の利用方法である、という趣旨
彼ら「専門家」は決して計算機工学の専門家ではないが、
それぞれの分野に特化した高度な専門技術を有し、
与えられた問題を解決する道具として計算機を効果的に活用できる

841 :デフォルトの名無しさん:2018/07/22(日) 20:38:21.89 ID:woAlzZC1.net
役割が細分化したからそのニーズに応じたという話?

842 :デフォルトの名無しさん:2018/07/22(日) 21:07:14.12 ID:+JtpRhMz.net
どんな仕事でも、その道の研究者ってのはいるだろう。
例えば数学者とかな。だけど世の中で必要とされてるのは
塾の数学の先生だったりするわけさ

もっとも大学に行った人の殆どは、大学で専攻していたものとは
関係のない仕事をしているわけだけどな

843 :デフォルトの名無しさん:2018/07/22(日) 21:23:40.76 ID:MHyGLJ0L.net
数学とコンピュータを一緒にするなよw

844 :デフォルトの名無しさん:2018/07/22(日) 23:03:00.98 ID:snsF+l1o.net
たとえばjsでオブジェクト構造をサーバに送りたいとする。
たったこれだけのことなのに邪魔くさい余計な機能が多すぎる。
わざわざ専用のクラスからインスタンス作って
専用の構文使ったりhttpヘッダー設定したりだ。
それでいてサーバ側では糞みたいな細かい仕様認識の違いでリクエストの内容が空だったりする。
サーバ側のコンフィグ見直したりjs側のコード見直したりするわけだ。
ログからライブラリのコード追っていくと大抵
過剰に技法使われてるから自ずと疑うべき探索
範囲は広くなる。
書き方はjQueryベースやangular typescriptなんかが混在してきて文法のちょっとした勘違いなんてのも生まれてくる。
だったらそんなライブラリ鼻っから信用しなけりゃいい。
ライブラリのインスタンスを介さずに多少原始的だが
文字列、数値 for文if文だけで大抵の問題は解決できる。
自力でJSON文字列に情報をぶち込んで送信してやれば、必ずサーバ側で取得できる。
サーバ側も下手なライブラリにパースさせないで自力でパースした方が慣れれば断然こちらの方が早い。
自力で作ったアルゴリズムは信用できるから
関数化しておいてまた似たような問題があったときに
使える。
俺が使うための自作ツールは他人は使わなくていいよ、どうせ価値観が違うんだからな。
自分で作ったもの以外はそりゃ不便だろうよ。

845 :デフォルトの名無しさん:2018/07/22(日) 23:31:00.85 ID:8Bgo+1zG.net
> たとえばjsでオブジェクト構造をサーバに送りたいとする。

https://api.jquery.com/jquery.post/

$.post( "test.php", { name: "John", time: "2pm" } );

こうだね。で?

846 :デフォルトの名無しさん:2018/07/22(日) 23:37:38.62 ID:zgYMpfBL.net
それjqueryやんw

847 :デフォルトの名無しさん:2018/07/22(日) 23:58:50.05 ID:8Bgo+1zG.net
はい。このように他人の成果を利用して
目的を達成するのが今は重要って話です。

848 :デフォルトの名無しさん:2018/07/23(月) 00:05:17.20 ID:jaGQY9G3.net
>>844
> だったらそんなライブラリ鼻っから信用しなけりゃいい。

とりあえずお前が自力で作ったライブラリは
鼻っから信用しててないよ

849 :デフォルトの名無しさん:2018/07/23(月) 00:19:04.74 ID:jaGQY9G3.net
>>844
> 俺が使うための自作ツールは他人は使わなくていいよ、どうせ価値観が違うんだからな。
> 自分で作ったもの以外はそりゃ不便だろうよ。

価値観の問題じゃない。単にお前が作ったコードに
バグがあるから使えないだけ。使わないんじゃない。使えない。

反論するならバグがない証拠を出すこと
テストコードをかけという話ね。


> だったらそんなライブラリ鼻っから信用しなけりゃいい。
お前が書いたコードは鼻っから信用できない。するしないじゃない。できない。

850 :デフォルトの名無しさん:2018/07/23(月) 06:43:27.98 ID:LtlhEJ9n.net
みなさんお気づきだろうか
>>844>>849は同じことを言っている

851 :デフォルトの名無しさん:2018/07/23(月) 07:32:08.19 ID:LtlhEJ9n.net
jQueryはブラウザの差異を吸収するからね
同等のもの作ろうとしたら大変だよ

自前のコードを実装するのが汎用ライブラリを使うよりも早いとするなら
自前のコードは汎用ライブラリよりも機能が少ないものになる

要件がシンプルなら自作するのは効率が良いかもしれないね

システムをユーザのニーズに合わせてたら要件が複雑になり自作するメリットが得られない
ユーザがシステムの都合を忖度するならうまくいく
開発者にとっては桃源郷

開発者の幸せか、ユーザの幸せか
ぼくらはその選択を迫られてるんだ

852 :デフォルトの名無しさん:2018/07/23(月) 09:47:19.69 ID:nk4BkCBO.net
役所が作る神エクセルなんてのはユーザがシステムの都合に合わせてる典型例じゃないか、自作コードに拘るのは神エクセルを作るのと変わらぬよ

853 :デフォルトの名無しさん:2018/07/23(月) 11:01:38.63 ID:eU1p7hr8.net
>>842
自己紹介ですね

854 :デフォルトの名無しさん:2018/07/23(月) 12:24:24.98 ID:jaGQY9G3.net
>>851
> 要件がシンプルなら自作するのは効率が良いかもしれないね
それは正しくない。要件はシンプルでも実装が大変なことがある。
そもそも「ライブラリの一機能の独自実装」などという要件は
実際には発生しない。これらは単に道具

要件を実装するのに、道具を使うか使わないかの問題
シンプルな要件でも、道具は使ったほうが効率は良いよ

もちろん道具を使えない人であれば、道具を使えるようになるまで時間が
かかるけど、それは素人がプロに速度でかなわないという人間の問題にすぎない
そう道具を使えないなら素人なんだよ。

855 :デフォルトの名無しさん:2018/07/23(月) 12:29:27.63 ID:aoV6LMU9.net
>>850
ヒント:バカは皆がオンリーワン

856 :デフォルトの名無しさん:2018/07/23(月) 12:36:13.41 ID:jaGQY9G3.net
>>850
同じことは言ってないな

>>844はよくわからないのはライブラリのせいだ
自分で作れば、そのライブラリよりもわかりやすくなるはずだ
って机上の空論を言ってるだけ

857 :デフォルトの名無しさん:2018/07/23(月) 13:54:17.34 ID:wSAPNw7p.net
PGの愚痴

858 :デフォルトの名無しさん:2018/07/23(月) 15:02:52.51 ID:EWSlu15m.net
りんごをむくのにピーラーを使うのもいいが、一度ナイフで剥くのを試すのも重要だし、かじってみるのもいい。
道具が解決する問題がなんなのか、体験することは、多くの人にとって有益だと思う(経験主義者)

859 :デフォルトの名無しさん:2018/07/23(月) 15:32:18.18 ID:1W7qAEKf.net
そこでピーラーを作るのは大変だとか見当違いの所に流れていくやつがいる。

ピーラー(ライブラリ)を使うか、ナイフを使うかだ

ライブラリ?中見たけどわけのわからないことをしてる
理解できない。ナイフのほうが単純だ。ナイフなら作れる。
なぜか作る話になってしまっている。

860 :デフォルトの名無しさん:2018/07/23(月) 15:38:29.17 ID:nk4BkCBO.net
例え話では本質から遠ざかるばかりよ

861 :デフォルトの名無しさん:2018/07/23(月) 15:39:54.99 ID:nk4BkCBO.net
例え話は物事を理解してなくてもそれらしく見せるから知ったか振りが捗りますなあ

862 :デフォルトの名無しさん:2018/07/23(月) 15:41:15.55 ID:nk4BkCBO.net
ワシも神エクセルとか言ってた

863 :デフォルトの名無しさん:2018/07/24(火) 18:13:24.95 ID:Ce588Hp1.net
全部やれ

864 :デフォルトの名無しさん:2018/07/24(火) 18:20:36.91 ID:WBO96fmU.net
最後までやれ

865 :デフォルトの名無しさん:2018/07/24(火) 20:40:39.40 ID:6SRwrowy.net
例えがドラゴンボールではないからだろ

866 :デフォルトの名無しさん:2018/07/27(金) 22:10:24.05 ID:jesqHVAc.net
MVC, DAO, O/Rマッピングの発展形として、
俺は「R/Rマッピング(リクエスト/リレーショナルマッピング)」を
提唱したい。
そもそもDB上のカラムと本当に対応付けたいのは画面上のname属性
なんだよなぁ。
オブジェクトを必ず介する必要はない。
(処理が込み入ってきたら定義してもいい程度。)
まず前提として、DBのカラム名とHTML上のname属性を
必ず同じキーにすることを前提とする。(HTML上に関係ない
キーがあっても問題はない。)
その前提の上でDBのカラム名一覧を先に取得しておき、
カラム名リストと、受信したname属性のキーをマッチングして、
マッチングした時にそのキーから取得した値をSQLに突っ込んで
クエリを行う。
こうすることによって、プログラミング言語処理の中で
具体的な「項目名」をほとんど登場させずに処理することができる。
自分でやったらすごく便利だった。
こうなるとそもそもモデルとかDAOとかいらなくね?
ってなって来たよ。
項目数がどんなに二十, 三十と並んでいようがダラダラと羅列しない。
特別な処理を入れたいときだけその項目のカラム名を使って
ifで分岐して日付変換とかをおこなう。
その特別な処理も日付,範囲系、選択肢系などパターンを押さえれば、
めちゃめちゃ簡素化できる。

867 :デフォルトの名無しさん:2018/07/27(金) 22:35:03.11 ID:d6sXPNYF.net
あ、はい、4行ぐらいしか読んでないけど、
そのリクエストに含まれる名前 = オブジェクトのフィールド名なんだから
あんたが言ってるリクエスト = オブジェクトってこと

あとはストレージをなんにするかの話。
ODBMS(オブジェクトデータベース)を使えばそのまま読み書きできる
だけど、なんやかんやでリレーショナルデータベースを使わないといかんから
O/Rマッピングが必要になる

868 :デフォルトの名無しさん:2018/07/27(金) 22:38:45.06 ID:d6sXPNYF.net
>>886
あとRailsでも勉強しようね
普通は画面のname属性 = データーベースのフィールド名になってるから
(もちろん必要なら対応してないものも作れるけど)

869 :デフォルトの名無しさん:2018/07/27(金) 22:58:52.80 ID:HpMLTKup.net
二層CRUDオモチャ
昔から誰もが一回は考えるアイデアだよ

画面起点だとどうしてもアプリケーションロジックの居場所がないから簡単に作れてもアプリとしての価値が無い
DB起点だとSQLにアプリケーションロジックを埋め込んんで最低限のアプリの体裁は保てるけど保守性が最悪で使い物にならない
という理由から廃れた

なので今はオブジェクト指向の言語でモデルを書いてモデルから画面やDBを生成して微調整しようってのがスタンダード
これなら労力をかけずに豊かな振る舞いを持つアプリケーションを作れるしロジックがモデルに集まるから保守性も高い

870 :デフォルトの名無しさん:2018/07/27(金) 23:43:33.59 ID:jesqHVAc.net
>>869
モデルを作るとしても処理が複雑になる部分だけ
部分的でいいんじゃないか?
全ての要素に対して網羅的にモデルつくって
セッター/ゲッター定義して...ってのは肥大化して馬鹿げてる
気がするんだが。
なにせ機能を複製する時にこれらのずらずら並んだモデルオブジェクト名や
キーの名前をを置換しなけりゃならない。
ならない。

871 :デフォルトの名無しさん:2018/07/27(金) 23:51:45.25 ID:d6sXPNYF.net
> セッター/ゲッター定義して...ってのは肥大化して馬鹿げてる
それはJavaだけ
Javaが馬鹿げているだけ

872 :デフォルトの名無しさん:2018/07/27(金) 23:52:00.90 ID:d6sXPNYF.net
だからいい加減Railsとかを勉強しろと

873 :デフォルトの名無しさん:2018/07/27(金) 23:55:06.84 ID:h+bQHJad.net
.NET Coreにしとけ

874 :デフォルトの名無しさん:2018/07/28(土) 02:15:45.58 ID:kGN2HSKI.net
>>859
さてリンゴをむくか、
ピーラーがないと剥けないから探すか、
あれ、どこにしまったかな?
この引き出しにもこの棚にもない。
道具だらけで見つからない。
店に買いに行こう、たくさんのピーラーが並
んでいてどれを選ぼうか?
ようやく買ってきて構築しているけど、
どうや刃が付け替え式で色々な刃が付け替えられる
ようだ。
刃を買い忘れたからまた買いに行くか…
はぁはぁ…すごい刃を買ったぞ!今構築中だ。
おや?この刃はリンゴを剥く用途には対応して
ないようだ。もう疲れたしこれ無理だろ。
ピーラーが無いから俺にはリンゴを剥くのは
無理だ。前は引き出しにあったからむけたけど
今はできなくなった。

一方、いつも愛用のナイフで剥いてるならそう
はならない。
いつもポッケに入れているからなくさないし、
最悪自作で調達できる。
使い慣れてるからピーラー使うやつと遜色ないスピードで剥けるし形も綺麗に剥ける。

875 :デフォルトの名無しさん:2018/07/28(土) 02:38:56.80 ID:Wq9fNSFf.net
Rails なんか、全自動!

DB の表の構造が定義された、メタテーブルを参照して、
表の列名なども自動的に取得する

876 : :2018/07/28(土) 03:14:15.05 ID:AqK1vkX7.net
>>873
Windows 上で構築できますか?

877 :デフォルトの名無しさん:2018/07/28(土) 07:06:05.64 ID:rUA3L/4N.net
>>870
それでずらずら並んで嫌だというなら、おまえのやり方だと画面定義もずらずらならぶし、テーブル定義やSQLがずらずら並んで更にわけわからなくなるだろ

878 :デフォルトの名無しさん:2018/07/28(土) 09:41:18.41 ID:Z4XsBwkZ.net
>>876
できる

879 : :2018/08/11(土) 11:14:19.06 ID:vW2Ha+vq.net
>>878
やりかたは?

880 :デフォルトの名無しさん:2018/08/11(土) 11:16:30.51 ID:CORkkjHt.net
>>879
住民税納めてる?

881 :デフォルトの名無しさん:2018/08/11(土) 11:20:01.67 ID:mZzpchFU.net
>>879
https://www.microsoft.com/net/learn/get-started-with-dotnet-tutorial

882 : :2018/08/11(土) 11:23:26.77 ID:vW2Ha+vq.net
>>880
固定資産税なら5月に収めました

883 :デフォルトの名無しさん:2018/08/11(土) 13:12:12.75 ID:eIyvbe4d.net
>>882
固定資産もってるんだスゲー(笑)

884 :デフォルトの名無しさん:2018/08/16(木) 01:50:12.60 ID:c6C4Pdqe.net
最も重要ななのはアルゴリズムとデータ構造
次にI/O
つぎに無名関数やハンドラ、イベント駆動
つぎに並列、非同期処理
その次は画像処理とか3Dとか
ディジタル信号処理またいな各ドメインの専門
技術。
オブジェクトやクラスなんてこれらを達成する
上での手段でしかない。
それ以上のオブジェクト指向の設計思想は
もはや宗教。
唯一絶対に正しいわけでもないし
概念を余計に複雑にするだけ。
SQLやHTML XMLやJavaScript シェルスクリプト
URLなんかが絡んでくるとグダグダに崩壊
するものばかり。
そして現代のアプリケーションはこれら無しで
作るのは無理だからオブジェクト指向の高度な
技法はほどんど不要。

885 :デフォルトの名無しさん:2018/08/16(木) 10:35:20.66 ID:wiNukf+g.net
NoSQLω

886 :デフォルトの名無しさん:2018/08/16(木) 14:12:13.61 ID:sOMWRYDA.net
NoSQL db って、Redis以外はわりと滅びた感じ。
RDBでもスキーマレスなデータ扱えるようになったし、
トランザクションあった方が便利なことやっぱり多いし、
SQLってなんだかんだ言って表現力高いし。

887 :デフォルトの名無しさん:2018/08/16(木) 21:39:02.86 ID:xTRm/dST.net
pythonスレにも書いたのですが、pandasのMultiIndexにしたデータのままで、データを追加したり、値を更新したり、csvに入出力する方法をご存知の方はいませんか?

888 :デフォルトの名無しさん:2018/08/17(金) 05:33:12.57 ID:kMdEBKXA.net
マルチ

889 :デフォルトの名無しさん:2018/08/18(土) 16:47:45.36 ID:Misswrnn.net
マルチインデックスだけに

890 :デフォルトの名無しさん:2018/08/22(水) 13:56:25.55 ID:Opme7aq9.net
>>886
その辺はクラウドに吸収されたよ

891 :デフォルトの名無しさん:2018/08/22(水) 14:04:12.93 ID:85QcXChJ.net
クラウドだけに雲散霧消

892 :デフォルトの名無しさん:2018/08/26(日) 08:51:55.17 ID:rDVjwTPV.net
クラウドってなんだっけ?

893 :デフォルトの名無しさん:2018/08/26(日) 11:43:20.70 ID:oFGqb4Dq.net
興味ないね

894 :デフォルトの名無しさん:2018/08/26(日) 12:02:43.50 ID:Ecv/l33V.net
雲の中にトレーラーがいっぱいあること

895 :デフォルトの名無しさん:2018/08/29(水) 11:59:51.59 ID:t35BnR1i.net
>>893
チリチリしてろ

896 :デフォルトの名無しさん:2018/08/30(木) 11:36:30.01 ID:jf9m7XuW.net
AOJ の「DPL_1_I: Knapsack Problem with Limitations II」が分からん。

個数制限付きナップサック問題の
・ある品物の重さと個数制限
・ナップサック容量
が極めて大きいバージョン。


例えば解法
http://judge.u-aizu.ac.jp/onlinejudge/review.jsp?rid=2856557#1
を見ると、品物の価値の総和が i であるときの最大容量を記録した動的計画法テーブルを作った後に貪欲法で答えを出してるんだが
・なぜこの方法で上手くいくのか
・前半の動的計画法で、品物の個数を min(m[i], MAX_V) としている (できる) 理由が分からない。


誰か知恵を貸してください。
僕としてはこの解法が理解できれば満足です。

897 :デフォルトの名無しさん:2018/08/30(木) 16:30:03.75 ID:OpvYfh8N.net
>>896
数学からやり直したほうがいい

898 :デフォルトの名無しさん:2018/08/30(木) 16:38:34.35 ID:AAPeDezt.net
>>897
どういう意味?
「このアルゴリズムを理解するのに必要な数学の分野」というものがあるならそれを参照するが、そんなものはない (挙げられないでしょ?)

俺個人の専門は物理で、「数学の勉強」というものも一応してきたが、このごく具体的な問の一解法を理解することと「数学の勉強」は関係がない

単純に論理的思考力を上げよ、と言っているなら会話になっていないのでこれ以上は結構

899 :デフォルトの名無しさん:2018/08/30(木) 16:59:47.21 ID:rxoSSaq5.net
論理的思考力を上げるために将棋をしなさい。数学など不要です。

900 :デフォルトの名無しさん:2018/08/30(木) 18:00:22.07 ID:RB/Vojpj.net
うむ

901 :デフォルトの名無しさん:2018/08/30(木) 18:13:22.55 ID:OpvYfh8N.net
>>898
DPは数学的に求まるよ

902 :デフォルトの名無しさん:2018/08/30(木) 18:43:47.20 ID:nhWZJRvT.net
>>898
数学科の数学と物理科の数学とコンピュータの数学は違う(笑)

903 :デフォルトの名無しさん:2018/08/30(木) 19:55:53.34 ID:dq2VmAiX.net
>>901
最適性の証明のことを言ってるの?
いずれにせよこの問題に限った話じゃないよね?
別に動的計画法が上手くいく理由が分からないと言っているのではなく、>>896の解法が分からないのだが。



>>902
違わない
算術、代数、幾何、解析だ全て

904 :デフォルトの名無しさん:2018/08/30(木) 19:59:32.89 ID:rxoSSaq5.net
例えば、バブルソートには
数学の、えっと、幾何?の知識が必要だろ?
え?

905 :デフォルトの名無しさん:2018/08/30(木) 20:02:00.51 ID:JJE0QqNc.net
フローチャートでも書けよバカ。

906 :デフォルトの名無しさん:2018/08/30(木) 20:07:14.70 ID:dq2VmAiX.net
>>905
無論書いたが分からん

907 :デフォルトの名無しさん:2018/08/30(木) 20:55:16.95 ID:LfSXnVaM.net
>>903
やったことないだろ(笑)

908 :デフォルトの名無しさん:2018/08/30(木) 20:58:00.20 ID:LfSXnVaM.net
単に頭が悪い見栄っ張り

909 :デフォルトの名無しさん:2018/08/30(木) 21:05:25.02 ID:fZXCQKMc.net
>>906
分からんと思っているだけでは進まない。

なにを目的にして、どのようなフローチャートを描いて、
その結果なにが理解できていて、なにがまだ理解できていないのか、
可能な限り事細かに洗い出して、自分の理解の最前線を特定してみるといい。

と言うことを、私は数学で学んだ。

910 :デフォルトの名無しさん:2018/08/30(木) 21:18:12.57 ID:51/MDOyO.net
数I?数II?

911 :デフォルトの名無しさん:2018/08/30(木) 21:43:49.44 ID:HM7SCTN2.net
>>909
だからそれは>>896の時点で書いてるんだが
関係ないことしか言えないならレス不要です


>>907
何を?

912 :デフォルトの名無しさん:2018/08/31(金) 00:40:53.58 ID:/Xr6ByPq.net
俺の周りで物理やってる人はとんでもなく数学ができる人ばかりなのに

913 :デフォルトの名無しさん:2018/08/31(金) 00:57:19.27 ID:1Yp+WIrl.net
まあゲームじゃない限り物理なんて使わないよね
本格的な物理系シミュレーションとかだと
専門家が担当するだろうし

914 :デフォルトの名無しさん:2018/08/31(金) 01:02:18.59 ID:avsEGe4h.net
この程度の問題で数学数学言ってるアホ多過ぎて呆れる

多分>>910みたいな感じで高校の算数基準で話してるんだろうな

915 :デフォルトの名無しさん:2018/08/31(金) 01:09:41.75 ID:6Alav1/S.net
そんなに言うのなら、具体的に数学のどの分野なのか
それが具体的に何と同じなのか言えって。
どうせ論理的思考力がーみたいな精神論しか言えないんだろ

916 :デフォルトの名無しさん:2018/08/31(金) 07:21:05.29 ID:wT3DulcX.net
数列、非線形解析学
はい言いました
論理的思考力が無いのはあなたですね

917 :デフォルトの名無しさん:2018/08/31(金) 07:23:04.73 ID:KNbvu5CI.net
どうしてこうなった

918 :デフォルトの名無しさん:2018/08/31(金) 09:04:32.63 ID:csqJsH/K.net
>>916
では、数列、非線形解析学を利用した
アルゴリズムを答えてください

919 :デフォルトの名無しさん:2018/08/31(金) 09:05:36.36 ID:csqJsH/K.net
ちなみに、数列は高校数学である

920 :デフォルトの名無しさん:2018/08/31(金) 11:52:41.02 ID:5OSgw2nY.net
>>918
>>896

921 :デフォルトの名無しさん:2018/08/31(金) 12:44:50.11 ID:DXKxWv2O.net
>>920
数学の問題をコンピュータで解決するってのはわかる、
だが数学・物理特有の問題以外をコンピュータで解決するのに
数学はいらねーだろって話

922 :デフォルトの名無しさん:2018/08/31(金) 14:32:18.54 ID:5OSgw2nY.net
>>921
微分積分も理解せずにコンピュータに信号処理をやらせるの?
そういうレベルの質問

923 :デフォルトの名無しさん:2018/08/31(金) 14:39:40.99 ID:DXKxWv2O.net
信号処理なんて、誰がやっても同じなんだから
一度ライブラリ作って、他の人はそれ使うだけだろ・・・

924 :デフォルトの名無しさん:2018/08/31(金) 16:28:19.03 ID:5OSgw2nY.net
>>923
それじゃあ初音ミクは生まれないね
こういうやつが技術を停滞させる

925 :デフォルトの名無しさん:2018/08/31(金) 18:49:37.43 ID:DXKxWv2O.net
>>924
だからそういうのは専門家に任せたほうが良くね?

音声合成をやる人は、そういう専門家に任せて
他の人は便利なインターフェースを作るとかさ、
なんでも1人でやるもんじゃないよ?

926 :デフォルトの名無しさん:2018/08/31(金) 19:18:52.92 ID:5OSgw2nY.net
別にそういう原理を知りたくないんなら勉強しなくて良いんじゃない
表面的なものしか作りたくないなら勉強しないことをおすすめします

927 :デフォルトの名無しさん:2018/08/31(金) 19:24:24.23 ID:DXKxWv2O.net
>>926
だから作る層が違うって言ってんの
水道局で働いてる人全員が
工事技師じゃないんだよ

928 :デフォルトの名無しさん:2018/08/31(金) 19:27:43.29 ID:5OSgw2nY.net
>>927
つまり君はそういう層にはなるのを拒む側ってだけだ

929 :デフォルトの名無しさん:2018/08/31(金) 20:05:55.05 ID:OUCwI4mz.net
>>928
その理屈で言えば、君がそういう層になりたいだけでは?

残念だけど、自分がやりたいことと、他人がやってもらいたいこと
っていうのは同じじゃないんだよね

そして給料っていうのは、他人がやって欲しいことをやった対価として
もらえるものなので、いくら自分がすごいことができるって言ったからって
給料は高くならないんだよね。

930 :デフォルトの名無しさん:2018/09/01(土) 00:41:52.18 ID:GjC7kJfb.net
>>929
作りたいものがあるから勉強する、それだけ

931 :デフォルトの名無しさん:2018/09/01(土) 09:56:42.06 ID:pu0WuyWZ.net
うむ

932 :デフォルトの名無しさん:2018/09/01(土) 10:48:54.59 ID:iQmzKze8.net
自分一人で作るような小さいアプリとかなら、
全部を知っておかなければいけない、って思いたくなるのもわかる。

が、通常は数学の専門家でも無い人間を数学で信用する事は無いし、
プログラムの専門家でも無い人間をプログラムで信用する事は無い。

付け焼き刃は事故の元。
大きな仕事になればなるほど役割や責任が細分化される。

933 :デフォルトの名無しさん:2018/09/01(土) 12:24:44.93 ID:rDlJp/s7.net
ぼやっとして結局何を言いたいのか良くわからんが
何か良い事を言いってみたい必死さは伝わった

934 :デフォルトの名無しさん:2018/09/01(土) 12:52:20.45 ID:mPcVbgud.net
え?言いたいことがわからんの?

935 :デフォルトの名無しさん:2018/09/01(土) 13:01:11.42 ID:8oBLXasx.net
そりゃあ馬鹿の言ってることは分からんだろ

936 :デフォルトの名無しさん:2018/09/01(土) 13:13:44.90 ID:mPcVbgud.net
言ってることがわからんから、言ってるほうが馬鹿だと思ってるだけじゃないの?
俺に言わせれば、馬鹿だから言ってることがわからないんだと思うが?

937 :デフォルトの名無しさん:2018/09/01(土) 13:42:02.18 ID:8oBLXasx.net
俺に言わせれば世界はお前を中心に回ってないってこと

938 :デフォルトの名無しさん:2018/09/01(土) 13:47:09.53 ID:mPcVbgud.net
>>937
お前を中心に回ってるといいたいのかな?

939 :デフォルトの名無しさん:2018/09/01(土) 14:37:08.16 ID:8oBLXasx.net
>>938
>>936

940 :デフォルトの名無しさん:2018/09/01(土) 14:47:05.92 ID:mPcVbgud.net
>>939
俺のレスがどうした?

941 :デフォルトの名無しさん:2018/09/04(火) 02:27:34.18 ID:Tt3u8CpR.net
アルゴリズム辞典みたいなものを手元に置いときたいんだが、最も支持されてるのってどれ?


・網羅性が高い
・支持されている(売れている)
・日本語版がある
・コード例はあってもなくても良くて、あるとしたら C/C++ か擬似コードで
という条件で
テーマ別に「どれとどれとどれを持っとけばまず問題ない」という言い方でもありがたい
とにかく網羅性を重視してる

942 :デフォルトの名無しさん:2018/09/04(火) 07:04:17.98 ID:OlESf3Ok.net
英語は知らんけど、日本語なら
[改訂新版]C言語による標準アルゴリズム事典 (Software Technology)
奥村 晴彦
http://amzn.asia/d/bAqY5Be
が網羅性は随一じゃないかな。
改訂だけど初版が1991年で、収録アルゴリズムは増えてないらしいので、
機械学習とかここ25年の新分野は当然入っていない。

943 :デフォルトの名無しさん:2018/09/04(火) 07:32:26.75 ID:/VBaeORw.net
機械学習の何をアルゴリズム辞典に入れるべきだというのか

Amazonレビューかよテメェは

944 :デフォルトの名無しさん:2018/09/04(火) 07:36:36.34 ID:5tN3iveh.net
>>942
この本はBoyer-Moore法が簡易版しか載っていないし、Aho-Corasick法も載ってないから弱い

945 :デフォルトの名無しさん:2018/09/04(火) 08:37:54.35 ID:HF+7qfHp.net
より網羅的な対案示してからでないと批判にならないよ。

共立のアルゴリズム辞典が現存すればこっちも挙げてたかもしれん。
BM法に関してはコード例は簡略版のみだが。

個別のアルゴリズムについてどこまで踏み込むかは、
辞典の物理的な性質上取捨があるのはしかたないでしょ。

946 :デフォルトの名無しさん:2018/09/04(火) 10:34:21.16 ID:gEGTZvcA.net
>>943
+1

947 :デフォルトの名無しさん:2018/09/04(火) 10:36:29.76 ID:ROt4XEkp.net
名前がついていて解放も明らかになってるアルゴリズムに興味はない
そんなのいくらやっても新しいものは生み出されない

948 :デフォルトの名無しさん:2018/09/04(火) 14:25:14.21 ID:JAXadswE.net
>>947
先輩、かっけぇっす

949 :デフォルトの名無しさん:2018/09/11(火) 14:44:06.44 ID:O54onciS.net
質問させてください。
マイコンからAD変換で入力したサイン波を配列に格納し、周波数を求めたいと思います。
ゼロクロスの位置を求めれば正確に周波数を求められそうですが、教えてください。
https://i.imgur.com/FC5XP0K.png

950 :デフォルトの名無しさん:2018/09/11(火) 16:27:37.38 ID:zEn+kcA0.net
質問が不完全だけど、そのためのアルゴリズムを教えてほしいということでよい?

前提として、各周期で確実に2回だけゼロクロスすると保証できるのなら、
前回の値を覚えておいて、今回との積が0以下になったらゼロクロス。

この保証がないのなら十分長く波形をとってFFTしてピークを探す。

951 :デフォルトの名無しさん:2018/09/11(火) 22:09:31.90 ID:i7axZbyN.net
♀だったらセクロス教えてやる

952 :デフォルトの名無しさん:2018/09/11(火) 22:11:28.88 ID:4O7I7zcY.net
え!?童貞なのにセクロスを!?

953 :デフォルトの名無しさん:2018/09/12(水) 03:44:12.77 ID:gw3HbkUV.net
できらあ!

954 :デフォルトの名無しさん:2018/09/12(水) 07:05:35.15 ID:Jy3sklaz.net
それページ逆だぞ

955 :デフォルトの名無しさん:2018/11/05(月) 18:00:44.74 ID:ajh0QscM.net
有向グラフの有向閉路を求める問題です。

深さ優先探索を実行したときに、 Backward Edge が存在する。



有向閉路をもつ



⇒は自明ですが、逆はどう証明するのでしょうか?

956 :デフォルトの名無しさん:2018/12/03(月) 20:50:16.30 ID:wBSUle4B.net
深さ優先、幅優先探索を理解するのにオススメの本ってありますか?(コードサンプル付きでできればC)

957 :デフォルトの名無しさん:2018/12/04(火) 09:57:38.19 ID:euG8Im7Y.net
https://www.amazon.co.jp/dp/4874084141

958 :デフォルトの名無しさん:2018/12/04(火) 10:14:50.08 ID:GTmuusXQ.net
>>957

全くおすすめできません。その本。

959 :デフォルトの名無しさん:2018/12/04(火) 10:27:11.51 ID:GTmuusXQ.net
>>956

グラフ・ネットワークアルゴリズムの基礎: 数理とCプログラム
浅野 孝夫
固定リンク: http://amzn.asia/d/2MetXvf

960 :デフォルトの名無しさん:2018/12/04(火) 11:20:17.46 ID:6CbA0WHr.net
馬鹿アスペの推奨w

961 :デフォルトの名無しさん:2018/12/04(火) 14:19:52.12 ID:X/ZQLD1J.net
学ぶ目的には全くお勧めできないってのはその通りだけど、
手元に置いておいて使う分には便利な本ではあるような。
あ、浅野先生の本も待ってます。
(この分野、浅野先生が2人いて紛らわしい)

962 :デフォルトの名無しさん:2018/12/04(火) 14:28:35.23 ID:GTmuusXQ.net
>>956

プログラミングコンテスト攻略のためのアルゴリズムとデータ構造
渡部 有隆
固定リンク: http://amzn.asia/d/g8qmfS6

↑この本にも、 BFS、DFS共に書いてあります。

解説は非常に雑ですが。

963 :デフォルトの名無しさん:2018/12/04(火) 14:33:05.75 ID:GTmuusXQ.net
>>959

の本には、再帰を使う DFS プログラムが書いてあります。(スタックを使う DFS プログラムは演習問題にあり、コードをダウンロードできます。)

964 :デフォルトの名無しさん:2018/12/04(火) 14:34:21.14 ID:GTmuusXQ.net
>>963

スタックを使う DFS プログラムは演習問題にあり、コードをダウンロードできますし、本にも解答のところにコードが載っています。)

965 :デフォルトの名無しさん:2018/12/04(火) 14:39:02.72 ID:eKuwOju4.net
前置記法(ポーランド記法) + 1 2
後置記法(逆ポーランド記法) 1 2 +
中置記法 1 + 2

確か、構文木をたどる時に、どれかが幅優先で、どれかが深さ優先探索になると、記憶している

966 :デフォルトの名無しさん:2018/12/05(水) 13:24:47.73 ID:2sSegHBZ.net
shaderって何回書き換えてもメモリ壊れない?

967 :デフォルトの名無しさん:2018/12/05(水) 21:47:02.62 ID:xYhP2Ga4.net
テンプレのソース探検なんちゃらのサイトいいね
pdf買えはうざいけど

ソートはクイックマージヒープの特性くらい押さえとけば良さそうな感じだな
そこら中に実装あるしまあ
バケットソートは聞いたこと無かったけど、これは局所で凄い威力発揮しそうだ
覚えとく価値ありそう

968 :デフォルトの名無しさん:2019/06/19(水) 04:49:26.98 ID:tVNS+22r.net
【出資】松本卓朗 人工知能詐欺【注意】
https://rio2016.5ch.net/test/read.cgi/rikei/1560859403/

969 :デフォルトの名無しさん:2020/01/03(金) 12:48:16.96 ID:LiTO8m+L.net
O(n)で中央値を求めるアルゴリズムを思いついた

970 :デフォルトの名無しさん:2020/01/04(土) 01:21:11.30 ID:buSsFrEd.net
クイックセレクトのこと?

971 :デフォルトの名無しさん:2020/01/13(月) 02:33:48 ID:D6MgPK0q.net
こんにちは、初質問させていただきます、グラフアルゴリズム初心者です

・無向グラフGが入力として与えられる(ファイルからでも、コード内での手打ちでも、どちらも良い)
・Gがサイクルを持てばGの中の最小サイクル(長さが最も短いサイクル)とそのコストを出力する
・各辺、頂点の重みは考えなくても良い(つまり辺のコストは1とする)
といったアルゴリズムを実装したいです。
できればC言語もしくはC系統の言語でコーディングしたいです。

考え方と共に、コーディング例をご教授いただけると幸いです。

浅い知識ではありますが、この実装に必要そうである
・DFS,BFS
・ダイクストラ、ベルマンフォード
に関しては、基礎レベルは把握しています。

お手数おかけしますが、ご助力いただけると幸いです。

972 :デフォルトの名無しさん:2020/01/13(月) 04:31:10.60 ID:6QaMEdT1.net
適当に言うけど、

すべての辺を1回だけ通りながら、通った頂点を記録していく
それで同じ頂点を、2回以上通ったら、閉路がある?

973 :デフォルトの名無しさん:2020/01/13(月) 12:21:39.99 ID:jqPh5nAm.net
>>971
グラフのサイズが書いてないと答えられないな

974 :デフォルトの名無しさん:2020/01/13(月) 13:32:08.60 ID:D6MgPK0q.net
>>973
条件不足で申し訳ございません

グラフサイズの制約は特に設けないものとしています。
とりあえずは最大でも100頂点程度で考えています。

お手数お掛け致しますが、よろしくお願いします。

975 :デフォルトの名無しさん:2020/01/13(月) 13:32:16.76 ID:D6MgPK0q.net
>>973
条件不足で申し訳ございません

グラフサイズの制約は特に設けないものとしています。
とりあえずは最大でも100頂点程度で考えています。

お手数お掛け致しますが、よろしくお願いします。

976 :デフォルトの名無しさん:2020/01/13(月) 17:13:44.37 ID:jqPh5nAm.net
>>975
頂点数をn,辺数をmとする
ある頂点uを含んだ最小閉路は頂点uからbfsをすればO(n+m)で求められる(最初にuに戻ってきたときの経路が最小)
あとはすべての頂点に対してこれをして,その中から一番短いものを選べばいいので,全体でO(n(n+m))で求められる

977 :デフォルトの名無しさん:2020/01/13(月) 22:42:08.62 ID:D6MgPK0q.net
>>976
ありがとうございます。

つまり、例えば
各頂点を始点-終点とするダイクストラアルゴリズム処理を行えば良い
ということでしょうか。

978 :デフォルトの名無しさん:2020/01/13(月) 23:30:01.64 ID:jqPh5nAm.net
>>977
イメージとしてはそんな感じです
辺を考えたほうがわかりやすいかもしれないです

ある辺(u-v)を含むようなサイクルの中で最小のものを求めたいとします
まずグラフから辺(u-v)を除去します.このグラフ上でuからvの最短距離dを求めます
すると,d + 辺(u-v)が辺(u-v)を含むサイクルの中で最小のものとなります

グラフの中で一番短いサイクルは辺(u-v)を含んでいるかはわからないので,すべての辺に対して上の操作を実行します
その中から一番短いものを選べば,それがグラフの中で一番短いサイクルです
この場合だとO(m(n+m))です

979 :デフォルトの名無しさん:2020/01/15(水) 13:45:14.74 ID:oHYk5H5Q.net
>>978
ありがとうございます。
ご教授いただいた考えをもとに、ダイクストラ法を用いて実装してみました。
・ダイクストラ(グラフは頂点とコストで表現)
https://ideone.com/bXF0iQ

また、以前似たものを実装したのですが、これはダイクストラ(もしくはBFS)の考えに則れていますでしょうか・・・?
(グラフは隣接行列で表現)
https://ideone.com/snxvav

どちらにしても、始点と終点が同一でない場合はうまくいくのですが、
始点と終点を同一として閉路で求めようとすると、うまくいきません。
自己ループ辺のコストが0であるから、と思い9999などにしてみましたが、うまくいきませんでした。

すごく単純なミスなのでしょうが、詰まってしまっている状態です。
修正等いただけると幸いです。

一応、(可能であれば)望む仕様と結果としては
・グラフは隣接行列で表現
・辺の重みは非負である(今回、簡易化のために辺の重みは1~9)
・グラフサイズは制限しない(今回、簡易化のために10頂点程度)
・ダイクストラを用いて自分自身を始点かつ終点とする最短経路を求める
・各頂点に対して上のダイクストラを行い、中でも最短の閉路の経路とそのコストを表示する

です。

お手数をおかけしますが、よろしくお願いします。

980 :デフォルトの名無しさん:2020/01/15(水) 16:39:42.37 ID:Ex9G0OLU.net
>>979
>>971だと辺のコストは1となっているが,実際は辺に1以外のコストがある?
求めたい最小サイクルというのは,使う辺の本数が最小という意味なのか,使う辺の合計コストが最小という意味のどちらなのか

981 :デフォルトの名無しさん:2020/01/15(水) 21:49:25 ID:oHYk5H5Q.net
>>980
コストは1だと申し上げましたが、
ダイクストラなので非負であれば求まると思い、汎用性を考えて1以外のコストも付与してみました。
説明不足で申し訳ございません。

982 :デフォルトの名無しさん:2020/01/15(水) 23:25:41 ID:Ex9G0OLU.net
>>981
無向グラフだと面倒くさくて,uからvにいったあとvからuにいくような場合がでてくるのでこれを除かないといけない
そのような経路を除いたうえで始点に戻ってきたものが最短になる
ある辺が2回使われることはないので,辺は1度しか使えないようにすればいいと思う

983 :デフォルトの名無しさん:2020/01/15(水) 23:28:15 ID:Ex9G0OLU.net
https://www.geeksforgeeks.org/shortest-cycle-in-an-undirected-unweighted-graph/
これとかわりとそのままだな 重みなしだけど

984 :デフォルトの名無しさん:2020/01/15(水) 23:56:14 ID:Ex9G0OLU.net
https://www.geeksforgeeks.org/find-minimum-weight-cycle-undirected-graph/
こっちは重み付きのやつ

985 :デフォルトの名無しさん:2020/01/18(土) 22:58:37.26 ID:iLU56BHo.net
>>983
>>984

ありがとうございます。
コストだけでなく、経路も出力したいのですが、弄ってみてもなかなかうまくいきません...。

986 :デフォルトの名無しさん:2020/01/19(日) 12:55:00.98 ID:VFlG/sWR.net
CLRSのダイクストラのアルゴリズムの正しさの証明を読み終わりました。
行間が全くなく、確かに、正しいことは分かりますが、あまりイメージのわかない証明ですね。

CLRSって他の本と比べると異常に行間がないですよね。

987 :デフォルトの名無しさん:2020/01/20(月) 15:11:46.01 ID:+ZQhvd/Y.net
巨大なsparce行列(ゼロ要素が多い行列)で行列演算やるときデータ構造考えるよね

988 :デフォルトの名無しさん:2020/01/20(月) 17:27:30.27 ID:/b+J8VIk.net
>>985
どのへんがわからないか言ってくれ
Find minimum weight cycle in an undirected graphは
int Graph :: ShortestPathでu-vを削除したときの最短経路を求めてる
このときdist[v]が更新されるたびにvにきたノードをメモしておけば最後にvからprevをたどって復元できる
このときの経路をvector

楽な実装方法は,グローバル変数にこれまでの最短経路の距離とルートをもっておいて
常に最短のものを保存しておけばいい

989 :デフォルトの名無しさん:2020/01/20(月) 17:28:22.60 ID:/b+J8VIk.net
途中で送信してしまった
このときの経路をvetorにいれておけばいい

990 :デフォルトの名無しさん:2020/01/25(土) 23:49:17 ID:Q85YRMjK.net
>>988
正直、C++の知識不足で勉強を頑張ってはいるのですがVectorの使い方がまだ、慣れていません。。。

厚かましいのは重々理解しているのですが、可能であればFind minimum weight cycle in an undirected graphのプログラムを>>988さんなりに改変したものをお教えいただけると幸いです。。。

悪い勉強法とは分かっているのですが、答えというか実装例が無いとなかなか理解できなくて。。。

991 :デフォルトの名無しさん:2020/01/26(日) 01:32:16.02 ID:63DOpTVc.net
言語の基本的な部分はさすがによそでやろうや・・・

992 :デフォルトの名無しさん:2020/01/26(日) 13:25:18.52 ID:eN1PAkvI.net
>>990

https://ideone.com/pShuim

↑一応動きました。
piという変数に経路を覚えさせています。

993 :デフォルトの名無しさん:2020/01/26(日) 13:32:46.65 ID:eN1PAkvI.net
>>990

piについては、

Cormen, Leiserson, Rivest, Stein著『Introduction to Algorithms 3rd Edition』の最短路の章を見ると、

書いてあります。

994 :デフォルトの名無しさん:2020/01/26(日) 13:47:50.10 ID:eN1PAkvI.net
アルゴリズムとデータ構造ってコンピューターサイエンスの分野で人気ないんですか?

995 :デフォルトの名無しさん:2020/01/26(日) 16:03:48.66 ID:gJO14xRt.net
>>994
ネット以外だとデータ構造とアルゴリズム好きな人見たことないな
CS系だと機械学習やってるやつが多い

996 :デフォルトの名無しさん:2020/01/26(日) 16:28:11 ID:eN1PAkvI.net
>>995

ありがとうございます。

機械学習は非常に流行していますが、勉強するのに面白い分野だとは思えません。

997 :デフォルトの名無しさん:2020/01/27(月) 12:15:36 ID:Dkceayzl.net
DAGの単一始点の最短経路問題を解くアルゴリズムとか
Bellman - Fordのアルゴリズムとかの正しさの証明が非常
に面白いですね。

998 :デフォルトの名無しさん:2020/01/27(月) 17:15:29 ID:Xu7tzl7q.net
>>996
+1

999 :デフォルトの名無しさん:2020/01/27(月) 17:16:05 ID:Xu7tzl7q.net
>>997
-1

1000 :デフォルトの名無しさん:2020/01/27(月) 17:16:23 ID:Xu7tzl7q.net
>>999
+1=1000

1001 :2ch.net投稿限界:Over 1000 Thread
2ch.netからのレス数が1000に到達しました。

総レス数 1001
283 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★