タスクの操作シーケンス
連続減算を使用して数r と 数 s の 最大公約数 を求めるフローチャート
数学 および コンピュータ における アルゴリズム ( l )は、数学的に厳密な の有限列であり 問題 を解い 計算を 実行したりするため 。 [1] 計算 や データ処理を 実行するための仕様として使用されます 条件文を 使用して コード実行をさまざまなルートに分岐させ( 自動意思決定 推論 を導き出します 自動推論 と呼ばれます )。
対照的に、 ヒューリスティック とは、明確に定義された正しい結果や最適な結果がない問題を解決するためのアプローチです。 [2] たとえば、ソーシャルメディアの 推奨システムは 一般的に「アルゴリズム」と呼ばれますが、実際には真に「正しい」推奨は存在しないため、ヒューリスティックに依存しています。
効果的な方法 として 、アルゴリズムは有限の空間と時間 [3]の範囲内で、 関数 [5] を計算するための 明確に定義された 形式言語[ 6 ]で表現することができます。 初期状態と初期入力(おそらく 空 )から始まり、 [7] 命令は計算を記述します。この計算は、 実行される と有限個の明確に定義された連続状態 [8 ]を経て進み、最終的に「出力」 [9] を生成し、最終状態で終了します。ある状態から次の状態への遷移は必ずしも 決定論的ではありません。 ランダム化アルゴリズム と呼ばれる一部のアルゴリズムでは 、ランダム入力が組み込まれています。 [10]
語源
825年頃、ペルシャの科学者で博学者の ムハンマド・イブン・ムーサー・アル=フワーリズミー は、 『キターブ・アル=イスアーブ・アル=ヒンディー 』(インドの計算書)と 『キターブ・アル=ジャム・ワル・タフリク・アル=イスアーブ・アル=ヒンディー』 (インドの算術における加減法)を著した。12世紀初頭には、 ヒンドゥー教とアラビア数字のシステム と 算術 に関するこれらのテキストのラテン語訳が登場し、例えば、 セビリアのヨハネ に帰せられる 『Liber Alghoarismi de practica arismetrice 』や、 バースのアデラード に帰せられる 『Liber Algorismi de numero Indorum 』などがある。 [10] ここで、 alghoarismi または algorismiはアル=フワーリズミーの名前の ラテン語化 である 。 [1]このテキストは 「Dixit Algorismi」 、つまり「アル・フワーリズミーはこう語った」 というフレーズで始まる。 [2]
英語の「アルゴリズム」 という語は 、計算における位取り記法の使用を意味するようになった。この語は 1225年頃の『 アンクレネ・ウィッセ』 に登場する。[11] ジェフリー・チョーサーが 14世紀後半に 『カンタベリー物語』 を執筆した 頃には、 位取り計算に用いられる石である オーグリム石を説明する際に、同じ語の異形を用いていた。 [12] [13] 15世紀には、ギリシャ語のἀριθμός ( arithmos 、「数」、 比較すると「算術」) の影響を受けて、ラテン語は algorithmus に変化した 。 [14] 1596年までに、この語形は トーマス・フッド によって英語の algorithm として使われた。 [15]
意味
非公式な定義の一つは「一連の演算を正確に定義する規則の集合」である これには、数値計算を行わないプログラムを含む すべての コンピュータプログラム、そして規定された 官僚的 手続き [17]
や 料理本の レシピ [18] が含まれる。 一般的に、プログラムは最終的に停止する場合にのみアルゴリズムである [19] 。ただし、 無限ループが 望ましい場合もある。Boolos、Jeffrey、1974、1999は、アルゴリズムを、出力を決定するための明示的な命令の集合であり、計算機または記号に対して特定の基本演算しか実行できない人間が実行できるものと定義している [20] 。
ほとんどのアルゴリズムは コンピュータプログラム として 実装される ことを目的としています。しかし、アルゴリズムは 生物学的ニューラルネットワーク (例えば、 人間の脳が 計算 を行う 、昆虫が餌を探すなど)、 電気回路 、機械装置など、他の手段によって実装されることもあります。
歴史
古代のアルゴリズム
数学の問題を解くための段階的な手順は、古代から記録されています。これには、 バビロニア数学 (紀元前2500年頃) [21] 、 エジプト数学 (紀元前1550年頃) [21] 、 インド数学 (紀元前800年頃以降) [22] 、 [23] 、イファの神託(紀元前500年頃) [24] 、 ギリシャ数学 (紀元前240年頃) [25] 、 中国数学(紀元前200年頃以降) [26] 、 アラビア 数学 (紀元後800年頃) [27]が含まれます。
アルゴリズムの最古の証拠は、古代 メソポタミアの 数学に見られます。 バグダッド 近郊の シュルッパク で発見され、 紀元前 2500年頃の シュメールの 粘土板には、 最古の 除算アルゴリズム が記されています。 [21] 紀元前 1800年頃 ~ 1600年頃の ハンムラビ王朝時代 には 、 バビロニアの 粘土板に数式を計算するためのアルゴリズムが記されていました。 [28]アルゴリズムは バビロニアの天文学 でも使用されていました 。バビロニアの粘土板には、重要な天文現象の時間と場所を計算するためのアルゴリズム手順が記され、用いられていました。 [29]
算術アルゴリズムは古代 エジプトの数学にも見られ、 紀元前1550年頃の リンド数学パピルス にまで遡る 。 [21]アルゴリズムは後に古代 ヘレニズム数学 でも使用された 。その例としては、 ニコマコス の 『算術入門 』 [ 30] [25] : 第9章2節 に記載されている エラトステネスのふるい と、 ユークリッド の 『原論』 ( 紀元前 300年頃) [25] : 第9章1節で初めて説明されているユークリッドの互除法が挙げられる 。古代インド数学の例としては 、シュルバ・スートラ 、 ケーララ学派 、 ブラフマスフタシッダーンタ などがある 。 [22]
暗号化されたコードを解読するための最初の暗号アルゴリズムは、 9世紀のアラブの数学者 アル=キンディーによって 『暗号解読に関する手稿』 の中で開発されました。彼は、最古の暗号解読アルゴリズムである 頻度分析による 暗号 解読法を初めて記述しました 。 [27]
コンピューター
重力駆動時計
ボルターは、重錘駆動時計の発明を「[ 中世ヨーロッパにおける ]鍵となる発明」と位置づけ、特に 機械式時計のチクタク音を生み出す バージ脱進 機機構 [31]を高く評価しています。「正確な自動機械」 [32] は、 13世紀の「機械式 オートマタ 」、そして19世紀半ばの チャールズ・バベッジ と エイダ・ラブレス による 差分機関 と 解析機関といった「計算機械」 [33] へと直接つながりました。 ラブレスは、コンピュータ処理を目的とした最初のアルゴリズム、バベッジの解析機関を設計しました。これは、単なる 計算機 ではなく、真の チューリング完全 コンピュータとみなされる最初の装置です。バベッジの2番目の装置の完全な実装は、彼女の生後数十年を経てようやく実現されましたが、ラブレスは「歴史上最初のプログラマー」と呼ばれています。
電気機械リレー
ベルとニューウェル(1971)は、 ホレリスカード (パンチカード)の前身である ジャカード織機 と「電話交換技術」が、最初のコンピュータの開発につながったと述べている。 [34] 19世紀半ばまでに、電話の前身である 電信が 世界中で使用されるようになった。19世紀後半には、 ティッカーテープ ( 1870年代 頃 )とホレリスカード(1890年頃)が使用されるようになった。その後、 テープに
ボードット符号 を刻んだパンチ紙を備えた テレプリンター ( 1910 年頃)が登場した。
電気機械式リレー を用いた電話交換網は 1835年に発明されました。これは1937年、 ジョージ・スティビッツ によるデジタル加算装置の発明につながりました。ベル研究所で働いていたスティビッツは、歯車を使った機械式計算機の「煩わしい」使用方法に気づきました。「1937年のある晩、彼は自分のアイデアを試してみるつもりで帰宅しました…試行錯誤が終わると、スティビッツは2進加算装置を完成させました。」 [35] [36]
エイダ・ラブレス の「 ノートG 」の図、最初に公開されたコンピュータアルゴリズム
1928年、現代アルゴリズムの概念の部分的な形式化は、 デイヴィッド・ヒルベルト が提起した決定問題( Entscheidungsproblem )を解く試みから始まった。その後の形式化は、「効果的な計算可能性 」 [37]あるいは「効果的な方法」 [38 ]を定義する試みとして位置づけられた 。 これらの形式化には、 1930年、1934年、1935年の ゲーデル ・ ヘルブランド ・ クリーネ の再帰関数、 1936年の アロンゾ・チャーチ の ラムダ計算、1936年の エミール・ポスト の 定式化1 、そして1936年から1937年、そして1939年の アラン・チューリング の チューリングマシンなど が含まれる。
現代のアルゴリズム
アルゴリズムは、時とともに様々な形で進化し、改善されてきました。今日、アルゴリズムの一般的な用途としては、 Instagram や YouTube などのソーシャルメディアアプリが挙げられます。アルゴリズムは、人々が何を好むかを分析し、それらと交流する人々に、それらのものをより多くプッシュする手段として利用されています。量子コンピューティングは、 量子アルゴリズムの手順 を用いて問題をより迅速に解決します。さらに最近では、2024年にNIST(米国国立標準技術研究所)がポスト量子暗号標準を更新し、量子コンピューティングを用いた攻撃に対する防御を強化するための新しい 暗号化 アルゴリズムを追加しました。
表現
アルゴリズムは、自然言語 、 擬似コード 、 フローチャート 、 ドラコンチャート 、 プログラミング言語 、 制御表( インタープリタ によって処理される) など、様々な表記法で表現できます 。自然言語によるアルゴリズムの表現は冗長で曖昧になりがちで、複雑なアルゴリズムや技術的なアルゴリズムにはほとんど使用されません。擬似コード、フローチャート、ドラコンチャート、制御表は、自然言語によくある曖昧さを回避した、アルゴリズムの構造化された表現です。プログラミング言語は、主にアルゴリズムをコンピュータで実行可能な形式で表現するためのものですが、アルゴリズムの定義や文書化にも使用されます。
チューリングマシン
チューリングマシンの プログラムは、様々な表現方法があり、 マシンテーブルのシーケンス( 詳細は 有限状態機械 、 状態遷移表 、 制御表を参照)、フローチャートやドラコンチャート(詳細は 状態図を参照)、基本的な マシンコード または アセンブリコード の一種で ある「四重項の集合」などとして表現できます。アルゴリズムの表現は、チューリングマシン記述の3つのレベル、すなわち高レベル記述、実装記述、形式記述に分類できます。 [39] 高レベル記述は、アルゴリズム自体の特性を記述し、チューリングマシン上での実装方法は考慮しません。 [39] 実装記述は、アルゴリズムを実行するためにマシンがヘッドを移動させ、データを格納する一般的な方法を記述しますが、正確な状態は示しません。 [39] 形式記述は、最も詳細には、チューリングマシンの正確な状態テーブルと遷移リストを示します。 [39]
フローチャート表現
フローチャート と呼ばれる図表は、 アルゴリズム(およびそれに対応するコンピュータプログラム)を記述し、文書化する手段を提供します。フローチャートには、プログラムの流れを示す矢印、四角形(SEQUENCE、GOTO)、ひし形(IF-THEN-ELSE)、そして点(OR-Tie)の4つの主要な記号があります。四角形の中にサブ構造を「ネスト」することができますが、その場合、スーパー構造から単一の出口が存在する必要があります。
アルゴリズム分析
アルゴリズムに必要な時間、ストレージ、その他のコストを把握することは、多くの場合重要です。このような定量的な答え(推定値)を得るために、アルゴリズムを分析する方法が開発されてきました。たとえば、 n個の数値のリストの要素を合計するアルゴリズムでは、 big O 表記法 を使用すると、 時間要件は
お
(
n
)
{\displaystyle O(n)}
となります。アルゴリズムが記憶する必要があるのは、これまでのすべての要素の合計と、入力リスト内の現在の位置の2つの値だけです。入力数値を格納するために必要なスペースを考慮しない場合、スペース要件は ですが、そうでない場合は が必要です。
お
(
1
)
{\displaystyle O(1)}
お
(
n
)
{\displaystyle O(n)}
異なるアルゴリズムは、異なる命令セットを用いて、他のアルゴリズムよりも少ない時間、空間、または「 労力 」で同じタスクを完了する場合があります。例えば、ソートされたリストや配列の 表検索に バイナリサーチ アルゴリズム(コスト
お
(
ログ
n
)
{\displaystyle O(\log n)}
)を使用すると、シーケンシャルサーチ(コスト
お
(
n
)
{\displaystyle O(n)}
)よりも優れたパフォーマンスを発揮します 。
アルゴリズムの分析 と研究は、 コンピュータサイエンス の一分野です 。アルゴリズムは、特定の プログラミング言語 や実装を参照することなく、抽象的に研究されることがよくあります。アルゴリズム分析は、実装ではなくアルゴリズムの特性に焦点を当てる点で、他の数学分野に似ています。 擬似コードは 、単純で汎用的な表現であるため、分析によく使用されます。ほとんどのアルゴリズムは特定のハードウェア/ソフトウェアプラットフォーム上に実装され、その アルゴリズムの効率性 は実際のコードを用いてテストされます。特定のアルゴリズムの効率性は、多くの「一回限りの」問題では重要ではないかもしれませんが、高速なインタラクティブ、商用、または長期にわたる科学的利用のために設計されたアルゴリズムにとっては、非常に重要になる場合があります。小さなnから大きなnへとスケーリングすると、通常は問題のない非効率的なアルゴリズムが頻繁に明らかになります。
経験的テストは、パフォーマンスに影響を与える予期せぬ相互作用を発見するのに役立ちます。 ベンチマークは 、プログラム最適化後のアルゴリズムの潜在的な改善点を、その前後で比較するために使用できます。しかし、経験的テストは正式な分析に取って代わるものではなく、公平に実施することも容易ではありません。 [40]
実行効率
十分に確立されたアルゴリズムでも改善の余地があることを示す例として、 FFT アルゴリズム(画像処理の分野で多用されている)に関する最近の重要な技術革新により、医療用画像処理などのアプリケーションで処理時間を最大1,000倍短縮できることが挙げられます。 [41] 一般的に、速度の向上は問題の特殊な特性に依存しますが、これは実際のアプリケーションでは非常に一般的です。 [42] この規模の高速化により、画像処理を多用するコンピューティングデバイス(デジタルカメラや医療機器など)の消費電力を削減できます。
最良のケースと最悪のケース
アルゴリズムの最良のケースとは、アルゴリズムまたはデータ構造がタスクを完了するのに最も少ない時間とリソースしかかからないシナリオまたは入力を指します。 [43] アルゴリズムの最悪のケースとは、アルゴリズムまたはデータ構造が最大の時間と計算リソースを消費するケースです。 [44]
デザイン
アルゴリズム設計とは、問題解決やアルゴリズム工学のための手法、あるいは数学的プロセスです。アルゴリズム設計は、オペレーションズ・ リサーチ における 分割統治法 や 動的計画法 など、多くの解決理論の一部です。アルゴリズム設計の設計と実装のための手法は、アルゴリズム設計パターンとも呼ばれ、 [45] テンプレートメソッドパターンやデコレータパターンなどが例として挙げられます。アルゴリズム設計における最も重要な側面の一つは、リソース(実行時間、メモリ使用量)の効率です。例えば、入力サイズの増加に伴うアルゴリズムの実行時間の増加を記述するために、 ビッグオー記法 が使用されます。 [46]
構造化プログラミング
チャーチ=チューリングのテーゼ によれば、あらゆるアルゴリズムはあらゆる チューリング完全 モデルで計算できる 。チューリング完全性には、条件付きGOTO、無条件GOTO、代入、HALTの4種類の命令のみが必要である。しかし、ケメニーとカーツは、無条件GOTOと条件付きIF-THEN GOTOを「無秩序に」使用すると「 スパゲッティコード 」になる可能性がある一方で、プログラマーはこれらの命令のみを使用して構造化プログラムを作成できると指摘している。一方で、「構造化言語で構造化の悪いプログラムを作成することも可能であり、それほど難しくはない」とも述べている。 [47]タウスワースは、 ベーム=ヤコピニの 3つの標準構造 、 [48] SEQUENCE、IF-THEN-ELSE、WHILE-DO、さらにDO-WHILEとCASEの2つを追加している。 [49]構造化プログラムのもう1つの利点は、 数学的帰納法 を用いた 正しさの証明 が容易なことである 。 [50]
法的地位
アルゴリズム自体は、通常、特許を受けることができません。米国では、抽象概念、数値、または信号の単純な操作のみからなるクレームは「プロセス」を構成しないため(USPTO 2006)、アルゴリズムは特許を受けることができません( Gottschalk v. Benson 事件を参照)。しかし、アルゴリズムの実用化は特許を受けることができます。例えば、 Diamond v. Diehr 事件では、合成ゴム の硬化を助けるための単純な フィードバック アルゴリズムの応用が 特許取得可能と判断されました。 ソフトウェアの特許取得は 議論の的となっており、 [51]アルゴリズム、特に Unisys の LZW特許のような データ圧縮 アルゴリズム に関する特許は批判されています。さらに、一部の暗号アルゴリズムには輸出制限があります( 暗号の輸出を 参照 )。
分類
実装によって
再帰
再帰 アルゴリズムは、 終了条件を満たすまで自身を繰り返し呼び出し、一般的な 関数型プログラミング 手法です。 反復アルゴリズムは、 ループ などの繰り返しや スタック などのデータ構造を用いて 問題を解決します。問題によっては、どちらの実装が適しているかが異なります。 ハノイの塔は 、一般的に再帰実装を用いて解かれるパズルです。すべての再帰バージョンには、同等の(ただし、複雑さは多少異なる)反復バージョンがあり、その逆も同様です。
直列、並列、分散
アルゴリズムは通常、逐次実行型のコンピュータではアルゴリズムの命令を 1 つずつ実行するという前提で説明されます。逐次アルゴリズムは、 並列 アルゴリズムや 分散 アルゴリズムとは異なり、これらの環境向けに設計されています。並列アルゴリズムは、複数のプロセッサが同時に問題を処理できるコンピュータ アーキテクチャを活用します。分散アルゴリズムは、コンピュータ ネットワークを介して接続された複数のマシンを使用します。並列アルゴリズムと分散アルゴリズムは、問題をサブ問題に分割し、結果をまとめて収集します。これらのアルゴリズムでのリソース消費は、各プロセッサのプロセッサ サイクルだけでなく、プロセッサ間の通信オーバーヘッドも含まれます。一部のソート アルゴリズムは効率的に並列化できますが、通信オーバーヘッドが高くなります。反復アルゴリズムは一般に並列化可能ですが、一部の問題には並列アルゴリズムが存在せず、本質的に逐次的な問題と呼ばれるものもあります。
決定論的か非決定論的か
決定論的アルゴリズムは 、各ステップで正確な判断を下すことで問題を解決します。一方、 非決定論的アルゴリズムは推測によって問題を解決します。推測は通常、 ヒューリスティックス を用いることでより正確になります 。
正確か近似か
多くのアルゴリズムは正確な解に到達するのに対し、 近似アルゴリズムは 真の解に近い近似値を求めます。このようなアルゴリズムは、多くの難問において実用的な価値を持ちます。例えば、 ナップサック問題 では、複数のアイテムがあり、その合計値が最大になるようにナップサックに詰めることが目標となります。各アイテムには重さと価値があり、持ち運べる合計重量は一定値X以下です。したがって、解法ではアイテムの価値だけでなく重さも考慮する必要があります。 [52]
量子アルゴリズム
量子アルゴリズムは、 量子計算 の現実的なモデルに基づいて実行されます。この用語は通常、本質的に量子的であるように見えるアルゴリズム、または 量子重ね合わせ や 量子もつれ といった 量子計算 の本質的な特徴を利用するアルゴリズムに対して使用されます 。
デザインパラダイムによって
アルゴリズムを分類する別の方法は、設計手法またはパラダイム によって分類することです 。一般的なパラダイムには以下のようなものがあります。
総当たり または網羅的な検索
ブルートフォースとは、最適な解が見つかるまであらゆる選択肢を体系的に試す問題解決手法です。このアプローチは、あらゆる変数の組み合わせをテストするため、非常に時間がかかります。他の方法が利用できない場合や複雑すぎる場合によく使用されます。ブルートフォースは、2点間の最短経路の探索やパスワードの解読など、さまざまな問題を解決できます。
分割して征服する
分割 統治アルゴリズムは、 問題をそれ自体の 1 つ以上の小さなインスタンスに繰り返し縮小します (通常は 再帰的に )。この縮小は、インスタンスが簡単に解けるほど小さくなるまで続きます。 マージ ソート は分割統治の一例であり、順序なしリストが小さなリストに繰り返し分割され、同じ方法でソートされてからマージされます。 [53] 分割統治のより単純な変種である プルーン アンド 検索 または 減少統治アルゴリズム では、それ自体の小さなインスタンスを 1 つ解決するため、マージ ステップは必要ありません。 [54] プルーン アンド 検索アルゴリズムの一例としては、 バイナリ検索アルゴリズム があります。
検索と列挙
多くの問題(例えば チェスのプレイ)は グラフ 上の問題としてモデル化できます 。 グラフ探索アルゴリズムは グラフ上の移動規則を規定し、このような問題に役立ちます。このカテゴリには、 探索アルゴリズム 、 分枝限定 列挙法、 バックトラッキング も含まれます。
ランダム化アルゴリズム
このようなアルゴリズムは、いくつかの選択をランダム(または擬似ランダム)に行う。正確な解を求めるのが現実的でない場合に、近似解を求める(以下のヒューリスティックな手法を参照)。問題によっては、最速の近似解を得るにはある程度の ランダム性 が必要となる。 [55] 多項式時間計算量 を持つランダム化アルゴリズムが、 ある問題に対して最速のアルゴリズムとなり得るかどうかは 、P対NP問題 として知られる未解決の問題である。このようなアルゴリズムには、大きく分けて2つの種類がある。
モンテカルロアルゴリズムは 高い確率で正解を返します。例えば、 RPは 多項式時間 で実行されるこれらのサブクラスです 。
ラスベガス アルゴリズムは 常に正しい答えを返しますが、その実行時間は確率的に制限されます (例: ZPP )。
複雑さの軽減
この手法は、難問を、(うまくいけば) 漸近的に最適な アルゴリズムで解ける、よりよく知られた問題へと変換します。目標は、結果として得られる縮約アルゴリズムによって 複雑性が 支配されない縮約アルゴリズムを見つけることです。例えば、ある 選択アルゴリズムは 、まずリスト(コストの高い部分)をソートし、次にソート済みリストの中央の要素(コストの低い部分)を取り出すことで、ソートされていないリストの中央値を求めます。この手法は 「変換統治法 」とも呼ばれます。
バックトラッキング
このアプローチでは、複数のソリューションが段階的に構築され、有効な完全なソリューションに到達できないと判断された時点で放棄されます。
最適化問題
最適化問題 の場合 、アルゴリズムのより具体的な分類があります。このような問題のアルゴリズムは、上記の一般的なカテゴリの 1 つ以上と、次のいずれかに分類される可能性があります。
線形計画法
線形等式制約および不等式制約で囲まれた線形関数の最適解を探す場合、制約を直接使用して最適解を生成することができます。 このカテゴリには、一般的な 単体アルゴリズム など、あらゆる問題を解決できるアルゴリズムがあります。 [56] 線形計画法で解決できる問題には、有向グラフの 最大フロー問題 があります。 また、未知数のいずれかが 整数である必要がある問題の場合、 整数計画法 に分類されます 。 線形計画法アルゴリズムは、整数値に対するすべての制約が表面的である、つまり、解がいずれにせよこれらの制約を満たすことが証明できれば、そのような問題を解決できます。 一般的なケースでは、問題の難易度に応じて、専用のアルゴリズムまたは近似解を見つけるアルゴリズムが使用されます。
動的計画法
問題が最適なサブ構造 (つまり、最適解はサブ問題への最適解から構築できる) と 重複するサブ問題 (同じサブ問題が多くの異なる問題インスタンスの解決に使用されている)を示す場合、 動的計画法 と呼ばれるより迅速なアプローチにより、解の再計算を回避できます。たとえば、 フロイド–ワーシャル アルゴリズムでは、重み付き グラフ の開始頂点と目標頂点間の最短経路は、 すべての隣接する頂点から目標への最短経路を使用して見つけることができます。動的計画法と メモ化は 連携して行われます。分割統治法とは異なり、動的計画法のサブ問題は重複することがよくあります。動的計画法と単純な再帰の違いは、再帰呼び出しのキャッシュまたはメモ化です。サブ問題が独立していて繰り返されない場合、メモ化は役に立ちません。したがって、動的計画法はすべての複雑な問題に適用できるわけではありません。メモ化動的計画法を使用すると、多くの問題の複雑性が指数関数的から多項式的へと軽減されます。
貪欲な方法
貪欲アルゴリズムは 、動的計画法と同様に、問題ではなく与えられた解の部分構造を調べることで機能します。このようなアルゴリズムは、ある解から始めて、小さな修正を加えることでそれを改善していきます。問題によっては、常に最適な解が見つかりますが、他の問題では 局所最適解 で止まることもあります。貪欲アルゴリズムの最も一般的な用途は、負の閉路を持たないグラフの最小全域木を見つけることです。 ハフマン木 、 クラスカル木 、 プリム木 、 ソリン木 は、この最適化問題を解くことができる貪欲アルゴリズムです。
ヒューリスティックな方法
最適化問題 において 、最適解を見つけることが実際的でない場合、 ヒューリスティック アルゴリズムによって 最適解に近い解が見つかります。これらのアルゴリズムは、処理が進むにつれて最適解にどんどん近づいていきます。原則として、無限の時間実行すると最適解が見つかります。理想的には、比較的短時間で最適解に非常に近い解を見つけることができます。これらのアルゴリズムには、 局所探索 、 タブー探索 、 焼きなまし法 、 遺伝的アルゴリズム などがあります。焼きなまし法のように非決定論的なアルゴリズムもあれば、タブー探索のように決定論的なアルゴリズムもあります。最適でない解の誤差の境界がわかっている場合、アルゴリズムはさらに 近似アルゴリズム に分類されます。
例
最も単純なアルゴリズムの一つは、ランダムな順序の数字のリストの中から最大の数字を見つけるというものです。この解を見つけるには、リスト内のすべての数字を調べる必要があります。このことから、平易な言葉で次のように説明できる単純なアルゴリズムが導き出されます。
高レベルの説明:
数字のセットが空の場合、最高数字は存在しません。
セット内の最初の数字が最大であると仮定します。
セット内の残りの数字それぞれについて、この数字が現在の最大値より大きい場合、それが新しい最大値になります。
セット内にチェックされていない数字が残っていない場合は、現在の最大数字をセット内の最大数字とみなします。
(準)正式な説明:
散文で書かれていますが、コンピュータ プログラムの高級言語に非常に近い、 擬似コード または ピジン コード でアルゴリズムをより正式にコーディングしたものが次のものです。
アルゴリズム LargestNumber
入力: 数値のリスト L 。
出力: リスト L 内の最大の数値。
L.size = 0 の場合 null
を返す 最大 ← L [0]
L の 各 項目 について、 項目 > 最大 の 場合 、 最大 ← 項目 最大 を 返す
「←」は 代入 を表します。例えば、「 biggest ← item 」は、 biggest の 値が item の値に変更されることを意味します 。
「 return 」はアルゴリズムを終了し、次の値を出力します。
参照
注記
^ ab 「ALGORITHMの定義」。 メリアム・ウェブスターオンライン辞書 。2020年2月14日時点のオリジナルよりアーカイブ。 2019年 11月14日 閲覧 。
^ ab David A. Grossman、Ophir Frieder、 『情報検索:アルゴリズムとヒューリスティックス』 第2版、2004年、 ISBN 1402030045
^ 「たとえば、古典的な数学アルゴリズムはすべて、有限個の英語の単語で記述できます」(Rogers 1987:2)。
^ アルゴリズムを実行するエージェントについては明確に定義されています。「通常は人間である計算エージェントが存在し、命令に反応して計算を実行できます」(Rogers 1987:2)。
^ 「アルゴリズムと は(整数の選択された表記法に関する) 関数を計算する手順である...この(数値関数への)制限によって一般性が失われることはない」(Rogers 1987:1)。
^ 「アルゴリズムには 0 個 以上の入力、つまり アルゴリズムが開始する前に最初に与えられる 量があります」(Knuth 1973:5)。
^ 「有限性がない可能性があることを除いてアルゴリズムのすべての特性を持つ手順は、「計算方法 」 と呼ばれることがあります」(Knuth 1973:5)。
^ 「アルゴリズムには 1 つ以上の出力、つまり入力に対して特定の関係を持つ量があります」(Knuth 1973:5)。
^ ランダムな内部プロセス(入力を含まない)を持つプロセスがアルゴリズムであるかどうかは議論の余地がある。ロジャーズは次のように述べている。「計算は、連続的な手法やアナログデバイスを用いることなく、離散的なステップバイステップの方法で実行される…サイコロなどのランダムな手法やデバイスに頼ることなく、決定論的に進められる」(Rogers 1987:2)。
^ ブレア, アン, デュギッド, ポール, ゴーイング, アンジャ=シルビア, グラフトン, アンソニー. 『インフォメーション:歴史のコンパニオン』プリンストン:プリンストン大学出版局, 2021年, 247頁
^ "algorism". オックスフォード英語辞典 . 2025年 5月18日 閲覧。
^ チョーサー、ジェフリー. 「粉屋物語」. 3210行目.
^ スキート、ウォルター・ウィリアム (1914) 「agrim, agrum」。メイヒュー、アンソニー・ローソン編 『チューダー朝とスチュアート朝の言葉集:特に劇作家の言葉』クラレンドン・プレス、 5~ 6頁 。
^ グラビナー, ジュディス・V. (2013年12月). 「リベラルアーツ教育における数学の役割」. マシューズ, マイケル・R. (編). 『歴史・哲学・科学教育研究の国際ハンドブック』 . シュプリンガー. pp. 793– 836. doi :10.1007/978-94-007-7654-8_25. ISBN 9789400776548 。
^ 「アルゴリズム」. オックスフォード英語辞典. 2025年 5月18日 閲覧 。
^ シマノウスキー、ロベルト (2018年)『死のアルゴリズムとその他のデジタルジレンマ』アンタイムリー・メディテーションズ第14巻。チェイス、ジェファーソン訳。マサチューセッツ州ケンブリッジ:MITプレス。147ページ 。ISBN
9780262536370 . 2019年12月22日時点のオリジナルよりアーカイブ 。 2019年 5月27日 閲覧。 [...] 中央官僚機構の抽象化の次のレベル:グローバルに動作するアルゴリズム。
^ ディートリッヒ, エリック (1999). 「アルゴリズム」. ロバート・アンドリュー・ウィルソン, フランク・C. キール (編). 『MIT認知科学百科事典』. MIT Cognetライブラリ. マサチューセッツ州ケンブリッジ: MIT Press (2001年出版). p. 11. ISBN
9780262731447 . 2020年 7月22日 閲覧 。 アルゴリズムとは、何かを行うためのレシピ、方法、またはテクニックのことです。
^ ストーンは「有限数のステップで終了しなければならない」ことを要求している(ストーン1973:7–8)。
^ BoolosとJeffrey 1974、1999:19
^ abcd ジャン=リュック・シャベール (2012). 『アルゴリズムの歴史:小石からマイクロチップまで 』 シュプリンガー・サイエンス&ビジネス・メディア. pp. 7– 8. ISBN 9783642181924 。
^ ab Sriram, MS (2005). 「インド数学におけるアルゴリズム」. Emch, Gerard G.、Sridharan, R.、Srinivas, MD (編). 『インド数学史への貢献』 . Springer. p. 153. ISBN 978-93-86279-25-5 。
^ 林 徹 (2023年1月1日). ブラフマグプタ. ブリタニカ百科事典.
^ ザスラフスキー、クラウディア (1970). 「ナイジェリア南部のヨルバ族とその近隣住民の数学」 . 2年制大学数学ジャーナル . 1 (2): 76– 99. doi :10.2307/3027363. ISSN 0049-4925. JSTOR 3027363.
^ abc クック、ロジャー・L. (2005). 『数学の歴史:簡潔な講座 』 ジョン・ワイリー・アンド・サンズ. ISBN 978-1-118-46029-0 。
^ シャベール、ジャン=リュック編。 (1999年)。 アルゴリズムの歴史 。 土井 :10.1007/978-3-642-18192-4。 ISBN 978-3-540-63369-3 。
^ ab ドゥーリー、ジョン・F. (2013). 暗号学と暗号アルゴリズムの簡潔な歴史 . シュプリンガー・サイエンス&ビジネス・メディア. pp. 12–3 . ISBN 9783319016283 。
^ Knuth, Donald E. (1972). 「古代バビロニアのアルゴリズム」 (PDF) . Commun. ACM . 15 (7): 671– 677. doi :10.1145/361454.361514. ISSN 0001-0782. S2CID 7829945. 2012年12月24日時点のオリジナル (PDF) からのアーカイブ。
^ アボエ、アスガー (2001年) 『天文学初期史のエピソード』 ニューヨーク:シュプリンガー、 pp.40-62 、 ISBN 978-0-387-95136-2 。
^ Ast, Courtney. 「エラトステネス」. ウィチタ州立大学:数学・統計学部. 2015年2月27日時点のオリジナルよりアーカイブ。 2015年 2月27日 閲覧 。
^ ボルター 1984:24
^ ボルター 1984:26
^ ボルター 1984:33–34、204–206。
^ ベルとニューウェルの図 1971:39、デイビス 2000 参照
^ メリナ・ヒル、バレー・ニュース特派員、 「ティンカーラーが歴史に名を残す」 、バレー・ニュース・ウェスト・レバノン、NH、1983年3月31日木曜日、13ページ。
^ デイビス 2000:14
^ クリーネ 1943、デイビス 1965:274
^ Rosser 1939、Davis 1965:225
^ abcd シプサー 2006:157
^ Kriegel, Hans-Peter ; Schubert, Erich ; Zimek, Arthur (2016). 「実行時評価の(ブラック)アート:比較しているのはアルゴリズムか実装か?」 Knowledge and Information Systems . 52 (2): 341– 378. doi :10.1007/s10115-016-1004-2. ISSN 0219-1377. S2CID 40772241.
^ Gillian Conahan (2013年1月). 「Better Math Makes Faster Data Networks」. discovermagazine.com. 2014年5月13日時点のオリジナルよりアーカイブ。 2014年 5月13日 閲覧 。
^ Haitham Hassanieh、 Piotr Indyk 、Dina Katabi、Eric Price、「ACM-SIAM Symposium On Discrete Algorithms (SODA)」、2013年7月4日アーカイブ、 Wayback Machine 、京都、2012年1月。sFFT Web Pageも参照してください。2012年2月21日アーカイブ、 Wayback Machine 。
^ 「ベストケース」。 アルゴリズムとデータ構造の辞書 。米国国立標準技術研究所(NIST)。米国国立標準技術研究所。 2025年 5月29日 閲覧 。
^ 「最悪のケース」。 アルゴリズムとデータ構造の辞書 。米国国立標準技術研究所(NIST)。 2025年 5月29日 閲覧 。
^ グッドリッチ, マイケル・T. ; タマシア, ロベルト (2002). 『アルゴリズム設計:基礎、分析、そしてインターネットの事例』 John Wiley & Sons, Inc. ISBN 978-0-471-38365-9 . 2015年4月28日時点のオリジナルよりアーカイブ 。 2018年 6月14日 閲覧。
^ 「Big-O記法(記事)| アルゴリズム」. カーンアカデミー. 2024年 6月3日 閲覧 。
^ ジョン・G・ケメニー と トーマス・E・カーツ 1985年 『Back to Basic: The History, Corruption, and Future of the Language』 、Addison-Wesley Publishing Company, Inc.、マサチューセッツ州リーディング、 ISBN 0-201-13433-0 。
^ タウスワース 1977:101
^ タウスワース 1977:142
^ Knuth 1973 セクション 1.2.1、Tausworthe 1977 により 100 ページ以降と第 9.1 章で拡張
^ 「専門家:特許制度はイノベーションを促進するのか?」 ウォール・ストリート・ジャーナル 。2013年5月16日。ISSN 0099-9660 。 2017年 3月29日 閲覧 。
^ ケラー、ハンス;フェルシー、ウルリッヒ。デイビッド・パイジンジャー (2004)。ナップザックの問題 |ハンス・ケラー |スプリンガー。スプリンガー。 土井 :10.1007/978-3-540-24777-7。 ISBN 978-3-540-40286-2 . S2CID 28836720. 2017年10月18日時点のオリジナルよりアーカイブ 。 2017年 9月19日 閲覧。
^ Goodrich, Michael T.; Tamassia, Roberto (2001). 「5.2 分割統治」. アルゴリズム設計:基礎、分析、そしてインターネットの事例 . John Wiley & Sons. p. 263. ISBN 9780471383659 。
^ Goodrich & Tamassia (2001)、p. 245、4.7.1 プルーンアンドサーチ。
^ 例えば、 凸多面体 の 体積 (メンバーシップオラクルを用いて記述される)は、ランダム多項式時間アルゴリズムによって高精度に近似できますが、決定論的アルゴリズムでは近似できません。Dyer , Martin; Frieze, Alan; Kannan, Ravi (1991年1月). "A Random Polynomial-time Algorithm for approximating the Volume of Convex Bodies". J. ACM . 38 (1): 1– 17. CiteSeerX 10.1.1.145.4600 . doi :10.1145/102782.102783. S2CID 13268711.
^ George B. Dantzig とMukund N. Thapa. 2003. Linear Programming 2: Theory and Extensions . Springer-Verlag.
参考文献
Axt, P (1959). 「部分再帰的階層と原始再帰次数について」. アメリカ数学会誌 . 92 (1): 85–105 . doi : 10.2307/1993169 . JSTOR 1993169.
Bell, C. GordonおよびNewell, Allen (1971)、 『コンピュータ構造:解説と例』 、McGraw-Hill Book Company、ニューヨーク 。ISBN 0-07-004357-4 。
ブラス、アンドレアス 、 グレヴィッチ、ユーリ (2003). 「アルゴリズム:絶対的な定義の探求」 (PDF) . 欧州理論計算機科学協会紀要 . 81. 2022年10月9日時点のオリジナルより アーカイブ (PDF) . 56 件の参考文献の書誌が含まれています。
ボルター、デイビッド・J. (1984). 『チューリングの人間:コンピュータ時代の西洋文化』 (1984年版)ノースカロライナ大学出版局、チャペルヒル、ノースカロライナ州. ISBN 978-0-8078-1564-9 。 、 ISBN 0-8078-4108-0
ブーロス、ジョージ 、 ジェフリー、リチャード (1999) [1974]. 計算可能性と論理 (第4版). ケンブリッジ大学出版局、ロンドン. ISBN 978-0-521-20402-6 。 : 第 3 章 「チューリング マシン」 で、「特定の列挙可能な集合が事実上 (機械的に) 列挙可能ではない」について説明しています。
バージン、マーク(2004年) 『超再帰アルゴリズム 』シュプリンガー社、 ISBN 978-0-387-95569-8 。
Campagnolo, ML, Moore, C. , Costa, JF (2000) 部分再帰関数のアナログ特性評価. 第4回実数とコンピュータに関する会議論文集 , Odense University, pp. 91–109
チャーチ、アロンゾ (1936). 「初等数論の解けない問題」. アメリカ数学ジャーナル . 58 (2): 345– 363. doi :10.2307/2371045. JSTOR 2371045. 『The Undecidable』 89ページ 以降に再録。「チャーチのテーゼ」の最初の表現。特に100ページ( 『The Undecidable 』)を参照。そこで彼は「実効計算可能性」という概念を「アルゴリズム」という用語で定義し、「終了する」といった語を用いている。
チャーチ、アロンゾ (1936). 「決定問題に関する覚書」. 記号論理学ジャーナル . 1 (1): 40– 41. doi :10.2307/2269326. JSTOR 2269326. S2CID 42323521. チャーチ、アロンゾ (1936). 「Entscheidungsproblem に関するノートの訂正」. The Journal of Symbolic Logic . 1 (3): 101– 102. doi :10.2307/2269030. JSTOR 2269030. S2CID 5557237. 『The Undecidable 』110ページ以降に再録 。チャーチは約3ページの本文と3ページの脚注で、Entscheidungsproblemが解決不可能であることを示しています。
ダッファ、アリ・アブドゥッラー・アル(1977年) 『イスラム教の数学への貢献 』ロンドン:クルーム・ヘルム、 ISBN 978-0-85664-464-1 。
デイヴィス、マーティン (1965年) 『決定不能:決定不能命題、解決不能問題、計算可能関数に関する基本論文集』 ニューヨーク:レイヴン・プレス、 ISBN 978-0-486-43228-1 。 デイビスは各論文の前に解説を与えている。 ゲーデル 、 アロンゾ・チャーチ 、 チューリング 、 ロッサー、 クリーネ 、エミール ・ ポスト の論文が収録されており、論文中で引用されている論文は著者名順に列挙されている。
デイヴィス、マーティン (2000年) 『論理エンジン:数学者とコンピュータの起源』 ニューヨーク:WW Nortion. ISBN 978-0-393-32229-3 。 デイビスは、 ライプニッツ 、 ブール 、 フレーゲ 、 カントール 、 ヒルベルト 、ゲーデル、チューリングの簡潔な伝記を執筆しており、 フォン・ノイマンは注目を集める悪役として描かれている。 ジョセフ=マリー・ジャカード 、 バベッジ 、 エイダ・ラブレス 、 クロード・シャノン 、 ハワード・エイケン など の簡潔な伝記も収録されている。
この記事には、Paul E. Black著「アルゴリズム」のパブリックドメイン資料が含まれています 。 アルゴリズム と データ 構造の辞書 。NIST 。
ディーン、ティム (2012). 「進化と道徳的多様性」.バルト国際認知 ・ 論理・コミュニケーション年鑑 . 7. doi : 10.4148/biyclc.v7i0.1775 .
デネット、ダニエル (1995). 『ダーウィンの危険な思想 』 ニューヨーク: タッチストーン/サイモン&シュスター. pp. 32–36. ISBN 978-0-684-80290-9 。
ディルソン、ジェシー (2007)。そろばん ((1968, 1994) 編)。セント・マーチンズ・プレス、ニューヨーク州。 ISBN 978-0-312-10409-2 。 、 ISBN 0-312-10409-X
Yuri Gurevich , 「シーケンシャル抽象ステートマシンによるシーケンシャルアルゴリズムの捕捉」ACM Transactions on Computational Logic, Vol 1, no 1 (2000年7月), pp. 77–111. 33件の参考文献を掲載。
ヴァン・ヘイエノールト、ジャン (2001年) 『フレーゲからゲーデルまで 数学論理学の資料集 1879-1931 』(1967年版)ハーバード大学出版局、ケンブリッジ 。ISBN 978-0-674-32449-7 。 、第3版 1976[?]、 ISBN 0-674-32449-8 (ペーパーバック)
ホッジス、アンドリュー (1983年) 『アラン・チューリング:エニグマ 』ニューヨーク: サイモン&シュスター 、 ISBN 978-0-671-49207-6 。 、 ISBN 0-671-49207-1 彼の証明に至る歴史と議論については、「真理の精神」の章を参照してください。
Kleene, Stephen C. (1936). 「自然数の一般再帰関数」. Mathematische Annalen . 112 (5): 727– 742. doi :10.1007/BF01565439. S2CID 120517999. 2014年9月3日時点のオリジナルよりアーカイブ。 2013年 9月30日 閲覧 。 1935年9月、アメリカ数学会で発表。 『The Undecidable』 237ページ以降に再録。クリーネの「一般再帰」(現在ではミュー再帰として知られている)の定義は、チャーチが1935年に発表した論文『 初等整数論の解決不可能な問題』 で用いられ、「決定問題」が「決定不可能」(すなわち、否定的な結果)であることを証明した。
クリーネ, スティーブン・C. (1943). 「再帰述語と量指定子」. アメリカ数学会誌 . 53 (1): 41– 73. doi : 10.2307/1990131 . JSTOR 1990131. 『The Undecidable』 255ページ以降に再録 。クリーネは「一般再帰」の定義を洗練させ、「12. アルゴリズム理論」の章で「テーゼI」(274ページ)を提示した。彼は後にこのテーゼを繰り返し(クリーネ1952:300)、これを「チャーチのテーゼ」(クリーネ1952:317)(すなわち チャーチのテーゼ )と名付けた。
クリーネ、スティーブン・C. (1991) [1952]. メタ数学入門 (第10版). ノースホランド出版社. ISBN 978-0-7204-2103-3 。
クヌース、ドナルド (1997). 『基礎アルゴリズム 第3版 』 マサチューセッツ州レディング: アディソン・ウェスレー. ISBN 978-0-201-89683-1 。
ドナルド・クヌース (1969). 第2巻/半数値アルゴリズム、コンピュータプログラミングの芸術 初版 . マサチューセッツ州レディング: アディソン・ウェスレー.
コソフスキー、NK『 数理論理学の要素と部分再帰アルゴリズム理論への応用』 LSU出版、レニングラード、1981年
コワルスキー, ロバート (1979). 「アルゴリズム=ロジック+制御」. Communications of the ACM . 22 (7): 424– 436. doi : 10.1145/359131.359136 . S2CID 2509896.
AA Markov (1954) アルゴリズムの理論 。[Jacques J. Schorr-Kon および PST スタッフによる翻訳] 所蔵 モスクワ、ソ連科学アカデミー、1954 年 [すなわち、エルサレム、イスラエル 科学翻訳プログラム、1961 年。ワシントンの米国商務省技術サービス局から入手可能] 説明 444 ページ。28 cm。ソ連科学アカデミー数学研究所の著作のロシア語翻訳、v. 42 に追加。原題: Teoriya algerifmov。[QA248.M2943 ダートマス大学図書館。米国商務省技術サービス局、番号 OTS 60-51085。]
ミンスキー、マービン (1967年) 『計算:有限機械と無限機械』 (初版)プレンティス・ホール、ニュージャージー州エングルウッド・クリフス 。ISBN 978-0-13-165449-5 。 ミンスキーは、第5章「計算可能性、効果的な手順、そしてアルゴリズム」において、「…アルゴリズムの概念、つまり効果的な手順…」を拡張しています 。無限の機械。
ポスト, エミール (1936). 「有限組み合わせ過程、定式化I」. 記号論理学ジャーナル . 1 (3): 103– 105. doi :10.2307/2269031. JSTOR 2269031. S2CID 40284503. 『The Undecidable』 289ページ以降に再録 。ポストは、人間が簡単な指示リストに従って、箱から箱へと印をつけたり消したりしながら、最終的に停止するという、アルゴリズム的な単純なプロセスを定義している。これはクリーネによって「テーゼI」、いわゆる チャーチ=チューリングのテーゼ の根拠の一つとして引用されている。
ロジャース、ハートリー・ジュニア (1987). 『再帰関数の理論と実効計算可能性 』 MIT出版. ISBN 978-0-262-68052-3 。
ロッサー, JB (1939). 「ゲーデルの定理とチャーチの定理の証明の非公式な解説」. 記号論理学ジャーナル . 4 (2): 53– 60. doi :10.2307/2269059. JSTOR 2269059. S2CID 39499392. 『The Undecidable』 223ページ以降に再録 。ロッサーによる「効果的な方法」の有名な定義はこうである。「…各ステップが正確に事前に決定され、有限数のステップで確実に答えを導き出す方法…問題を挿入し、(後で)答えを読むこと以外に人間の介入なしに、集合内のあらゆる問題を解く機械」(『 The Undecidable』 225~226ページ)
サントス=ラング、クリストファー (2015). 「機械倫理への道徳生態学的アプローチ」 (PDF) . ヴァン・リセウィク、サイモン、ポンティエ、マタイス (編). 機械医療倫理 . インテリジェントシステム、制御、自動化:科学と工学. 第74巻. スイス: シュプリンガー. pp. 111– 127. doi :10.1007/978-3-319-08108-3_8. ISBN 978-3-319-08107-6 2022年10月9日時点のオリジナルより アーカイブ (PDF) 。
スコット、マイケル・L. (2009). 『プログラミング言語語用論 (第3版)』 Morgan Kaufmann Publishers/Elsevier. ISBN 978-0-12-374514-9 。
シプサー、マイケル(2006年)『計算理論入門』PWS出版社、 ISBN 978-0-534-94728-6 。
ソバー、エリオット、ウィルソン、デイヴィッド・スローン(1998年) 『他者へ:非利己的行動の進化と心理学』 ケンブリッジ:ハーバード大学出版局、 ISBN 9780674930469 。
ストーン、ハロルド・S. (1971). 『コンピュータ組織とデータ構造入門 』 マグロウヒル、ニューヨーク. ISBN 9780070617261 。 特に第1章「 アルゴリズム、チューリングマシン、そしてプログラム」 を参照。彼の簡潔で非公式な定義は、「…ロボットが実行できる命令のシーケンスはすべて、 アルゴリズム と呼ばれる」(p.4)。
タウスワース、ロバート・C(1977年) 『コンピュータソフトウェアの標準化開発 パート1 方法論 』ニュージャージー州エングルウッド・クリフス:プレンティス・ホール社 ISBN 978-0-13-842195-3 。
チューリング、アラン・M. (1936–37). 「計算可能数について、そして計算問題への応用」. ロンドン数学会報 . シリーズ2. 42 : 230–265 . doi :10.1112/plms/s2-42.1.230. S2CID 73712. . Corrections, ibid, vol. 43(1937) pp. 544–546. The Undecidable に再録, p. 116ff. チューリングが英国ケンブリッジ大学キングス・カレッジ在学中に修士論文として完成させた有名な論文。
チューリング, アラン・M. (1939). 「順序数に基づく論理体系」. ロンドン数学会報 . 45 : 161–228 . doi :10.1112/plms/s2-45.1.161. hdl : 21.11116/0000-0001-91CE-3 . 『The Undecidable』 155ページ以降に再掲載 。チューリングが「神託」を定義した論文は、プリンストン大学時代の博士論文であった。
米国特許商標庁 (2006), 2106.02 **>数学アルゴリズム: 2100 特許性、特許審査手続マニュアル (MPEP)。最新改訂 2006年8月
ザスラフスキー, C. (1970). 南ナイジェリアのヨルバ族とその近隣住民の数学. 2年制大学数学ジャーナル, 1(2), 76–99. https://doi.org/10.2307/3027363
NISTが最初の3つの最終版ポスト量子暗号化標準をリリース。https://www.nist.gov/news-events/news/2024/08/nist-releases-first-3-finalized-post-quantum-encryption-standards
さらに読む
外部リンク
無料辞書のウィクショナリーで アルゴリズム を調べてください。
Wikibooksにはアルゴリズム に関する本があります
ウィキバーシティ では、 アルゴリズム学科で アルゴリズム についてさらに学び、他の人に教えることができます。
ウィキメディア コモンズには、アルゴリズム に関連するメディアがあります 。
アルゴリズムリポジトリ