決定的アルゴリズムとは? わかりやすく解説

Weblio 辞書 > 同じ種類の言葉 > 情報 > コンピュータ > アルゴリズム > 決定的アルゴリズムの意味・解説 

決定的アルゴリズム

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2022/03/09 08:27 UTC 版)

ナビゲーションに移動 検索に移動

決定的アルゴリズム(けっていてきアルゴリズム、: deterministic algorithm)は、計算機科学におけるアルゴリズムの種類であり、その動作が予測可能なものをいう。入力を与えられたとき、決定的アルゴリズムは常に同じ経路で計算を行い、常に同じ結果を返す。決定的アルゴリズムは最も研究の進んでいるアルゴリズムであり、その多くは実際のコンピュータで効率的に実行できる実用性を備えている。決定性アルゴリズムと言うことも多い。

決定的アルゴリズムは、同じ入力に対しては常に(ひとつの)同じ結果を返すという点で、関数の一種とみなせる。アルゴリズムはその結果の計算の具体的な手順を与えるものである。

形式的定義

形式的には、決定的アルゴリズムは有限状態機械で定義される。この場合、ある「状態」はある時点でその機械が何をしているかを表している。有限状態機械はある状態から別の状態へ厳密に遷移する。有限状態機械が決定的(決定性)であるとは、ある入力を与えられたときにその機械が通る状態遷移の経路が常に同じであることを意味する。

決定性のある計算模型の例としては、決定性チューリング機械決定性有限状態機械がある。

非決定的なアルゴリズムを構成する要因

非決定的な振る舞いのアルゴリズムを構成する要因としては以下のようなものがある。

  • 入力以外の外部の状態を使用する場合。例えば、ユーザー入力、大域変数、ハードウェアのタイマ値、ディスク上のデータなど。
  • タイミングに依存した処理をする場合。例えば、複数のプロセッサが同時に同じアドレスにデータを書き込む場合、実際の正確な書き込み順序によって最終的な結果が異なる。
  • ハードウェアの故障などの要因で予期しない動作をする場合。

完全に決定的なプログラムというものは実際には珍しいが、決定的であるほうが扱いやすい。このため、特に関数型言語を中心とするプログラミング言語の多くは上に挙げたようなことが偶然に起きたりしないようにしている。そのような制約によって決定性を与えているため、決定的アルゴリズムを「純関数的; purely functional」と称することもある。

決定的アルゴリズムの問題

しかし、ある種の問題では決定的アルゴリズムを発見するのが困難である。例えば、ある数が素数であるかを判定する単純で効率的な乱択アルゴリズムが存在し、判定を間違う可能性は極めて小さい(ミラー-ラビン素数判定法)。そのようなアルゴリズムは1970年代から知られているが、同様の問題についての決定的アルゴリズムはそれに比較するとあまりにも時間がかかる。

実用的にも重要な問題が多く属するNP完全問題は、非決定性チューリング機械を使えば高速に解くことができるが、効率的な決定的アルゴリズムは見つかっていない。そのため、現状では近似解を求めたり、特殊な条件を付与して解を求めるしかない。

別の問題として、予測不可能性が要求されることもあるということが挙げられる。例えば、ブラックジャックをコンピュータゲームとして実装した場合、デッキを擬似乱数を使ってシャッフルすることになる。プレイヤーがその擬似乱数の性質を知っていれば、カードがどういう順番になっているかが分かってしまう。実際、Reliable Software Technologies の Software Security Group が ASF Software, Inc. のポーカーゲームについてそのような解析を行った[1]。同様の問題は暗号理論にもあり、秘密鍵は擬似乱数を使って生成されることが多い。このような問題を防ぐものとして暗号論的擬似乱数生成器 (CSPRNG) が使われる。

脚注

  1. ^ Gary McGraw and John Viega. Make your software behave: Playing the numbers: How to cheat in online gambling. http://www.ibm.com/developerworks/library/s-playing/#h4

決定的アルゴリズム

出典: フリー百科事典『ウィキペディア(Wikipedia)』 (2021/12/10 15:53 UTC 版)

ミラー–ラビン素数判定法」の記事における「決定的アルゴリズム」の解説

ミラー-ラビン素数判定法は、Gary L. Miller最初に開発したMillerテストマイケル・ラビン無条件確率的アルゴリズム修正したのである。元となったMillerテストはある限度以下の全ての a を調べるという、未だ証明されていない拡張リーマン予想基づいた決定的アルゴリズムである。とはいえ拡張リーマン予想全体を必要とするわけではなく平方ディリクレ指標について拡張リーマン予想成り立てばよい。 Millerテストは未証明拡張リーマン予想を必要としていることや、それを修正したミラー-ラビン素数判定法許容出来誤判確率から判定時間調整でき速度面で有利であることから実際に使われていない。また同じく決定的アルゴリズムであるAKS素数判定法の方が、証明されていない予想依存してないぶんだけMillerテストよりも強い。 Millerテストには、判定信頼できるものにするには限度をどう決めたらよいかという問題がある。 判定対象の数 n が合成数なら、n と互いに素な「強い嘘つき」の a は群 ( Z / n Z ) ∗ {\displaystyle \left(\mathbb {Z} /n\mathbb {Z} \right)^{*}} の真の部分群含まれる。つまり ( Z / n Z ) ∗ {\displaystyle \left(\mathbb {Z} /n\mathbb {Z} \right)^{*}} の生成元集合の全 a について判定するとき、その中には必ず n の合成性証拠となる数が含まれる拡張リーマン予想が真であると仮定すると、ミラーが既に指摘したように O((ln n)2) より小さい元から、この集合生成されることがわかっている。big O記法の定数Eric Bach によって 2 まで減らされた(1990年)。このことから、次のような素数判定アルゴリズム導かれる: 入力: n > 1; 判定対象奇数 出力: n が合成数なら compositeさもなくば prime返す。 n − 1 {\displaystyle n-1} を 2 のべき乗割って2 s ⋅ d {\displaystyle 2^{s}\cdot d} の形式にする。 以下を [ 2 , min ( n − 1 , ⌊ 2 ( ln ⁡ n ) 2 ⌋ ) ] {\displaystyle [2,\min(n-1,\lfloor 2(\ln n)^{2}\rfloor )]} の範囲全ての a について繰り返す:ad mod n ≠ 1 かつ [0, s − 1] の範囲全ての r について a d2 r {\displaystyle a^{d\cdot 2^{r}}} mod n ≠ −1 なら、composite返すprime返す。 このアルゴリズム実行時間は Õ((log n)4) である。 判定対象の数 n が十分小さければ、全ての a < 2(ln n)2 を調べる必要はなく、もっと小さ証拠可能性のある数の集合で十分である。例えば、Jaeschke (1993) は以下を検証した。 もし n < 4,759,123,141 なら、a = 2, 7, 61 について調べればよい。 もし n < 341,550,071,728,321 なら、a = 2, 3, 5, 7, 11, 13, 17 について調べれば十分である。 もちろん、a < n の場合だけ調べる。この種の基準については を参照されたい。このような結果活用することで、ある範囲の数については非常に高速決定的な素数判定が可能である。 しかし、全ての合成数についてはこのような有限集合では不十分である。Alford、Granville、Pomerance は、合成数 n について合成性証拠となる最小の数が ( ln ⁡ n ) 1 / ( 3 lnlnln ⁡ n ) {\displaystyle (\ln n)^{1/(3\ln \ln \ln n)}\;} より大きい合成数無数に存在する、 X が十分大きいときには X 以下のそのような合成数個数少なくとも X 1 / ( 35 lnlnln ⁡ X ) {\displaystyle X^{1/(35\ln \ln \ln X)}} であることを示した。また彼らはヒューリスティック的に、w 以下の合成性証拠となる数のある n 以下の合成数について w のオーダーを Θ ( ln ⁡ n lnln ⁡ n ) {\displaystyle \Theta (\ln n\,\ln \ln n)} であると示唆した

※この「決定的アルゴリズム」の解説は、「ミラー–ラビン素数判定法」の解説の一部です。
「決定的アルゴリズム」を含む「ミラー–ラビン素数判定法」の記事については、「ミラー–ラビン素数判定法」の概要を参照ください。

ウィキペディア小見出し辞書の「決定的アルゴリズム」の項目はプログラムで機械的に意味や本文を生成しているため、不適切な項目が含まれていることもあります。ご了承くださいませ。 お問い合わせ



決定的アルゴリズムと同じ種類の言葉


英和和英テキスト翻訳>> Weblio翻訳
英語⇒日本語日本語⇒英語
  

辞書ショートカット

すべての辞書の索引

「決定的アルゴリズム」の関連用語

決定的アルゴリズムのお隣キーワード
検索ランキング

   

英語⇒日本語
日本語⇒英語
   



決定的アルゴリズムのページの著作権
Weblio 辞書 情報提供元は 参加元一覧 にて確認できます。

   
ウィキペディアウィキペディア
All text is available under the terms of the GNU Free Documentation License.
この記事は、ウィキペディアの決定的アルゴリズム (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。 Weblio辞書に掲載されているウィキペディアの記事も、全てGNU Free Documentation Licenseの元に提供されております。
ウィキペディアウィキペディア
Text is available under GNU Free Documentation License (GFDL).
Weblio辞書に掲載されている「ウィキペディア小見出し辞書」の記事は、Wikipediaのミラー–ラビン素数判定法 (改訂履歴)の記事を複製、再配布したものにあたり、GNU Free Documentation Licenseというライセンスの下で提供されています。

©2025 GRAS Group, Inc.RSS