« カラハン朝 | メイン | 新たな遺伝的形質が物理・化学的な性質である »

アルゴリズム解析

アルゴリズム解析とは、アルゴリズムの実行に必要とされるリソース(時間や記憶領域)量を見積もることである。多くのアルゴリズムは任意長の入力を受け付けるよう設計されている。アルゴリズムの「効率」や「複雑さ」は一般に、入力長からそのアルゴリズムを実行するのに必要なステップ数(時間複雑性)や記憶領域サイズ(空間複雑性)への関数として表される。

アルゴリズム解析は理論計算機科学の重要な一分野である。隣接する計算複雑性理論では、与えられた問題を解くアルゴリズムが必要とするリソースを理論的に見積もる。この見積もりにより効率的なアルゴリズムを設計する指針が得られることがある。
ラフランス生活・暮し情報
美容整形・ぜん息関連健康・医療情報
マウンテン通販ショッピングサーチ
ココスクラブ教育全国情報ガイド
旅館・旅館関連お出かけ総合
コンニャクヤ最新コスメチック情報
設計施工・就職関連ビジネスビジネス情報
ビー玉生活紹介ナビ
矯正歯科・リラクゼーション関連ようこそ医療総合
モダニカネットショッピングサーチ


アルゴリズム解析ではふつう、漸近的(asymptotic)な意味で複雑性を見積もる。すなわち、あるていど大きな入力長の際の複雑性関数を見積もる。このためにO記法、Ω記法、Θ記法が用いられる。例えば、二分探索のステップ数は入力サイズの対数に比例し、これを O(log(n)) と表記したり、「対数時間」と称したりする。このような漸近的な見積もりを用いるのは、同じアルゴリズムでも実装の違いにより差が出るのを捨象するためである。異なる実装による効率の違いは定数倍に留まる。この定数を隠れた定数(hidden constant)と呼ぶ。

漸近的でない正確な効率がわかる場合もあるが、そのためには「計算モデル」と呼ばれるアルゴリズムの特定の実装を仮定する必要がある。計算モデルはチューリング機械のような抽象化された機械を使うか、個々の命令の実行時間が変化しないと仮定することが多い(例えば実際のコンピュータではキャッシュにヒットするかしないかでは大きく実行時間が異なるが、アルゴリズム解析では一般にそれを無視する)。例えば、二分探索で N 個のソートされた数から探索する場合、1回の参照を一定の単位時間でできるとした場合、回答を得るまでに最大で log2 N+1 単位時間を要する。正確な見積もりはアルゴリズムを実装して使用する人々にとって有用であり、実行に要する時間を正確に知ることができる。一部の人々(例えばゲームプログラマ)にとっては、隠れた定数が成功と失敗を分けることもある。

時間効率の見積もりはステップとして定義するものに依存する。意味のある解析をするには、各ステップの実行時間の上限が一定でなければならない。例えば、2つの数の加算を1ステップと仮定したとしよう。この仮定は場合によっては正しくない。例えば数が極めて大きくなれば、加算が一定時間で完了するとは限らないからである(紙と鉛筆で2桁の加算をする場合と1000桁の加算をする場合を比べていただきたい)。

トラックバック

このエントリーのトラックバックURL:
http://www.misojide.com/blog/mt-tb.cgi/3472

About

2009年04月28日 12:00に投稿されたエントリーのページです。

ひとつ前の投稿は「カラハン朝」です。

次の投稿は「新たな遺伝的形質が物理・化学的な性質である」です。

他にも多くのエントリーがあります。メインページアーカイブページも見てください。

Powered by
Movable Type 3.35