1 名前:デフォルトの名無しさん mailto:sage [2006/03/07(火) 23:06:03 ] アルゴリズムを考えるのが好きな人、自分以外にいませんか? エレベーターを待っているときは、動きを制御するアルゴリズムを考えたり 既存のサブルーチンのアルゴリズムを考えたり、ゲームをやってても敵の 動きのアルゴリズムを考え、ストーリーなどは全く頭に入らない 愛読書は「アルゴリズムとデータ構造?」 言語なんて関係ない!アルゴリズムが好き!
2 名前:デフォルトの名無しさん [2006/03/07(火) 23:25:31 ] アルゴリズムとデータ構造?
3 名前:デフォルトの名無しさん [2006/03/08(水) 00:12:31 ] アルゴリズムは、ここのサイトがくわしくて参考になる ttp://sidhes.hp.infoseek.co.jp/alg3.htm
4 名前:デフォルトの名無しさん [2006/03/08(水) 00:18:32 ] クヌース先生著の聖書か?
5 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 00:21:06 ] はよアルゴリズムについて語れ>>1
6 名前:デフォルトの名無しさん [2006/03/08(水) 00:36:20 ] よし、じゃあまずものすごいかっきてきなアルゴリズムだ。 x = x ^ y; y = x ^ y; x = x ^ y; これで x と y の値がいれかわるのだ!すごい
7 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 00:39:53 ] >>6 www.dd.iij4u.or.jp/~okuyamak/Information/xor_fixed_swapping.html
8 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 00:48:55 ] >>6 これが真に役立つ場面ってなかなかないんだよねぇ。 俺がいままでやった中ではフィボナッチ数列を求めるプログラムぐらい。 もっともそのまんまの形じゃなくて x = x +y; y = x -y; x = x -y; こんな形をベースにして。ちなみにそのフィボナッチ数列を求めるプログラムはこんな感じ。 int x = 1; int y = 0; for(int i = 0; i < 10; ++i) { printf("%d\n", x); x = x +y; y = x -y; //x = x -y; この二つの行は相殺できるのでコメントアウト //x = x +y; }
9 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 01:04:17 ] さっき、国会でやった小泉兄貴凄かったです!ガチムチの嘉朗兄貴がイット連呼で インパクにぶちこまれ首振ってました。俺も掴まされてガセネタ食らい無様に 醜態さらしました。懲罰動議出されたときは一瞬引いたけど、兄貴の「いやなら 辞めていいんだぜ!」の一言で覚悟決め、生まれて初めて謝りました。そ の後、幹事長・党首も晒しあげられてビンビンの冷や汗、思いっきり謝り派手に脳無し タケベの顔に飛ばしました。スッゲー男らしく気持ちよかったです。また行くとき カキコして下さい!帰ってからNHKのニュース見て、また感じまくってます!
10 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 02:01:06 ] >>8 似たようなのでユークリッドの互除方が好き
11 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 02:56:08 ] ネタすれの乱立ウザス
12 名前:デフォルトの名無しさん mailto:sage [2006/03/08(水) 05:46:38 ] Introduction to Algorithmsを解説してくれ……とは期待しないが、 解説してるどっかの大学のオンライン講義資料知りませんか。
13 名前:デフォルトの名無しさん [2006/03/10(金) 15:24:31 ] 遺伝的アルゴリズムや免疫アルゴリズムなどいろいろありますが とっておきのを思い付きました。 「検便アルゴリズム」です。 みんなで熱く語り合いませんか。
14 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 15:27:53 ] quick sortで最悪のケースを避けるために 最初に粗くshell sortしておくと速くならんかな。 細かい部分はinsertion sortして。
15 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 15:39:10 ] >>14 marge sort使えって
16 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 15:39:46 ] margeじゃなくて mergeだって
17 名前:デフォルトの名無しさん [2006/03/10(金) 17:42:45 ] アルゴリズム中毒 略してアル中
18 名前:デフォルトの名無しさん [2006/03/10(金) 17:45:53 ] >>17 おまい、それを言いたいためだけにこのスレたてたんか?!
19 名前:デフォルトの名無しさん [2006/03/10(金) 18:00:17 ] >>13 おまいから、語ってみろよ それはそうと、自己組織化のアルゴリズム教えてくれ
20 名前:デフォルトの名無しさん [2006/03/10(金) 18:10:41 ] 見つけたデータを配列の先頭に移す。 ただこれだけだ。
21 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 18:35:33 ] 分けの分からん名前つけたがる奴ら多すぎ。 もうちょっと機能や用途を的確に表す分かり やすいダイレクトなネーミングしろよ。 >見つけたデータを配列の先頭に移す。 自己組織化という名前とどう関係あるのかさっぱり分からない。 一度ヒットした検索の結果を頭に持ってくるようなことは ちょっと気が利いたやつなら普通にやるが、そういう用途 なのか?
22 名前:デフォルトの名無しさん [2006/03/10(金) 20:16:42 ] 絶対アル感=あらゆる現象をアルゴリズムとして表現することの出来る能力
23 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 20:27:13 ] 俺ゴリズム = 自分で編み出したアルゴリズム。だが実は再発明。 猿ゴリズム = アルゴリズムと呼ぶには、あまりにも稚拙。
24 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 21:09:59 ] アルゴリズマー=アルゴリズムの考案を生業としている人。
25 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 21:13:12 ] 調べるより再発明した方が早い場合もある。ソースが無けりゃあ 再実装はさけられないしな。
26 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 21:16:59 ] 早いかどうかはどうでもいいな〜 重要なのは楽しいかどうか どうせ最終的にやることは変わらんしな
27 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 21:19:59 ] >>24 どっちかというと、アルゴリズミストという感じがするな。 >>26 調べる訓練を十分積んでないと、再発明の方が心理的に楽なんだよな。 しかしそれまでに研究されたアルゴリズム上の穴や欠点が反映されない罠。
28 名前:デフォルトの名無しさん [2006/03/10(金) 21:22:25 ] 【先進国アルゴリズム協会】 「先進国アルゴリズム協会」(通称:SAK)は北半球の国々による アルゴリズムの研究を目的とした公的機関である。 世界から優秀なSEやプログラマが集められており、年に数回の学会を催している。 最近有名なのは、画像ファイルからそれがエロ画像であるかを判定するアルゴリズムである。 これにより、エロ画像掲示板等向けの巡回ソフトを開発する際に、 余計なネタ画像を避けてエロ画像のみを収集することができ、日米を中心としたIT先進国も注目している。
29 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 22:06:49 ] しかし、ネタ画像で十二分に性的興奮を覚える人間に対しての 不当な文化の押し付けであるとして、アジアを中心とした人権団体から非難が出ている。 これに対しSAK側は沈黙を決め込み、半ば強引な進め方が行われており、 人権団体では、日米主体のエロ文化が蔓延するのではないかと懸念している。
30 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 23:03:14 ] 一部分に肌色のピクセルが集中していたらエロ画像の可能性が高いかな
31 名前:デフォルトの名無しさん mailto:sage [2006/03/10(金) 23:18:54 ] グロ画像の可能性も大いに有り
32 名前:デフォルトの名無しさん [2006/03/10(金) 23:23:11 ] エロ画像フィルタは既にあるが 赤ん坊の写真まで除去されてしまう
33 名前:デフォルトの名無しさん [2006/03/10(金) 23:57:41 ] こっこのアルゴリズムヌケる………………………うっっ
34 名前:デフォルトの名無しさん [2006/03/11(土) 00:00:16 ] ↓heap sortで3回ヌケる
35 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 02:30:37 ] 適当なスレがないのでここで聞いて見ます あるコントロールを作ってこれは角ならその方面のサイズを 辺ならその辺を基準にした高さを 右クリックなら回転を マウス操作で行おうとしてるんですが マウス座標はXYなので回転後の伸縮幅の計算でわけがわからなくなってしまった 三角関数が入り組んでる状態で頭がいたいので どっかにサンプルころがってないですかね? あるいはスマートに共通の関数とかで処理する方法があれば教えてください
36 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 02:37:32 ] >>35 おまいの日本語がわかりにくい 回転移動の1次変換 ttp://www.geisya.or.jp/~mwm48961/kou2/linear_image3.html
37 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 02:40:37 ] 着衣エロ、もしくは着色エロで対抗だ!
38 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 03:01:51 ] >>36 回転はできてます 例えば45度左にすでに傾いていた場合、上辺をドラッグして左右辺の長さを変えるわけです マウスの位置に上辺が来ないといけないわけですが マウスのY座標から左上と右上の角の座標が知りたいわけです これは単純にサイズ変更だけじゃなくて移動もしないといけません この時に回転軸も重心を取ってるのでずれてきます 上辺がマウスに重なるように下辺は固定したまま上辺だけを移動したいのです
39 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 03:21:33 ] コントロールじゃなくて ぜんぶ自前で線描画した図形にしたらどーかね
40 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 03:54:06 ] コントロールといっても回転なんか出来ないので全部自前の描画ですよ? なにをゆっているのですか?
41 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 04:00:35 ] なんで計算できんのかわからんな
42 名前:デフォルトの名無しさん [2006/03/11(土) 05:39:15 ] ではウォーミングアップからお願いします。 リストから重複要素を取り除いたリストを得るアルゴリズムをお願いします。 高速なのをお願いします。
43 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 05:52:19 ] >>41 じゃあもう少し要点をまとめるので答えてね ある角度αで回転した四角形があります 左上角を(x,y)とします 上辺の中心を(x',y')とします この中心をドラッグし移動するとマウスと上辺は交差する位置を維持します 下辺2点は固定です この時いまマウスがいる座標を(x'',y'')とします この座標と交差する上辺の左角の座標を求める計算式を提示してください
44 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 09:14:31 ] >>43 >ある角度αで回転した四角形があります どこを中心にどう回転したのか書いてないしな。 曖昧な情報を出してくる辺りネタとしか思えない。 もう帰っていいよ。
45 名前:デフォルトの名無しさん [2006/03/11(土) 10:08:56 ] >>42-43 ほんとに聞きたいなら、その部分コード書いて、判らない所をコメントにして聞いてくれよ。 >>42 リストって言ってるのはホントのリストだな Delphi/BuilderのTListじゃないね? ただ、どういうリストなのか構造が判るようなコードで書いてくれよ。 じゃないと単なるリストならアルゴリズムもクソもリストを全部辿るしか方法ないじゃない >>43 判りにくい。コードで書いて
46 名前:デフォルトの名無しさん [2006/03/11(土) 10:54:14 ] >>45 僕の考えた低速そうなアルゴリズムはこうです。 fun expMul nil = nil | expMul (h::nil) = [h] | expMul (h::rest) = h::expMul(cut(h,rest)) and cut (x,nil) = nil | cut (x,(h::nil)) = if x=h then nil else [h] | cut (x,(h,rest)) =if x=h then cut(x,b) else h::cut(x,b);
47 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 11:31:54 ] 目当ての女の子画像を集めるアルゴリズムおながいします
48 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 12:20:29 ] >>47 あ〜、それ俺もすげぇ欲しい 顔で判断するのか?
49 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 13:04:15 ] >>47 Google イメージ検索
50 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 16:33:09 ] >>44 重心って書いてるじゃんw ばーか
51 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 16:34:56 ] >>判りにくい。コードで書いて コードで書いたらもうほとんど答えでバグ広いだけじゃんw ばかじゃねーの
52 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 16:42:16 ] // 重心を中心に回転済みの座標 function (mouse, leftup, rightup, leftbottom, rightbottom, kakudo){ // mousex mouse.y が (leftup.x leftup.y)-(rightup.x,rightup.y)の線分と交差するように // leftup rightupを修正 // ↓ ??????????? // ↑ return points } はいコードどうぞw
53 名前:デフォルトの名無しさん [2006/03/11(土) 17:07:04 ] >>51 ならそれで質問者は解決するわけで、みんなハッピーだ >>52 つまり、(leftup.x leftup.y)-(rightup.x,rightup.y)の線分と交差するのは、何?
54 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 17:09:35 ] mousex mouse.y が
55 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 17:11:50 ] むしろ解答するように見せかけた釣りとしか思えないw
56 名前:デフォルトの名無しさん [2006/03/11(土) 17:13:09 ] 線分と交差するのは2次元なら線分でなければいけないよ?
57 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 17:17:42 ] 君には一生解答できないからいいよw
58 名前:デフォルトの名無しさん [2006/03/11(土) 17:18:13 ] >>52 引き数の型が書かれていない mouse, leftup, rightup, leftbottom, rightbottom, はpoints として kakudoは何? それから leftbottom, rightbottom, kakudoはこの関数の動作に関係しないなら引き数にする必要はない 関係するならその説明をしないと意味がないだろう
59 名前:デフォルトの名無しさん [2006/03/11(土) 17:19:33 ] >>57 あのさ、この板でこの手の回答の半分はオレなの。 オレが答えなきゃ、回答率は半分になるよ。
60 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 17:22:31 ] kakudoは現在の回転角0-360 points は変化後のすべての座標の省略 形なんか好きにしろw 角度計算する際の常識的な形ってやつがあるだろ 使うか使わないかもわからないのかお前は?w
61 名前:デフォルトの名無しさん [2006/03/11(土) 17:26:16 ] 常識は人によって色々だ オレはこの手の処理をするときは角度じゃなくて sin/cos成分を引き数で渡す。 これはオレの常識 つまり、これは関数というより手続きなんだね? それを表現してくれないといけない。 それで、入力としては mouse, leftup, rightup, leftbottom, rightbottom, kakudo 出力は何? 想像としては、 leftup, rightup, leftbottom, rightbottom の相対関係を固定して kakudoで回転させたいように思うが mouseはどういう拘束条件?
62 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 17:30:20 ] (leftup)-(rightup)が点(mouse)を通過する 角度reftupは90度rightupは90度を固定された leftupとrightupを入れ替えて 返す kakudoha現在の座標がその角度で回転されたものだって意味じゃぼけ
63 名前:デフォルトの名無しさん [2006/03/11(土) 17:38:29 ] >>62 判った事は mouse, leftup, rightup, leftbottom, rightbottom が点座標 kakudo が 現在の座標の回転角 ここまでは判った 現在の座標の回転角とは何? 90度というの何と何の角度? もしかして長方形? 長方形なら2点だけでいいよね?
64 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 17:41:03 ] 長方形だって言ってるじゃんw 引数の数がその後の計算に影響するとは思えないんだが 自閉症なみのこだわりですねw
65 名前:デフォルトの名無しさん [2006/03/11(土) 17:45:47 ] いや、未熟ですまん。 じゃ、ムダな、2点を削除して (POINT mouse, POINT p1 , POINT p2 , double kakudo) にしよう 左上p1と右下p2の kakudo で回転された 長方形があるとする。 このmouse上の点が上辺になるように 移動変換したい というのが疑問かい?
66 名前:デフォルトの名無しさん [2006/03/11(土) 17:59:36 ] 課題をもう少し変形する。 W ┌┐ ││H └┘ POINT mouse ,POINT center , doubke kakudo , double W , double H center が 重心の位置、kakudoがこの図形の回転角 点 mouse にWが一致するように center を平行移動して返す関数を作れ。 でいいの?水平移動優先? 垂直移動優先?それとも最短移動距離優先?
67 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 17:59:56 ] そんな感じ
68 名前:デフォルトの名無しさん [2006/03/11(土) 18:03:51 ] まてよ、 > この座標と交差する上辺の左角の座標を求める計算式を提示してください これを翻訳すると このmouse座標上に上左点が来るように center を設定せよ これでいいんじゃないの?
69 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 18:05:03 ] >>66 は違う気がする
70 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 18:08:51 ] .>>68 アーぜんぜん違うw 回転してない長方形があって上をひっぱると上に伸びるだけね 下は固定 これはその長方形を回転させた状態のときに同じく上にひっぱるわけ
71 名前:デフォルトの名無しさん [2006/03/11(土) 18:13:57 ] 問題が W ┌┐ ││H └┘ POINT mouse ,POINT center , doubke kakudo , double W , double H center が 重心の位置、kakudoがこの図形の回転角 mouse座標上に回転後の上左点が来るように center を設定せよ だとすれば center.MOVE(POINT(-W/2,+H/2)).ROTATE(kakudo) == mouse を解けばいい center.MOVE(POINT(-W/2,+H/2)) == mouse.ROTATE(-kakudo) center == mouse.ROTATE(-kakudo).MOVE(POINT(W/2,-H/2)) という答えだったけど、これは問題が違うわけね。 ちょっとまってね
72 名前:デフォルトの名無しさん [2006/03/11(土) 18:22:21 ] W ┌┐ ││H └┘ POINT mouse ,POINT center , doubke kakudo , double W , double H center が 重心の位置、kakudoがこの図形の回転角 mouseを重心の位置が原点になるように回転移動逆変換する rmouse=mouse.ROTATE(-kakudo).MOVE(-center) 問題: rmouseのy座標の位置が上辺と一致し、下辺座標が変化しないように centerとHを変更せよ って、事で、もう答え書く必要はないでしょ
73 名前:72 [2006/03/11(土) 18:56:01 ] コレでレスが無いって事は、オレやり遂げたのか? 自分を祝福したいよ。
74 名前:デフォルトの名無しさん mailto:sage [2006/03/11(土) 20:56:07 ] その方法はすでに考えてた その説明だけじゃたりんがね 回転演算を3回しないといけない 書いててもスマートじゃないからなんかいい方法ないものかと聞いてみただけ
75 名前:72 [2006/03/11(土) 21:17:43 ] ありがとう。 どっちかいうと問題が秘密で問題に到達するまでのゲームだったね。 けっこう面白かった。 問題が判らないから表現方法を模索した結果、こうなっただけで 実際のデータとしては四角形に固執せずに、任意多角形の問題として マウスで図形を動かす=マウスの動きに対して何を拘束して何を追従させるかという 問題と捕らえて、一般的に解かせる方がいいよ。 図形を動かす方時のコストなんてしれてるから、多少リッチにCPUコストをかけさせてもいい で、ここには単なる長方形ではなくて、この長方形にビットマップのようなものを貼り付けるんだろ? だったら、そっちのコストがずっと大きいから
76 名前:デフォルトの名無しさん [2006/03/12(日) 00:30:36 ] 【エロゴリズム】 与えられた情報を湾曲させ、猥褻な情報に変換するアルゴリズム。 文字列の変換に関するエロゴリズムが多く考え出されているが、 画像や音声に関してのエロゴリズム考案にもSAKは力を入れている。 文字列変換の例: 愛されて10万戸→愛されて汁マンコ 私の父はSEです→私の乳はSEです
77 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 00:39:42 ] ピタゴラスイッチ
78 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 01:11:41 ] >>75 「アルゴリズムオタク」というスレにふさわしい回答ではないな。 どんなささいなコストも、なんらかのアルゴリズムで回避できるならしなきゃ。
79 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 05:37:04 ] >>76 >愛されて10万戸→愛されて汁マンコ >私の父はSEです→私の乳はSEです ただ下品なだけじゃん。 お前ごときがエロゴリズムを語るのは10年早いわ! 童貞からやり直せ!
80 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 08:06:18 ] やり直すまでもないに一票
81 名前:デフォルトの名無しさん mailto:sage [2006/03/12(日) 14:39:12 ] >>78 >「アルゴリズムオタク」というスレにふさわしい回答ではないな。 質問も回答もスレ違いだろ阿呆。
82 名前:46 [2006/03/13(月) 11:38:46 ] 結局僕はどうなりましたか?
83 名前:デフォルトの名無しさん [2006/03/13(月) 11:48:15 ] >>46 みんなの知らない言語みたいだから、説明を入れてみたらどう?
84 名前:デフォルトの名無しさん [2006/03/13(月) 18:16:41 ] head::body はリストで、例えば [1,2,3,4,5,6,7]とすると、 要素head=1 リストbody=[2,3,4,5,6,7] を意味します。 nilは空リストです。
85 名前:デフォルトの名無しさん [2006/03/13(月) 18:19:54 ] あ、>>47 のラストの行の引数(h,rest)のところ、 正しくは(h::rest)でした。
86 名前:デフォルトの名無しさん mailto:sage [2006/03/13(月) 18:54:13 ] >>42 結局、ソートされたデータなわけ? ソートされてるなら先頭から順に見るだけでいいし そうでないなら、ソートしつつ削除するような方法になると思うよ
87 名前:デフォルトの名無しさん mailto:fusianasan [2006/03/14(火) 00:25:10 ] 何この糞スレ?
88 名前:デフォルトの名無しさん [2006/03/14(火) 03:57:45 ] >>86 リストの順序を保ちたい場合は考慮されてますか?
89 名前:デフォルトの名無しさん mailto:sage [2006/03/14(火) 06:47:21 ] >>88 そもそも リスト構造のままソートするのは効率が悪いから リストとは別にポインタ配列としてソートする事になるだろうね
90 名前:デフォルトの名無しさん [2006/03/14(火) 07:52:01 ] >>89 実装の話ではなくアルゴリズムの話の筈ですが…
91 名前:・∀・)っ-●○◎- ◆Pu/ODYSSEY [2006/03/14(火) 17:38:49 ] 普通に大学1回生のときに単方向リストで重複要素を除く機能つきのマージソート作った。 比較するときに同一の場合は除去すればいいだけだからソートの延長で考えればいい。
92 名前:デフォルトの名無しさん [2006/03/14(火) 18:41:51 ] そういや大学のときC言語の授業で 配列とポインタの練習としてスタックとキューを実装しる、みたいな問題が出て 再配置がマンドクサーだった俺は循環キューに思いいたったわけだが、 それが俺の始めての「車輪の再発明」だった。 懐かしい。
93 名前:デフォルトの名無しさん mailto:sage [2006/03/14(火) 19:23:49 ] 【積年の】旦那にしてる密かな仕返し【恨みじゃー】 human5.2ch.net/test/read.cgi/ms/1141694640/ 8 名前:可愛い奥様[] 投稿日:2006/03/07(火) 11:05:23 ID:8dtluKkp 夫の歯ブラシで洗面所の排水溝掃除。 洗面所をビショビショに汚した罰だ。 20 名前:可愛い奥様[age] 投稿日:2006/03/08(水) 00:40:17 ID:pRrk6A21 前に頭きた時あって 1度だけ歯ブラシで肛門カキカキしちゃった 22 名前:可愛い奥様[] 投稿日:2006/03/08(水) 01:27:12 ID:gU5mHc7J よかった。どこのお宅も同じようなことしてて。 24 名前:可愛い奥様[] 投稿日:2006/03/08(水) 01:36:35 ID:SSSFsTqE そうそう、ヘンなモノはダンナのお皿へ直行だよね。 41 名前:可愛い奥様[] 投稿日:2006/03/08(水) 11:55:18 ID:sjj+/60Q 見てるだけで気が晴れるな! 皆さん、頑張ってね! 42 名前:可愛い奥様[sage] 投稿日:2006/03/08(水) 20:33:51 ID:Ju2N1s7+ 年金分割が楽しみじゃのう 63 名前:可愛い奥様[] 投稿日:2006/03/10(金) 08:55:20 ID:qLfJYpJR 家族で密かにはぶっている。 男性は肉体が汚く、精神が美しい傾向がある。(気に入らない相手に肉体的攻撃を加える⇒精神的攻撃も加える男は猛者) 女は肉体が美しく、精神が汚い傾向がある。(気に入らない相手に精神的攻撃を加える⇒肉体的攻撃も加える女は猛者) 女は隠れて悪事をする。気に入らない女子を便所でボコったり、便器舐めさせたり、男の友人を使ってレイプ、仲間外れにしたり。陰口、嫉妬。 女は対人関係において、この汚い性格を隠そうとするため、外面が非常によくなる。(猫かぶり) 男性諸君は外面に騙されないように気を付けて下さい。
94 名前:デフォルトの名無しさん [2006/03/14(火) 20:22:38 ] アルヲタ
95 名前:デフォルトの名無しさん [2006/03/14(火) 22:50:49 ] アルゴリズム体操
96 名前:デフォルトの名無しさん [2006/03/17(金) 13:45:22 ] >>91 考えられる限り高速な方法で。 普通になら作れます><
97 名前:デフォルトの名無しさん mailto:sage [2006/03/17(金) 16:40:31 ] >>96 >>89 ソートしてあればO(n)で重複を取り除けるし、 配列にリンクポインタへのポインタ相当のものを格納すればリストそのものの順序を変える必要はないし 配列ならデータの種類によっては(フラッシュソートなど)O(n)で出来るソートアルゴリズムが存在する
98 名前:http://www.vector.co.jp/soft/win95/util/se072729.html mailto:http://www.microsoft.com/japan/windowsxp/64bit/default.mspx [2006/03/18(土) 19:14:07 ] TextSS のWindowsXP(Professional)64bit化おながいします もしくは64bitにネイティブ対応したテキスト置換ソフトありますか?
99 名前:デフォルトの名無しさん [2006/04/07(金) 08:22:29 ] では、荒し検出アルゴリズムを。
100 名前:デフォルトの名無しさん mailto:sage [2006/04/07(金) 21:47:38 ] 100get!!
101 名前:デフォルトの名無しさん mailto:sage [2006/04/09(日) 23:06:57 ] >>99 簡単だ
102 名前:デフォルトの名無しさん mailto:sage [2006/04/10(月) 00:21:52 ] >>101 うpして
103 名前:デフォルトの名無しさん mailto:sage [2006/04/10(月) 02:04:26 ] if(名前!="デフォルトの名無しさん"){ for(;;)MessageBox("荒らしだーーーーーーー!!!!"); }
104 名前:デフォルトの名無しさん mailto:sage [2006/04/10(月) 12:18:52 ] >>103 が荒らし。
105 名前:デフォルトの名無しさん mailto:sage [2006/04/12(水) 10:18:39 ] puts(レスの内容); puts("これ荒らし?[y/n]"); if(getchar() == 'y') for(;;) puts("荒らしだーーーーーーー!!!!");
106 名前:デフォルトの名無しさん mailto:sage [2006/04/12(水) 22:22:58 ] 今、プログラマの数学って本を読んでるんだけど そこに出てくるハノイの塔の再帰的処理が理解できない。 どこを繰り返し処理してるの? パターンがある事に気付けないんだけど。 ちなみに階乗のアルゴリズムが再帰的だとは理解できます。 5!=5*4! 4!=4*3! 3!=3*2! 2!=2*1! 1!=1*0! 0!=1
107 名前:デフォルトの名無しさん mailto:sage [2006/04/12(水) 22:24:34 ] 本にはハノイの塔を解く手順、 すなわち3本の柱が左からA, B, Cとあって、 n枚の円盤を柱xから柱yへ柱zを利用して移す手順 をC言語で書いてある。 #include <stdio.h> #include <stdlib.h> void hanoi(int n, char x, char y, char z); void hanoi(int n, char x, char y, char z) { if(n == 0){ //何もしない } else{ hanoi(n-1, x, z, y); printf("%c->%c, ", x, y); hanoi(n-1, z, y, x); } } int main(void) { hanoi(6, 'A', 'B', 'C'); return 0; }
108 名前:デフォルトの名無しさん mailto:sage [2006/04/12(水) 22:33:07 ] 解き方を見てから強いてパターンを見つけると 1回目は、必ずAとCの間でやり取りをする。 2回目は、必ずAとBの間でやり取りをする。 3回目は、必ずBとCの間でやり取りをする。 で、また1回目に戻る。 でも、例えば1回目はAとCでやり取りすることは分かっても どっちからどっちへ円盤を移すかはどうしてアルゴリズムから分かるの? 人間は「"小さい円盤"の方から"大きい円盤"の方へ」って 目で見て判断できるけど、コンピュータはできないのに。
109 名前:デフォルトの名無しさん mailto:sage [2006/04/12(水) 22:35:40 ] >>106 ディスクN-ディスク1をバーAからバーBに移動しようとしたとする。 その行程は、 ・ディスクN-1-ディスク1をバーAからバーCに移動 ・ディスクNをバーAからバーBに移動 ・ディスクN-1-ディスク1をバーCからバーBに移動 と書ける。 関数形式で書くとすると、 void moveDisk(int n, Bar a, Bar b) { printf("ディスク%d を バー%dからバー%dに移動\n", n, a, b); } void hanoi(int n, Bar a, Bar b, Bar c) { if (n > 0) { hanoi(n - 1, a, c, b); moveDisk(n, a, b); hanoi(n - 1, c, b, a); } } こうなる。 Nが3辺りのときの振る舞いを自分で追ってみればよく判ると思う。
110 名前:デフォルトの名無しさん mailto:sage [2006/04/13(木) 02:18:16 ] ・n=5を解くには |54321 | | ↓(n=4を解く) |5 | |4321 ↓ | |5 |4321 ↓(n=4を解く) | |54321 | ・n=4を解くには(以下略) ... ・n=1を解くには
111 名前:デフォルトの名無しさん [2006/04/14(金) 22:08:53 ] >>99 アルゴリズムを考えるアルゴリズムがわかってないはずだから無理だとおもいまーす。 荒らすのはそのアルゴリズムかどうかもわからないんだっけ、 わかってるんだっけ?
112 名前:デフォルトの名無しさん [2006/04/14(金) 22:12:21 ] 日本語でおk
113 名前:デフォルトの名無しさん [2006/04/15(土) 01:08:54 ] >>1 アルゴリズムマニアの日記 d.hatena.ne.jp/higotakayuki/
114 名前:デフォルトの名無しさん [2006/04/16(日) 13:12:26 ] だれか突撃しろ
115 名前:デフォルトの名無しさん mailto:sage [2006/04/16(日) 13:58:15 ] は?
116 名前:デフォルトの名無しさん [2006/04/18(火) 12:44:20 ] 物凄い簡単なものなのかもしれませんが分からないので質問。 n本のマッチがあって、一回に1〜3本取れる。 自分は先手で、最後の一本をとったら勝ちになる。 必勝のアルゴリズムを教えてください。
117 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 12:55:41 ] 残りが4の倍数になるように取る
118 名前:デフォルトの名無しさん [2006/04/18(火) 12:57:03 ] 残りが3i+1になるように取る
119 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 13:21:41 ] >>118 ( ・д・)……
120 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 13:41:09 ] >>118 残り7で相手が3取って終了。
121 名前:デフォルトの名無しさん [2006/04/18(火) 13:46:24 ] >>120
122 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 14:57:39 ] マッチ棒を取った本数がポイントになるが、 最後の一本は-10点とかだったらどうだろう?
123 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 18:33:39 ] >>122 その場合は最後の一本を取ったら負けというルールとほぼ等しいので、 4の倍数+1になるようにすればいい。
124 名前:デフォルトの名無しさん [2006/04/18(火) 18:42:44 ] >>123 たとえば、1000の棒を取る時にはどうよ? 相手がずっと3取ってたら負けね?
125 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 19:04:42 ] お互いに3本づつとっていって、残り6〜7本あたりから勝負かな 勝ちパターン考えるのはメンドクセ
126 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 19:24:24 ] 意外と深いな。 最後の一本をとったら負けというのなら簡単なんだけど。
127 名前:123 mailto:sage [2006/04/18(火) 19:47:28 ] >>124 すまん、マッチ棒という前提を読んだ段階で1000本は想定外だった。
128 名前:デフォルトの名無しさん [2006/04/18(火) 20:37:04 ] アルゴリズム初心者には難しいのか?orz もう少し頑張ってみます。 フローも書かないと・・・orz
129 名前:デフォルトの名無しさん mailto:sage [2006/04/18(火) 21:01:01 ] ゲーム理論に帰着されそうな予感
130 名前:デフォルトの名無しさん [2006/04/19(水) 10:52:29 ] 前のターンまで同数の場合は、21を取った方が勝ちか引き分けに なるんだけど、自分が21を取る為にそれより前のターンで本数調整 したら勝てなくなるから、結局最初の本数で決まりそう。
131 名前:デフォルトの名無しさん [2006/04/24(月) 01:25:04 ] / ̄ ̄ ̄ ̄ ̄ ̄ ̄\ ── = ニ /=、。。。。。。。。。。。。。。。。r=、ヽ ─ =ニ三 (◎ ヽ-─────(◎ ) ノ◎、 |\ \ / / | /◎、 (_,rへ `ソ /> ◎) (◎く| レ' ,rへ ) ─ = ニ \◎'/ / \ ヽ、◎/ ノ / \ ヽ ─ =ニ三 ( ◎( ) ◎) ─ = ー、_ら ⊂、_,r´ このマシンがどうして前に進むのか教えてください。 普通だったら両方から押し合いへし合いして動かない気がするのです。
132 名前:デフォルトの名無しさん mailto:sage [2006/04/24(月) 07:23:34 ] それは、コックリさんの原理だよ
133 名前:デフォルトの名無しさん mailto:sage [2006/04/24(月) 08:43:58 ] この場所に秘密があるんじゃないかな maps.google.com/maps?t=k&om=1&ll=37.401094,-116.868725&spn=0.006162,0.009291
134 名前:デフォルトの名無しさん mailto:sage [2006/04/24(月) 17:55:54 ] >>133 ベームベーム?
135 名前:デフォルトの名無しさん mailto:sage [2006/04/25(火) 11:18:11 ] 右側の足は後ろ歩きすればいいんじゃね?
136 名前:デフォルトの名無しさん mailto:sage [2006/04/26(水) 15:15:15 ] >>88 リストソートはスキップリストで決まりかな。
137 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 20:11:49 ] アルゴリズムの仕様を記述する言語作れないかな。
138 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 20:13:31 ] それ日本語でよくね?
139 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 20:20:02 ] いや、コンピュータで扱えるようにしたらなんかいいことあるかと思って。 たとえば実装が仕様にあってるかどうかテストできるとか。 あとアルゴリズムのデータベースつくってその言語で検索とかできないかなーと。
140 名前:デフォルトの名無しさん mailto:sage [2006/04/29(土) 23:52:59 ] 実装の検証ってどの程度のものを想定している? それによって話は全然変わってくるんだが.
141 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 08:04:28 ] 入力データもある程度自動生成してくれて、出力結果も検証してくれるやつ。 まあ完璧なテストは無理だけどある程度のテストはできそう。
142 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 08:08:46 ] それは実装の検証じゃなくて入出力の検証だよね。 ユニットテストのすごいバージョンってことでいいの?
143 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 08:20:09 ] 入出力が正しければ実装も正しいというのは間違いですか? まあ、確かにユニットテストのすごいバージョンです。
144 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 09:08:16 ] 同じ入力に対して同じ出力を得られたからと言って、 アルゴリズムが同一とは限らないわけで・・・ 入出力を検証しても必ずしも実装が正しいかどうかは分からないよね。 例えば安定クイックソートの実装のつもりでテストをして、 実際に実装されているのはバブルソートだったとしても出力だけでは分からないはず。
145 名前:デフォルトの名無しさん mailto:sage [2006/04/30(日) 15:27:28 ] >>144 複雑度のテストとして、要素数の規模を変えて数回テストし、 実行時間の変化を見てくれるとか、うーん、むずかしいかな。
146 名前:137 mailto:sage [2006/05/01(月) 20:03:42 ] クイックソートもバブルソートもどちらもソートだから区別する必要は無いと考えています。 入出力の仕様の定義だけ行う言語を作るのも意味はあるかと。 そのあとどんな実装を行うかはまた別の問題ということで。
147 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 20:10:43 ] 一階述語論理で良ければ Prolog でいいんじゃないの?
148 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 20:15:50 BE:209674728- ] ソートだってアルゴリズムじゃないか。 仕様を後付けしすぎ。
149 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 20:46:10 ] >>146 O(n log n) のソートと O(n^2) のソートは 質的に全然違うものなので、それを記述できない言語は アルゴリズムを記述するには不適当。
150 名前:137 mailto:sage [2006/05/01(月) 21:09:12 ] >>149 よく考えてみたらアルゴリズムを記述する言語というのが間違いでした。 私がほしかったのは問題を記述する言語とでもいいましょうか。 アルゴリズムが満たさなければいけない条件を定義したかったのです。
151 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 21:14:22 ] >>150 わかってねえなあ。 「O(n log n) である」 ことを 「満たさなければいけない条件」 として 書けないと、全然意味が無いんだって。 「O(n log n) でないと破綻する入力」 みたいなのを自動生成 できりゃいいけどさ、そんなのは不可能だ。
152 名前:137 mailto:sage [2006/05/01(月) 21:26:01 ] スピードに関していえばソートのような良く研究されたアルゴリズム は最適解がわかってますが、最適解がわかってない問題もたくさんある わけですし、それほど重要とは思っていません。
153 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 21:28:18 ] >>152 研究用途ならそういう結論になるかもしれないな。 だが計算量を記述できなければ実用の道をほとんど閉ざすことになる。
154 名前:137 mailto:sage [2006/05/01(月) 21:38:14 ] スピードは実装ががんばればいい話であって、仕様には関係の無い話です。 どれくらい頑張れるかは不明な場合が多いのです。 私は仕様を書いたら即動くものができるというようなことは考えていません。 実装する際に何らかの役に立てばいいと思っています。
155 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 21:48:48 ] アルゴリズムの仕様を記述する目的でPASCALで不足する部分は何?
156 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 22:00:19 ] >>154 世の中にはスピードが問題になることも多々あるわけだが。 理論上は可能、ただし、処理に10億年掛かります、とかね。 そもそも仕様が適当すぎ。荒らしに来たとしか思えない。
157 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 22:02:12 ] ていうかさ、作りたければ作ればいいじゃん。 このスレ(の住人)に何を求めてるの?
158 名前:137 mailto:sage [2006/05/01(月) 22:14:20 ] >>155 原理的にPASCALでかけないものなんて無いでしょう。 もうちょっと楽にならないかなという程度のことです。 >>156 スピードを仕様に盛り込んだとしても達成できなければ意味が無いのです。 たとえばソートをO(logn)でやれといっても無理な話です。 結局できることといったら存在する実装から一番いいものを選ぶだけなんです。 >>157 まあ、一緒になって考えていただければ。
159 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 22:38:10 ] 計算量を実装が頑張ればいい話とかいってる時点で このひとが全然アルゴリズムを理解していないことが分かる。
160 名前:137 mailto:sage [2006/05/01(月) 22:45:07 ] ですから、私が最初にアルゴリズムといったのが間違いで、 解くべき問題を記述したいのです。 ソートには色々な計算量のソートがありますが、目的はどのソートも同じです。 その同じな部分を扱いたいのです。
161 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 22:56:44 ] じゃあすれ違い。
162 名前:デフォルトの名無しさん mailto:sage [2006/05/01(月) 23:02:52 ] つーか同じソートでも目的が違うから複数のアルゴリズムがあるんだが
163 名前:デフォルトの名無しさん [2006/05/02(火) 00:12:14 ] >>158 >まあ、一緒になって考えていただければ。 情報を小出しにし、わけの分からない仕様を提示し、アルゴリズムの話ですらないのに その上、出て来た意見を片っ端から否定しといて「一緒になって」も無いだろ
164 名前:137 mailto:sage [2006/05/02(火) 00:16:19 ] お前らみたいな低脳とホントに一緒に考えられるわけねぇだろ。 リップサービスと言う言葉の意味を考えてみたらどうだ?
165 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 00:16:35 ] ナタク…。俺はどうしたらいい?
166 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 00:32:18 ] きっと>>137 は 0+0=0 0+1=1 1+0=1 1+1=0 だけであらゆるプログラムを作れるんだろうな。
167 名前:デフォルトの名無しさん mailto:sage [2006/05/02(火) 02:33:34 ] おめぇら、形式的仕様記述について知ってる事を書け pc2.2ch.net/test/read.cgi/tech/1013507313/l50 こういうスレが欲しかったんだろ? さあ逝ってきな
168 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 13:02:09 ] 浮動小数(例えば[3バイト符号付整数] × [2のn乗|nは1バイト符合付き整数])を、 対応する十進数(例えば[4バイトBCD] × [10のN乗|Nは1バイト符合付き整数]) に変換するのはどうしたらいいかな。 当然、与えられた浮動小数の符合付き整数部のMSBは1に、 結果のBCDの最上位ニブルは0以外に正規化(?)されているものとする。 8ビットマイコンのアセンブラ想定でよろしく。
169 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 13:18:25 ] アルゴリズムもクソもそのままやるしかないでしょ どっちかいうと実装テクニックじゃない
170 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 14:53:07 ] >>169 アルゴリズムとそうでないものの違いは「俺様が関心があるかどうか」 の違いではないでしょうw
171 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 14:55:27 ] まあ愚直にやるっきゃないのは確かっぽいが
172 名前:デフォルトの名無しさん mailto:sage [2006/05/05(金) 14:56:09 ] 8bitなら、2^N = b*10^M のテーブルを作っておいて a*2^N = a*b*10^M とやって正規化するくらいだね
173 名前:デフォルトの名無しさん [2006/05/07(日) 18:59:04 ] アルゴリズム好きとかものすんごいうらやましい。
174 名前:デフォルトの名無しさん mailto:sage [2006/05/07(日) 22:05:07 ] 逆に趣味でプログラミングやってますとかっていうヤツのなかにも 希に「そこを自分で考えるのが楽しいんだろ」ていう部分を メーリングリストや掲示板で「どうやったらいいんでしょうか?」とかって 訊いてくるヤツのことがサッパリ理解できない。
175 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 01:00:24 ] >>174 そこを自分で考えるのが楽しいんだろ?
176 名前:デフォルトの名無しさん mailto:sage [2006/05/08(月) 15:13:52 ] >>175 そういうレスを返すヤツのことがサッパリ理解できない。
177 名前:デフォルトの名無しさん [2006/05/08(月) 15:18:44 ] >>173 >>113
178 名前:デフォルトの名無しさん mailto:sage [2006/05/11(木) 18:47:21 ] ドッキングツールバーの設計をやっているけれど、 なかなかいい構造が思いつかない。
179 名前:174 mailto:sage [2006/05/11(木) 21:46:41 ] >>178 こーゆーケースは理解できるし共感できる。
180 名前:デフォルトの名無しさん mailto:sage [2006/05/12(金) 12:43:47 ] ところでアルゴリズムを相談するスレってどこ?
181 名前:デフォルトの名無しさん mailto:sage [2006/05/12(金) 19:21:09 ] ここでいいよ
182 名前:デフォルトの名無しさん [2006/05/25(木) 12:15:42 ] あげ
183 名前:デフォルトの名無しさん [2006/06/08(木) 07:52:46 ] なあ、グランドにごっちゃに人集めて、 はい背の順に整列! って時さ、 全員がクイックソート理解してたと仮定して、その通りに整列してもらうより 普通に整列させた方が速そうじゃない? モデル化すると、要素全てが各々同時並列的に他の任意の要素の値を知れる場合 そして要素が同時並列的に移動できる場合
184 名前:デフォルトの名無しさん mailto:sage [2006/06/08(木) 08:47:32 ] コンピュータモデルとの一番の違いはデータの移動のコストが低いことだな。 大雑把にソートした列に、後はデータ自身が自分の入るべき場所を見つけて両側のデータに対して スペースを作るように要求する感じかね。 オブジェクト指向のいいテストケースになりそうだが。
185 名前:デフォルトの名無しさん mailto:sage [2006/06/08(木) 15:51:28 ] >普通に整列 脳はだいたい基数ソートみたいなことをしているんだってさ
186 名前:デフォルトの名無しさん mailto:sage [2006/06/08(木) 17:05:29 BE:69876566-#] 「普通に整列」の手順を考えてみる。 周りのオブジェクト全部をみて整列する人はまずいない。 だいたい自分がどのくらいの序列になるか予想して、整列の初期には近くにいる数人の オブジェクトのうち同じくらいの序列になる物同士で小グループを形成し、グループ内での 序列を決定した後に他の小グループと合体、境界付近を調整する。 小グループ同士が合体したあとにオブジェクトが余っている場合も、自分の序列がどれくらい かを予想してそこに近い部分集合の中から自分の序列を決定する。 つーわけで、段階的にマージソートと挿入ソートを同時多発的にやっているような気がする。
187 名前:デフォルトの名無しさん mailto:sage [2006/06/08(木) 18:33:14 ] >>186 >同じくらいの序列になる物同士で小グループを形成し これがマージソートと根本的に違うところ. 簡単のため小グループとして「背の低いグループと背の高いグループ」 を取って,それぞれで再帰的に計算してやることにする. マージソートだと,それぞれをソートした結果をマージするときに 前半のトップと後半のトップを比較して云々とやらないといけなくて, マージの部分の計算量が O(n) になり,合計として O(n log n) になる. しかし,「普通に整列」の場合は前半のほうが後半よりも小さいと わかっているので単純にくっつければよく,マージの部分の計算量が O(1) ですむ. その結果,合計として O(n) でソートできるようになる.
188 名前:187 mailto:sage [2006/06/08(木) 18:37:48 ] スマソ,長々と書いていながら誤読してた. 自分の経験から小さい人は前,大きい人は後ろに行って,そこでソート をやってるもんだと思いこんでいた. その逆の近くに居る人たちから結合することを考えていたのか.申し訳ない. #多分それでも「合体」の部分で適当にオラクルが利いて O(n) になるとは思うが
189 名前:デフォルトの名無しさん mailto:sage [2006/06/08(木) 21:38:20 ] 自分がどの程度の背の高さになるかは把握してるとするなら、 最初の移動は粒度の荒いバケツでバケツソートってことになる。 バケツ内での並び替えはどうやってるんかな。 100人の場合と1000人の場合で実験してみないとなんともいえないが・・・
190 名前:デフォルトの名無しさん mailto:sage [2006/06/09(金) 00:23:26 ] だんだんバケツが小さくなる
191 名前:デフォルトの名無しさん mailto:sage [2006/06/09(金) 07:50:53 ] マジレスすると、 1)全生徒はそれぞれ「自分及び他人が(同年代の中で)どの程度の背の高さか」を感覚的に知っている。恐らくはクラスの背の順等の経験から。10%程度の粒度で。 2)全生徒はそれぞれ個別に(=同時に)自分が特定の他者より高いか低いかを判断してそれらしい位置に移動することが出来る。 3)数が多くなればなるほど、身長の近い者が逆順に並んでいても問題にしない。 以上の要因から、CPU一個が無情報で正確にソートしなければならないことを前提としたアルゴリズムに時間的に優っているのである。
192 名前:デフォルトの名無しさん mailto:sage [2006/06/09(金) 09:57:16 ] >>191 3)に関しては相手にお前何センチって聞けばいんじゃね
193 名前:デフォルトの名無しさん mailto:sage [2006/06/09(金) 11:38:13 BE:108696487-#] >>191 機械がやる場合、たとえば標準偏差を与えて記憶や経験の代わりに予想の根拠とすることは できるような気がする。
194 名前:デフォルトの名無しさん mailto:sage [2006/06/09(金) 11:53:31 ] n 人で整列するとして、 ・頭が n 個あるので log n 時間で整列が可能。 ・人間が寝ている場合には、 n 台のロボットを使って log n 時間で整列可能。 ただし、 n が大きくなってくると、入れ替えるために移動させるためにかかる時間の方が 支配的になってくるので、O(n) になる。
195 名前:デフォルトの名無しさん mailto:sage [2006/06/09(金) 20:29:46 ] たとえば、探索の場合には、 線形探索や二分探索という位置決めがデータによらない手法に対して、 データの種類によって次の探索位置を変える内挿探索という手法がある。
196 名前:デフォルトの名無しさん [2006/06/09(金) 21:22:52 ] 3次元空間上に2つの直線があって、 もしその2直線が交点を持つなら、 交点を計算するアルゴリズムってどうなりますか? 2次元平面上での交点計算みたいに方程式作ってもうまくいかないんですが・・・ なんかヒントくれるとありがたいです。
197 名前:デフォルトの名無しさん mailto:sage [2006/06/09(金) 21:34:09 ] 方程式で解くんじゃないの? 直線A:(x(s), y(s), z(s)) 直線B:(x(t), y(t), z(t)) とパラメータ表示して、連立方程式 x(s)=x(t), y(s)=y(t) から s, t を求める。 ここで解があれば、さらにz座標の式にいれてすべての座標が一致するかどうか確かめる。
198 名前:デフォルトの名無しさん mailto:sage [2006/06/09(金) 21:40:16 ] あ〜、なるほど。 先に2次元で解いておいて、3次元にしてもOKか見るわけですね。 なんか頭混乱してて、こんなこともわからなかったです・・・ ありがとうございました。
199 名前:デフォルトの名無しさん mailto:sage [2006/06/09(金) 21:52:39 ] 数学板で聞けば一発計算できる公式とか教えてくれそう
200 名前:デフォルトの名無しさん mailto:sage [2006/06/09(金) 22:05:54 ] 大学受験の頃は一発で出せる公式も勉強したかもしれんが、もう忘れたな。
201 名前:デフォルトの名無しさん mailto:sage [2006/06/09(金) 22:25:30 ] 忘れたなら何度でも導けばいい
202 名前:デフォルトの名無しさん [2006/06/10(土) 16:23:04 ] 俺なら (最大値 - 俺の値)/(最大値 - 最小値) で数直線上の何%くらいに位置するか検討をつけ、 この場合は身長の分布を思い出して、区間の人数割合を想像してから 自分の属する区間あたりにまず向かう。 適当に整列されて来たら 自分より背の高い奴がすぐ前にいればそいつの前に出る。
203 名前:デフォルトの名無しさん [2006/06/12(月) 21:23:27 ] アルゴリズムの達人が集まってるスレはここですか? 質問なんだけど、BPマッチングっていうアルゴリズムって存在する?検索してもそれらしいのがヒットしないんだが
204 名前:デフォルトの名無しさん mailto:sage [2006/06/13(火) 01:30:01 ] Bipartite Matchingかな
205 名前:デフォルトの名無しさん mailto:sage [2006/06/13(火) 15:41:11 ] DPマッチングの読み間違いとか
206 名前:デフォルトの名無しさん [2006/06/13(火) 15:42:01 ] クイックsortより速いソート挙げて
207 名前:デフォルトの名無しさん mailto:sage [2006/06/13(火) 16:07:21 ] スーパーウルトラデラックスsort
208 名前:デフォルトの名無しさん mailto:sage [2006/06/13(火) 16:15:30 ] 基数ソート
209 名前:デフォルトの名無しさん mailto:sage [2006/06/13(火) 16:32:32 ] バケツソート
210 名前:デフォルトの名無しさん mailto:sage [2006/06/13(火) 16:33:40 ] あらかじめソートされたデータだけしか扱わないようにする
211 名前:デフォルトの名無しさん [2006/06/13(火) 17:06:19 ] ソート済みリストをソートしようとしたら もっとも速く処理が終る(もとと同じリストを吐き出す)ソートは?
212 名前:デフォルトの名無しさん mailto:sage [2006/06/13(火) 21:37:45 ] >>211 挿入ソート、バブルソート どちらも一回の走査で終了を検出できてO(N)
213 名前:デフォルトの名無しさん [2006/06/14(水) 10:40:11 ] マージソートでは?
214 名前:デフォルトの名無しさん mailto:sage [2006/06/15(木) 16:17:06 ] マージ部分で手を抜くと O(n log n). ただ,ちょっと賢くマージをすると O(n) になる.
215 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 18:41:04 ] ここで質問してもいいでしょうか? 記号列 S1={aabbbcccceefffggggxxxxyzzzz} S2={xxxyzzzzzzzzqqqqcceeff} みたいなのがあり、 それぞれの記号列の中で一致している長さX(可変、無限に長くしたい)以上の部分列を全て挙げる この例では、X=5としたら {cceeff} {xxxyzzzz} を挙げる。 これを、できるだけ計算量とメモリを節約してやるアルゴリズムは? それから、このアルゴリズム(この問題)には名前みたいなのあります?
216 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 20:12:01 ] 名前があるか知らんが、ちょこっと考えたもの S1とS2の半直線部分文字列を、マージ後ソートして比較する メモリは、文字列を記憶するメモリ+文字数×(sizeof(ポインタ)+記号列を特定するIDなど) 速度は、クイックソートでも使えば速そう 半直線部分文字列のソート後には abbbcccceefffggggxxxxyzzzz(S1) ... cceeff(S2) cceefffggggxxxxyzzzz(S1) ... xxxyzzzz(S1) xxxyzzzzzzzzqqqqcceeff(S2) ... zzzzzzzzqqqqcceeff(S2) てな感じに並んでるかな、文字列がメモリ中にあればポインタだけソートすればOK。任意の長さの一致が全て判明する。
217 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 21:27:48 ] {ceeff}とか{cceef}とか{xxxyz}とかは解の候補にならないの?
218 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 21:30:05 ] >>215 S1,S2のSuffix Arrayを生成してからマージするような形で判定していけば良いと思う。 まぁ、ぶっちゃけ>>216 のマージとソートの順序が逆になっただけだけど。
219 名前:デフォルトの名無しさん mailto:sage [2006/06/26(月) 21:31:11 ] >>215 Xが何の長さなのかわからんし、何が一致しているのかわからん 総じて何を言いたいのかさっぱりわからん
220 名前:219 mailto:sage [2006/06/26(月) 21:35:29 ] すまん、「以上」を読み落としてた 意味はわかったが、アルゴリズムは全然思いつかない
221 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 12:17:48 ] マージしてソートってよくわからん。 とりあえずバカ正直な方法は aabbbcccceefffggggxxxxyzzzz(s1) xxxyzzzzzzzzqqqqcceeff (s2_0) ・・・ xxxyzzzzzzzzqqqqcceeff (s2_3) ・・・ ceeff xxxyzzzzzzzzqqqqc(s2_10) と、一方の文字列をずらしていって、一致する部分を探すことかな。 初めに文字のパターンを調べて、例えば a, b といった文字は片方にしか含まれないから そういう位置ではパターン検索を省略できるとかくらいかな。
222 名前:215 mailto:sage [2006/06/27(火) 15:33:41 ] すみません >>221 と同じく、>>216 の方法 よくわかりませんでした。 221 だと計算量 は |S1|×|S2|×|短い方| ぐらいなると思うんですが、 216 だともっと計算量減るでしょうか >>217 それも解候補です。 本当は"極大"な解だけにしたいんですが、 今は全部出していいです。 例として aaabbbccc.. なんていうのを出してしまいましたが、 本当はもっとランダムな任意の記号列でやりたいのです。
223 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 16:01:48 ] まず、一方の文字列から「辞書」を作る aabbbcccceefffggggxxxxyzzzz から a: aabbb, abbbc, b: bbbcc, bbccc, bcccc ・・・ y: yzzzz (説明のために5文字だけだけど、当然、最長パターンまで作っても良い) 次に、もう一方の文字列から、一文字読み込んで、 そこから始まる文字列パターンが「辞書」に登録されてるか調べる。 メモリは食いそうだが、総当たりで調べるよりは少なくなる気がする
224 名前:デフォルトの名無しさん mailto:sage [2006/06/27(火) 20:09:13 ] >>222 処理時間の大部分はソートの時間、クイックソートを使うとして O(N log(N)) Nは|S1|+|S2| 特殊な例外を除いて計算量は減る。 問題は、文字数×8バイト(32bitマシンで)のポインタ領域が必要なこと
225 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 09:48:42 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2200.c マージしてからソートはよくわからなかったから ソートしてからマージで書いた.きちんと証明してないから 正当性はよくわからん. Suffix Array の構成は O(n) でできることが知られていて, マージの部分も同じ文字列を何度も比較するのをやめれば O( (n+m)*min(n,m) ) でできる.合計して O( (n+m) * min(n,m) ).
226 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 09:58:26 ] >>224 長い文字列の比較はそれ自身コストが高いということを忘れてない?
227 名前:デフォルトの名無しさん mailto:sage [2006/06/28(水) 16:44:35 ] >>226 もしかして最後の文字まで比較してると思ってる?
228 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 06:56:52 ] 最後まで比較せずに済むという保証はどこにもない。
229 名前:デフォルトの名無しさん mailto:sage [2006/07/03(月) 12:45:58 ] >>216 は、n-gram統計における「長尾・森の方法」だな。 岩波のソフトウェア科学の15巻参照 100万字での任意長重複列挙が1秒(Pen-M 1.5GHz)ってとこ。 ソートは文字列専用のソートを利用(単純なクイックソートをちょいと工夫) >>224 や>>228 のいう「特殊な例外」(たとえばS1とS2が等しかったり、S1が S2を包含する場合)では計算量は他の方法並みに大きくなる。
230 名前:デフォルトの名無しさん mailto:sage [2006/07/08(土) 16:49:56 ] 大量のエロ動画をRに焼こうと思うが、Rが最小枚数で済む様に最適化するアルゴリズム(もしくは応用できそうなアルゴリズム)ってある?
231 名前:デフォルトの名無しさん mailto:sage [2006/07/08(土) 17:04:06 ] ビン詰め問題とかいう名前であった気がする。 その手の問題は、最適解を見つけるアルゴリズムは見つかってないか、 アルゴリズムが存在しないことが証明されてる(すべての組み合わせを調べるしかない) ただし、最適解じゃないけど、そこそこ良い組み合わせを得る方法が研究されてる。
232 名前:デフォルトの名無しさん mailto:sage [2006/07/08(土) 17:11:33 ] Hopfieldニューラルネットワークの最適化問題とか。
233 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 10:27:22 ] >>230 使える動画を 6 種類ローテで回して、単なる水着を一つ入れておくってどう? これで一週間回せると思うけど。
234 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 14:51:21 ] ナップサック問題とはどう違うの?
235 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 15:49:37 ] いわゆる「ナップサック問題」は、袋の最大値が決まってて荷物の総価値が最大にするように選ぶって問題だよね。 荷物を全部入れる必要はない。 この質問は、荷物の全体が決まってて袋の数を最小にするって問題で、荷物を全部入れる必要がある。 だから問題としては違うんじゃないの。 アルゴリズムの本質的なテクニックは同じなのかも知れないけど。
236 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 18:44:50 ] どうせRに保存した動画なんてこの先見やしないので、 1枚用意して、そこに全動画を保存したと思い込めばok
237 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 21:36:04 ] どなたか、シェルソートとバブルソートの処理時間に差が出る ことについて初心者でも分かるように説明させて くださいませんでしょうか?お願いいたします。
238 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 22:36:14 ] 適当にかき混ぜながらソートするので, バブルソートや挿入ソートで遅くなるケースを回避しやすいから.
239 名前:デフォルトの名無しさん mailto:sage [2006/07/10(月) 23:47:37 ] もちろん速くなるケースも回避しやすい.
240 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 07:53:20 ] で,結局どれくらいになるかは根性で期待値計算すると O(n^{3/2}) とか見えてくる,
241 名前:デフォルトの名無しさん mailto:sage [2006/07/11(火) 07:56:35 ] よって初心者でも分かるように説明するのは無理.
242 名前:デフォルトの名無しさん [2006/07/17(月) 16:04:35 ] 以下のような単語がいくつかあった場合、 その全ての組み合わせのパターンを算出 するアルゴリズムってないですか? カレー 餃子 牛丼 ラーメン カレー 牛丼 餃子 ラーメン 牛丼 餃子 ラーメン カレー ・・・ ・・・ ・・・
243 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 16:10:44 ] 総当りするしかないだろ。
244 名前:笹井奈琴 mailto:sage [2006/07/17(月) 16:10:57 ] >>242 宿題スレの方が
245 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 16:11:46 ] std::next_permutation?
246 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 16:11:57 ] >>242 ルール説明が雑すぎ
247 名前:デフォルトの名無しさん mailto:sage [2006/07/17(月) 16:51:29 ] >>242 順列の計算習うのって中学だっけ高校だったっけ。
248 名前:デフォルトの名無しさん [2006/07/19(水) 19:50:12 ] 様々な大きさの矩形を整列させるアルゴリズムって既に有名な方法があります? 具体的には、横:sx 縦:syの大きさを持つ長方形を、なるべく無駄が出ないように 正方形の中に敷き詰めるような動作です。 //----------------------------------------------------------------- struct SIZE { int sx; int sy; }; struct POINT { int x; int y; }; const int nBoxCount = 1000; SIZE box[nBoxCount] = {{10,10}, {7,5}, {3,8}, ...こんな感じで1000個 POINT pos[nBoxCount]; // ←ここに整列後の位置座標を保存する //----------------------------------------------------------------- 敷き詰め先の正方形のサイズは問いません。 (後でスケールを調整して、0.0〜1.0の浮動小数点座標に変換するので) 「なるべく無駄なく」「正方形に」敷き詰める事を重視してます。 とはいえ、整列時に矩形の辺同士を無理にくっつける必要はありません。 上記を満たすようなアルゴリズムが既に存在しているようなら、 そのアルゴリズム名を教えていただけませんか? (話を単純化させるため、こんな書き方をしましたが、最終的には 3D空間内全ての4頂点ポリゴンを平面投影し、それらを 正方形面=テクスチャUV空間 に敷き詰める動作をさせたいです)
249 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 19:52:44 ] 遺伝的アルゴリズムでそんな研究が合ったような気がするなあ……
250 名前:デフォルトの名無しさん [2006/07/19(水) 20:08:25 ] >>248 全部の組み合わせを評価するってのはダメなの? 一つの正方形に1,000個落とすって、枠に対する長方形の大きさが小さすぎて、 現実的に意味なくない? ランダムに落としても、さほど差がないように思う けれど。
251 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 20:18:41 ] なんか、丸の問題なら見たなー それは、箱の中に数個の点を置きそれをちょっとづつ大きくしてくのだったかな・・・・? これでやるときは、ランダムに座標を取って、ちょっとづつサイズを大きくしていき 当たり判定で、やるんだっけか? まあ、プログラミング習ったばっかで読んだから忘れた
252 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 20:19:55 ] と書き終わってみたら、長方形じゃ無理か・・・・・
253 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 20:36:33 ] ネスティング(Nesting) アルゴリズムで検索してみ 普通は任意形状の配置だけど
254 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 20:40:36 ] >>248 じゃないけど。 >>250 > 全部の組み合わせを評価するってのはダメなの? 理論的には出来るけど、何通りになると思う? 1000個の長方形を単純に一列にならべるだけで1000! 通り(大きすぎてよくわからん) 各長方形の縦横の向きまで考えれば、上の組み合わせにさらに2^1000をかけたものになる。
255 名前:248 [2006/07/19(水) 20:47:59 ] >>249-254 の方々、色々な情報ありがとうございました。 >>253 素晴らしいです! かなりヒントになりました。 この辺キーワードで検索かけまくって、お勉強いたします。
256 名前:デフォルトの名無しさん mailto:sage [2006/07/19(水) 20:54:38 ] Expose?
257 名前:デフォルトの名無しさん [2006/07/20(木) 04:06:59 ] ↓こんな処理を考えています。 // 「 former は latter よりも前にこなければならない」という順序付け struct ordering { int former, latter; }; // M 個の順序付け orderings に基づいて [0, N) の整数を並べ替えた結果を // sorted に格納する。 // ただし orderings の全ての要素について former != latter であることが // 保証されており、矛盾する順序付けも含まれていないとする。 void sort_by_ordering_set( int sorted[] , int N , struct ordering const orderings[] , int M ); ・この処理(問題)に、何か良く知られた名前が付いていればおしえてください。 ・N, M に対する複雑度はどれぐらいになるでしょうか? ・お勧めのアルゴリズムがあれば教えてください。 ここ数日、仕事の片手間にいろいろ考えているんですが、 速度を無視した実装すらできていません。 今は make のソースでも見たらいいんだろうか、とか思っています。
258 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 04:34:04 ] トポロジカルソートでぐぐれ
259 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 12:46:21 ] >速度を無視した実装すらできていません。 Javaでやってみました。 void sortByOrderingSet(int[] sorted, int[][] orderings) { boolean[] visited = new boolean[sorted.length]; for (int p = 0; p < sorted.length;) { YET: for (int i = 0; i < sorted.length; i++) { if (visited[i]) continue; for (int j = 0; j < orderings.length; j++) if (i == orderings[j][1] && !visited[orderings[j][0]]) continue YET; visited[sorted[p++] = i] = true; } } }
260 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 13:38:35 ] >>257 アルゴリズムの話じゃないが "latter" は "later" に直しとかないと 恥かくんじゃないか?
261 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 13:59:10 ] 半順序関係ってかっこいいよね
262 名前:デフォルトの名無しさん mailto:sage [2006/07/20(木) 14:27:04 ] >>260 former / latter はごくごく一般的な単語 恥かいてるのはあんただよ
263 名前:257 mailto:sage [2006/07/21(金) 00:46:55 ] >>258 , >>259 ありがとうございます。道が開けました。
264 名前:デフォルトの名無しさん mailto:sage [2006/07/30(日) 09:44:29 ] おまいら、半順序木からデータを探すとき、どのくらいの時間がかかるますか? 0(n)くらい?それともちょっとくらいは速くできる?
265 名前:デフォルトの名無しさん mailto:sage [2006/07/31(月) 01:32:32 ] 半順序木だけでやるなら計算量の意味では O(n) が限界。 ランダマイズとかすると減るかもしれんが。 構築段階から手を加えて良いなら、半順序木に要素が追加されるときに ハッシュか何かにその要素を追加し、以後木に編集がかかったときに ハッシュと同期する、とかいうのが常套手段。
266 名前:デフォルトの名無しさん [2006/08/08(火) 20:46:26 ] x が与えられたとき,2^(a+1) > x ≧ 2^a となる 2^a を高速に(ループ等を使わ ず,できればビット演算のみで)求める方法を探しているのですが,そういうア ルゴリズムご存じの方いらっしゃらないでしょうか? 言語は C です.
267 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 20:58:58 ] それは俺も知りたい。 (int)(log(x)/log(2)) じゃマズいよな。
268 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 21:35:37 ] 最上位ビット以外を0にすれば良いわけだな。 (x & x-1) ^ x で最下位ビットが取り出せるので、前後でビットを逆に並べ替えれば良いんだが、 思いつかん。
269 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 22:48:06 ] >>266 ビット演算スレがあるから覗いてみたら?
270 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 22:52:02 ] >>268 ま、どうでもいいけどx&-xのほうがクール
271 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 22:59:39 ] >>270 それだと負の数の表現形式が問題になって嫌な予感。
272 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 23:08:41 ] >>266 ビット数決めうちなら以下の手がある(CPU依存の命令使うという手もあるが省略)。 x |= x>>1 x |= x>>2 x |= x>>4 x |= x>>8 x |= x>>16 x ^= x>>1
273 名前:デフォルトの名無しさん [2006/08/08(火) 23:09:04 ] >>296 情報有り難うございます.書き込んでみました.
274 名前:デフォルトの名無しさん mailto:sage [2006/08/08(火) 23:12:36 ] >>272 有り難うございます. 定石があるものとばかり思っていたのですが,意外と難しいんですね... これから解読してみます.
275 名前:272 mailto:sage [2006/08/08(火) 23:19:30 ] >>274 実は上のコードはビット演算マニアから言えば定石だったりする。 もし、詳細が知りたければ「ハッカーの楽しみ」という本を読めばいい。 無駄に深い知識を得ることが出来る。
276 名前:デフォルトの名無しさん [2006/08/08(火) 23:25:27 ] >>275 そういえば積ん読してあったなぁ,と思って探してみたら出てきました. p.51 のやつですね. 理解にかかる時間が節約できそうです.有り難うございました.
277 名前:デフォルトの名無しさん mailto:sage [2006/08/09(水) 20:05:19 ] おまいらマニアつーかヲタクです。
278 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/08/09(水) 20:51:18 ] んで、変換対象のデータが複数ある場合はSSE2を使うと。 static const __m128 fp_mask = { 0xFF800000, 0xFF800000, 0xFF800000, 0xFF800000 }; __asm cvtdq2ps xmm0, xmmword ptr [vsrc] ;//32bit整数×4をロードし単精度×4に変換 __asm andpd xmm0, xmmword ptr [fp_mask] ;//仮数部をゼロクリア __asm cvtps2dq xmm0, xmm0 ;//32bit整数×4に変換 __asm movdqa xmmword ptr [vdest], xmm0 ;//結果をストア 対象データが大量にある場合、まっとうな方法よりこれが一番スループット出るんだよね ソフトパイプラインでレイテンシ埋めれば完璧。
279 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/08/09(水) 20:52:44 ] × __asm andpd xmm0, xmmword ptr [fp_mask] ;//仮数部をゼロクリア ○ __asm andps xmm0, xmmword ptr [fp_mask] ;//仮数部をゼロクリア 演算結果から言えば同じなんだけど
280 名前:デフォルトの名無しさん mailto:sage [2006/08/10(木) 11:13:28 ] >>279 素朴な疑問なんだけど、その両者の違いは32ビット単位か64ビット単位かってことだよね。 実際のCPUの動きとしては、何か違うの? それと、対象データが大量にあるなら>278のfp_maskはxmmレジスタにロードした方がいいのかな?
281 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/08/10(木) 20:32:47 ] CPUの実装にもよるんじゃないかな。 たとえばCore 2 Duoの技術情報には、SIMD整数命令とSIMD浮動小数命令を 同じレジスタ上で混ぜて使うとペナルティが生じるという趣旨のことが書かれてる。 見映え的にも型に合ってない命令を無闇に混ぜないほうがいいかな、と。 「movapsとmovapdとmovdqaって何が違うんだ?」と思ってロード帯域計ってみた ことがあるけど、若干差が生じるんだよな、なぜか。 でもCPUによっては生じないかも知れない。 > fp_maskはxmmレジスタにロードした方がいいのかな? 基本的にはそう。 ロード帯域に余裕がある場合は、レジスタを定数1個のために占有するよりは 処理の並列化のために使った方がいい場合も無くはない。
282 名前:280 mailto:sage [2006/08/11(金) 01:50:01 ] >>281 なるほど、解説THX。
283 名前:デフォルトの名無しさん mailto:sage [2006/08/13(日) 11:31:18 ] ある2つの文字列が「どの程度同じか」を見つけるアルゴリズムを教えて下さい。 例えば「aあいうえおbbb」と「ccあいうえおeeee」は『大体同じ』と判断したいのです。 この例の場合「あいうえお」の部分が同じな訳ですが、これが「あ いうえ お」とか 「あいう-えお」でも、「あいうえお」と同じとみなしたいです。 人間が目で見れば、「大体同じ文字列」というのはすぐ分かるのですが、 これをどうやってプログラムで実現すればいいのか・・・
284 名前:デフォルトの名無しさん mailto:sage [2006/08/13(日) 11:39:05 ] LCSとは違うの?
285 名前:デフォルトの名無しさん mailto:sage [2006/08/13(日) 12:11:11 ] >>284 LCSって何でしょうか・・・? ググッてもよく分からない・・・
286 名前:デフォルトの名無しさん mailto:sage [2006/08/13(日) 12:23:38 ] Longest Common Subsequence
287 名前:デフォルトの名無しさん mailto:sage [2006/08/13(日) 12:43:03 ] >>286 成る程、深く研究されているんですね・・・ Windows 上で使えるプログラムやライブラリ、 DLL 等があれば教えて下さい。 比較する文字列を 2 つ渡すと、何 % 一致しているかを 返す関数みたいなのがあるといいのですが・・・
288 名前:デフォルトの名無しさん mailto:sage [2006/08/13(日) 13:35:09 ] ライブラリは知らんが、O(nm) の実装なら en.wikipedia.org/wiki/Longest_common_subsequence_problem にある。そんなに複雑ではないので、参考にして書いてみたらどう?
289 名前:デフォルトの名無しさん [2006/08/13(日) 16:31:43 ] Smith-Watermanかな あとDNA配列の一致を調べるのと似てるからそれ関係を見てみると面白いかも BLASTとかFASTAとかだっけかな・・・
290 名前:デフォルトの名無しさん mailto:sage [2006/08/13(日) 21:37:50 ] ttp://www.topcoder.com/ のアルゴリズム部門に挑戦してみようという人はいないか? 現在、日本は、21位だぞ。 ttp://www.topcoder.com/stat?c=country_avg_rating
291 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/08/13(日) 21:50:09 ] AGREPはどーよ www.tgries.de/agrep/
292 名前:SOURCE ◆tAo.kQ2STk mailto:sage [2006/08/13(日) 23:48:19 ] >>290-291 英語は苦手だ。
293 名前:デフォルトの名無しさん mailto:sage [2006/08/14(月) 00:03:48 ] インテルで最適化コンテストやってなかったっけ? #あれだとアルゴリズムレベルでの工夫の余地はないのかな。
294 名前:デフォルトの名無しさん [2006/08/14(月) 01:42:06 ] >>293 でもまあ機械語いじるのもパズル的な部分はあるし面白そう オレは無理だが
295 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/08/14(月) 02:00:58 ] ソースコード読むのに英語か日本語かなんて関係ないだろ
296 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/08/14(月) 02:01:48 ] 英語のドキュメントが読めないって致命的になるから勉強したほうがいいよ。
297 名前:デフォルトの名無しさん [2006/08/14(月) 02:06:51 ] ワロpwww
298 名前:デフォルトの名無しさん mailto:sage [2006/08/14(月) 11:30:45 ] >296 言語による
299 名前:デフォルトの名無しさん mailto:sage [2006/08/14(月) 13:35:15 ] >>283 hp.vector.co.jp/authors/VA007799/viviProg/doc5.htm は? 経路を記憶するコードを追加すればdiffも簡単にできる。 一致度の%も、定義によって異なってくるが間単に計算できる。
300 名前:デフォルトの名無しさん mailto:sage [2006/08/14(月) 14:24:54 ] >>299 自分でそのコードを書く事は出来そうもないので、>>287 の様な 「比較する文字列を 2 つ渡すと、何 % 一致しているかを返す」 様なツールというか関数を探してます・・・ でもないみたいですね。
301 名前:デフォルトの名無しさん mailto:sage [2006/08/14(月) 14:48:05 ] 自分で書けよ……
302 名前:デフォルトの名無しさん mailto:sage [2006/08/14(月) 17:48:51 ] 擬似コードが載っているんだから書けるべ。 >299見て書けないならプログラマに向いてないよ。
303 名前:デフォルトの名無しさん mailto:sage [2006/08/14(月) 19:27:46 ] >>300 出鱈目書いてよこすが、こんなもんでいいだろうか? double cmpstr(char *buf1,char *buf2,int size){ int i,j j=0; for (i==0;i>=size-1;i++){ if (buf1[i]==buf2[i]){ j++; } } return j/(size-1); }
304 名前:デフォルトの名無しさん mailto:sage [2006/08/14(月) 19:29:01 ] あ、最後から2行目 return j/size; だ。
305 名前:デフォルトの名無しさん mailto:sage [2006/08/18(金) 19:20:05 ] >>300 phpのsimilar_textのソース読んでみてはどうだろう。 O(n^3) くらいだったような気がするが。
306 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 18:26:00 ] スローすぎてあくびが出るぜ
307 名前:デフォルトの名無しさん mailto:sage [2006/08/21(月) 21:15:47 ] おまいら自分用のアルゴリズムライブラリとか持ってますか?
308 名前:デフォルトの名無しさん mailto:sage [2006/08/22(火) 17:20:55 ] 日本語でおk
309 名前:デフォルトの名無しさん mailto:sage [2006/08/23(水) 21:44:59 ] 脳内訂正能力の低下が顕著
310 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 22:50:35 ] 脳内訂正能力を利用した圧縮アルゴリズム
311 名前:デフォルトの名無しさん mailto:sage [2006/08/26(土) 23:06:40 ] 昔々、あるところに、おじいさんとおばあんがいました。 おじいさんは山へ芝刈りに、おばあさんは川へ洗濯に行きまた。 おばあさん洗濯をしていると、 大きな桃がどんぶらこっこどんぶらっこと流れてきました。
312 名前:デフォルトの名無しさん mailto:sage [2006/08/27(日) 19:34:13 ] そこで、おばあさんは 「おお、なんと大きな桃じゃ!」 と言い、嬉しそうに丸呑みにしました。
313 名前:デフォルトの名無しさん mailto:sage [2006/08/28(月) 00:51:56 ] >>311 脳内訂正能力を利用した圧縮ですよね? おばあん ← 1文字圧縮 芝刈り ← ”柴刈り”を暗号化 行きまた ← 1文字圧縮 おばあさん洗濯 ← 1文字圧縮 どんぶらこっこどんぶらっこ ← 1文字圧縮
314 名前:デフォルトの名無しさん mailto:sage [2006/08/28(月) 21:51:15 ] 暗号化は意図しない動作でした
315 名前:デフォルトの名無しさん mailto:sage [2006/08/29(火) 18:42:20 ] 二次元平面において、線分と単純多角形が与えられたとき、 線分が多角形の内部を通るかどうかを判定する簡単な方法があれば教えてください。 幾つか自分でもやってみたのですが、線分が多角形の端点と重なる場合などで 正しい結果が出ませんでした。どなたかお願いします。
316 名前:デフォルトの名無しさん mailto:sage [2006/08/29(火) 19:29:07 ] >>315 「単純多角形」の定義は何?
317 名前:デフォルトの名無しさん mailto:sage [2006/08/29(火) 19:43:53 ] 「多角形の端点」もおかしい。
318 名前:デフォルトの名無しさん mailto:sage [2006/08/29(火) 19:51:56 ] 「線分が多角形の端点と重なる場合など」(頂点や辺の意味だろうけど)を 内部を通ることにするかしないか自分の定義しだいじゃないのか?
319 名前:デフォルトの名無しさん mailto:sage [2006/08/29(火) 21:24:34 ] グラフの自動レイアウト関係で参考になるアルゴリズムや考え方はありますか? 重力・斥力でやっているけれどいまいち効率の挙動が悪いんで素。
320 名前:315 mailto:sage [2006/08/29(火) 21:27:34 ] >>316 単純多角形とは自己交差を持たない穴の開いていない多角形のことです。 このとき、多角形は境界をなす頂点の列を用いて表現できます。 >>317 単純多角形の境界をなす頂点のことを「端点」と表現しました。 >>318 それを曖昧にしないように、「内部」という言葉を使ったのですが、説明不足でした。 境界と共有点を持つケースは、交わらないと判定したいのです。 よろしくお願いします。
321 名前:デフォルトの名無しさん mailto:sage [2006/08/29(火) 22:22:40 ] >>307 10年以上育ててたのが、HDと共に逝った
322 名前:デフォルトの名無しさん mailto:sage [2006/08/29(火) 23:12:41 ] まず >>318 の言うとおり自分でどういう判定をしたいのか定義する あとはひたすら図を書いて場合分けするしかないよ
323 名前:デフォルトの名無しさん mailto:sage [2006/08/29(火) 23:14:29 ] >>321 悲惨。それも10年以上。当然、こんなときどうするかバックアップなどのアルゴリズムは考えあるんだろうね?
324 名前:デフォルトの名無しさん mailto:sage [2006/08/29(火) 23:55:14 ] >>315 つwww.google.co.jp/search?q=%E5%A4%9A%E8%A7%92%E5%BD%A2+%E5%86%85%E5%A4%96%E5%88%A4%E5%AE%9A
325 名前:デフォルトの名無しさん mailto:sage [2006/08/30(水) 00:19:19 ] >>315 0 線分の始点が多角形内部にあるときは交差あり 1 多角形を反時計回りに正規化 2 多角形の全ての頂点を登録(配列1) 3 線分の始終点を頂点として登録(配列2) 4 線分と多角形の交点を(配列1)と(配列2)に新しい頂点として順序良く挿入。 ただし別の頂点と重なるときは登録しない。 5 全ての交点(配列1の点Nと配列2の点Mが同じ座標とする)について、 (配列1)の前後の頂点と合わせた3点N-1,N,N+1、(配列2)の頂点Mに着目して 6 M-1が存在してM→M-1がN-1→N→N+1の左側に出て行く線なら交差あり 7 同様にM→M+1がN-1→N→N+1の左側に出て行く線なら交差あり N-1→N→N+1は折れ線の場合もあるので注意。外積と内積を組み合わせて判定。 線分と多角形の辺が頂点以外で交差する典型的ケースをあらかじめ判定してもOK
326 名前:デフォルトの名無しさん [2006/09/13(水) 01:29:07 ] aはビットフラグで、メモリ、FDD、HDD、FANなどの故障状態を表しています。 bは条件です。FDDとHDDが両方故障なら2進で11です。 FDDとHDDが両方故障であるのを得るために2進の11がdefineしてあるのは 変更できませんが、FDDとHDDが両方故障であるのを調べるために if ( a & b == b ) を実行するのには何か無駄がある気がしますが、もっとよい方法はありますか?
327 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 01:39:38 ] >>326 if ((a & FDD) && (a & HDD))
328 名前:デフォルトの名無しさん [2006/09/13(水) 02:14:27 ] >>327 bの値もプログラム中で決定するので327のようにソースに直接書けません。 bを使ったプログラムにします。 bの条件を追加してFDDとHDDとUSBの3つとも故障で2進で111とした場合 もっとよい方法があれば教えてください。
329 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 02:47:44 ] >>326 「何か無駄がある気がします」なんて言われたら どんな答えを出してもそういわれそうな気がして答える気にならない。 具体的に何が不満なんだ?
330 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 04:11:56 ] データ構造選んだ時点で どのアルゴリズムが使えて どのアルゴリズムが使えないかが決まってくるわけで
331 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 05:04:37 ] 最適になるようにアルゴリズムとデータ構造を選択するのがプログラマの仕事。 ヒント:青い鳥 だな。理想を求めるのはいいけど、いつまでたっても納品できない悪寒。 ヲレライブラリを失わないためのヲレ危機管理アルゴリズムが不十分だったという検証ができたというヲチか。 バックアップぐらい危機管理の基本中の基本だぜ。 プログラマって人生設計も立てられずに人生のアルゴリズムもなくイベントドリブンで生活してそうだな。
332 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 05:12:48 ] なかなか厳しいな〜 特にイベントドリブンテところが痛いな〜 そんなプログラマに救いの手を♪
333 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 12:56:27 ] 反復部分文字列の検索アルゴリズムを考えてます。 反復部分文字列とは一つの文字列中に複数回出現する文字列のことで 1.同じ反復部分文字列同士は重なりあわない(ABCABCABC => ABCと抽出 ABCABCは抽出しない) 2.反復部分文字列の部分文字列も反復部分文字列だがそれは抽出しない(ABCDEABCF => ABCと抽出 A B C AB BC は抽出しない) という条件付きで2回以上出現するもので長さn以上の文字列を検索したいのです。 現在ドットマトリックス(str[i]==str[j]の値の行列を作り対角線方向に検索する方法)による検索しか思いつきませんが何か高速なアルゴリズムはありませんでしょうか? SEQUITURアルゴリズムをいじれば早くなるかと思ったのですが条件を満たす文字列の一部しか見つけられないので悩んでます。
334 名前:デフォルトの名無しさん [2006/09/13(水) 13:19:13 ] 2つの任意の整数の組(a,b)が任意の数だけあるとする。 ただしa<bは常に満たされる。 『例えば「(2,4)(2,3)(1,6)(4,8)」の場合、 (2,4)(2,3)(4,8)は(2,3,4,8)という組を作る。』 というアルゴリズムを考えているのですが、いい方法が全く思いつきません。 分かる方、ヒントをください!
335 名前:デフォルトの名無しさん [2006/09/13(水) 13:32:15 ] ハッシュ辞書使って、検索早めるのはどうよ。 gif なんかの LZW エンコードのソースに書かれているよ。
336 名前:333 [2006/09/13(水) 13:43:52 ] >>335 なるほど!圧縮でも部分配列の検索を利用しますね。そちら方面で調べてみます。
337 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 13:45:10 ] >>334 意味が今ひとつわからん。 かっこの中の数字のペアを数学で言うところの同値関係と考えて その同値類に分けた集合をつくるってことか?
338 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 13:52:17 ] グラフのレイアウトで参考になるアルゴリズムはありませんか? ノード間に関係を表すエッジが複数あるとしてランダムに表示されたノードを関係あるものを近くに表示させたいと思っています。 バネモデルなどを使った力学的モデルを使った配置の考え方は見つけたのですが、実行してみるとかなり遅くなってしまいます。 別に見つけた商用ライブラリyFilesのサンプルを使ってみるとあっという間に終わり何か別種のアルゴリズムを使っているとしか思えません。 ttp://www.yworks.com/en/products_yed_about.htm 何か考え方のヒントになるようなものでも助かるので何かないでしょうか。
339 名前:デフォルトの名無しさん mailto:sage [2006/09/13(水) 23:14:17 ] >>326 ttp://oshiete1.goo.ne.jp/kotaeru.php3?q=2402835 ふてぇ野郎だ。
340 名前:338 mailto:sage [2006/09/14(木) 23:56:30 ] おしえてGoo煮出してみます。 スレ汚しすいませんでした。
341 名前:334 [2006/09/15(金) 04:22:02 ] >>337 ちょっと調べたのですが、同値関係?同値類?という状態です。 いま作ろうとしているのはN体問題に衝突・合体を組み合わせるため、 『どの物体が、どの物体へ衝突したか』 を判定するアルゴリズムです。 衝突したことが直接判定できるのは2つまで(物体a,物体b)で、 3つ以上が同時に衝突する場合、衝突に関与した物体はこの(a,b)の組み合わせから 判断しなければなりません。 「(2,4)(2,3)(1,6)(4,8)」の場合、合体して新たな物体を生じるのは (2,3,4,8)(1,6)であることを見つけ出そうとしています。 なんだか長くなってしまいましたが、少し自分でも考えてみます。
342 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 07:53:27 ] >>341 「衝突・合体」 だけだったら Union Find. 分離もしたくなったら,単一要素を分離するだけなら Union Find Split, 接続している要素の切断なら Euler Tour Tree とか Topology Tree とか.
343 名前:デフォルトの名無しさん mailto:sage [2006/09/15(金) 20:46:34 ] >>341 Pythonで作ってみた (実際の言語固有の便利さを、どこまで使っていいのか良くわからん) Data = ((2,4), (2,3), (1,6), (4,8)) ResultLists = [] TmpHash = {} for (X,Y) in Data: if not (X in TmpHash): if not (Y in TmpHash): #両方の数字が初めて出てきた場合 TmpHash[X] = [X, Y] #新しくリストを作成 TmpHash[Y] = TmpHash[X] #もう一方の数のハッシュを作成 ResultLists.append(TmpHash[X]) #結果リストに追加 else: #片方の数字(X)のみが初めて出てきた場合 TmpHash[Y].append(X) #既出の数字のハッシュのリストに初めての数字を追加 TmpHash[X] = TmpHash[Y] #初めての数字のハッシュを作成 else: if not (Y in TmpHash): #片方の数字(Y)のみが初めて出てきた場合(以下同様) TmpHash[X].append(Y) TmpHash[Y] = TmpHash[X] print ResultLists
344 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 06:12:16 ] >>343 間違ってる.そのプログラムを Data = [ (1,2),(2,3), (4,5),(5,6), (3,4) ] で実行すると [[1, 2, 3], [4, 5, 6]] になるが,正しくは [[1, 2, 3, 4, 5, 6]] になるべき.
345 名前:デフォルトの名無しさん mailto:sage [2006/09/16(土) 07:15:24 ] Python で作ってみた.Python よく知らんので拙いコードな気がする. kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/2668.txt
346 名前:334・341 mailto:sage [2006/09/17(日) 05:13:19 ] ありがとうございます! アルゴリズムの本を何冊か当たっても出なかった問題が 即座に出てくるなんて、2chの中の人すげー いまからPython勉強します
347 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 06:35:03 ] いまだに>>334 の数字にペアがなにを表してるかわからない自分は逝ってよしですか・・・orz
348 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 06:45:33 ] >>347 ・物体 {1, ..., n} がある. ・物体同士の衝突を検査する関数 check(a,b) がある. ・衝突した物体は粘土のように合体する. という設定で, 衝突している物体対のリスト [ (a_1,b_1), (a_2,b_2), ... , (a_m,b_m) ] が与えられる. 衝突して合体した結果,どのようになるか調べよ. という問題.
349 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 09:56:40 ] C#でやったらこんなんになった。逝ってくる・・・orz uploader.erv.jp/src/erv_jp0518.txt
350 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 10:30:32 ] 複数の物体があるとして関係があるもの(これはユーザーの定義などにより設定される)はある程度近くなり、また物体同士で近すぎるものはある程度の距離を保つようにしたいと思います。 ここで計算して少し動かしてまた計算してとやってたんですが、微分積分などを使って一発でやることって可能ですか?
351 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 20:09:21 ] >>346 あたる本がよろしくないんだな. セジウィック「アルゴリズムC」,CLR 「アルゴリズムイントロダクション」など まともなアルゴリズムの本なら最小全域木との繋がりでたいてい書いてあるよ.
352 名前:デフォルトの名無しさん mailto:sage [2006/09/17(日) 20:24:17 ] >>350 問題設定がよくわからん. 「物体」とか「関係」とか言わずに,どんな問題を解きたいかを はっきり述べてくれたほうがよい. 問題だけ見ると >>338 と同じような気がするんだが.
353 名前:デフォルトの名無しさん mailto:sage [2006/09/18(月) 13:07:51 ] >>350 3体問題を解決してフィールズ賞取れよ、って言ってるのかな? 簡単にできる場合と難しい場合があることくらいまでは俺にも分かるが、できない場合があることを証明するのは俺には荷が重いな。
354 名前:デフォルトの名無しさん mailto:sage [2006/09/18(月) 13:09:27 ] >>352 あー同じようなもんです。 >>353 やっぱりそういう話ですよね。
355 名前:デフォルトの名無しさん [2006/09/18(月) 14:07:45 ] B木をファイルとして実装する方法で詳しいサイトないですか
356 名前:デフォルトの名無しさん mailto:sage [2006/09/18(月) 17:31:47 ] >>350 じゃあ 352 と同じ問題だと思って回答するぞ. 力学モデルは十分実用的のはずで,小規模系で遅いとしたら 時間刻みが細かすぎるか,用いてる力学モデルが致命的に悪い. 特に時間刻みは重要で,別にシミュレーションするわけじゃないんだから かなり大雑把に計算しても大丈夫.数値安定性が保たれる限界くらいの 刻みに選んでも平気. 大規模系で遅いとしたら,アルゴリズムの改良が必要. たとえば高速多重極展開なんかは有力な解決になりうる.
357 名前:デフォルトの名無しさん mailto:sage [2006/09/18(月) 17:33:31 ] 352 は 338 のミス
358 名前:デフォルトの名無しさん mailto:sage [2006/09/18(月) 20:11:35 ] >>356 表示しながら収束状況を見てると、ノードが行ったり来たりしてるのは問題外ですよね・・・
359 名前:デフォルトの名無しさん mailto:sage [2006/09/19(火) 11:44:17 ] >>338 こういうのって初期配置も結構重要だと思うんだけど、その辺意識してるのかな?
360 名前:デフォルトの名無しさん mailto:sage [2006/09/19(火) 15:07:25 ] yEdすげー
361 名前:デフォルトの名無しさん [2006/09/19(火) 17:46:49 ] .kjm;:,ok:k,;uhbvxew6te4z64c
362 名前:デフォルトの名無しさん [2006/09/20(水) 00:11:27 ] >355
363 名前:338 mailto:sage [2006/09/20(水) 01:17:57 ] >>359 やってるうちに初期配置がかなり重要なことはわかってきました。 今は初期配置をうまくやるアルゴリズムを一つ思いついたので今度試してみるところです。 ただ、初期配置をうまくやってその後収束させる方向が正しいのか、全く違うやり方があるんじゃないかとヒントを探してるところです。
364 名前:デフォルトの名無しさん mailto:sage [2006/09/20(水) 09:06:03 ] >>363 ノードを同心円状に配置するのはどうだろう。 グラフのあるノードを中心として、距離1のノードは半径1の円周上に等間隔に配置。 距離2のノードは半径2の円周上に…という感じ。 この方法で以前試した時は、そこそこうまくいった覚えがあるが、 グラフがツリーに近い形状だったからかもしれない。 力学モデルを使っていて遅いとのことだけど、 パラメータを弄ってやって、最初は移動量を大きくとって大まかな形をつくり、 それから移動量を小さくして微調整すると良いと思う。 もう既にやってるかもしれないしけど… あと、遅くなる原因としてもう一つ。 これは自分がやったミスで、 収束するのが遅い遅いと思っていて、原因を探るために処理ごとの所要時間を取ってみたら、 実はグラフの収束を確認するための描画に時間がかかっていただけという情けないのもあった。 1回動かすたびに毎回描画なんてしてたから当たり前なんだけど。
365 名前:364 mailto:sage [2006/09/20(水) 09:08:07 ] > パラメータを弄ってやって、最初は移動量を大きくとって大まかな形をつくり、 > それから移動量を小さくして微調整すると良いと思う。 力学モデルなら自然とこうなるな…申し訳ない。
366 名前:デフォルトの名無しさん mailto:sage [2006/09/20(水) 09:33:39 ] プロファイルぐらい取ればどこで遅いかぐらいは一目瞭然でしょ。
367 名前:デフォルトの名無しさん mailto:sage [2006/09/20(水) 22:29:42 ] そういう話をしてるんじゃなくてな
368 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 00:19:45 ] エレベータで全押しする奴を止めるアルゴリズム作って
369 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 00:23:34 ] >>368 ボタンを押したら新しいボタンが表示される、ってシステムならOK
370 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 14:05:21 ] 同じボタンずっと押したらキャンセルとかつけてほしい
371 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 14:09:06 ] ダブクリでキャンセルできるエレベーターとかはあるよ
372 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 22:16:57 ] >>368 考え方が間違ってる 全押ししても正常に動作するようにする方法を聞くんだ
373 名前:デフォルトの名無しさん mailto:sage [2006/10/30(月) 23:51:04 ] 操作に論理ミスがあっても正常に動作する方法ってどんなんだ
374 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 00:28:29 ] エラー出せば?
375 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 01:51:53 ] 全階ボタン押したらエラーが出るエレベータ
376 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 11:21:22 ] 例外処理でワイヤー切断
377 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 13:23:34 ] エレベーターガールを配置する。
378 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 13:33:33 ] エレベーターガールがエレベーターアーント気味なのは仕様です
379 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 18:03:27 ] エレベータを止めるのではなく、全押しした奴を止めたいなら、このほかに縄が必要だな。 #define N 適当な数 if (押されたボタンの数>重さセンサが感知した量/60kgf+N) { SpeakMessage("ボタンが押されすぎです。一旦消します。"); UnlitAllButtons(); } //地震とかで全押しする必要がある場合の処理をしていません。
380 名前:デフォルトの名無しさん mailto:sage [2006/10/31(火) 20:45:55 ] 全押しされた時点で一番近い階に止まったら ボタンすべてキャンセルすればいんじゃね? もし本当に必要ならもう一度押すだろうし。
381 名前:デフォルトの名無しさん mailto:sage [2006/11/01(水) 12:27:53 ] >>380 こういうあほな使用を実システムでも作ってないかと心配になる
382 名前:デフォルトの名無しさん mailto:sage [2006/11/01(水) 21:02:26 ] 質問自体がネタなんだからいいじゃん。 そもそも、エレベータに全押し対策機能つけようと思う奴、いるわけないだろ? (本当につけたら、誤認識の嵐で、相当使いづらいエレベータになるからね。) あくまで、架空のエレベータの話だ。
383 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 00:46:53 ] 実際に、ボタン長押しでキャンセルされるエレベーターがあるわけだが。
384 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 00:57:38 ] そんな話はしていない。
385 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 01:16:37 ] で、381のエレガントな解法は?
386 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 09:57:51 ] 全ボタンに指紋読み取り機能を実装し、複数人によって全押しされた場合は有効。 一人により全押しされた場合は、全てのボタンをキャンセルし、移動方向直近の階に停止させ 上からタライと小麦粉を落とす。
387 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 11:24:36 ] 水 → 小麦粉 → タライ がベスト # 同一人が違う指で押したらどうする?
388 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 11:33:34 ] エレベータに乗るドアに目的階のボタンが無いのはなぜなんだぜ?
389 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 13:02:30 ] 新しいぜ。 疑問断定形。
390 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 17:01:50 ] >>386 親切な人いるじゃん。 ボタンの前に立つと、「何階ですか?」と聞く人。
391 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 17:10:37 ] >389 半年(ry
392 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 17:11:22 ] エレベーターのお姉ちゃんは毎日タライの餌食
393 名前:デフォルトの名無しさん mailto:sage [2006/11/02(木) 18:23:17 ] www.youtube.com/watch?v=urFeIsct9Pc
394 名前:デフォルトの名無しさん mailto:sage [2006/11/05(日) 00:45:48 ] >>392 押すボタンによって指を使い分ければok
395 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 09:31:35 ] 普通,手袋してるっしょw
396 名前:デフォルトの名無しさん [2006/11/06(月) 13:33:29 ] 階層DFDを使って自分の費用・授業・図書のデータを管理するシステムプログラムを設計せよ ・費用は収入や食費・交通費・生活費等の支出等のデータを扱う ・授業は履修している、もしくは履修済みの授業、一週間の授業表等のデータを扱う ・図書は借りた本等のデータを扱う ユーザーはこのシステムにIDとパスワードを使ってアクセスし、 データ倉庫user-dataに保存されている自分のデータを参照できるようにせよ。 プログラム設計っつー授業でこんな問題出されたんですが、 members.jcom.home.ne.jp/pokemon_glider/program.jpg 階層DFDはこんな感じでいいんですか? これをデータ辞書を追加したり、構造化英語で書いたり最終的にはJavaで実装できるようにしろとまで言われてます
397 名前:デフォルトの名無しさん mailto:sage [2006/11/06(月) 15:09:16 ] 開閉同時押しで目的階をクアドゥルプルクリック→目的階以外キャンセル
398 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 04:45:31 ] 思ったんだけど、キャンセル機能とかついてると、 逆にいたずらされて降りられなかったり、 変質者とかに悪用されたりとかしない?
399 名前:デフォルトの名無しさん mailto:sage [2006/11/07(火) 23:45:09 ] 全部キャンセルされたら最寄り階で開くってことでどうでしょ。
400 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 09:41:00 ] かべのなかにいる!
401 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 15:31:16 ] ゆかのしたにもいるかも
402 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 16:11:00 ] クラーケンが現れた!
403 名前:sage [2006/11/08(水) 22:14:54 ] 優先度付き待ち行列をハッシュで効率よく実現する方法を教えてください。
404 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 22:19:18 ] 優先度付きキューならヒープのほうが適任だと思うけど?
405 名前:sage [2006/11/08(水) 22:25:26 ] >404 連結リストとヒープは使うなという制約が… 平衡木も考えたんだが効率がいまいち。
406 名前:デフォルトの名無しさん mailto:sage [2006/11/08(水) 22:59:06 ] 平衡探索木でよいような? 一番左下へのポインタを持ちまわれば計算量的には同じになるはずだけど。
407 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 00:04:39 ] k個のソート済みのリストを入力し、それらを1つのソートされたリストにマージしたい。 単純な方法を用いるとO(kn)かかってしまう(nはk個のリスト中の要素全ての数) ヒープを用いて効率よく実行する方法を述べその計算量を示せ。
408 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 00:11:14 ] >>407 宿題はお断り。
409 名前:デフォルトの名無しさん mailto:sage [2006/11/09(木) 00:23:58 ] >>407 どのリストの先頭が最も小さいか、を管理するためにヒープを用いる。O(n log k)。
410 名前:デフォルトの名無しさん [2006/11/14(火) 21:42:37 ] A(♂)→B(♀) B(♀)→C(♂) C(♂)→D(♀) D(♀)→C(♂) C(♂)→B(♀) A(♂)=俺 だれかこの問題を解決できる画期的なアルゴリズムを考えてくだちい ていうかC(♂)氏ね
411 名前:デフォルトの名無しさん mailto:sage [2006/11/14(火) 22:12:21 ] delete A(♂)
412 名前:デフォルトの名無しさん mailto:sage [2006/11/14(火) 22:37:26 ] int main() { C = A; return 0; }
413 名前:デフォルトの名無しさん mailto:sage [2006/11/15(水) 17:18:05 ] >>334 超亀レスだが、ポインタ書き換えによる単一化を使うと効率がいい。 C#っぽい擬似コードで。public省略。Nは物体数。 class Pair { int a; int b; } class Cell { int n; Cell(int n) { this.n = n; } } Cell[] MakeUnifiedCells(Pair[] pairs) { Cell[] cells = new Cell[N]; // 要素はnull初期化 foreach (Pair pair in pairs) { Cell cellA = cells[pair.a]; Cell cellB = cells[pair.b]; if (cellA == null && cellB == null) { cells[pair.a] = new Cell(pair.b); } else if (cellA == null) { // assert(cellB != null) cellB.n = pair.a; } else { // assert(cellA != null) cellA.n = pair.b; } } return ret; } int GetEquivalenceClass(int n, Cell[] cells) { while (cells[n] != null) n = cells[n].n; return n; } まず、MakeUnifiedCells(Pair[] pairs)を使って、Cell[] cellsを用意する。 物体nがどの同値類に属するかは、GetEquivalenceClass(n, cells)で求められる。
414 名前:413 mailto:sage [2006/11/15(水) 17:18:46 ] GetEquivalenceClassの最適化版は↓みたいなかんじ。 int GetEquivalenceClass(int n, Cell[] cells) { if (cells[n] == null) return n; else if (cells[cells[n].n] == null) return cells[n].n; else { int ret = GetEquivalenceClass(cells[n].n, cells); cells[n].n = ret; return ret; } }
415 名前:413 mailto:sage [2006/11/15(水) 17:27:55 ] あぁ、すまん。ミスった。MakeUnifiedCellsのほう、 int GetRoot(int n, Cell[] cells) { while (cells[n] != null) n = cells[n].n; return n; } Cell[] MakeUnifiedCells(Pair[] pairs) { Cell[] cells = new Cell[N]; // 要素はnull初期化 foreach (Pair pair in pairs) { Cell cellA = cells[pair.a]; Cell cellB = cells[pair.b]; if (cellA == null && cellB == null) { cells[pair.a] = new Cell(pair.b); } else if (cellA == null) { // assert(cellB != null) cells[GetRoot(cellB.n, cells)] = new Cell(pair.a); } else { // assert(cellA != null) cells[GetRoot(cellA.n, cells)] = new Cell(pair.b); } } return cells; } に修正。
416 名前:デフォルトの名無しさん mailto:sage [2006/11/29(水) 16:34:59 ] 最適解の探索アルゴリズムでは[1]を,最良優先探索のアルゴリズムでは[2]を,Aアルゴリズムでは[3]を知識として用いる.特に,Aアルゴリズムで用いる知識のうち,すべての節点において[2]が[4]よりも小さいか等しいとき,[5]が求まる保証がある. 選択肢 ア: 節点nを通る初期節点からゴールまでのコスト イ: 1つ前の節点からゴールまでの実際のコスト ウ: 隣の節点からゴールまでの予測(推定)コスト エ: 初期節点からゴールまでの最適経路 オ: ゴールまでの実際のコスト カ: 節点nからゴールまでの実際のコスト キ: 初期節点から節点nまでのコスト ク: 節点nからゴールまでの予測(推定)コスト ケ: 初期節点からゴールまでの予測(推定)コスト コ: 節点nからゴールまでの最適経路 どうぞ
417 名前:デフォルトの名無しさん [2006/11/29(水) 21:45:41 ] 最適解の探索アルゴリズムでは蟻コロニー最適化を, 最良優先探索のアルゴリズムでは優先度つきキューを, Aアルゴリズムではヒューリスティックを知識として用いる. 特に,Aアルゴリズムで用いる知識のうち, すべての節点においてA子がB子よりも小さいか等しいとき, A子の年齢が求まる保証がある. 宿題は自分でやろうね
418 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 16:19:48 ] 大量のエロ動画のファイル名を、似たようなグループに分けるアルゴリズムってないかな? シリーズ物とか、制服物とか、素人物とか女優名とか。 ファイル名をn-gramに分解して、グループに対応するパラメータを学習させたベイジアンフィルタに 通すってのが、今のところ考え付いた解だけど、 大量の文字列を適当に分類する、分類軸の多様性は、学習させたパラメータで吸収みたい なのは、みんな考えてそうな気がする。
419 名前:デフォルトの名無しさん [2006/12/01(金) 16:47:06 ] test
420 名前:デフォルトの名無しさん mailto:sage [2006/12/01(金) 22:11:19 ] >>418 でも実用化されていないから お前がんばれ。ていうか頼む
421 名前:デフォルトの名無しさん [2006/12/01(金) 22:25:30 ] WinAPIのリージョンと同様の処理を行いたいのですが、 どのようなアルゴリズムを使用するのか見当も付きません。 処理したい内容は 多角形 or 多角形 多角形 and 多角形 多角形 xor 多角形 などを繰り返し、最終的に矩形の配列(win32ならGetRegionData)を取得したいです。 アルゴリズム名とか、ここに同じようなコードがあるよとか、この本を見れなどなど 教えてください。
422 名前:デフォルトの名無しさん [2006/12/02(土) 00:09:33 ] バイナリファイルからバイナリ文字列を検出するプログラムを 書きたいのですが、コレと言う手法が思い浮かびません。 なにかヒントをいただけないでしょうか? よろしくお願いします。
423 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 00:13:37 ] どんな規則性かによるんじゃないかい。 構造体が並んでる感じでIDを探すというならバイナリサーチ。 特に何もないならシーケンシャルサーチ。
424 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 00:25:42 ] 文書の自動カテゴリわけは結構研究されているから、 一般にはいろんな手法があると思う(ベイジアンもそう)。 だけど、問題領域を限定するといろいろ分かることはあって、 エロ動画のファイル名に限定するとよりよい方法が見つかるかもしれない。 面白い研究テーマだと思います。
425 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 00:29:24 ] 毛有り毛無しとか、液の量とか透過差分とか 様々な差分ファイルが世の中には存在するからな。 それこそ特許取れる研究をしないと。
426 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 01:51:30 ] >>425 え?二次だったの?
427 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 09:23:38 ] 縮尺や解像度、圧縮レベルが違うだけの同じ画像を検出する方法は?
428 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 12:04:27 ] >>427 不可逆圧縮の場合、圧縮レベルが違うと画像そのものの同一性も失われるわけだが。
429 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 12:09:49 ] フラクタル解析すればいけるんじゃね? 全く別物の画像を比較するんじゃないんだから。
430 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 13:44:24 ] 「おなじ」をきちんと定義してもらわんといかんな 近さの度合いを測る方法はいくらでもある。
431 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 14:50:12 ] >>421 コンピュータグラフィックス 理論と実践 James D. Foley他 19章7節を見れ
432 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 19:37:27 ] バイナリ文字列って何? Cのアルゴリズム本を見たが、ソートしか載ってないクズ本だった。orz
433 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 20:53:15 ] たぶん二進数の列のこと
434 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/12/02(土) 21:14:36 ] Cプログラマのためのアルゴリズムとデータ構造とか? ここ最近の本ってさAho-Corasickアルゴリズムとか実用的なの載ってなくね? アカデミック関連の糞高い本ならたまに載ってるのもあるんだけど、まず 有限オートマトンだの写像だの語彙が理解できないと話にならない。
435 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 21:19:43 ] 別に最近に限らず、昔からゴミな本はゴミだし、まともな本はまとも。 Aho-Corasick は若干アドバンスドなアルゴリズムだろう。 定本とされるアルゴリズムイントロダクションにも、アルゴリズムCにも無い。 まあ文字列系のアルゴリズムの本なら大体載ってるとは思うが。
436 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 21:47:48 ] Aho-Corasickってどう発音すればいいんだ?
437 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 22:05:52 ] アホ-コラシネカス
438 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/12/02(土) 22:10:16 ] Aho博士は日本に来たときこういったそうだ(実話) 「Ahoは日本では馬鹿という意味だそうですが私はそれほど馬鹿ではありません」
439 名前:デフォルトの名無しさん mailto:sage [2006/12/02(土) 22:59:52 ] エイホー
440 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 00:31:55 ] >>438 ギャグのつもりなのかムッとしていったのか微妙だなw
441 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 06:47:16 ] ギャグで言ったのなら相当寒い奴だな。 あまり頭が良いようには思えない。
442 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 07:08:26 ] >>441 お前が言うなよw
443 名前:421 [2006/12/03(日) 14:21:08 ] >>431 ありがとう。 初のCG系アルゴだから右も左もわからなかったよ。ほんとサンクス。
444 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/12/03(日) 15:01:36 ] 糞高い本だな
445 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 15:02:42 ] この手の本は自分を切り売りするようなもんだしね
446 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 15:36:16 ] この手の本は自分を切り売りするようなもんだな
447 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 16:03:35 ] この手の本は自分を切り売りするようなもんだよな
448 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/12/03(日) 16:12:51 ] この手の本は自分を切り売りするようなもんたよしのり
449 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 16:15:50 ] 今年の冬は冷えるな
450 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 16:18:33 ] 最近ひとのレスパクるレスが多いけどなんかのブーム?
451 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 16:28:33 ] 最近ひとのレスパクるレスが多いけどなんかのブーム?まで読んだ
452 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 16:30:26 ] 最近ひとのレスパクるレスが多いけどなんかのブーム?まで読んだまで読んだ
453 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 16:33:23 ] 最近ひとのレスパクるレスが多いけどなんかのブーム?まで読んだまで読んだ まで読んだ
454 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 16:34:57 ] おれはおれの道を行く
455 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 16:35:42 ] マダンテって何だけ?
456 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 16:38:27 ] イオナズン使える俺は勝ち組
457 名前:デフォルトの名無しさん mailto:syooganainaa sage [2006/12/03(日) 16:42:20 ] しかし MPがたりない!!
458 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 16:43:40 ] ザオリクしか使えない俺は負け組み
459 名前:・∀・)っ-○◎●新世紀ダンゴリオン ◆DanGorION6 mailto:sage [2006/12/03(日) 16:56:19 ] イオナズン使えなかったせいで就職失敗しました。 宿屋で眠れなかったんです。
460 名前:デフォルトの名無しさん mailto:sage [2006/12/03(日) 17:41:25 ] そろそろ時の砂を使う時期じゃないか
461 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 23:17:58 ] 遺伝的アルゴリズムについて質問があります。 GAの考え方で交叉を行う為の選択を行う場合 一般的には一度使った要素は排除して考えるべきですか? 2個を使って1個ができるわけだから元の要素が足りなくなりますよね? 一度使った要素も再利用してよろしいのでしょうか?
462 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 23:21:05 ] もう一度GAの本読み返せ
463 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 23:34:11 ] >>461 まさかこんなに早くレスをいただけるとは思っていませんでした。 GAの本はもっていないのでちょっとわからないです。 ネットで調べても曖昧な答えしか見つけられずに(説明上では無記述でもプログラム上では選んだ要素を2度選ばないようにしていたり)。 なので質問させていただきました。 すみません。
464 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 23:49:47 ] もしかして重大な間違いを犯していることに気づいたかもしれないです。 ルーレット式やランキング式は淘汰に使われるのであって交叉に使われるんじゃないんですね。 お恥ずかしいです。 交叉に使われるのはその中から本当にランダムで選んだ要素同士でよいのですかね。 図書館にでも行って勉強してきます。
465 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 23:55:54 ] 同じ要素を複数箇所に複製できたら個体の「個性」がなくなるでしょ 個性、つまり要素の並び方の組み替えこそがGAのキモ 極端な例だけど、ABCとabcを交叉してAaAができたとして それのどこに両親の「個性」が残ってる? ぶっちゃけランダム生成と大差ないよ
466 名前:デフォルトの名無しさん mailto:sage [2006/12/05(火) 23:56:37 ] 誤:GAのキモ 正:交叉のキモ
467 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 00:17:07 ] >>465 わざわざ説明ありがとうございます。 自分はまず親自信の選択の仕方に疑問を持ったもので。 交叉の内容は初期収束を抑える為に8割〜9割を二点交叉、1〜2割程度を一様交叉に しようと思っております。この辺りはやりながら詳しく検討してみますが。 やはり現時点じゃ資料もないので詳しくはわからないのですが 最低限同じ要素同士が親になることと、1度組み合わせた要素との交叉を避ければいいの じゃないかと考えておりまして。 最初の質問の内容としては要素数20の配列から2個を選んで親にする。 その場合親は次に利用されないで配列の要素数は18個になる…と繰り返すのですか?という内容です。 この場合は10回やったら選ぶ親が居なくなると思ったので…。 エリート選択をするという意味ではありません。
468 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 08:58:40 ] 頭の中で考えて分からないのであれば、 とりあえず動くものを作って実験データ取って検証してみればいいじゃん。
469 名前:デフォルトの名無しさん mailto:sage [2006/12/06(水) 12:47:48 ] >>467 自然界では普通の兄弟もいれば異母兄弟も異父兄弟もいるよね。 有性生殖と単性生殖(クローン)の両方を行う奴もいるし。
470 名前:461 mailto:sage [2006/12/07(木) 08:13:17 ] >>468 実際にやってみることは大切ですね。 ありがとうございます。 >>469 兄弟などを考えたら親が同じ可能は0じゃないですもんね。 同じ親でも子が全く同じになる可能性は遺伝子長にもよりますが余り多くはないですよね。 昨日借りてきたジョンホランドの訳書なんですが軽く読み流しただけでは無能は自分には理解できない様な内容でした。 と言うか自分が考えていた以上と言うか。 スレ違いになりますが今日伊庭さんの遺伝的アルゴリズムの基礎?って本を借りるつもりですが 他に初心者でも分かりやすいお勧めの書籍有りましたら教えていただければ幸いでございます。 色々有り難う御座いました。
471 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 17:59:10 ] スレタイ通りの人物がいれば知っていそうな気がするので質問。 oshiete1.goo.ne.jp/qa2722011.html で話題になっているアルゴリズムの由来はご存知ない? このアルゴリズム、フラグ用の配列を初期化しないで使う、アイディアものだと思うのですが。 #いっそ、「森田のよく利用する賢いアルゴリズム」って名前で公表しろよと思ったのは内緒。
472 名前:デフォルトの名無しさん mailto:sage [2007/02/09(金) 18:16:44 ] ↓戯言なので読み飛ばし推奨 数年前に友人と酒飲んで話した時のあやふやな記憶 CPUだかメモリだかの量子っぽい回路ので似たような処理の話を聞いた ような気がする
473 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 02:08:18 ] 由来は知らんが、数値計算で同じ配列を使いまわして計算する場合 なんかには、常識的に使われているテクニック。他のところでも しばしば見ることのある技法だと思う。 やっているのことは、配列 a の内容のうち重複しないものを 配列 b につめなおす次のプログラムをメモ化しただけなので 初期化がいらないのは当たり前。 m = 0; for (i = 0; i < n; ++i) { for (j = 0; j < m; ++j) /* find a[i] from b[0..m] ? */ if (a[i] == b[j]) break; if (j == m) { /* not found */ b[m++] = a[i]; } #この技法は未初期化が残る C のような言語に特有のものなので、 #「アルゴリズム」というほど一般的でないと思う。
474 名前:デフォルトの名無しさん mailto:sage [2007/02/10(土) 05:20:56 ] >>471 このアルゴリズムはデータ数<データの変域が前提になってるね。 フラグの初期化の処理をフラグの正しさの確認の処理に置き換えてるから。
475 名前:虚構世界内存在 ◆vWilh8Qklc [2007/02/26(月) 23:43:49 ] オタクとは何か。 より多くの人びとはオタクという概念について混乱している。 それは、特定の種類の虚構作品の選好と総体的外見との間に因果的関係を見て取ったこと、ならびに感覚を即座に絶対化したことから始まった。 そろそろオタク概念の整備をしよう。 www.google.co.jp/search?hl=ja&q=%22%E3%82%AA%E3%82%BF%E3%82%AF%E6%A6%82%E5%BF%B5%E3%81%AE%E6%95%B4%E5%82%99%22&lr=lang_ja したがって、「オタクは気持ち悪い」というのはトートロジーである(そもそも、気持ち悪い者にオタクという固有名を付けたのであるから)。 あとは、「気持ち悪い」という感覚や感情を即座に正当化することが問題か。 www.google.co.jp/search?hl=ja&q=%22%E8%B6%85%E8%B6%8A%E8%AB%96%EF%BC%880%E2%86%921%EF%BC%89%22&lr=lang_ja 一般人とは……(虚構世界内存在による使用法) www.google.co.jp/search?hl=ja&q=%E4%B8%80%E8%88%AC%E4%BA%BA+site%3Apub.ne.jp%2F&lr=lang_ja
476 名前:デフォルトの名無しさん [2007/03/04(日) 22:38:00 ] どうしてもつくれないアルゴリズムがあるので助けてください 1円〜999円のお買い物をするときに はらう硬貨の枚数とお釣りの硬貨の枚数の和が最小になる払いかたで 払う金額と持っている硬貨枚数がいかなるときでも対応できるアルゴリズムがわかりません 1000円札は1枚は持っています 硬貨は1.5.10.50.100.500です。お札は1000のみです
477 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 22:41:13 ] pc11.2ch.net/test/read.cgi/tech/1129376543/448-
478 名前:デフォルトの名無しさん mailto:sage [2007/03/04(日) 23:43:08 ] 全探索しかないか…
479 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 01:06:42 ] >>476 簡単じゃないか。 払う硬貨の枚数は常に0が最小なのだから、釣りとして受け取る硬貨の枚数を最小にする呪文を唱えればいい。 「釣りはいらねぇよ、とっときな」
480 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 02:30:54 ] すごく・・・漢です
481 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 23:13:34 ] 人間の考えをプログラムにする感じでやってみたがゴチャゴチャになってしまった
482 名前:デフォルトの名無しさん mailto:sage [2007/03/05(月) 23:34:44 ] この手の問題はコンピュータには、人間の思考と同じやり方ではやりづらいだろうな。 もっと究めてニューラルネットワークでも組めば別だろうが。
483 名前:デフォルトの名無しさん mailto:sage [2007/03/09(金) 23:48:50 ] 「お会計は674円になります」 500 100 50 10 10 1 1 1 1 払うと 釣りなし。動いたお金は9枚。 500 100 50 10 10 5 払うと 釣り 1。動いたお金は7枚 500 100 100 払うと 釣り 10 10 5 1。動いたお金は7枚。 うーん
484 名前:京大生www ◆HEfxsk5e3k [2007/03/10(土) 00:18:41 ] >>476 面白い、おれさまが考えよう んん・・・・・・・難しい・・・・・・
485 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 01:09:48 ] 1165円払って501円受け取るのもあるね。7枚だけど
486 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 01:15:30 ] アルゴリズム的に最小でも、店員が妙な顔する組み合わせはやめてあげようよ
487 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 01:17:33 ] >>485 硬貨枚数とあるから、6枚だと思う。
488 名前:京大生www ◆HEfxsk5e3k [2007/03/10(土) 01:36:59 ] こういうのはまず1~99までで考えるべきだと思う。 その過程で有効なアルゴリズムを考え付くこともある。 というわけでやってみようかな ところで1000円札は硬貨ではないけど 999円の時は1000円札だして1円お釣りが最速だから1枚っていう風に考えていいのか?
489 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 01:38:22 ] 1000円だけ特別扱いするのは美しくない
490 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 02:04:30 ] 硬貨は十分な枚数あるものとする。1000円札も1枚と数えるものとする。 1=1 2=1+1 3=1+1+1=5-1-1 4=5-1 5=5 6=5+1 7=5+1+1 8=10-1-1 9=10-1 (1) 与えられた支払額の上の位から順に機械的に上の置き換えを行なう。 (2) +-で打ち消すもの同士を消す。3のときだけ2とおりあるのでより打ち消せる方を選ぶ。 (3) +の方で払うと-の方のお釣りが帰ってくる。 674=(500+100)+(50+10+10)+(5-1)=(500+100+50+10+10+5)-(1) 動いたお金は7枚 348=(100+100+100)+(50-10)+(10-1-1)=(100+100+100+50)-(1+1) 動いたお金は6枚 999=(1000-100)+(100-10)+(10-1)=(1000)-(1) 動いたお金は2枚
491 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 02:13:08 ] さすが
492 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 03:12:36 ] 797=(500+100+100)+(100-10)+(5+1+1)=(500+100+100+100+5+1+1)-(10) 8枚 797=1000+5+1+1-100-100-10 7枚
493 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 05:35:07 ] 797=1000-100-100-1-1-1 6枚
494 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 07:47:26 ] 改善改善とか言ってる企業にかぎってアルゴリズムを工夫しないんだよね
495 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 12:03:45 ] こういった探索系のアルゴリズムは全探索が基本で 後はいかに無駄な探索を省くか(枝刈り)を考えた方が簡単でしかも速く、正確に動く。
496 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 12:53:21 ] 払う側が硬貨をもっとも減らすアルゴリズムを考えるともなく使っている人間って偉大。 ちなみにいつもは手持ちの硬貨を減らしつつ、例外的に100円玉をもっとも増やす アルゴリズムを使っています。
497 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 15:19:13 ] スーパーのレジの中に2000円札を見かけるけど、おつりでもらった事は無いなあ・・
498 名前:476 mailto:sage [2007/03/10(土) 17:45:38 ] 全探索&所持硬貨枚数での場合わけ Rを使ってプログラムを作りました。 時間かかりすぎる・・・orz
499 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 17:54:29 ] 単純な全探索でも一瞬で終わるが・・・
500 名前:476 mailto:sage [2007/03/10(土) 18:46:57 ] mjsk
501 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 19:11:48 ] 理由判明 所持硬貨枚数のwhile文に対して 外側に所持硬貨枚数を計算させる部分をもってきていました。 それにしても時間がかかる… 誰か修正してくれ…orz
502 名前:デフォルトの名無しさん mailto:sage [2007/03/10(土) 23:45:43 ] 例えば1円玉を払って1円玉がお釣りで返ってくるようなやり方は排除していいから 1円玉が-4〜4枚 5円玉が-1〜1枚 10円玉が-4〜4枚 50円玉が-1〜1枚 100円玉が-4〜4枚 500円玉が0〜1枚 1000円札が0〜1枚 と考えてよさそうだ
503 名前:デフォルトの名無しさん [2007/03/11(日) 10:44:00 ] 全検索でいいじゃんwwwwwwww 何か不満でも?w
504 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 12:08:33 ] さめがめ(samegame)で全探索するときの枝刈りって良い方法あるのかな? 昔Gooゲームかなんかでこれと同じルールのゲームがあったんだけど(たしか名前はブロキシー) 時間制限がなかったから手動で配置を入力して探索させてみたけど なんの工夫もしなかったから全然良い点の手みつけられなかった そのうえGooのやつはランダム要素を持ったブロックが一個だけあって、 それは最後まで残すようにするしかなかった。
505 名前:デフォルトの名無しさん [2007/03/11(日) 15:16:09 ] 1円から999円までの「硬貨の枚数の和が最小になる払い方」での 枚数の和のリストを出力してみた。 (例: 1円は1枚, 2円は2枚, 3円は3枚, 4円は2枚 ... 999円は2枚) 誰か検算してくれ。 1232123321234323443234543455434554345432344323432123432344323454345543456545654345543454323443234321 2343234432345434554345654566545665456543455434543234543455434565456654567656765456654565434554345432 3454345543456545665456765677656776567654566545654345654566545676567765678767876567765676545665456543 4565456654567656776567876787656776567654566545654345654566545676567765677656765456654565434554345432 3454345543456545665456765676545665456543455434543234543455434565456654566545654345543454323443234321 2343234432345434554345654566545665456543455434543234543455434565456654567656765456654565434554345432 3454345543456545665456765677656776567654566545654345654566545676567765678767876567765676545665456543 4565456654567656776567876788767887678765677656765456765677656787678876788767876567765676545665456543 4565456654567656776567876787656776567654566545654345654566545676567765677656765456654565434554345432 345434554345654566545676567654566545654345543454323454345543456545665456654565434554345432344323432
506 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 15:39:42 ] 所持金の枚数に制限を加えた場合のリスト (1円1枚, 5円2枚, 10円2枚, 50円2枚, 100円2枚, 500円2枚) 1432124321254323543236543465434654345432354323432125432354323654346543476545654346543454323543234321 2543235432365434654347654576545765456543465434543236543465434765457654587656765457654565434654345432 3654346543476545765458765687656876567654576545654347654576545876568765698767876568765676545765456543 4765457654587656876569876787656876567654576545654347654576545876568765687656765457654565434654345432 3654346543476545765458765676545765456543465434543236543465434765457654576545654346543454323543234321 2543235432365434654347654576545765456543465434543236543465434765457654587656765457654565434654345432 3654346543476545765458765687656876567654576545654347654576545876568765698767876568765676545765456543 4765457654587656876569876798767987678765687656765458765687656987679876798767876568765676545765456543 4765457654587656876569876787656876567654576545654347654576545876568765687656765457654565434654345432 365434654347654576545876567654576545654346543454323654346543476545765457654565434654345432354323432
507 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 15:46:05 ] ソースうp
508 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 16:44:47 ] >>507 出力結果が正しそうだったら、ね・・・
509 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 17:11:32 ] >476の問題だと千円札は一枚持っているけど、 硬貨を何枚持っているかは不明なんじゃないの?
510 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 17:57:22 ] >>509 もちろんそうだろ? 「任意の枚数指定ができるプログラムを作れ」ってのが本来の課題。
511 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 18:01:02 ] >>506 総当たり、たぶん同じ 1432124321254323543236543465434654345432354323432125432354323654346543476545654346543454323543234321 2543235432365434654347654576545765456543465434543236543465434765457654587656765457654565434654345432 3654346543476545765458765687656876567654576545654347654576545876568765698767876568765676545765456543 4765457654587656876569876787656876567654576545654347654576545876568765687656765457654565434654345432 3654346543476545765458765676545765456543465434543236543465434765457654576545654346543454323543234321 2543235432365434654347654576545765456543465434543236543465434765457654587656765457654565434654345432 3654346543476545765458765687656876567654576545654347654576545876568765698767876568765676545765456543 4765457654587656876569876798767987678765687656765458765687656987679876798767876568765676545765456543 4765457654587656876569876787656876567654576545654347654576545876568765687656765457654565434654345432 3654346543476545765458765676545765456543465434543236543465434765457654576545654346543454323543234321
512 名前:デフォルトの名無しさん mailto:sage [2007/03/11(日) 18:50:13 ] >>511 ソースうp
513 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 16:09:47 ] 所持硬貨数に制限無しなら色々ありそうだけど制限ありだとまったく思いつかない
514 名前:デフォルトの名無しさん mailto:sage [2007/03/12(月) 17:45:22 ] >>506 なあ、その条件で10円を1枚にしてやってみてくれないか
515 名前:デフォルトの名無しさん mailto:sage [2007/03/13(火) 00:16:42 ] >>514 これでいいか?(1円1枚, 5円2枚, 10円1枚, 50円2枚, 100円2枚, 500円2枚) 1432124321254323654347654565434654345432354323432125432354323654347654576545654346543454323543234321 2543235432365434765458765676545765456543465434543236543465434765458765687656765457654565434654345432 3654346543476545876569876787656876567654576545654347654576545876569876798767876568765676545765456543 4765457654587656987679876787656876567654576545654347654576545876568765687656765457654565434654345432 3654346543476545876568765676545765456543465434543236543465434765457654576545654346543454323543234321 2543235432365434765458765676545765456543465434543236543465434765458765687656765457654565434654345432 3654346543476545876569876787656876567654576545654347654576545876569876798767876568765676545765456543 476545765458765698767A987898767987678765687656765458765687656987679876798767876568765676545765456543 4765457654587656987679876787656876567654576545654347654576545876568765687656765457654565434654345432 365434654347654587656876567654576545654346543454323654346543476545765457654565434654345432354323432
516 名前:515 mailto:sage [2007/03/13(火) 00:18:20 ] あ、A っていうのは 10 枚のことね(16進数表記)。
517 名前:デフォルトの名無しさん [2007/03/20(火) 23:49:46 ] age
518 名前:デフォルトの名無しさん [2007/03/29(木) 23:52:40 ] 来月入社する者ですが、入社前までの宿題として出されたアルゴリズムの 最後の問題がどうしても解けないお(;^ω^) 当方文系出身のせいでちんぷんかんぷんなんだお・・・ 心優しい方手伝ってはくれないだろうか?お願いしまつ・・・ ageて申し訳ない。次からはsageて行くので・・
519 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 23:55:39 ] どれどれ。 とりあえず問題を見せてもらおうか。
520 名前:デフォルトの名無しさん mailto:sage [2007/03/29(木) 23:59:32 ] ありがとうございまつ゚+.゚(´っω・。`)゚+.゚ 問題;複数の生の整数を入力し、その中の最大値と最小値、平均値を求める 処理の流れ図を作成せよ。なお、入力の終了は-1を入力した場合とし、 データは必ず1件以上入力されるものとする。 多分かなり初歩的なアルゴリズムかと思われるのですが自分にとっては 難しいです・・何せアルゴリズムの本当の初歩しか本で勉強していない 身ですのでorz お願いしまつ(;´д`)
521 名前:無知な新社会人 mailto:sage [2007/03/30(金) 00:00:26 ] あ・・正の整数です('A`)
522 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:15:48 ] >>521 アルゴリズムと言うにもおこがましい。人間がそれを為すようにすればよいだけだ。 ついでに言えば、流れ図なんぞを書かせるような会社には似合いの人材というわけだな。
523 名前:無知な新社会人 mailto:sage [2007/03/30(金) 00:20:14 ] >>522 手厳しいお返事ありがとうございます。 ですが・・・本当にどういう風に書けばいいのか理解できないのでここの 住人の力を借りさせて頂こうと思った次第ですので・・何卒お手柔らかに (´・ω・`)
524 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:21:59 ] >>520 悪いことは言わん、他所の業界へ行け。 罵るつもりはないが、このままじゃお前とお前に関わる者が不幸になる。 ・・・と、思ったが、普通の初心者ってこんなんだっけ? もう20年以上もプログラミングやってるし、初心者の感覚がさっぱりわからん。
525 名前:無知な新社会人 mailto:sage [2007/03/30(金) 00:27:53 ] >>524 この業界には文系ながらも興味がある上、勉強していてもとても楽しいので 実際仕事に携わってみてから貴方の意見を参考にさせていただきたいです。 ですが、玄人から見たら多分自分みたいな雑魚が入っても迷惑なだけという 意見は理解できます・・・そうならないように努力します。 初心者の私からみたら・・・正直こんなアルゴリズムとも呼べない問題でも どういう風に図を組み立てればいいかわからないですorz
526 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:32:39 ] 流れ図は書いたことがない。 時代遅れだと思うしうちの会社でも使わないんで。 力になれなくてすまんね。
527 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 00:34:43 ] まぁ、過疎ってることだし、少しぐらい相手してやるか。 >勉強していてもとても楽しいので この業界ではこれが一番大切な才能だ。それを持っているならどうにかなる。 とりあえず一度に解決しようとするな。一度問題を噛み砕け。 たとえば、まず最大値だけを求めることを考えろ。それでもイメージが沸かなければ さらに噛み砕いて二つの値が与えられた時にその内の大きなほうの値を求めることを考えろ。
528 名前:無知な新社会人 mailto:sage [2007/03/30(金) 00:35:57 ] >>526 そうなんですか。 仕方ないです。なんとか自力でガンガッテみます(;´・ω・`)
529 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 01:34:20 ] かけるけど、AAで表現するのはめんどくさいなぁ 流れ図云々より、プログラム書くこと覚えたほうが手っ取り早
530 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 13:36:51 ] <繰り返し> 数字の入力 | 正の数か? ->-1以外の負の数:怒る | -1なら入力した個数がいくつかチェック ->0個:コラッ! 正の数ならリストに数値を追加 </繰り返し> | -1で個数が0以上の時計算に入る | ごにょごにょ | 出力
531 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 14:28:38 ] 前に作った簡易フローチャート風表記を使うとこうなるかな。 () //端子 {} //繰り返し開始記号 []数字の入力 //処理 <>数値チェック //分岐 <-1 []怒る ()終了 <>数値チェック ==-1 []ループ脱出 []リストに数値を追加 {} <>入力個数チェック ==0 []怒る ()終了 []最大値、最小値、平均値の算出 ()終了 処でこの問題、求めた値を出力しないでいいんだろうか。
532 名前:無知な新社会人 mailto:sage [2007/03/30(金) 14:53:45 ] すみません。 そんな所よりも肝心要の 「入力処理部分(キーボード割り込みから、整数のparsingぐらいまで)」 をメインにお願いします。 自力でガンガッテるんですが、全然かけません・・・OTL
533 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 15:32:39 ] >>532 ちょっと待て。あんたの言う要の部分は普通はOS側にライブラリ経由で処理してもらうところだ。 #パースはライブラリだけど。 一体全体、どんな環境の何をやろうとしているんだ?
534 名前:無知な新社会人 mailto:sage [2007/03/30(金) 15:56:28 ] 宿題では環境の指定はないですが、 もし書きにくいようでしたら、 PC/AT互換機という事でいいでつ。 # OS が絡むと面倒なので、"OS は無し" という事で・・・(;^ω^) 私としては、それなりに流れ図が書けていて、 入社後に教育担当の方から怒られなければ それでいいでつ(;´д`)
535 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 16:02:44 ] OSなしでIO処理しろって、どんな課題だよ。 環境が指定されてなければ、このあたりは 環境に用意されているものとしていいはずだ。 パースはともかく割り込みのあたりなんて アルゴリズムの範疇ではない。
536 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 16:19:06 ] >>535 >OSなしでIO処理しろって、どんな課題だよ。 多分、入社後の研修では H8 とか PIC とか使わされる事に なりそうなんですが・・・ また、この宿題については、研修担当の方からは 「(所詮、流れ図だから)君の得意な環境を想定して書けばよい」 と言われました。 助けてください゚+.゚(´っω・。`)゚+.゚
537 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 16:21:46 ] >>534 情報が少なすぎてなんとも言えないけど、 ろくに会話もできないぼんくらをプログラマとして雇うような糞会社が要求する流れ図なんて、 >531のレベルで書けてりゃ充分だろ。
538 名前:無知な新社会人 mailto:sage [2007/03/30(金) 16:25:18 ] >>537 手厳しいお返事ありがとうございます。 ですが・・・本当にどういう風に書けばいいのか理解できないのでここの 住人の力を借りさせて頂こうと思った次第ですので・・何卒お手柔らかに (´・ω・`)
539 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 16:50:01 ] 手厳しいも何も、>531は理解できてないのか? >531に後は最大値なんかのロジックを追加するだけだろ。
540 名前:デフォルトの名無しさん [2007/03/30(金) 17:44:51 ] >>538 お前ちょっと「流れ図」でググッてこいよ。 >>531 や>>530 で何が駄目なんだ?
541 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 17:54:25 ] >>538 もう、わからないことや出来ないことは素直に「出来ませんでした」でいいんじゃね? 会社側も、「2chとかで調べて何となく作ってみました」よりも「わかりません。教えて下さい」って 社員の方が扱いやすいだろう。
542 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 17:58:49 ] >>539 >手厳しいも何も、>531は理解できてないのか? 正直難しいです。(ρ_;)・・・・ どうしてこれでよいのか、全然分かりません。 まずは早速教えていただいたとおりに、 一度問題を噛み砕いてみます。 例えば、キー押下によって割り込みピンが アサートされた時の処理って何行目になるんですか?
543 名前:デフォルトの名無しさん [2007/03/30(金) 18:08:44 ] >>542 流れ図ってそんな事まで書くか? >例えば、キー押下によって割り込みピンがアサートされた時の処理 この意味わかって言ってんの?
544 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 18:38:21 ] 520の問題文で「ピンが云々」なんていうやつは まったく常識が無いやつだと思われても仕方が無い。
545 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 20:42:51 ] というか、「割り込みピンがアサートされた」ってどっから引っ張り出してきたの?
546 名前:無知な新社会人 mailto:sage [2007/03/30(金) 21:24:49 ] >>545 どっからといわれましても・・・ 多分、私の対象とする課題のスコープと 回答して下さっている方が(勝手に)思い描いている 課題のスコープの差異を指摘なさっているのだと考えますが、 なぜか不思議な事に私の提示する要件の内容に耳を傾けることなく、 ただただ「俺が正しいんだ」 「お前は常識がない・流れ図を理解していない」 と言われ、責め続けられるのみで一向に話が進展しないので、 こちらから具体例を出したまでなのですが。(´・ω・`) それとももしかして、実際の業務はそのように顧客に接するのが 「正しい SE のありかた」だ、と身をもって 教えてくださっているのでしょうか? もっといろいろ勉強しなくてはいけない事があるんですね・・・ ありがとうございます。
547 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 21:44:21 ] 別にアルゴリズム的には、その数値がキーボードコントローラから来ようが、 マウスで手書き入力しようが、携帯電話からメールしようが、シリアル伝送で来ようが、 VT端末から来ようが、トグルスイッチでDMAしようが、パンチカード読み取り機から 来ようが、念派で書き換えようが、些末なこと。 そんなことはアルゴリズムを実装・適用する連中が考えればよいわけで、 アルゴリズムというのは、数値はどこからか入力されている、と抽象化した レイヤーにあるわけ。
548 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 21:52:00 ] >>532 ,>>546 が本人ならネタ確定。 >>532 は天然ぽくって面白かったけど、 >>546 は天然ぽさが足りなくて全然面白くない。
549 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 21:59:01 ] >>546 仮に出題意図が低レベルのロジックだったとしよう。 それは普通はアルゴリズムとは呼ばないので、このスレで 質問したことが間違い。 もし割り込みとかそのあたりもアルゴリズムだと思ってるなら 計算機科学に関する常識が足りないので、ちゃんと勉強して おいたほうがよいと思うよ。
550 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 22:29:41 ] 組み込み系だったの? 「割り込みピンがアサートされた」のような事まで流れ図に書くようにとは あの問題が書かれてないから皆に通じなかったのも無理はないよ。 せめてアセンブラレベルかプログラミング言語レベルかくらいは言えばよかったね。
551 名前:無知な新社会人 mailto:sage [2007/03/30(金) 22:43:23 ] >>549 >仮に出題意図が低レベルのロジックだったとしよう。 >それは普通はアルゴリズムとは呼ばないので >もし割り込みとかそのあたりもアルゴリズムだと思ってるなら >計算機科学に関する常識が足りないので、ちゃんと勉強して >おいたほうがよいと思うよ。 「アルゴリズム」という言葉についての 非常にラディカルな定義、誠に有難うございます m(_ _)m (Dekker 先生とかが聞いたら、さぞお喜びになるでしょう)。 「計算機科学」についても今後しっかり勉強していくつもりです。
552 名前:デフォルトの名無しさん mailto:sage [2007/03/30(金) 22:47:37 ] 多分、本物は >>528 までで、>>532 以降は春で沸いた池沼だろ。
553 名前:無知な新社会人 mailto:sage [2007/03/31(土) 00:06:16 ] 久方ぶりにスレ覗いてみたら面白いことに・・ >>552 さんの仰るとおり質問を最初にさせて頂いたのは528の私です。 >>532 以降は偽者の私ですが、きっと彼も私と似た境遇で必死なんだと 思われますので、住人の方々も手厚く見守ってあげてください。 >>530-531 さん、亀レスですが、本当にありがとうございます。自力でやった のと比較してかなり違っていたので、大変参考になります。ご親切に図まで 書いていただき、感謝感謝です(*´д`) このスレも今後時たま覗くと思いますが、これからはまた名無しに戻ります。 いつか自分もちゃんとしたレスができる日を願って・・・
554 名前:デフォルトの名無しさん [2007/03/31(土) 00:45:22 ] >>551 「非建設的」をインスタンス化した様な奴だなお前。
555 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 01:11:56 ] >>534 >PC/AT互換機という事でいいでつ。 腹立つわぁ
556 名前:デフォルトの名無しさん mailto:sage [2007/03/31(土) 14:24:41 ] >>534 キモイ顔文字使うヤツは、首釣って死ねよ
557 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 11:15:50 ] 伸びてると思ったら・・・( ゚Д゚)<氏ね!
558 名前:デフォルトの名無しさん mailto:sage [2007/04/02(月) 21:58:08 ] 伸びてると思ったら、死ね
559 名前:デフォルトの名無しさん mailto:sage [2007/04/04(水) 21:03:05 ] これはまた凄まじいキャラが・・・
560 名前:デフォルトの名無しさん [2007/04/05(木) 17:21:21 ] age
561 名前:デフォルトの名無しさん mailto:sage [2007/04/07(土) 21:56:20 ] でらえもん調査局がいるスレだな
562 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 04:41:24 ] ここはヲタクネタ限定スレ? カレンダー生成のアルゴリスムで定番なの無い?
563 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 11:21:03 ] カレンダー生成ごときでアルゴリズムもへったくれも無いだろうよ。
564 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 16:31:48 ] kwsk
565 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 17:38:08 ] いつでもいいから(2000年1月1日とか)基準日の曜日を設定して あとはうるう年のルールを考えて増減するだけでいいんじゃないか?
566 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 18:00:12 ] 今時、何とかの公式なんかで曜日を計算するなんて流行らないしね。
567 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 18:23:27 ] 夕飯食いながら書いた駄作 #include <stdio.h> int month_table[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 }; int is_leap_year( int y ) { return ((y % 4 == 0) && (y % 100 != 0)) || (y % 400 == 0); } int days_of_month( int y, int m ) /* m:1〜12 */ { if( (1 <= m) && (m <= 12) ) { int d = month_table[m-1]; if( (m == 2) && is_leap_year( y ) ) ++d; return d; } return 0; /* error */ } int day_of_week( int y, int m, int d ) { if( m < 3 ) { --y; m += 12; } return (y + y/4 - y/100 + y/400 + (26*m+16)/10 + d) % 7; }
568 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 18:25:05 ] void print_calendar( int y, int m ) { int d = days_of_month( y, m ), w = day_of_week( y, m, 1 ); int n, dow; printf( "Calendar %04d/%02d\n", y, m ); printf( "Sun Mon Tue Wed Thr Fri Sat\n" ); printf( "---------------------------\n" ); for( dow = 0; dow < w; ++dow ) printf( " " ); for( dow = w, n = 1; n <= d; ++n ) { printf( " %02d ", n ); if( ++dow >= 7 ) { dow = 0; printf( "\n" ); } } printf("\n\n"); } int main( void ) { int m; for( m = 1; m <= 12; ++m ) print_calendar( 2007, m ); return 0; } いじょ。
569 名前:デフォルトの名無しさん [2007/04/24(火) 18:57:46 ] この流れでツェラーの公式がでてこないのが不思議。
570 名前:デフォルトの名無しさん mailto:sage [2007/04/24(火) 18:59:23 ] >>569 それはもう既に、>566が予防線を張ってしまった。
571 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 22:08:37 ] return (y + y/4 - y/100 + y/400 + (26*m+16)/10 + d) % 7; これじゃないのか
572 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 13:21:23 ] ●4.3t積のトラックが一台ある。これにバラバラの重量の荷物を積み込む際、過積載にならずに出来るだけ多くの(最大積載量に近い重さの)荷物を積み込む組み合わせを求めよ。 ってNP問題だっけ? いまHDDの整理してて出来るだけDVDの空き領域が小さくなるファイルの組み合わせを考えてるんだけど
573 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 13:30:41 ] 実は4.3テラ…?
574 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 13:35:13 ] >>572 ja.wikipedia.org/wiki/%E3%83%8A%E3%83%83%E3%83%97%E3%82%B5%E3%83%83%E3%82%AF%E5%95%8F%E9%A1%8C
575 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 13:39:06 ] なっぷさっく問題?
576 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 14:25:00 ] >>572 のは、重さの和に制限があって、重さの和の最大値を求めるわけだから、 >>574 リンク先の pi=ci が成り立つ場合だな。
577 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 17:25:54 ] ガーベジコレクタのアリゴリズム掲載された書籍知りませんかぁ?
578 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 17:27:48 ] ガベージコレクタ アルゴリズム
579 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 01:20:53 ] 不要な領域が法則無く発生するのに、アルゴリズム化できるとは思えないけどな。 CPUキャッシュのミスヒットのように、想定外の動作でむちゃくちゃ効率悪くなったりしない?
580 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 08:59:19 ] AABBBBCCCC このようなソートされた配列がある。 データが変わる位置(上の配列なら0,2,6)を 逐次検索より速く見つけ出すアルゴリズムを考案せよ。 自分で二分検索法を改良した方法でやったら却って遅くなりますたorz
581 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 09:15:42 ] 最大値と最小値と増分が判ってんだから例題だったら3等分から始めれば委員じゃね
582 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 15:34:03 ] >>580 一般的にその程度のサイズのデータの処理なら逐次処理が最速だぞ。 複雑なアルゴリズムはデータ量に対する計算量を少なくはできるが、 その1ステップ毎に必要な計算量はたいてい増えちゃうから、 データ量が少ない場合はかえって遅くなる。
583 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 21:48:46 ] >>582 >一般的にその程度のサイズのデータの処理なら逐次処理が最速だぞ。 その程度のサイズのデータ量じゃないんだろ
584 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 23:55:25 ] >580 もっとサンプリングを細かくした方が効率良くなると思う。 まあデータの偏り具合にもよるが。
585 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 23:58:24 ] >>584 お前、二分検索法をちゃんと理解できてるか?
586 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 00:19:51 ] 二分探索の改良法といったら、内挿探索
587 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 08:06:53 ] 逐次検索での計算時間は自明にO(N) 2分探索はデータが変わる位置の数はO(N)に比例して, 探索そのものの時間はO(log N)なのでO(N log N) ∴ 逐次探索の方が高速 ......と自分の中では直観に反した結論が出てしまった。 自分でもなんとなーく間違ってる気がするので、 だれか偉い人教えて!
588 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 10:34:18 ] データが変わる位置が重要なら、つまりデータの連続性が高いなら A2B4C4 と記憶しておけばいい。
589 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 11:27:31 ] ?
590 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 16:01:21 ] >>587 ふたつ間違ってる。 >データが変わる位置の数が O(N) に比例する これは問題設定によるので、そうとはいえない。普通は変わる 位置の個数を M として、M に依存した計算量で評価すべき。 >探索そのものの時間はO(log N)なのでO(N log N) これは実装に依存する。過去の探索の結果を忘れて探索を 繰り返すとそうなるが、過去の情報を保持するように実装すれば 探索木の頂点数が O(N) なので、最悪でもO(N) にできる。
591 名前:デフォルトの名無しさん [2007/05/07(月) 08:44:04 ] pc11.2ch.net/test/read.cgi/tech/1178440398/1-100 会話のアルゴリズムぅ?
592 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 20:09:19 ] オーダは極限をとるから直観には反する 現実問題としてはデータ依存としか言えないね 扱う対象がどれくらいの大きさで、何種類の文字が何回くらい切り替わるのか、 これによって実装は変わる 飛び石のようにn文字ずつ進んでいくか 半分に区切っていくか オーダをとると後者のほうが計算量は小さくなるけど、一般には前者が速いと思う
593 名前:デフォルトの名無しさん mailto:sage [2007/05/25(金) 15:29:37 ] suffix arrayを構成するときの最速の(と思われる)方法って何かわかりますか? ttp://homepage3.nifty.com/DO/direct_linear_sa.htm にいくつか紹介されてますが、ソート関係の話は1年違うと速度が大分違うと 聞いたので
594 名前:デフォルトの名無しさん mailto:sage [2007/05/26(土) 08:08:02 ] >>593 実用上では、MSufSort か libsufsort が最速っぽい。 suffix array はだいぶ煮詰まってるので、 新奇なものが出ない限り、上記2つを追っていれば十分だとおもふ
595 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 18:07:29 ] >>594 おお、どもどもです
596 名前:デフォルトの名無しさん [2007/06/06(水) 23:23:39 ] ちょっと相談させてください。 数独のプログラムを作っているのですが、インターフェースが出来て、 ランダムで適当な数字を残してやってみても、あまり面白い問題が出来ません。 数独で人間が仮置きとかせずに解けるような問題を自動生成するアルゴリズムって、 どんなのが考えられるでしょう?
597 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 23:29:19 ] >>596 その方法だと解が2通り以上出る可能性もあるな
598 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 00:01:57 ] >>596 そのノウハウで飯が食える人がいるから、そう簡単には教えてくれる人はいないんでない? ヒント:プログラムで解いてみて、問題ないならOK
599 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 00:17:14 ] >>596 >あまり面白い問題が出来ません。 なにがどうだったら面白い問題とみなせるんだ? そこを考えれば自ずとわかるような気がするけど。
600 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 06:54:52 ] そもそも数毒って面白いか?
601 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 09:43:45 ] 自動生成の問題だと、作業している気分になって萎える。 巧い作者の問題だと、解いててセンスが感じられて楽しい。
602 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 10:40:17 ] ヒント:1/fゆらぎ
603 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 11:11:54 ] >>596 【解答】パズルのプログラミング【作成】 hobby9.2ch.net/test/read.cgi/puzzle/1092459010/
604 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 12:53:57 ] >>603 またずいぶんマイナーなスレを…
605 名前:デフォルトの名無しさん mailto:sage [2007/06/07(木) 16:35:12 ] スレ以前に板が…
606 名前:デフォルトの名無しさん [2007/06/24(日) 18:56:38 ] 日経サイエンスの最新号(8月号)に、囲碁のための新アルゴリズムが登場したニュースが載っていました。 コンピュータによるゲームでは、IBMのディープブルーがチェスの世界チャンピオンを破って話題になりまし たが、コンピュータが人間に勝てないゲームのうち残っている囲碁に関して、新しいアルゴリズムが開発 され、10年以内にはプロ棋士を破ることが実現される可能性があるそうです。 ハンガリー人の研究者が、モンテカルロ法を拡張したUCT(日本語では「ツリー構造に適用された上位信頼限界」 というそうですが…)というアルゴリズムを開発し、その効果を高めるために様々な追加研究を行っているそうです。 このアルゴリズムの特徴は、単純にパターンを網羅して、無作為に抽出・評価するモンテカルロ法から発展して、 様々な評価指数を用い有望な選択肢を抽出し評価を行うようです。例えれば、統計的手法から学習的手法に 進化したもののようです。 コンピュータが誕生してから、時間が経ちますが、一歩ずつでありながらも、確実に人間の思考と互角に機能できる ように、いろいろな人が研究を続けて進化していることを実感します。そして、そのような実験の結果が、部分的でも 家庭用ゲームやラーニングソフトウェア等にも吸収され、コンピュータの活用がさらに進化すればよいなと思います。 blogs.itmedia.co.jp/tsuruta/2007/06/post_6850.html?ref=rssall
607 名前:デフォルトの名無しさん [2007/06/30(土) 23:09:52 ] Dijkstra法の最小経路問題のアルゴリズムの帰納法を使った証明を教えてください!
608 名前:デフォルトの名無しさん [2007/07/03(火) 21:48:25 ] こんとんじょのいこ
609 名前:デフォルトの名無しさん [2007/07/03(火) 22:42:22 ] アルゴリズムナタク 1話 俺のアルゴリズムは正しいのだ! 2話 貴様らのアルゴリズムに正義はあるのか!正義はあるのかと聞いている! 3話 アルゴリズムを教えてくれ!ナタク! 最終話 だから女は甘い
610 名前:デフォルトの名無しさん [2007/07/10(火) 16:43:27 ] 多倍長演算の割り算のアルゴリズムで たとえば521を21で割るとき ↓ まず521が三桁で20が二桁だから答えも二桁だろう ↓ 2桁目を決めよう ↓ 答えは10かな?21*10=210で521より小さい ↓ じゃ20かな?21*20=420<521 ↓ じゃ30かな?21*30=630>521(もし90でも超えなければ二桁目は9にする) ↓ 大きくなったからおそらく答えの2桁目は2だろう ↓ 次は1桁目・・・ こんなのを考えたのですが、もっと良い方法はないですか?
611 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 17:03:24 ] 何このマルチレス
612 名前:デフォルトの名無しさん mailto:sage [2007/07/10(火) 22:23:40 ] 車輪の再発明でググれ
613 名前:デフォルトの名無しさん [2007/08/04(土) 11:39:42 ] n個のボール、k個の横に並べた箱がある。 n=3、 k=4 (A,B,C,D) とするとき、各箱にボールを入れるパターンを考える。 この場合、組合せの総数は 20 となるが、左右対称となるパターン( A=D、B=C ) を 除く条件もある場合、全パターンは以下のような 10 パターンになる。 n、k が任意の値であるとき、同様に全パターンを生成するアルゴリズムはどのようになるか? A B C D ○○○ | | | ○○ | ○ .| | ○○ | . | ○ | ○○ | . | | ○ ○ | ○○ .| | ○ | ○ .| ○ | ○ | ○ .| | ○ ○ | .| ○○ | | ○○○ | | | ○○ | ○ |
614 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 11:42:57 ] 補足: ↑のパターンは例であり、左右対称パターンのいずれかが生成できれば、 等価であるとみなすことができるものとする。
615 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 11:45:10 ] >>614 対称パターン例: (1) と (2) はどちらでも良く、等価な1パターンとみなす (1) A B C D ○○○ | | | (2) A B C D | .| | ○○○
616 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 12:08:28 ] 20個のパターンを全列挙するプログラムで A > D または (A = D かつ B > C) を 満たすもののみ出力すればいいよ
617 名前:デフォルトの名無しさん [2007/08/04(土) 12:17:18 ] >>616 確かに、まず「箱毎のボール数」を全列挙するアルゴリズムが出発点ですね。 ・・・しかし、nとkが任意の際のうまいアルゴリズムが思い浮かばない・・・
618 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 12:26:30 ] 原始的、総当り法 0, 0, 0, 0 0, 0, 0, 1 0, 0, 0, 2 0, 0, 0, 3 0, 0, 1, 0 0, 0, 1, 1 0, 0, 1, 2 0, 0, 1, 3 ... 3, 3, 3, 3 時計的な "n+1進数"が k桁の繰り上がりパターンを生成、 k個の数の和が n であるパターンを全列挙する・・・
619 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 12:37:59 ] >>618 の着眼を応用して、n桁k進数を生成するようにして、 n個のボールに、どの箱に入れるかを決めるようにしたら。 パターン重複を避けるには、n個のボールに順序性をもたせる。 例えばボールno.2はno.1の左側に置いてはいけないようにする。
620 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 12:41:25 ] 全部同じ箱に入るときの重複を考慮しないと逝けないな
621 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 12:43:54 ] >>613 の絵を素直に見ると、とりあえず、 n個の○とk-1個の | を一列に並べろ ってことでいいんじゃないのか? 配列を逆にして同じものはあとで省くということで。
622 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 12:49:06 ] >>617 再帰が使えるなら簡単で、 「n 個の箱に k 個のボールを入れる全パターンは 先頭の箱に i 個入れて残りの箱に k-i 個入れる パターンを全部かき集めてきたもの」 でいい。 対称性は後で除いて十分 (計算量は O( nCk ) なので変わらない) >>618 その計算量は O( n^k ) なので、 パターン総数 O( nCk ) に対して漸近的に悪い。
623 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 13:02:13 ] >>618 に似てるけど、着眼点を変えて A,A,A A,A,B A,A,C A,A,D A,B,A ← 降順が含まれるのでなので無視 A,B,B A,B,C A,B,D A,C,A ← 降順が含まれるのでなので無視 A,C,B ← 降順が含まれるのでなので無視 A,C,C A,C,D A,D,A ← 降順が含まれるのでなので無視 A,D,B ← 降順が含まれるのでなので無視 A,D,C ← 降順が含まれるのでなので無視 A,D,D : : D,D,D ← 降順が含まれるのでなので無視 A,B,C,Dをそれぞれ0,1,2,3に置き換えると「n桁のk進数」となる。
624 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 13:02:54 ] ごめん、日本語がおかしい上に頭もおかしかったww
625 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 13:10:04 ] >>621 そうかK-1回のループと変数2個配列2個くらいでいいのか。頭いいな 左右から交互に左>=右になるよう|を置いていけば 一発で重複パターンなしに生成できそうだ
626 名前:613 mailto:sage [2007/08/04(土) 13:17:07 ] >>621 パターン生成内容としてはそういうことかな。 >>625 の実装イメージがまだ理解できず・・・ n個のボール、k個の箱の左右対称分を除いたパターン数は組合せの式で (n+2)! / ( (k-1)! * (n-k+3)! ) でいいのだろうか。 n=3, k=4 だと 5! / ( 3! * 2! ) = (1*2*3*4*5) / ( (1*2*3) / (1*2) ) = 120/12 = 10 最初に10通りと分かって、そこから 0〜9 番目のうち x 番目のパターンはコレ、とやるには やはり結果を配列に入れてことになるのかな。
627 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 13:30:04 ] ボール数: N 箱の数: K 箱内のボール数: NumBall[ K - 1 ] パターン数: NumPattern= getNumPattern( N, K ) パターン番号: x ( 0 ≦ x <NumPattern) x を指定したとき、対応する NumBall[ 0 ] ... NumBall[ K - 1 ] を求めよ
628 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 13:35:40 ] 単純な計算式では出せない…よね?
629 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 13:38:55 ] よく考えたらK-1回じゃ無理じゃん、オレだめだな アルゴリズム分かったけど携帯じゃ打ち込めないorz
630 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 15:04:59 ] > n個のボール、k個の箱の左右対称分を除いたパターン数は組合せの式で > (n+2)! / ( (k-1)! * (n-k+3)! ) でいいのだろうか。 違うな。 Excel だと COMBIN(n+k-1, k-1)
631 名前:デフォルトの名無しさん [2007/08/04(土) 15:19:30 ] COMBIN(n+k-1, k-1) は左右対称分を含むパターン数。 これで全パターンを格納する配列を確保できる
632 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 15:37:02 ] そして2で割れば重複分を除いたパターン数になるのだ!
633 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 20:13:25 ] #define N (10) #define K (4) struct stPattern { int NummBall[ K ]; int nDec; int nDecRev; }; int ipow(int nValue, int nPower) { int nRet = nValue; int i; for (i = 2; i <= nPower; i++) { nRet *= nValue; } return nRet; }
634 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 20:15:04 ] int combi(int n, int r) { int i, p; p = 1; for (i = 1; i <= r; ++i) { p *= (n - i + 1); p /= i; } return p; }
635 名前:613 [2007/08/04(土) 20:21:12 ] ソース貼りマンドクセ・・・ダサい実装 tool-ya.ddo.jp/webfs/~enigma/hoge.zip DL/解凍パス NumBallPattern
636 名前:613 mailto:sage [2007/08/04(土) 20:23:27 ] 0 : 3 0 0 0 1 : 2 1 0 0 2 : 1 2 0 0 3 : 0 3 0 0 4 : 2 0 1 0 5 : 1 1 1 0 6 : 0 2 1 0 7 : 1 0 2 0 8 : 2 0 0 1 9 : 1 1 0 1 N=3、K=4 の実行結果
637 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 22:25:00 ] include省略、拡張子 .c なのに new があったり、と よくわからん上に、n = 6, k = 12 でさえ相当の時間がかかる。 ダサいというか、ひどい。
638 名前:629 mailto:sage [2007/08/04(土) 22:47:53 ] ほい。 #include <stdio.h> void dispList(int *box) { int i,e; for(i=0;box[i]>=0;i++)/**/;e=i-1; for(i=0;i<=(e-1)/2;i++){ if(box[i]<box[e-i]) return; if(box[i]>box[e-i]) break; } for(i=0;i<=e;i++) printf("%d ",box[i]); puts(""); } void genLists(int *box,int n,int k) { int i; if(k==1) { box[0]=n; dispList(box); }else{ for(i=n;i>=0;--i) { box[k-1]=i; genLists(box,n-i,k-1); } }; } int main() { int n=3,k=4,*box; box=(int*)malloc(sizeof(int)*(k+1)); box[k]=-1; genLists(box,n,k); system("PAUSE"); return 0; }
639 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 22:57:47 ] びっくりするくらい同じコードだ kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4817.c
640 名前:613 mailto:sage [2007/08/04(土) 23:04:13 ] >>637 実際はVC++でcpp、includeはコピペ忘れ。 書いていなかったけど、Kは6、Kは16くらいまでの上限を想定している。 >>638 スマートで速い。これの方がずっと良いね。
641 名前:613 mailto:sage [2007/08/04(土) 23:05:05 ] ソース見ている間に >>639 も・・・ありがとう
642 名前:613 mailto:sage [2007/08/04(土) 23:11:08 ] あとは >>627 への対応か・・・xを決めたときに対応する箱毎のボール数が出るように
643 名前:デフォルトの名無しさん mailto:sage [2007/08/04(土) 23:13:34 ] 順番が指定されていない限り、その問題には答えられない
644 名前:638 mailto:sage [2007/08/04(土) 23:26:42 ] >>639 うわ、びっくりしたw。オレんと違ってデータ残してるのね… >>642 ゴメン。627のことはすっかり忘れてた。 639さんの使ってけれ
645 名前:639 mailto:sage [2007/08/04(土) 23:31:05 ] 最初はデータを残してなかったからもっと同じだったけど 613 が残していたのでそれにあわせたのです
646 名前:613 mailto:sage [2007/08/04(土) 23:37:19 ] >>643 パターンが網羅できていれば、順番は特に問いません。 >>638 のソースをベースに、>>639 のデータ記録を盛り込もうと試行中・・・
647 名前:613 mailto:age [2007/08/05(日) 00:33:49 ] みんなのお陰で問題解決できたよ。ありがとう。 問題を単純化しようとして敢えて”ボール”と”箱”にしたけれど、本当はバス線の分岐パターンを網羅したいという問題。 バス線につながるノード数と分岐数を決めたとき、全体としてありえる接続パターンを無駄なく網羅したかった。 だから左右対称のパターンは要らないとかの付加条件も発生。 仮にノード数を 8、分岐数を 3 にするとき、バス両端の 2ノード、"分岐"を必ず発生するための 3ノードは固定条件で、 残り 3 ノードをどの各分岐点にいくつ接続するパターンはいくつで、具体的にどうか?という問題になる。 分岐数が変わっても問題を定義できるよう、バス両端のバスを (ノード数 - 2 + 1) 個に分割して考える。この例だと N03 .N04 .N05 .N06 .N07 N08 .│ .│ │ .│ │ .│ N01─B01┴B02┴B03┴B04┴B05┴B06┴B07─N02 とB01〜B07の7本。分岐数を 3 にするということは、B02〜B06 のうち 3本の長さをゼロにする処理になる。 長さゼロにすべき3本の組合せパターンを網羅し、そこからランダムに一つ選んで、残りの長さゼロではないバス線と 分岐線による別の処理を・・・というところに行き着ける土台ができますた。 この例のパターンを示すソース kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/4819.c
648 名前:613 mailto:sage [2007/08/05(日) 00:36:13 ] >残り 3 ノードをどの各分岐点にいくつ接続するパターンはいくつで、具体的にどうか?という問題になる。 残り 3 ノードをどの各分岐点に接続するパターンはいくつで、具体的にどうか?という問題になる。
649 名前:デフォルトの名無しさん [2007/08/05(日) 00:36:31 ] くそ天皇 くそ天皇 くそ天皇 くそ天皇 いい加減死ねっつってんだろ屑ニートくそ天皇が 相変わらず病的な粘着っぷりだな屑ニートくそ天皇が 毎日毎日毎日粘着出来て良いでちゅねくそ天皇 くそ天皇さっさと死にやがれゴミが 東京に在住している精神病珍米糞ニートくそ天皇君の末路 さっさと精神病院逝くか首吊って逝くか選べや糞天皇が 早く死ねよ糞ニート天皇が 粘着精神病屑ニート天皇君は自らニートくそ天皇であると公言しました さっさと死ねやくそ天皇が 早く死ねっつってんだろ屑ニートくそ天皇が お前みたいなゴミクズ天皇は息してるだけで空気が汚れるからさっさと死ねや とっと死に晒せや糞ニート天皇が
650 名前:613 mailto:sage [2007/08/05(日) 00:36:54 ] どの各・・・益々ボケてきたorz
651 名前:デフォルトの名無しさん [2007/08/05(日) 00:37:03 ] くそ天皇 くそ天皇 くそ天皇 くそ天皇 いい加減死ねっつってんだろ屑ニートくそ天皇が 相変わらず病的な粘着っぷりだな屑ニートくそ天皇が 毎日毎日毎日粘着出来て良いでちゅねくそ天皇 くそ天皇さっさと死にやがれゴミが 東京に在住している精神病珍米糞ニートくそ天皇君の末路 さっさと精神病院逝くか首吊って逝くか選べや糞天皇が 早く死ねよ糞ニート天皇が 粘着精神病屑ニート天皇君は自らニートくそ天皇であると公言しました さっさと死ねやくそ天皇が 早く死ねっつってんだろ屑ニートくそ天皇が お前みたいなゴミクズ天皇は息してるだけで空気が汚れるからさっさと死ねや とっと死に晒せや糞ニート天皇が
652 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 01:03:57 ] >>647 敵を騙すにはまず味方から・・・って俺らを騙したのか!!!!?
653 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 01:15:33 ] いや、良い問題の簡単化だと思うよ。 俺は最初から >>647 の書き方をされたら、 読む気が起きなかったと思う。
654 名前:デフォルトの名無しさん mailto:sage [2007/08/05(日) 13:11:45 ] AI人工知能のお勉強はこちらからどうぞ ttp://www.1101.com/morikawa/index_AI.html
655 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 23:43:02 ] ss.nkk.affrc.go.jp/library/publication/seika/seikajyoho/2003/15/15.html に記述されている、 図4の(a)から(b)の結果はどのようなアルゴリズムになりますか?
656 名前:デフォルトの名無しさん mailto:sage [2007/08/15(水) 23:55:57 ] 結果はアルゴリズムではありません。
657 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 00:11:57 ] マルチうぜえ
658 名前:デフォルトの名無しさん mailto:sage [2007/08/16(木) 00:31:27 ] >>656 過程を知りたいわけです。
659 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 06:26:05 ] ボゴソートについて語ろうぜ
660 名前:デフォルトの名無しさん mailto:sage [2007/08/26(日) 15:40:51 ] 実際に実装しようとするとかなりと面倒だな。
661 名前:デフォルトの名無しさん [2007/10/10(水) 21:54:17 ] age
662 名前:シロートです [2007/10/12(金) 09:00:55 ] はじめまして。プログラミングの勉強してるものです。 アルゴリズムについて質問があります。質問はどこでしたらいいのか 分からなかったのでこちらに書かせていただきます。スレ違いかもしれませんが お願いします。もしアルゴリズムの質問板があるならそちらも教えていただけるとありがたいです。 C++言語を使っています。質問です。 4種類の連続した数値のデータがあります。4種類の測定時間や時間間隔は一緒です。 その4種類をひとまとまりとします。そのまとまりがいくつかあります。 それぞれのまとまりから一部分だけを取り出します。その一部分のデータの特徴を どんどんと集めていき4種類のデータの特性を求めたいです。その方法がわかりません。 すいません。ホントシロートです。質問の意味がわからないかもしれません。 でも本当に困ってます。ヒントだけでもいいのでお願いします。 プログラムが違うのかもしれませんが、 「似たようなデータをどんどん記憶していくことによりそのデータ達の 特性を求める」ということかなと自分では考えたのですがその方法も分かりません。 方法を知っているとかこんなコマンドがあるなど本当に何でもいいのでよろしくお願いします。 4種類のデータはヘリコプタの制御に使う、スロットル、エルロン、エレベータ、ラダーです。 特性はホバリングをしている時の4種類のデータ入力の特徴を見つけたいです。 よろしくお願いします。
663 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 09:39:36 ] マルチすんな。
664 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 10:55:47 ] >>662 取り敢えず、「ヘリコプタ」「ホバリング」「制御」で検索して、見つかったサイトを全部読んできてくれ。
665 名前:デフォルトの名無しさん mailto:sage [2007/10/12(金) 20:23:57 ] こっちでやってあげるからデータだけくれ
666 名前:デフォルトの名無しさん [2007/10/12(金) 22:38:27 ] プログラム初心者です。 アルゴリズムとロジックの違いはなんですか? 新人研修で先輩に質問したら、ググレカスのひとことで片づけられましたが いまだに謎が解けません。 よろしくです。
667 名前:exc [2007/10/12(金) 23:09:07 ] >> アルゴリズムというより統計の分野ではないでしょうか。 ヒストグラムとか散布図とか描いてみればいかがですか?
668 名前:exc [2007/10/12(金) 23:11:34 ] アンカーつけ忘れ >>662 アルゴリズムというより統計の分野ではないでしょうか。 ヒストグラムとか散布図とか描いてみればいかがですか?
669 名前:exc [2007/10/12(金) 23:16:02 ] >>666 アルゴリズムよりもロジックの方が大きな概念なんじゃないでしょうか。 アルゴリズムならロジック的である。 ロジック的だからといってアルゴリズムとは限らない。
670 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 17:20:04 ] 何処かの雑誌でアルゴリズムとロジックを解説してたな。 アルゴリズム:代数的な要素をもった解析可能な処理手順。 または特定の言語に寄らない処理手順の記述 ロジック :コーデイングよりの処理手順
671 名前:デフォルトの名無しさん mailto:sage [2007/10/13(土) 21:38:36 ] チューリングマシンで表現できるのがアルゴリズム 公理と推論規則で構成するのがロジック
672 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 13:27:45 ] >>670 そんな本は捨てたほうがいいな
673 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 19:39:19 ] 理由は?
674 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 20:17:17 ] ロジックの定義が根本的に間違ってる
675 名前:デフォルトの名無しさん mailto:sage [2007/10/15(月) 21:16:41 ] じゃあ正しい定義は何?
676 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 00:50:13 ] >>671 が見えないのか?
677 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 00:57:06 ] >>671 が定義に見えるのか?
678 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 16:09:43 ] アルゴリズムは理論で、ロジックは論理だろ
679 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 19:12:34 ] つまり?
680 名前:デフォルトの名無しさん mailto:sage [2007/10/16(火) 21:57:35 ] ののたん最高!
681 名前:676 mailto:sage [2007/10/17(水) 23:54:03 ] >>677 >>671 以外,どう定義しろと?
682 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 00:07:02 ] AはBである⇔BはAである
683 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 10:41:28 ] アルゴリズム = 処理方法 ロジック = 実装されている処理方法 でないの…何か違うな…
684 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 11:46:10 ] それ区分けしてなんか意味あんの? そんな明確な定義が周知されてない言葉なんか場に応じて使い方が異なるに決まってんだろ
685 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 13:19:38 ] >>679 アルゴリズム(理論)はロジック(論理)で実装される。
686 名前:デフォルトの名無しさん mailto:sage [2007/10/18(木) 13:21:37 ] 実装だと語弊があるな。「構成される」と言い直そう。
687 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 16:55:37 ] AVL木と赤黒木を実装したんですけどなんかほとんど変わらないっつーか AVL木の方が性能が良いんですがなんか間違ってますか? 赤黒木の方が使えるとか聞くんですけど。
688 名前:デフォルトの名無しさん mailto:sage [2007/10/21(日) 20:03:12 ] どのくらいのデータサイズでどういう操作を何回やったのを比較したのかがわからないと何ともいえない
689 名前:デフォルトの名無しさん [2007/11/01(木) 21:16:27 ] age
690 名前:デフォルトの名無しさん mailto:sage [2007/11/30(金) 21:00:49 ] アルゴリズムがそのままロジックとして実装されるとは限らない。 バグがあるかもしれないし、処理範囲を限定して実装されるかもしれない。
691 名前:デフォルトの名無しさん [2007/12/31(月) 15:10:26 ] あのさ質問があるんだけど アルゴリズムの性能評価って何してるんだ 意味わかんね 分かる人いたら教えてクダーサイ
692 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 01:41:01 ] アルゴリズムの性能を評価しているんでしょう、きっと。
693 名前:デフォルトの名無しさん mailto:sage [2008/01/03(木) 19:49:07 ] >>691 ということで、性能とは何か ということが焦点になると思う アルゴリズムの性能 というのは何を意味するのか ブラックボックス的な評価で言うなら ・機能を満たすこと ・メモリ使用量 ・速度 この3つの観点に絞られるような気がする
694 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 16:21:28 ] algorithm初学者です。 C言語の学習とあわせて学習してます。 search algorithmについて質問です。 10冊ほどパラパラと実際にalgorithmのテキストを見て吟味しましたが、 どの本もツリー・スタックといったありきたりのデータ構造を前提として そこからいかに高速に少ないメモリ使用量で検索するかという話になっていました。 私は、データ構造をいかに工夫するかという方向でも考察したいのですが、 手がかりになるテキストはありますでしょうか??? また、前提となる知識にどういったものがありますか?? 数学については大学教養レベルまではかろうじてある程度です。 computer scienceについてはド素人です。 たとえば、データ使用頻度に応じて機械学習で動的に検索の仕方を変えるとか、 データエントリに優先度を指定したり、データエントリ間に距離を定義したりすると 有益な検索システムが出来そうな気がします。 「そういうことは普通やらない」or「そういうことは既に考え尽くされている」のだとしても、 そういうことを自分でしっかり考えてみたいんです。 よろしくお願いします。
695 名前:デフォルトの名無しさん mailto:sage [2008/01/04(金) 22:47:10 ] >>694 具体例を挙げれないので申し訳ないが、 論文を探してみるのも良いかと思うよ。
696 名前:デフォルトの名無しさん [2008/01/05(土) 00:40:45 ] 前から思っていたんすがこの前教授がアルゴリズムの寿命がどうたらこうたら いっていたんですが何でアルゴリズムに寿命があるんでしょうか? アルゴリズムってプログラムだから寿命もくそも無いと思うんですが 頭悪い僕に簡単に教えてくれないでしょうか?お願いします。
697 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 00:51:04 ] よりよいアルゴリズムが開発されて古いアルゴリズムが広く実用的には使われなくなったって意味じゃないのか
698 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 01:00:13 ] ああ、一部の分野ではそういうこともあるよな。 よく考え付くよって思うよ。
699 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 01:05:37 ] >>694 > たとえば、データ使用頻度に応じて機械学習で動的に検索の仕方を変えるとか、 漢字変換アプリで1回変換したのは候補の最初に移動するって のはあるけど、使用頻度の低い奴をスワップアウトするとかは どうすんやろ、逆に教えて。 > データエントリに優先度を指定したり、データエントリ間に距離を定義したりすると > 有益な検索システムが出来そうな気がします。 これはどう役に立つの?
700 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 01:27:48 ] >>694 データ構造で最近面白いと思ったのは succinct structure だな。 興味があったら調べてみて。
701 名前:694 mailto:sage [2008/01/05(土) 03:43:59 ] >>695 論文というとACMとか情報処理学会とか入ったほうがいいですかね。 オススメの論文誌ありますか。 ipsjは一度入ってたんですけどね、学生会員だから安いと思って。 >>699 前半は初学者なので分かりません。 後半はサーチをする順序の問題です。 優先度をエントリごとに与えることで優先度の高いものから順にサーチすることにより高速にデータが見つかる可能性が高まります。 優先度自体は人間的主観に基づいてつけるものなのでアルゴリズムの問題ではないですが、 それをどう動的に付け替えるかといったことはアルゴリズムをどう適用するかという問題だし、実践上役に立つと思います。 距離を定義することで、エントリ間の類似度が定義されますと、似たものどうしをまず一通り探すという深さ優先的なサーチをするのか とりあえずいろんな種類のものをひととおりサーチするという幅優先的なサーチにするのかといった選択も可能になります。 すると、状況に応じて適したサーチメソッドの選択ができるようになります。 ツリーとかスタックといった定型的なデータ構造に限らないより一般的なデータ構造において、どうサーチをするのかということを 考える際に有益だと考えました。 もちろん以上は素人考えなので間違いも含まれると思います。 忌憚ないご意見ください。 >>700 succinct data structureというのはチラッと見た覚えがあります。 是非調べてみます。ありがとうございます。
702 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 05:17:27 ] >>701 検索対象に対して優先度を計算し直した時点で すでにデータをナめてることになるんだけど・・・ だからあり得ない [] 距離じゃなくてシグネチャとかハッシュ値の一致するものの 中から探すってのならあるけど。 こっちなら検索対象との距離じゃなくてただの絶対的に計算できる 値だから
703 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 07:52:46 ] 学生なら大学経由で論文落とし放題というイメージがあるのだが、 大学によって違うのかな?
704 名前:694 mailto:sage [2008/01/05(土) 16:26:31 ] >>702 > 検索対象に対して優先度を計算し直した時点で > すでにデータをナめてることになるんだけど・・・ ド素人の意見なので、通じないかもしれませんが、 私の考えとしては、検索のたびに優先度を計算しなおすのではなくて、 前もって優先度を指定してデータを格納しておき、そして毎回の検索に役立てるというやり方がいいかな と考えました。 >距離じゃなくてシグネチャとかハッシュ値の一致するものの中から探す なるほど、前もってデータを分類しておき、検索速度を上げるんですね。 私の興味があるのは、テキストデータのような容易には一律な分類が出来ないもの (あるいは一律に分類してしまうと強い作為性が生じてしまい実用に耐えないもの)です。 そういった場合に、距離を定めるといいのではと思いました。 >>703 大学生のときにはipsj入っていたという意味で、今は卒業しています。 卒業生として図書館利用することもできますが遠隔地なので手間です。
705 名前:694 mailto:sage [2008/01/05(土) 16:30:57 ] 追記 距離を定めるといい、と書きましたがこれは一例で、 そういった言わば「変な」「特殊な」数学を駆使した技術でこれまでにないことが出来たら 面白いと思っています。 私は学究的に変で特殊なことだけをやりたいのではなく、一つの選択肢として出来れば面白いと考えている程度です。 もちろん、スタンダードな理論も学習するつもりですが。
706 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 16:47:14 ] 新しいことが何かを見定めるには地道なサーベイが必要だよ。 めんどくさがらずに沢山の論文を読むことだね。
707 名前:694 mailto:sage [2008/01/05(土) 18:48:59 ] >>706 ありがとうございます。ACM, ipsjに入ることにしました。 論文といった大それた話とは別に、データ構造の側の工夫というのが行われてはいないんでしょうか。 例えば、RDBでデータの格納のしかたを工夫することで検索コストとスピードを上げるだとか、 Googleなどで使われているようなテキスト検索技術だとか。 アルゴリズムとは違う話なのかもしれませんが、そういうのにも興味があって、アルゴリズムではそういうことは扱わないのかな と思いました。
708 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 19:05:23 ] ACM・・・マーメイ・・・
709 名前:デフォルトの名無しさん mailto:sage [2008/01/05(土) 22:03:42 ] googleとかRDBか。確かに気になる namazとかか
710 名前:デフォルトの名無しさん mailto:sage [2008/01/08(火) 04:29:03 ] 既存のデータ構造以上のものが作れる可能性のある人間がこんなところで質問するわけねーw
711 名前:泉 こなた mailto:御供 [2008/01/08(火) 07:46:51 ] あけおめ!!
712 名前:デフォルトの名無しさん [2008/01/08(火) 12:14:13 ] >>693 他にも。 ・安定性(データによって所用時間が大きく変動しない) 例:クイックソートでは、ソート済みのデータソートには時間がかかる ・確実性 例:漸近法では解が発散することがある。
713 名前:694 [2008/01/09(水) 04:14:30 ] >>710 既存のデータ構造以上のものを作る、が希望要件ではなくて、 今年中をめどに、アルゴリズムに関する学習を徹底してやる、というのが希望するところです。 来年からは違ったプロジェクトが発動するので、それのための準備期間です。 だから、学究的な立場でデータ構造を研究して成果をあげたいのではないです。 そうではなくて、ド素人からプロの知識レベルくらいになりたいということです。 そのためにリサーチをかけて、本を10冊ばかりざっと読みましたが、どうも求めているような 高い水準で特殊な実用にも耐えるタイプの本がすくないということです。 一番面白かったのは『情報の構造』という本でした。 これは他の本と違って、ユニークなデータ構造をからめたアルゴリズムの記述が多々ありました。 そこで、こういったタイプの本が他にもないか、と探していたのです。
714 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 04:47:14 ] 高度な技術というものは細かくみれば基礎の組み合わせだけだったりする。 実用的なものほどそういう傾向が強い。 ユニークなものは大抵アカデミックに留まるもんだ。 >ド素人からプロの知識レベルくらいになりたい 焦らない方が…
715 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 05:09:06 ] 何故ド素人の君がその10冊の本に載っていたものが実用に耐えない低水準なものだと分かるのか
716 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 05:24:12 ] 素人なら素人らしく一般的なもので満足しとけ。 無理に変わったものに手をだそうとするのは時間の無駄。
717 名前:694 [2008/01/09(水) 11:24:08 ] >>714 一年猶予期間があります。それまでにプロフェッショナルになることは不可能な話では ないでしょうか。いきなりプロになろうとしているのではありません。 昨日も100ページほど本をじっくり読み進めました。 ゆっくり確実にコツコツとやろうとしていますので、どうかその意図をご理解くださると嬉しいです。 >>715 よく見かけるアルゴリズムが低水準だという意味ではないので、誤解のある書き方をしてしまいました。 申し訳ありません。 私が言いたかったのは、私の想定する特殊な用途のためには、ハイパフォーマンスを発揮できないのではないか、 ということです。 たとえば、ネットワークルーティングアルゴリズムを実装するのにはどんなデータ構造が適しているでしょうか。 グラフ構造というちょっと手強いデータ構造を必要とするかもしれません。 つまり、どんな状況でどんなデータ構造が必要とされてくるか分からない状況で、 stack, treeといった初歩的なdata structureだけしか知らずに太刀打ちしようとするのは無謀だと考えたのです。 プロフェッショナルなスキルを身につける上では、当然グラフ構造、ひいてはグラフに関する 数学理論も理解したいものですよね。 私が言う特殊な状況での高水準というのはそういうことです。 まだどんな仕事がくるか分からないので、そういう万全な勉強をしたいのですよ。 >>716 はい、変わったものを要求しているわけではないことは上の記述でご理解いただけたのではないかと 思います。 逆にお聞きしますが、スタンダードなデータ構造でいかにプロフェッショナルな仕事をするかという方向性でも 今後一年勉強する予定なのですが、その場合私が見かける書籍での学習では不十分な気がしてなりません。 何かアドバイスください。
718 名前:694 [2008/01/09(水) 11:26:34 ] 間違えました。 × 不可能な話ではないでしょうか。 ○ 不可能な話ではないのではないでしょうか。
719 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 13:03:38 ] 論文検索や学会誌を漁って参考文献を遡ったほうが早い
720 名前:694 [2008/01/09(水) 15:09:17 ] >>719 そうします。助言ありがとうございます。
721 名前:デフォルトの名無しさん mailto:sage [2008/01/09(水) 21:02:21 ] Knuthの基本算法は読んだ?
722 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 00:24:45 ] とても困っています。 アルゴリズムの問題を下に示します。 今、n個の数字を大きい順に並び替える事を考える。 ただし、同じ数字がある場合、これらは等価と見て並び替えなければならない。 つまり3つの0を考えた時、これらを 0a, 0b, 0cと見て、 これをソートした場合、毎回同じ並びになってはいけないものとする。 このようなソートアルゴリズムを考えよ。 良い方法はありませんかね。
723 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 00:41:14 ] >>722 宿題か?スレ違いだぞ。 通し番号つけてその番号でソートしろ。 毎回同じ並びになってはいけないって毎回同じデータが来るのか? だったらn通りの組み合わせを全て出現させる方法を調べろ。 その方法で同値部分の通し番号をつけ直せ。
724 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 02:11:09 ] >>722 あるよー stable_sort
725 名前:デフォルトの名無しさん mailto:sage [2008/01/10(木) 09:09:12 ] >724 >724 >724
726 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 00:58:04 ] >>722 permutation
727 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 09:03:18 ] >>722 ソート時の大小比較の判定を,2つのoperandの値が等しい時は乱数で決定するようにすればどう?
728 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 10:38:12 ] いや、乱数で予測不明にするんじゃなくて、毎回同じ並びに決定できるようにするんだろ?
729 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 11:54:45 ] >毎回同じ並びになってはいけない
730 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 15:19:49 ] 「毎回同じ並びでなければならない」だろう。常考
731 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 20:06:22 ] > ただし、同じ数字がある場合、これらは等価と見て並び替えなければならない。 というのが問題の意図なんだから、毎回同じ並びだとおかしい。
732 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 20:24:22 ] 同じ数値がある場合は全組み合わせを列挙してしまえばよいではないか?
733 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 20:43:14 ] ふつうのソートとさほど変わらないような時間でやり遂げたいんだろうな
734 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 21:19:13 ] 非効率的だけど単純に要素をシャッフルしてからソートすればいいんでないかい? random_shuffle() -> sort()
735 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 21:49:32 ] どうやってランダムのシャッフルをするの?
736 名前:デフォルトの名無しさん mailto:sage [2008/01/11(金) 23:45:15 ] クイックソートの入れ替える要素を選ぶときに、比較要素が等しい場合は適当な確率で入れ替えるとか。
737 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 00:03:31 ] >>734 シャッフルの計算量ってO(n)だから 十分効率的だよね。俺的にはそれでFAです。
738 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 00:07:58 ] 同じになっちゃいけないんだからランダムはまずいんじゃね?
739 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 00:29:37 ] >毎回同じ並びになってはいけない が「毎回必ず違う並びにならなければならない」なのか「必ず毎回同じになるようではならない」なのか
740 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 04:45:48 ] "同じ並びが出てはいけない"とすると、場合の数を出しつくした後の挙動に矛盾が出る。 まあボゴソートでいいんじゃない? 実装簡単だし。テストが大変かもだけど。
741 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 09:27:53 ] ボゴソートって初めて聞いた。 調べたらプチわろたw なんという天に任せる手法www 投げやりすぎw
742 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 09:45:58 ] 最初は後ろに追加していって最後にまとめてソートするのと、最初から順番通り挿入していくのでは、 前者の方が早い?
743 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 09:48:06 ] >>739 論理が破綻しているんですか? ~(毎回同じ並びになる) って事だから、同じやつが連続で出てもいいが、無限回やって 毎回同じ並びになるのはやめいって事だよ。 あったまわる・・ >>741 これはソートというのか・・・ カード投げて拾うとか・・・
744 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 09:56:54 ] 後者は所謂挿入ソートなので平均計算時間はO(n^2)になるが、 前者はソート法を選べるから例えばクイックソートを使えばO(n logn)になる。 従って、追加するデータがランダムならば前者がいい。 しかし、例えばカードゲームの持ち札のように常に部分がソートされている必要がある場合は 後者の方がいいとも言える。
745 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 09:57:33 ] >>743 ja.wikipedia.org/wiki/%E3%83%9C%E3%82%B4%E3%82%BD%E3%83%BC%E3%83%88
746 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 10:16:17 ] どっかに、各ソートアルゴリズムの動きを比較して見られるようなサイトはないかなぁ。 例えばこんなのが並んでいるだけでもいいんだけど。 ttp://ja.wikipedia.org/wiki/%E7%94%BB%E5%83%8F:Bubble_sort_animation.gif
747 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 10:38:41 ] permutation
748 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 10:41:53 ] >>744 doubt b-tree
749 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 11:07:56 ] ランダムな確率でランダムに入れ替えるという発想はいかんだろうか?
750 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 11:23:26 ] >>722 もしかして "stable sort でなければ何でもいい"って, 話なのではあるまいか?
751 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 17:02:26 ] おまいらは最強のボゴソートを知っているのか? 俺はあのソートの背景にある理論を知って涙を流した。 笑い涙だが。
752 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 17:41:37 ] 俺は鳩の巣理論によるロンドン髪の毛話に感心したものだった
753 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 20:25:01 ] 鳩ノ巣原理って中学受験で良く出るやつだな。
754 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 20:45:29 ] 田中幸雄はカツラじゃないよ
755 名前:デフォルトの名無しさん mailto:sage [2008/01/12(土) 20:45:53 ] えらいスレが延びてると思えばwww
756 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 21:35:51 ] >>742 うん
757 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 21:36:51 ] >>751 教えてください
758 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 21:50:12 ] c言語で、0〜5の乱数を取得する時 rand() % 6; よりも rand() / (RAND_MAX + 1.0) * 6; の方がいいんですか? なぜですか?
759 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 21:59:48 ] 整数と実数
760 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 22:03:34 ] >>758 俺は前者の方が読みやすくて良いと思うけど、 後者の方にもメリットはある。 rand関数の実装方法は処理系依存で内部がどうなってるかわからない。 ただ、完全な乱数をコンピュータで手軽に作りだすことは出来ないから、 当然何らかの疑似乱数関数になっている。 その疑似乱数はあくまでも疑似で、実装によっては もしかしたら一番下のビットが必ず0になるようなアホな設計かも知れない。 そんな場合、rand()%6 だと0 2 4しか取り出せなくなってしまう。 そういう場合、乱数の範囲から特定する方法(後者の方法)ならば まず間違いなく0〜5の値を出力することが保証される。 多分こういうことだと思う。何か他にもあればだれかプリーズ
761 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 04:49:51 ] RAND_MAXが6の倍数じゃないと分布に偏りが出る。
762 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 09:17:28 ] RAND_MAXが32767である実装は世の中に多いが(VCとか)、 0〜5なら問題ないが int x = rand() % 10000; とかした場合、明らかな偏りが発生してしまう。
763 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 09:42:36 ] rand() / (RAND_MAX + 1.0) * 6; これも偏りが発生すると思うんだが。 0-32767 -> 0-5 という変換なんだから。 擬似乱数スレに回避する方法があったぞ。
764 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 10:14:43 ] リソースが許せば、メルセンヌツイスタ拾ってきたほうが早いな。
765 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 13:19:16 ] 擬似乱数の多くは線形合同法だから 0〜5が欲しいなら余りを求めるんじゃなくて割り算するのよ 実際は、2^ビット幅/6 と掛け算して、上位ワードを採用するんだけどね
766 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 13:44:14 ] 一体いつの時代の話ですか
767 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 14:23:17 ] >>763 多分勘違いをしていると思うが、% 10000 で [0 .. 9999] にするとき、RAND_MAX が 32767 なら、 [0 .. 2767] が4通りになり、 [2768 .. 9999] が3通りになる。 >762 は、この4通りの部分がゼロ方向に集まることを指しているのだと思う。 [0 .. RAND_MAX] を [0 .. 9999] に線形に写像すれば、4通りの部分が全範囲にわたって均等に分布するようになる。 それでも4通りの部分をなくそうと思ったら、擬似乱数スレにあるように、RAND_MAX - (RAND_MAX % 10000) 以上を棄却するとよい。すると、どちらの方法でも均等になる(元の乱数が均等なら)。
768 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 15:50:12 ] [0,1,2, ..,N-1] のN個の整数から一つ選ぶ乱数を次のように実装すると (int)(rand() / (1.0 + RAND_MAX) * N) rand() は理想的な乱数生成器だとして、N = RAND_MAX - 1 ならば、 0になる確率が2/RAND_MAX、それ以外は1/RAND_MAXになるよね。 線形な写像でも誤差のせいで均等にならない場合もあると。 >>763 が言ってるのはこのことではないような気もするが
769 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 16:52:22 ] >>766 いつの時代ですかって、CのライブラリだろうがDelphiだろうが みんな標準で入ってる乱数は線形合同法だよ。
770 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 16:53:12 ] あ、でも、間違えてる 乱数と掛け算するんだった。
771 名前:デフォルトの名無しさん [2008/01/14(月) 17:16:02 ] Delphiwwww 一体いつの時代の話ですかwwwwwwwwwww
772 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 18:34:49 ] 文字列で指定した式を解析するのに 二分木で逆ポーランドに変換してからやる方法をさっき知って感動した
773 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:12:50 ] いつも思うんだけどさ ポーランド記法が既に逆ナンであって 逆ポーランドって言ってしまうと 元に戻ってないか?ってことなんだ
774 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 05:47:15 ] >767,768 そういう意味だったのか。 でもなんか中途半端というか偏りを散らした(写像変換した)だけで 本質的な解決策じゃないように感じる。 それに、整数 -> 整数 の変換に実数キャストが挟まるのが凄く無駄に思える。 実数の実装も考慮してないし。 棄却するパターンの方が数学的に美しい。と思う。
775 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 07:19:20 ] >>758 大抵の実装は線形合同法。線形合同法の乱数は、そもそも特性が悪い。 そして下位ビット程特性が悪いんだ。 だから、余りを使って下位を採用すると隔たりが普通より大きくなるんだよ。 0〜5の乱数が欲しいなら余りじゃなくて上位を採用しなければいけない。 というのと rand() % 6; は割り算が必要だけど rand() / (RAND_MAX + 1.0) * 6; は (RAND_MAX +1)は通常は2のべき乗だから、掛け算+シフトで計算出来るから 大抵のCPUで後者が高速という 2つの理由がある。
776 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 07:31:37 ] gcc -O3 on core2duoで実測してみたけど後者が遅かった記憶がある。
777 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 07:37:03 ] >>776 それはgccのRAND_MAXがint型の最大値に近いから、じゃない?
778 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 07:53:45 ] >>776 まさか、このまま実行したんじゃないの? イメージとしては (long)rand() * ( 1L<<32L )/6L )>>32 L; アセンブラコードだと EDXに2^32/6を入れて MUL EDX MOV EAX,EDX
779 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 08:14:15 ] >>778 あー ゲームとかではあるかもしれないけど、アルゴリズムスレの扱う範疇からは外れてるね 移植性が無さ過ぎる
780 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 08:31:31 ] 君は実にばかだ
781 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 08:32:09 ] よく言われる
782 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 12:09:53 ] >>775 「偏る」を「へだたる」って読んでる?
783 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 14:09:24 ] さすがにそれはなかろう
784 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 14:19:39 ] >>774 >実数の実装も考慮してないし。 え? intへのキャストを外すだけだろ。 rand() / (RAND_MAX + 1.0) は区間[0,1) (rand() / (double)(RAND_MAX) なら区間[0,1]) の実数の乱数だからな。 >>768 のひどい誤差は整数変換のせいなので むしろ実数の方が均一でより理想的なんだが。
785 名前:デフォルトの名無しさん mailto:sage [2008/01/15(火) 18:40:21 ] >>775 なにが高速だって?
786 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 02:28:50 ] 実数の配列A,Bから 最も値の近い要素の組A[k],B[l]を求める良い方法はないですか?
787 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 02:42:39 ] Aの各要素にA由来という印とインデックスを付加 Bの各要素にB由来という印とインデックスを付加 二つを合わせて配列CとしてCをソート Cを先頭から走査して隣り合う要素の由来が違うもので差が最小のところを探す ってのは? まぁ合わせないでAB別々にソートしてもできるけど
788 名前:786 mailto:sage [2008/02/06(水) 03:04:22 ] なるほど、つまり AB別々にソートしてからマージの要領で 比較していけばいいんですね。 ありがとうございました。
789 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 10:55:18 ] ソートアルゴリズムに興味があるんですが、 Ο記法とか計算時間の算出部などの計算式の意味がさっぱりわかりません。 Ο(n log n)とか意味がわかりません・・・ 文系で最後に数学に触れたのは高2だったので、とっくに忘れているし元々数学は得意ではありません。 自分もそのうち効率は悪くても自分なりのソートアルゴリズムを考えてみたいと思っているのですが、 何から勉強をはじめたらいいでしょうか?
790 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 11:34:34 ] 初心者向けのアルゴリズム入門の本なら、Ο記法の説明してあるのもある。 さすがに、log の意味から書いてあるのは少ないと思うが、 それくらいは高校の教科書読んで勉強してこいよ。
791 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 12:22:49 ] >>789 nは要素数でO(n log n)はnが増減した時の計算量の増減。 O(n^2)ならnが倍になると計算量が4倍になるってだけ。(3倍なら9倍) 計算量はあくまで計算量なんでアルゴリズムによって単位量あたりの 計算の複雑さは違うからね。 nlognなやつでもクイックソートとヒープソートは速度が大分違う。 メモリの局所性の問題とかもあったりする。 余計なお世話だと思うがソートは優秀なものが出尽くしてしまっているから 今更考え出すより既存のものを学んだ方が良いよ。
792 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 01:10:13 ] ==俺様用しおり========================= 今日はQTクラスタリングというのを知ったので このスレにメモっておく。
793 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 20:12:15 ] ソートアルゴリズムを知らない状態から自分なりのものを作ると高確率でセレクションソートになる気がする。
794 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 23:13:29 ] 高校の頃、自力で挿入ソートに辿り着きましたが。 マージャンプログラム作ってて発見したよ。
795 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 23:21:37 ] >>791 いろいろ間違ってるよね。O は計算量とは無関係な概念でしょ。
796 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 23:59:09 ] は?
797 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:06:36 ] f(n) = O( g(n) ) であるとは、ある正数 C と正整数 N が存在して 任意の n ≧ N に対して f(n) ≦ C g(n) が成立することをいう が、オーダ記法の定義でしょ。 計算量をオーダ記法で表現することは多いけど、別に関係はないよね。 オーダ記法で計算量を表さない分野だってあるよ。
798 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 00:16:49 ] >>797 ほー勉強になるが全く意味がわからんわw アルゴリズムって難しいね
799 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 04:02:58 ] オーダ記法は計算量の理論の研究の中から生まれたもの だから密接な関係があると言うのが普通 概念として独立させることができるとしても
800 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 07:55:37 ] >>799 > オーダ記法は計算量の理論の研究の中から生まれたもの このことのソースは? 私の認識では、そんなことは年代的に絶対に有り得ない。 計算量の理論は通常はコルモゴロフの1950年か チューリングの1936年をスタートだと考えるはず。 一方、オーダ記法自体はバッハマンの1894年が初出で、 広く使われるようになったのはランダウの1909年くらいから。 オーダ記法のほうが古い歴史を持っていると思うのだけれど。
801 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 08:08:46 ] >計算量の理論は通常はコルモゴロフの1950年か >チューリングの1936年をスタートだと考えるはず。 ダウト
802 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 08:18:45 ] では、あなたはいつからだと考えるのが自然だと思うの?
803 名前:799 mailto:sage [2008/02/08(金) 18:11:40 ] Wikipedia を見てみたが,確かに私の勘違いだったようだ.スマン.
804 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 18:18:29 ] ソースはWikipediaかよ
805 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 18:44:38 ] >>804 まあ大目に見てやれ。 その前は脳内ソースだったんだから。
806 名前:デフォルトの名無しさん mailto:sage [2008/02/09(土) 20:21:35 ] こんなのみつけた。ソートを可視化するスクリプトなのか? d.hatena.ne.jp/ytakamiya/20080125
807 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 16:00:22 ] Wikipediaにも画像あるし っつーか10年くらい前に 技術評論者のSoftwareDesign(いまもあるのか?)が記事で CQ出版のInterfaceが既に過去に取り扱ってた画像を そっくりそのまま盗用してしまってお詫びしていた
808 名前:デフォルトの名無しさん mailto:sage [2008/02/10(日) 20:46:42 ] >>807 でっていう。
809 名前:デフォルトの名無しさん [2008/02/14(木) 07:09:16 ] suffix arrayは名前の通り、後ろからのインデックスを作っていく様ですが なぜ前からじゃないんでしょうか
810 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 07:45:21 ] >>809 文字列系アルゴリズムでは prefix より suffix のほうが有用だ (と思われている)から。
811 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 13:06:56 ] BM法とか
812 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 21:33:07 ] >>809 prefix tree, prefix list などがあるよ。
813 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:23:04 ] あるアルゴリズムの概念はわかっていても、それをどういう風に実装するかとなると、 自分のレベルが低いため、難しくて実装することができません。 やり方を暗記してしまえば問題ないのですが、 暗記に頼るのではなく、考えてちゃんと実装できるようにしたほうがいいでしょうか? それとも暗記しとけばいいでしょうか?
814 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 21:31:54 ] 意味がわからん
815 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 22:45:51 ] >813 同じアルゴリズムを毎回毎回実装するなんて愚かしい。そういうものはライブラリとして持っておくべき。 ということで、実装方法を暗記しても意味がない。 結局、何かやりたいことを実現する=アルゴリズムを考えて実装する、になるし何もかも既存のアルゴリズムが 流用できる、なんてなるわけないから自分で考える必要はでてくる。 その練習として、有名どころのアルゴリズムを自分で実装してみて他の実装と比べてみるというのはいいことだと思う。
816 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 23:44:27 ] 実装方法が分かって、うまく動けばそれで満足するけどね。 実装できないと言うよりも 適切なアルゴリズムが分かってないんじゃないのかな。 あるいは、目的がぼんやりしているとか。 まぁいずれにしても、アルゴリズムは暗記でいい派だね。 さらには、辞書とか検索で調べられる程度の情報だけでいい。
817 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 00:38:36 ] 暗記でもいいから一回自分で書いてみたらいいと思うよ。
818 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 02:25:49 ] >>813 質問が二つ。 (1) 「自分のレベルが低い」というのは、プログラム能力が低いのか、 それともアルゴリズムを実装に起こす能力が低いのかどっち? 前者なら慣れればなんとかなる。後者ならそもそもアルゴリズムを 十分に理解できていない可能性が高い。 (2) あなたの立場と考えてるアルゴリズムは何? 極端なケースでは、研究者が自分の専門分野のアルゴリズムを 暗記しているようでは全然ダメ。
819 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 03:36:37 ] ソートアルゴリズムで言えばクイックソートやバブルソートとかの名前は知ってるけど、 どういう動作するのか、どうプログラムしていいのかとか分からないって状態なんじゃね? とても概念がわかってるとは言えないと思うけど。
820 名前:813 mailto:sage [2008/02/19(火) 20:53:16 ] レス遅くなりすみません。昨日はあのまま寝てしまって・・・ >>819 さんの指摘していただいてるような感じです。 ただ、どういう動作をするのかは理解しているつもりなんですが、 書き起こせないってことはやはり概念を理解していないんですかね・・・ >>818 1の質問についてですが、両方ですかねぇ・・・ プログラムでどういう風に書けばいいかわからないみたいな感じです。 特にループ部分などが・・・ループのネストなんてやったことなくて・・・ 2についてですが、 立場はただの趣味でやっているみたいなもんですかね。 将来的にプログラマを目指したいとは思っています。 アルゴリズムは探索やソートなどの基本的なものです。 基本的にソートや探索などの関数は、プログラム側で用意されていますし、 >>815 さんの仰るとおり外部ライブラリとしてもっておけばいいのですが、 一応理解したうえで使うべきものなのかなぁと思って質問しました。
821 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:02:26 ] ただのバブルソートだけでもいいからとにかく書いてみれ 自分で手を動かさない香具師は向いてない
822 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 21:42:40 ] そのレベルでは,何をするにしてもお話にならないので, とりあえず何でも良いから山ほどプログラム書くところからだね.
823 名前:813 mailto:sage [2008/02/19(火) 22:43:50 ] >>821-822 どうもありがとうざいます。 そうですね。とりあえずプログラムを書きまくってみることにします。
824 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 00:09:25 ] 新しいソートアルゴリズム発見した! とはいっても、どうせ同じようなのを他の人が見つけてるだろうけど… 数学的に厳密な書き方を知らないので雰囲気で書くけど、 m個の離散値を取る(たとえば整数1〜mまで、など)集合に属する値のソートの場合、 O(n×m)でソートが出来る。 例えば0〜127の整数10000個を降順ソートするプログラムはこちら int array[10000] = {}; for(int i = 0; i < 10000; i++) { array[i] = rand() % 128; } // データ構造を配列から2次元マップに変更 bool map[10000][128] = {}; // 全部false for(int i = 0; i < 10000; i++) { for(int j = 0; j < array[i]; j++) { map[i][j] = true; } } // ソート bool result[10000][128] = {}; // 全部false for(int i = 0; i < 128; i++) { int count = 0; for(int j = 0; j < 10000; j++) { if(map[j][i]) result[count++][i] = true; } } // 結果を配列に変換 for(int i = 0; i < 10000; i++) { for(int j = 127; j >= 0; j--) { if(result[i][j]) { array[i] = j; break; } } } コンパイル試してませんが…
825 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 00:34:34 ] 実装が壊滅的に最悪最低で酷くて、 書いたやつは救いようが無いビンソートにしか見えない
826 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 00:37:02 ] 酷評すぎてワロタ
827 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 01:02:25 ] >>824 何このゴミ
828 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 01:48:20 ] >>825 同じ事オモタ
829 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 07:31:17 ] 空間計算量 O(nm) って劣化にも程が
830 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 10:21:12 ] ネタだろ?
831 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 11:57:59 ] アルゴリズムにソースコードの実装は関係ないだろ、かわいそうにw この実装だと時間・空間計算量O(nm)だけど、 mを定数だと考えると、条件付きO(n)ソートになるな。 最も実用上どうかと思うけど、発想は面白そうだな。可視的にやればうけそう
832 名前:824 mailto:sage [2008/02/21(木) 16:03:55 ] 今までにない発想で面白いと思ったんだけど、 想像以上に叩かれてションボリ。スレ汚しすまんでした
833 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 17:53:30 ] 筋の悪いバケットソートでしかないしなあ
834 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 18:04:54 ] 作ってみた。 ビンソートと同列だから目新しさは全くないけど、 ドットを左に寄せていくとソートいう発想はなかなかいいな。 ttp://void-main.org/test/824.html
835 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 19:04:42 ] もっと簡単な方法を数分で思いついた。 int[] array = new int[10000], count = new int[128]; // 全部ゼロ for (int i = 0; i < 10000; i++) array[i] = (int)(Math.random() * 128); for (int i = 0; i < 10000; i++) count[array[i]]++; for (int p = 0, i = 0; i < 128; i++) for (int j = 0; j < count[i]; i++, p++) array[p] = i;
836 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 19:11:45 ] >>835 それは普通のバケットソート
837 名前:デフォルトの名無しさん mailto:sage [2008/02/21(木) 23:45:18 ] アムロの親父スレ
838 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 05:21:04 ] 自分のことを、誰も思いついてないような画期的なアルゴリズムを簡単に思いつけるような天才だと思ってんの?
839 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 11:58:34 ] >>824 >>838 子曰、學而不思則罔。思而不學則殆。
840 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 12:55:53 ] 自分で考えるのは大事だけど、ここでこんなの思いついたって発表するが痛いってことだろ。 バカだから文脈読めないけど、難しい言葉使って少しでもかしこく見せたいってかw
841 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 13:04:58 ] なぜ努力もせずにただ考えようとするんだろう
842 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 17:01:40 ] 基本も分からず、応用は出来ない
843 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 17:02:23 ] >>840 > 自分で考えるのは大事だけど、ここでこんなの思いついたって発表するが痛い いや、それはいいんじゃね?
844 名前:デフォルトの名無しさん [2008/02/22(金) 17:04:06 ] >>841 こういうのを「ゆとり」と言うんだろう
845 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 17:04:54 ] それこそ正にチラシの裏に書いておけってやつじゃね
846 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 17:28:58 ] でもそれをきっかけに他の住人が何か閃く可能性だってあるじゃん
847 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 18:28:52 ] 遺伝的プログラムで 個々の優劣が明らかに出来る集団で 各順位の分布を初期からほぼ一定にする様なアルゴリズムってかDNA組合せ無いっすか? 自然淘汰してる様で実は歴史は繰り返すみたいなの 松竹梅な比率 1:3:4 第1世代 ↓ 1:3:4 第N世代
848 名前:デフォルトの名無しさん mailto:sage [2008/02/22(金) 20:19:20 ] 松竹梅それぞれの内から次世代を作れば出来なくは無いと思うけど、なんか意味あんの?
849 名前:847 mailto:sage [2008/02/22(金) 21:54:22 ] あ、優劣は生殖能力って事で 例えば各個体に付松なら6回、竹2回、梅1回の試行して次世代も同個体数 確立以上に存在するABO式血液型OO型のナゾを逆方向から見た考察です。
850 名前:デフォルト名無しさん [2008/02/22(金) 23:47:58 ] 5+6/3を2ステップで求めることできる??
851 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 10:12:50 ] >>850 step1 『アルゴリズムオタク』スレで質問する step2 答えを待つ
852 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 10:40:16 ] >>850 質問1 括弧がないけど 5 + (6/3) でいいのかな? 質問2 何を1ステップに数えるの?メモリへのロードとかは?
853 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 11:02:58 ] メモリアクセスを除外すると、演算回数が2回なんだから2ステップだけどそれは自明だしね。
854 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 11:23:09 ] 値のロードを入れると3つの値をロードした瞬間3ステップだしなあ
855 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 11:29:57 ] 全部固定値なんで何を言いたいのか判らん a+(b/3) を a,b入力値で 四則演算で求めろとか? 加算+シフト演算で出すのは2ステップじゃ無理っぽいな
856 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:39:06 ] >>751 激しくカメレスで恐縮だが、あのソートアルゴリズムは 量子コンピュータ向きなのではないだろうか。えっ、違う?
857 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 11:59:52 ] おぬしも相当悪よのう
858 名前:デフォルト名無しさん [2008/02/25(月) 21:03:57 ] 850です。 教科書で問題として実際に出ているんです・・・・。 おれの頭じゃ無理で・・・
859 名前:デフォルトの名無しさん mailto:sage [2008/02/25(月) 21:21:59 ] >>858 >>852 >>855 質問しといてレスをスルーすんな
860 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 11:02:00 ] test
861 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 19:57:29 ] エクスプローラのように文字列中の数値を考慮して並び替えるのに 定番の方法ってあるんですかね。 ぐぐっても参考になりそうなのが見つからなかった。 自分で適当に書いてみたが 数値がでかすぎるとオーバーフローしてソート順が狂う。
862 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 20:59:19 ] 小数点や 3E5 みたいな10のベキ表現が無いなら右寄せしてから比較すればいいんだけど そうじゃないなら多倍長浮動小数点を自前で作るしかないね
863 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 21:07:31 ] 右寄せって何ですか? 用途がファイル名のソートなので 少数とかは考慮しないで大丈夫です。
864 名前:デフォルトの名無しさん [2008/02/27(水) 16:39:07 ] intのランダム数列に対して、ヒープソートとバブルソートをやって、所用時間を比較してるんですけど、 何度やってもバブルソートがヒープソートの半分くらいの時間でソートしてしまいます。 1〜100000のランダム数列に対して、 heap: 167.83 sec bubb: 83.2852 sec という感じです。ヒープソートの実装がまずいのでしょうか? 実装はwikipediaからパクりました。
865 名前:デフォルトの名無しさん [2008/02/27(水) 16:43:21 ] 864ですが、ソース貼ってもいい?
866 名前:デフォルトの名無しさん [2008/02/27(水) 16:48:06 ] より速いの作ってやるぜ
867 名前:デフォルトの名無しさん [2008/02/27(水) 16:50:16 ] 貼っちゃった。 int a[size] = {1,2,3,4,5,...};と配列を宣言して、 mysort_bubble(a,size); mysort_heap(a,size); というように呼び出します。 void mysort_bubble(int* a, int SIZE) { for (int i = 0; i < SIZE; i++) { for (int j = 0; j < SIZE-1-i; j++) { if (a[j] > a[j+1]) { swap(a[j], a[j+1]); } } } } void mysort_heap(int* a, int size) { int max = size; while (max > 0) { make_heap(a, max, 0); swap(a[0], a[max-1]); max--; } return; }
868 名前:デフォルトの名無しさん [2008/02/27(水) 16:51:15 ] 続きです。 void make_heap(int* a, int size, int idx) { int j = idx * 2 + 1; int k = idx * 2 + 2; if (j > size-1) { return; } if (j == size-1) { if (a[j] > a[idx]) { swap(a[j], a[idx]); } return; } make_heap(a, size, j); make_heap(a, size, k); int l; if (a[j] > a[k]) { l = j; } else { l = k; } if (a[idx] < a[l]) { swap(a[idx], a[l]); make_heap(a, size, l); } return; }
869 名前:866 [2008/02/27(水) 17:03:03 ] #include<iostream> #include<vector> #include<time.h> using namespace std; #define size 3000000+1 #define rnd(n) ((rand()&255)<<(8*n)) bool comp(const unsigned int &a, const unsigned int &b){return a < b;} main(){ cout<<size-1<<" 個の配列のソート\n\n"; vector<unsigned int> x(size); for(int i=0;i<size;i++)x[i]=rnd(0)+rnd(1)+rnd(2)+rnd(3); int cl=clock(); sort(x.begin(),x.end(),comp); cl=clock()-cl; cout<<(cl+0.0)/1000<<"sec\n"; cout<<"x[0]="<<x[0]; cout<<"\nx["<<size-1<<"]="<<x[size-1]; }
870 名前:デフォルトの名無しさん [2008/02/27(水) 17:13:34 ] ありがとうございます。 -cout<<(cl+0.0)/1000<<"sec\n"; +cout<<(cl+0.0)/CLOCKS_PER_SEC<<"sec\n"; ですよね? (自分の環境では、CLOCKS_PER_SECは1000000でした)。 たしかに、速いですね。
871 名前:866 [2008/02/27(水) 17:14:22 ] >>867 鈍すぎ #include<iostream> #include<vector> #include<time.h> using namespace std; bool comp(const unsigned int &a, const unsigned int &b){return a < b;} void mysort_bubble(int* a, int SIZE){ for (int i = 0; i < SIZE; i++) { for (int j = 0; j < SIZE-1-i; j++) { if (a[j] > a[j+1]) {swap(a[j], a[j+1]);}}}} main(){ int SIZE=30000+1; cout<<SIZE<<" 個の配列のソート\n\n"; int *a=new int [SIZE]; vector<int> x(SIZE); for(int i=0;i<SIZE;i++)a[i]=x[i]=rand(); int cl=clock(); sort(x.begin(),x.end(),comp); cl=clock()-cl; cout<<(cl+0.0)/1000<<"sec\n";cout<<"x[0]="<<x[0];cout<<"\nx["<<SIZE-1<<"]="<<x[SIZE-1]<<"\n\n"; cl=clock(); mysort_bubble(a,SIZE); cl=clock()-cl; cout<<(cl+0.0)/1000<<"sec\n";cout<<"a[0]="<<a[0];cout<<"\na["<<SIZE-1<<"]="<<a[SIZE-1]<<endl; }
872 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 17:23:20 ] >>864 ちゃんと見ていないけど、 mysort_heap, make_heap のところで 1 ベースの配列用と 0 ベースの配列用のコードが混じってるからおかしくなっているんじゃない?
873 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 18:22:27 ] >>863 自己レス。 右寄せってunko1024とunko256ってのがあったら 数字の部分の文字列を抜き出して 256 1024 という風に右寄せしてさらに比較って感じなのかな。
874 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 18:23:41 ] あ、スペース消えてる…。 ...256 1024
875 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 19:52:46 ] >>864 ja.wikipedia 見た.なんだこのクソ実装. きちんと解析する気も起きんが,このヒープソートは どれだけよく見積もっても O(n^2) はかかってる, 具体的には make_heap 1 回が,最後の再帰を止めても O(n) かかり,これを sort_heap で n 回繰り返すので, 最後の再帰が一回も実行されないとして O(n^2).
876 名前:デフォルトの名無しさん [2008/02/27(水) 20:18:05 ] STLのsortに対抗できないないなら初めからやる意味無し
877 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 02:28:32 ] ていうかアルゴリズムの話になるとなんでいつもソートの話にばっかり収斂していくんだろう。 いまさらソートなんてそうとう早くない(ry
878 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 04:48:20 ] ネタ振り ソートと同じでこれまた定番な話題に文字列検索がありますが、 文字列中で、複数の単語の中から最初に現れるものを検索 する場合はどうするのが良いでしょうか? 例 検索対象の文字列 abcdefg 単語 ac bc bd bcd この場合だと検索結果は bc bcd の2つになる。
879 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 05:14:01 ] 適当に単語の木を組めばいいんじゃね
880 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 05:22:02 ] >>875 ここまで糞なヒープソートも珍しいw 全く理解してないくせによくwikipedia書けるな… >>864 www.sci.csuhayward.edu/~billard/cs3240/node33.html
881 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 07:07:18 ] >>878 「最初に現れるものを検索」ってのが理解できない 文字列 abcdefg で単語 bc, de だったら bc だけになるの? なんにせよ Aho-Corasick の変形でいけそうだけど
882 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 07:09:57 ] >>878 ac|bc|bd|bcdを正規表現で検索
883 名前:デフォルトの名無しさん [2008/03/19(水) 07:14:43 ] 速度が大事なんだろ 一桁目の、ビットORをとって、対象文字とANDを取り一致すれば調べていけば
884 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:19:57 ] 間違いに気付いたら誰か直して欲しいなあ>>ウィキペ
885 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:50:11 ] どの記事?
886 名前:デフォルトの名無しさん mailto:sage [2008/03/19(水) 08:53:39 ] ja.wikipedia.org/wiki/%E3%83%92%E3%83%BC%E3%83%97%E3%82%BD%E3%83%BC%E3%83%88 これかな
887 名前:デフォルトの名無しさん [2008/04/08(火) 21:40:54 ] アルゴリズムを通信授業で勉強してるんですが かなりちんぷんかんぷんです 何故5→Aになるのかも意味が分かりません アルファベットだったら代入するのは何でもいいんでしょうか? それとも決まってますか? 後アルゴリズムの効率のいい勉強の仕方も教えてくださいm_ _m
888 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 21:46:17 ] >>887 俺にはお前の質問がちんぷんかんぷんだ
889 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 21:48:34 ] > 後アルゴリズムの効率のいい勉強の仕方も教えてください こんなこと言うやつは勉強しても身に付かず、結局 「効率のいいアルゴリズム教えてください」 って言うだけになるんだろうな。
890 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 21:49:09 ] >効率のいい勉強の仕方も教えてくださいm_ _m まず国語の勉強。
891 名前:デフォルトの名無しさん [2008/04/08(火) 21:56:05 ] お願いします。教えてください 文章が変なのはリアル厨房なので大目に見てくださいm(_ _)m はじめはアルゴリズムの何を勉強したらいいんでしょうか?
892 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 22:03:04 ] 「アルゴリズムを勉強する」ためのアルゴリズムを考えてみよう。
893 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 22:16:48 ] >>891 コミュニケーションに不自由しない程度の日本語力と 高校程度の数学の能力を身に着けることが先決. たとえば、 自然数に対して定義された関数 T(n) に関する漸化式 T(n) = 2 T([n/2]) + c n, T(1) = c' を考える(c, c' は定数、[ ] は切り上げ). この漸化式の解 T(n) が次の性質を持つことを証明せよ: 「ある自然数 N と実数 C が存在して任意の n ≧ N に対して T(n) ≦ C n log n」 と言われて自力で証明できないようでは、アルゴリズム論を勉強しても 結局何も身につかない。
894 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 22:55:18 ] >>887 本を買え。推薦図書スレで推されている本格的なのを。
895 名前:デフォルトの名無しさん mailto:sage [2008/04/08(火) 23:22:08 ] > 何故5→Aになるのかも意味が分かりません ああ、まったく意味が分からん。
896 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 02:18:30 ] >>887 通信授業でアルゴリズムを勉強していますがかなりチンプンカンプンな状態です。 Aに5を代入するにはA=5と記述すると習いましたが理解できていません。代入するとはどういう意味なのでしょうか? またA以外のアルファベットにも5を代入できるのでしょうか?それとも代入可能なアルファベットはAだけなのでしょうか? あと効率のいい勉強法をお知りでしたらそちらについてもアドバイスお願いいたします。m_ _m
897 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 03:14:11 ] >>896 代入ってのは変数に値を入れるという意味。 変数ってのは何らかの値を入れるための箱だと思っておけばいい。 そしてここではAってのが箱の名前で、5ってのが箱に入れる値。 ある種のプログラミング言語においてA=5という表現は、 Aという箱に5という値を入れる操作をコンピュータに行わせるという意味であって、 数学における同様の表現とは全く別の意味。 あと箱にAと名付ける事は代入ではないし、箱の名前はAじゃなくてもいい。
898 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 05:37:03 ] >>896 普通の(手続き型の)プログラム言語を一つ触ってみるといいんじゃないかな. Java とか Ruby とか何でもいいから. そうするとだいぶイメージがわくし,今後のためになるはずよ.
899 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 08:04:05 ] その通信授業で、わからないことをとことん聞くことは出来ないのか? 2chで通信授業するのはやめとけ。
900 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 12:11:16 ] ガキとオタクと田舎者はネットやんな
901 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 14:01:06 ] オタクに教えを請うことがいかに愚かなことか勉強になったな。 どんなことでも、勉強する時は、同じ分野の本を三冊以上読むんだ。 分からないことをスルーしながら、とにかく沢山読む。 すると、何が分からないのかが分かり、何を調べればよいのかがわかるようになるから、それまでに読んだ本から適切な部分を読んで調べることができるようになる。 とにかく沢山読め。
902 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 21:54:33 ] オタクってのは自分で勉強したり調べたりってことをしないのかね
903 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 22:42:35 ] いや自分で調べるくらい出来ないとオタクにはなれないだろ
904 名前:デフォルトの名無しさん mailto:sage [2008/04/09(水) 23:08:16 ] 昔のオタクはそうだったかもしれないが 今のオタクは・・・
905 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 03:30:22 ] >>902 ,903 オタクは自分で調べるが、他人に教えることは不得手。と思う。
906 名前:デフォルトの名無しさん mailto:sage [2008/04/10(木) 07:08:41 ] >>905 オタクってのは自己満足のオナニスト。 知識の切り売りをしているような軽薄な連中とは違うのだよ。
907 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 12:20:22 ] >>1 きもすぎwww まさかエレベータに乗ってるとき隣の奴がアルゴリズム考えてるとは思わないわ きもいから死んでくれ
908 名前:デフォルトの名無しさん mailto:sage [2008/04/12(土) 14:55:18 ] まさか、エレベータで隣り合わせた奴に「隣の奴がアルゴリズムを考えている」かどうか意識されているなんて思わないよ。
909 名前:デフォルトの名無しさん mailto:sage [2008/04/13(日) 02:44:50 ] >>907 お前の方がキモイから
910 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 07:36:00 ] オレは小学校のときからパチンコ屋のネオンがどうやって動いてるように見せているのかとか 信号で歩道用と車道用の切り替わりタイミングとかずっと考えてたけどな そんで周囲からいつもボーっとしてるって言われてた ココ居るやつらってみんなそんな感じじゃねーの?
911 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 08:23:00 ] >>910 あー、なんか判るわ。 私もエレベータの操作パネル見ながら点字を自力解釈したりしてたしね。
912 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 08:32:23 ] 人工物全般から製作者の意図を考えたりする。
913 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 09:40:46 ] >>910 俺は、そういうのはプログラミングを始めてからだな。 ただ、ボーっとしてると言われたっていうのはよくわかるw まさか小学生の子供がそんなこと考えてるとか大人は思いもしないんだよな。
914 名前:デフォルトの名無しさん mailto:sage [2008/05/06(火) 18:46:02 ] 点字は自分も考えたわ ローマ字を習う前だったけど 50音表と睨めっこして 子音+母音のパターンは見つけた (母音や子音なんて言葉は知らなかったけど) その時はボーッとしてるなんて言われてたけど 今は研究職やってます。脳味噌の構造はそのまま
915 名前:デフォルトの名無しさん mailto:sage [2008/05/15(木) 04:11:56 ] 過集中って奴じゃないですか。 ボーッとしているように見えるほど没頭するのは。
916 名前:デフォルトの名無しさん [2008/05/26(月) 23:16:42 ] ソートのアルゴリズムなんだけど 1.ランダムなプログラムをいくつか生成する。 2.データをプログラムに通す。 3.出力結果を評価する。 満足のいく速度でデータがソートされれば、終了する。 ダメなプログラムに対しては悪い評価を与える。あるいは破棄する。 それなりに有望なプログラムについては、良い評価を与える。 4.現在存在するプログラムをもとに、少し違ったプログラムを生み出す。 5.2へ これってボゴソートとは違うよね? 時間計算量はどのくらいになるんだろ? 実際、わりと優秀なプログラムが生き残ったっていう話を聞いたけど。
917 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 00:53:03 ] それはソートのアルゴリズムってより、遺伝的プログラミングだと思う。
918 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 01:23:50 ] >>916 たぶん、本当にそのとおりに実行したら、 現実的な時間ではソートプログラムは作れないと思う。
919 名前:デフォルトの名無しさん mailto:sage [2008/05/27(火) 02:31:24 ] >>916 ソートのアルゴリズムではなくて、個数が20個とかに限定されているときに 最小回数の比較でソートするには何番目と何番目をどの順番で 比較して交換いけばいいか?っていう問題だったと思う。 具体的な実装は>>917 。
920 名前:デフォルトの名無しさん [2008/05/27(火) 11:41:32 ] Core2Quad Q9450でPS2エミュをやると、実機と違い処理オチせず、激ムズになることが判明 namidame.2ch.net/test/read.cgi/news/1211740649/l50
921 名前:デフォルトの名無しさん mailto:sage [2008/06/12(木) 22:56:25 ] 赤黒木を1次元配列で実装したサンプルないですか?
922 名前:デフォルトの名無しさん mailto:sage [2008/06/14(土) 11:55:28 ] >>921 あるよ
923 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 10:51:10 ] じゃあ教えて
924 名前:デフォルトの名無しさん mailto:sage [2008/06/15(日) 22:49:45 ] 見つかりました。ありがとう。
925 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 07:44:21 ] ねーよw
926 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 13:37:39 ] 自己解決しました
927 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 14:20:28 ] なかったので自分で作りました。
928 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 20:45:58 ] ぐぐっても出てこないので、存在しません
929 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 21:06:02 ] ヤフったら出てきたので、存在します
930 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 22:41:46 ] まずさ、赤いのか黒いのか、どっちかはっきりしてくれないとわからないだろ?
931 名前:デフォルトの名無しさん mailto:sage [2008/06/16(月) 23:51:53 ] ねーよw はよだせコラ
932 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 22:11:51 ] と思ったらあった。すまんw
933 名前:デフォルトの名無しさん mailto:sage [2008/06/18(水) 23:09:33 ] いや、やっぱりこれじゃなかったw
934 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 15:07:20 ] 解決しました。
935 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 15:11:03 ] 騙るなバカw
936 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 20:52:13 ] お前らが全然役に立たんので、自力で考えた。 もちろん、教えてなどやらんがなw
937 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 20:53:46 ] じゃあ俺も自力で考えたw
938 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:03:02 ] 4ビットの値 0000から1111の完全ハッシュ求める式 教えてください
939 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:08:29 ] >>938 大きさ16のテーブル
940 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:33:56 ] >>938 0000から1111までの数の全部を対象に完全ハッシュ値を求めたいの?
941 名前:デフォルトの名無しさん mailto:sage [2008/06/23(月) 01:38:48 ] >>938 f(x) = x
942 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:08:53 ] >>940 部分集合の場合もありえます。
943 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:14:27 ] だったらその部分集合の性質を知ってないと作れないよ
944 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:25:31 ] 答え知ってると思ってて聞いたけど オタクとか言うほどレベル高くないんですね 海外じゃ論文とかで有名なネタなのに
945 名前:デフォルトの名無しさん mailto:sage [2008/06/24(火) 00:52:37 ] へぇ 論文見せて
946 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 12:28:42 ] >>938 が勘違いしてるに1カノッサ
947 名前:デフォルトの名無しさん mailto:sage [2008/06/25(水) 23:18:18 ] ネタ振ったつもりになってるに2ゴールド
948 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 01:02:59 ] で、論文は?
949 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 08:48:35 ] つ www.google.co.jp
950 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 08:51:50 ] アホ?w
951 名前:デフォルトの名無しさん mailto:sage [2008/06/26(木) 09:00:41 ] 「ただいま執筆中です」
952 名前:デフォルトの名無しさん mailto:sage [2008/07/01(火) 21:31:45 ] 結局出せなかったか ゴミめ
953 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 09:51:46 ] 再帰が好きな人います?
954 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 13:19:42 ] 好きというより得意
955 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 16:39:00 ] >>953 昔 LISP 触ってたから、今でも好きだよ。
956 名前:デフォルトの名無しさん mailto:sage [2008/08/03(日) 21:23:51 ] Cでも再帰は普通に使うが
957 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 08:13:09 ] loop で考えるよりも再帰の方が考えやすい問題もあるわな
958 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 08:20:33 ] 例えばフィボナッチ数を求める関数を作るときなんかそうだね。 先ずシンプルな再帰版を作って、次に結果を保存する版を作りたくなる。 その辺りで、どうせ組み込み型の整数では実現できる数が少ないことに気付いてテーブル作って終了w
959 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 08:36:48 ] n から m まで加算しろ と, 言われた場合はループも再帰も不可
960 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 08:59:07 ] >>958 フィボナッチって、まずループで作っちゃうけどな。
961 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 09:11:16 ] ループも再帰も、単なる実装の問題だからどうでもいい。
962 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 09:22:54 ] #if 0 // 再帰 int addFromNtoM(int n, int m) { if (n < m) return addFromNtoM(n + 1, m) + n; return m; } #elif 0 // 末尾再帰 int addFromNtoM(int n, int m, int s = 0) { if (n < m) return addFromNtoM(n + 1, m, s + n); return s + m; } #elif 0 // ループ int addFromNtoM(int n, int m) { int s = m; for (; n < m; ++n) s += n; return s; } #else // 要はこれになるからループも再帰も不可と言いたいのかな? int addFromNtoM(int n, int m) { return (m + n) * (m - n + 1) / 2; } #endif
963 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 20:02:57 ] >>960 そもそもフィボナッチを作ろうと思ったことがない。 再帰の例で使われてるのしか見たことない。
964 名前:デフォルトの名無しさん mailto:sage [2008/08/04(月) 23:23:48 ] >>963 つ 木構造 フィボナッチと置換すれ
965 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 00:54:15 ] O(1) (笑)
966 名前:デフォルトの名無しさん [2008/08/18(月) 01:27:24 ] STLのpartial_sortの計算時間って、要素数N、ソートする要素数をKとするとNlogKらしいんだけどなんでそうなるの? stdcxx.apache.org/doc/stdlibref/partial-sort.html
967 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 01:37:51 ] std::partial_sortって確か内部的にヒープソートを使ってたはず。
968 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 01:40:14 ] 要素数kのheap作成がO(K)で、その後(N-K)要素をpush/popするのに 一回あたりO(logK)というだけ?
969 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 01:43:49 ] 最悪の場合な。だから保証されている。 heap木を壊さないために必要。
970 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 01:44:00 ] Wikipediaのselection algorithmsのとこに載ってる、O(N+klogk)の変形quicksortの方が速そうだけど、 わざわざヒープを使ってるのには何か理由があるのかなぁ? en.wikipedia.org/wiki/Selection_algorithm#Optimised_sorting_algorithms
971 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 01:46:18 ] > heap木を壊さないため どういうこと?
972 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 01:47:38 ] 理由はよくわからないが歴史的な経緯により sort()はクイックソート、stable_sort()にはマージソート、 partial_sortにはヒープソートを使っていると「C++標準ライブラリ」には書いてある。
973 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 01:48:27 ] >>971 ヒープソートについてぐぐってみ。 正確にはO(log2N)必要。O記法によりO(logN)になってるだけ。
974 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 01:51:38 ] 調べてみたらpartial_sort()の目的にヒープソートが合っているかららしい。 クイックソートは途中でソート処理を打ち切るのは困難であるが、 ヒープソートは容易であるのでpartial_sort()の用途に合っている。
975 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 01:53:03 ] stable_sortにquickやheapが使えないのはアルゴリズムの性質上そのとおりだと思うけど、安定であることが求められて以内partial_sortにquickが使えないのは納得できないなー。
976 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 01:55:11 ] >>974 資料希望。>>970 には真逆のことが書いてあるわけで。
977 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 01:59:42 ] 悔しければC++標準化委員会に入れば?
978 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 02:03:47 ] そうする。
979 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 02:05:08 ] まあ無理だと思うけど。
980 名前:デフォルトの名無しさん mailto:sage [2008/08/18(月) 02:14:42 ] Wikipediaに書いてあるアルゴリズムは、STLのnth_elementとsortを組み合わせれば、自分でコード書かなくても使えることが分かった。 wordaligned.org/articles/top-ten-percent この記事と同じように速度測ってみて、使い分けることにするわ。スレ違いっぽいのでこのへんで。
981 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 03:25:02 ] 次スレは?
982 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 09:59:55 ] /* ギャップバッファ haiku.mine.nu/gapbuffer.zip これの、GapBuffer_GetRealPosition()関数の戻り値が何を意味しているのかわかりません。
983 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 11:01:12 ] age
984 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 11:47:53 ] ギャップバッファー上のバイト位置から、 データとしての先頭からのバイト位置を計算。 return i - (this->end - this->start); あたりの間違いだろうな。
985 名前:デフォルトの名無しさん [2008/08/20(水) 22:42:01 ] >>384 すみませんが、よくわかりません。 if(i < this->gap_start) return i - (this->gap_end - this->gap_start) else って事ですか?
986 名前:デフォルトの名無しさん mailto:sage [2008/08/20(水) 22:51:02 ] 初心者スレ行け