タグ

Algorithmに関するmickey24のブックマーク (7)

  • Clever Algorithms: Nature-Inspired Programming Recipes

    Need help getting started with Genetic Algorithms, Neural Networks or Swarm Intelligence? Nature-Inspired Algorithms are Fascinating! But implementing them can be frustrating. The algorithm descriptions are incomplete, inconsistent and distributed across academic papers, websites and code. There are so many algorithms to choose from, it can feel overwhelming. Algorithms Handbook You need a handboo

    mickey24
    mickey24 2011/01/26
    人工知能の分野で使われているアルゴリズム45個がRubyのコード付きで解説されている本.PDFが無料で入手できる.
  • イントロソート - Wikipedia

    イントロソート(英: introsort)は、David Musser(英語版) が1997年に設計した、クイックソートとヒープソートを組み合わせたソートアルゴリズムである。 最初はクイックソートを行い、再帰のレベルがソートされた要素数(の対数)を超えるとヒープソートに切り替える。時間計算量は最悪でも O(n log n) であり、同時に典型的なデータに対するソートではクイックソートに匹敵する性能を示す。 イントロソートは、クイックソートやヒープソートと同様、比較ソートである。 クイックソートは、性能がピボット(データ列を分割する境界値)の選択に強く依存するという欠点があった。 例えばデータ列の先頭や最後尾をピボットに選ぶと、ほぼソートされた入力について最悪の性能を示す。 ニクラウス・ヴィルトはこれを避けるため、データ列の中央の要素をピボットに選ぶようにしたが、工夫をこらした並びに対しては

  • Sorting Algorithms Animations

    KEY Black values are sorted. Gray values are unsorted. A red triangle marks the algorithm position. Dark gray values denote the current interval (shell, merge, quick). A pair of red triangles marks the left and right pointers (quick). DISCUSSIONThese pages show 8 different sorting algorithms on 4 different initial conditions. These visualizations are intended to: Show how each algorithm operates.

    Sorting Algorithms Animations
  • O(log n)でフィボナッチ数を求める - 趣味的にっき

    O(log n)でフィボナッチ数のN番目を求める方法をRubyで実装してみました。この間のSICP勉強会で教えてもらったやつです。 まず普通のフィボナッチ数。こいつはO(n)です。 def fib1(n) a, b = 0, 1 n.times do a, b = a + b, a end a end O(log n)版のフィボナッチ数。なんでこれでフィボナッチ数が求められるかは、ここを参照してください。ちなみにRubyのMatrixの**は、O(log n)で実装されています。 require 'matrix' def fib2(n) a = Matrix[[1, 1], [1, 0]] b = Matrix[[0], [1]] (a ** n * b)[0, 0] end こんな感じでベンチマークをとってみました。 require 'benchmark' n = 100_000 Ben

    O(log n)でフィボナッチ数を求める - 趣味的にっき
    mickey24
    mickey24 2008/10/15
    行列のn乗がO(log n)で計算できることを利用するとな。
  • Spaghetti Source - 各種アルゴリズムの C++ による実装

    ACM/ICPC(プログラミングコンテスト)系列の問題を解くことを目標にして,各種アルゴリズムを C++ で実装してみた.極めて意地が悪い類の問題には対応していないし,特定の入力に対して高速に動くということもない.計算量も最良とは限らない. これらを参考にする方への注意とお願い: これらの記述は正確とは限りません.参考文献を参照することを強く推奨します.間違っている場合は是非教えてください. これらのプログラムは間違っているかもしれません.各人で検証することを強く推奨します.バグがあれば是非教えてください. 分類が怪しいので,これはこっちだろう,ということがあればコメントを下さると助かります. 注意! 現在書き換え中 TODO 分類を正しく行う. 全体的に説明と使い方を詳しく. Verify していないものを Verify. ボロノイ図(いつになることやら……) 基 テンプレート グラフ

    mickey24
    mickey24 2008/08/28
    ICPCで使えるアルゴリズムのC++による実装を紹介している。
  • 平面幾何におけるベクトル演算 » ソースコード

    テキスト「平面幾何におけるベクトル演算」で使用したソースコードを全て掲載します。 ICPCではWebは参照できないので印刷しておきましょう。:-) #include <complex> using namespace std; typedef complex<double> P; // 許容する誤差ε #define EPS (1e-10) // 2つのスカラーが等しいかどうか #define EQ(a,b) (abs((a)-(b)) < EPS) // 2つのベクトルが等しいかどうか #define EQV(a,b) ( EQ((a).real(), (b).real()) && EQ((a).imag(), (b).imag()) ) // ベクトルaの絶対値を求める double length = abs(a); // 2点a,b間の距離を求める double distance

    mickey24
    mickey24 2008/06/28
    complex<double>を使った平面幾何のプログラム例。
  • ALGORITHM NOTE

    X×Y個のセルから成るグリッド上のスタート地点から出発し、全5種類のパチクリ(生物)を捕まえた状態でゴール地点まで行く最短コストを求める問題です。各パチクリはそれぞれ、火、氷、木、土、水の属性を持ち、火のパチクリは氷のパチクリを捕まえることができ、氷のパチクリは木のパチクリを捕まえることができ、といったように火→氷→木→土→水→火というような属性の関連があります。スタート地点で最初に持つパチクリを1つ選ぶことができます。グリッドのサイズx, y はそれぞれ2以上1000以下で、各属性のパチクリの数はそれぞれ0以上1000以下です(全体の数は5000以下)。 最初に1つのパチクリを選んだ後のパチクリを捕まえる順番は、上記属性の関連の順番になります。例えば最初に火の属性をもつパチクリを持っていれば、氷、木、土、水の属性をもつパチクリを順番に捕まえてゴールに行けばよいので、下図に示すDAG(Di

    mickey24
    mickey24 2008/06/02
    ICPCで使うアルゴリズムの紹介がメイン。図を使って解説しているので分かりやすい。
  • 1