タグ

programmingとアルゴリズムに関するPSVのブックマーク (8)

  • 良い乱数・悪い乱数

    C言語標準ライブラリの乱数rand( )は質に問題があり、禁止している学会もある。 他にも乱数には様々なアルゴリズムがあるが、多くのものが問題を持っている。 最も多くの人に使われている乱数であろう Visual Basic の Rnd の質は最低である。 そもそも乱数とは 乱数とは、来サイコロを振って出る目から得られるような数を意味する。 このような乱数は予測不能なものである。 しかし、計算機を使って乱数を発生させた場合、 次に出る数は完全に決まっているので、予測不能とはいえない。 そこで、計算機で作り出される乱数を疑似乱数(PRNG)と呼び区別することがある。 ここでは、特にことわらない限り乱数とは疑似乱数のことを指すとする。 計算機でソフト的に乱数を発生させることの最大のメリットは、 再現性があることである。 初期状態が同じであれば、発生する乱数も全く同じものが得られる。 このことは

  • yebo blog: クヌース教授は間違っていた

    2010/06/15 クヌース教授は間違っていた Slashdotによれば、この数十年間、クヌース教授をはじめとするコンピュータ科学者が最適としてきたアルゴリズムを10倍高速にする方法をPoul-Henning Kamp (PHK) というハッカーが見付けたという。その論文タイトルは「You're Doing It Wrong (あなた達のやっている事は間違っている)」で、ACM Queueに掲載されている。別にクヌース教授の考えが間違っているわけではなく、アルゴリズム的には正しいが、実用レベルでは、OSには仮想メモリがあり、VMと干渉しないようにすれば簡単に高性能なシステムが作れる。従来の考え方はモダンな計算機を考慮に入れていないので、現実的には不適合を起こしている。具体的にはヒープにBツリーの要素を取り込んだBヒープというデータ構造を使うことで、バイナリヒープの10倍のパフォーマンスを

    PSV
    PSV 2010/06/16
    具体的にはヒープにBツリーの要素を取り込んだBヒープというデータ構造を使うことで、バイナリヒープの10倍のパフォーマンスを出せるそうだ。VarnishというオープンソースのHTTPアクセラレータの問題を解決できたとのこと
  • 『C言語による最新アルゴリズム事典』

    奥村晴彦『C言語による最新アルゴリズム事典』技術評論社,1991年,ISBN4-87408-414-1,2400円 大きな画像(1.1M) 1987年10月にPascalを使った『コンピュータ・アルゴリズム事典』を,1991年2月にその改訂版としてANSI C言語を使った『C言語による最新アルゴリズム事典』を出版しました(いずれも技術評論社)。そのサポートページをつくろうと思いながら多忙のためなかなかできませんでした。とにかく始めなければ……というわけで,サポートページまがいのものを作ってみました。 石田晴久ほか『コンピュータの名著・古典100冊』(インプレス,2003年)に選んでいただきました。100冊といっても日人の書いたものは20%しかなく,たいへん恐縮しています。 Frequently Asked Questions どの銘柄のC言語ですか? ほぼ当時のANSI Cドラフトに基づ

    PSV
    PSV 2006/11/29
    奥村晴彦/ソースコード
  • アルゴリズム講座/実践編/ハッシュ法(幅優先探索)

    思考アルゴリズムの王様バックトラックにも弱点があります。その弱点と克服法を考えてみます。ちょっと難しくなりますが「再帰」は使用しないので、ある意味ではむしろ人に分かり易いアルゴリズムなのかも知れません。 1.「15パズル」のミニ版「5パズル」を解く 右図の5枚のパネルをランダムにシャッフル後、パネルを上下左右に スライドして元の順番通りになる様に最小の手順で並べ直して下さい。 この問題に先ほどのバックトラックを使っても失敗します。何故なら 「堂々巡り」という現象が発生してしまうからです。 堂々巡りとは、局面Aから局面Bへと変化しさらに局面Cへと探索が 進んでいったが、もしいつしか元の局面Aに変化してしまったらこれま での探索の過程が繰り返し実行されてしまいます。これでは無限地獄。 これを防止するには、探索過程の総ての局面を保存しておいて過去に 同じ局面がなかったかをチェックしながら探索しな

    PSV
    PSV 2006/11/28
  • アルゴリズム講座/実践編/バックトラック

    バックトラック(バックトラッキング)は思考アルゴリズムの王様と言っても過言ではありません。私の知る限り思考プログラムの約90%はバックトラックを使っていると思います。 1.バックトラックの考え 人が行う「試行錯誤という行為」を忠実に実行するように考え出されたアルゴリズムで利用範囲は 広範です。もちろん不得意分野もあります。 複数の未知のものを上手く組み合わせて、ある条件を満たす全体を得るのに、その未知のものを ひとつずつ許される範囲内で「もし、こう仮定して」さらにこの状態から「次に、こう仮定して」 というように仮定から仮定へと強引に突き進みます。 そんなことをすれば大抵は途中で行き詰ってしまいます。その時は1歩戻って(バックトラッキング) 仮定を立て直して、また、突き進みます。総ての仮定に失敗したら、そこからまた1歩戻って新たな仮定 を立て直して同様に進行すれば、やがては解に到達することに

    PSV
    PSV 2006/11/28
    バックトラック法
  • Puzzle De Programming

    サービス終了のお知らせ いつもYahoo! JAPANのサービスをご利用いただき誠にありがとうございます。 お客様がアクセスされたサービスは日までにサービスを終了いたしました。 今後ともYahoo! JAPANのサービスをご愛顧くださいますよう、よろしくお願いいたします。

    PSV
    PSV 2006/11/28
    M.Hiroi's Home Page / Puzzle De Programming
  • 定本 Cプログラマのためのアルゴリズムとデータ構造 サポートページ

    書の目次 なお詳細な目次はこちらをご覧ください。 第1部 アルゴリズムとデータ構造の基 1. アルゴリズムとは? 3. データ構造とは? 2. 計算量 第2部 基的なデータ構造 4. 配列 6. 木構造 5. 連結リスト 第3部 探索 7. 探索とは? 9. 二分探索木 8. ハッシュ法 10. 平衡木 第4部 整列 11. 整列とは? 15. マージソート 12. 単純な整列アルゴリズム 16. ヒープソート 13. シェルソート 17. 比較によらないソート 14. クイックソート 第5部 文字列の探索 18. 文字列の探索 19. 正規表現 第6部 いろいろなアルゴリズム 20. バックトラック法 22. メモリ管理アルゴリズム 21. 動的計画法 23. キャッシュ

  • Amazon.co.jp: アルゴリズムイントロダクション 第1巻 数学的基礎とデータ構造: T.H.コルメン (著), 浅野哲夫 (翻訳): 本

    Amazon.co.jp: アルゴリズムイントロダクション 第1巻 数学的基礎とデータ構造: T.H.コルメン (著), 浅野哲夫 (翻訳): 本
  • 1