2つのアルゴリズムが「類似」と言われるのはいつですか?


16

私は理論的には仕事をしていませんが、私の仕事には理論論文を時々読む(そして理解する)必要があります。(一連の)結果を理解したら、これらの結果を一緒に働く人々と話し合いますが、ほとんどの人は理論的にもうまくいきません。そのような議論の1つで、次の質問が出されました。

与えられた2つのアルゴリズムが「類似」していると言うのはいつですか?

「類似」とはどういう意味ですか?査読者を混乱させたり煩わせたりすることなく、論文で次の主張のいずれかを行うことができる場合、2つのアルゴリズムは類似していると言えます(より良い定義を歓迎します):

請求項1「アルゴリズムアルゴリズムと同様であり、、また、問題の解決」ABX

クレーム2.「アルゴリズムはアルゴリズム似ています」C

少し具体的にしましょう。グラフアルゴリズムを使用しているとします。最初に、2つのアルゴリズムが類似するためのいくつかの必要条件:

  1. 彼らは同じ問題を解決しなければなりません。
  2. 彼らは、同じ高レベルの直感的なアイデアを持っている必要があります。

たとえば、グラフトラバーサル、幅優先、深さ優先のトラバーサルについては、上記の2つの条件を満たすことができます。最短経路の計算では、幅優先アルゴリズムとダイクストラのアルゴリズムが上記の2つの条件を満たします(もちろん、重み付けされていないグラフの場合)。等

これらも十分な条件ですか?より具体的には、2つのアルゴリズムが類似するために必要な条件を満たすと仮定します。もしあなたが本当にそれらを同様に呼んでもらえますか?

  1. 彼らは異なる漸近的なパフォーマンスを持っていますか?
  2. グラフの特別なクラスでは、1つのアルゴリズムは時間を必要とし、もう1つのアルゴリズムは時間を必要としますか?Ω(n)O(n1/3)
  3. それらは異なる終了条件を持っていますか?(同じ問題を解決していることを思い出してください)
  4. 前処理ステップは2つのアルゴリズムで異なりますか?
  5. メモリの複雑さは2つのアルゴリズムで異なりますか?

編集:質問は明らかに文脈依存であり、主観的です。ただし、上記の5つの条件でいくつかの提案が得られることを期待していました。回答を得るために必要な場合は、質問をさらに修正し、詳細を提供させていただきます。ありがとう!


1
それは本当にコンテキストに依存します。たとえば、特定のシーケンシャルアルゴリズムでは、DFSとBFSは非常に異なり、機能しない場合もあります。並列設定では、DFS(または少なくとも1つのバリアント)はP完全ですが、BFSは「並列で簡単」です。
スレシュヴェンカト

@SureshVenkat-私は質問が非常に文脈に依存していることに同意します。議論を始めないために、あいまいに聞こえるリスクがある「2つのアルゴリズム」の名前を控えることにしました
。--)

4
問題は近くにあり、近くにあることです。乗法重み更新法を「本質的にバイナリ検索」と考える方法がありますが、間違った文脈ではこれは非常識に聞こえます。FWIW、上記のすべてのケースで、2つのアルゴリズムが異なると宣言することを想像できます。
スレシュヴェンカト

1
この質問は私には主観的すぎるようです。基本的な定義が存在しない場合、基本的に「類似」の定義を求めています。
ジョー

回答:


23

「アルゴリズムAはアルゴリズムBに似ている」という一貫した定義を与えることさえ難しい問題です。一つには、「彼らは同じ問題を解決しなければならない」ということは必要条件ではないと思います。1は「アルゴリズムという論文で述べているとき、多くの場合、定理の2が、アルゴリズムに似ているB定理で1」、アルゴリズムAは、実際のものとは異なる問題が解決されたBを、新しい問題に対処するためにいくつかのマイナーな変更を持っています。A2B1AB

2つのアルゴリズムが同じであるはどういう意味かを判断しようとすることでさえ、興味深く困難な問題です。「2つのアルゴリズムはいつ同じですか」という論文を参照してください。http://research.microsoft.com/~gurevich/Opera/192.pdf


17

多くの場合、それは「アルゴリズムBを詳細に書きたくない。なぜなら、興味深い詳細はすべてアルゴリズムAのものとほとんど同じであり、10ページの制限を超えたくないので、とにかく提出期限は3時間です。」


7

口語的な意味で「類似」を意味する場合、JeffEの答えは一部の人々の意味を捉えていると思います。

技術的な意味では、それはあなたが気にするものに依存します。漸近的な時間の複雑さが気になる場合は、再帰と反復の違いは重要ではありません。計算可能性が重要な場合は、カウンター変数と1シンボルスタックの違いは重要ではありません。

アルゴリズムを比較するための最初のステップは、等価の概念を正確にすることです。直感的に、をアルゴリズムの空間、Mを数学オブジェクトの空間、s e mとします。A Mは、s e mP がアルゴリズムPの意味である関数エンコードです。空間Mには、アルゴリズムの変数の数からその状態グラフまたは時間の複雑さまで、あらゆるものを含めることができます。私はMが何であるかについての絶対的な概念があるとは思わない。与えられたMAMsemAMsemPPMMMただし、s e mQ )に等しい場合、2つのアルゴリズムは同等であると言えます。あなたが言及した5つの基準のそれぞれは、この方法で数学的に形式化できると思います。semPsemQ

他のアルゴリズムよりも一般的なアルゴリズム(または別のアルゴリズムを改良するアルゴリズム)について話したい場合、により多くの構造を付与します。その想像Mは半順序集合であり、順序がX Yことエンコードxがより定義されたオブジェクトであるY。例えば、Mは、アルゴリズムのトレースのセットを含み、セット包含され、S EのMP S のE MQ 手段のすべての痕跡そのPMMバツyバツyMsemPsemQPトレースです。これは、PQよりも決定論的であると言っていると解釈でき ます。QPQ

次に、2つのアルゴリズムがどれだけ近いかを定量化できるかどうかを尋ねることができます。この場合、メトリックを付与する必要があると思います。次に、2つのアルゴリズムが表す数学的オブジェクト間の距離を測定できます。さらに、アルゴリズムをマップして空間または確率空間を測定し、他の基準を使用してそれらを比較することも可能です。M

より一般的には、(直感的な用語で)何を気にしますか、これらの直感的なプロパティを表す数学的なオブジェクトは何ですか、アルゴリズムからこれらのオブジェクトにどのようにマッピングできますか、この空間の構造は何ですか?また、オブジェクトの空間が類似性の概念を認めるのに十分な構造を楽しんでいるかどうかを尋ねます。これは、プログラミング言語のセマンティクスの観点から来るアプローチです。コンピュータサイエンスの考え方が大きく異なるため、このアプローチが魅力的かどうかはわかりません。


5

ジェフの答えの線に沿って、一方の著者がもう一方の著者が彼女の論文をレビューしているかもしれないと期待する場合、2つのアルゴリズムは似ています。

しかし、冗談はさておき、理論コミュニティでは、アルゴリズムAが解決している問題は、アルゴリズムBに「類似」しているかどうかにかなり接していると言えます。Aは、同じ主要な理論的アイデアのために「機能する」場合、Bと類似しています。たとえば、両方のアルゴリズムの主なアイデアは、データをはるかに低い次元の空間に投影し、Johnson-Lindenstraussの補題でノルムを保持し、その後総当たり検索を実行できるということですか?アルゴリズムは、どの問題を解決しようとも、これを行う他のアルゴリズムに似ています。さまざまな問題を解決するために使用できる少数の強力なアルゴリズム手法がありますが、これらの手法は「類似」アルゴリズムの多くのセットの重心を形成すると思います。


3

非常に興味深い質問であり、非常に素晴らしい紙ライアン!

私は、アルゴリズム間の全体的な類似性を評価することは主に主観的な価値判断であるという考えに間違いなく同意します。技術的な観点からは、アルゴリズムの類似性を決定するために注意深く観察される多くの機能がありますが、最終的には個人の好みの問題でもあります。私はあなたの質問の特定のポイントを参照しながら、同じコインの両面の重要性の説明を提供しようとします:

技術的な観点から:

  1. ライアンは、両方のアルゴリズムが同じ問題を解決しなければならないことをすでに指摘しました。アルゴリズムBで処理できるように、アルゴリズムAで理解できる同じインスタンスの多項式変換があることを通常証明すれば十分であると言うことで、さらに先に進んでこの概念を一般化できます。しかし、これは実際には非常に弱いでしょう。類似性をより強い意味で考えることを好みます。
  2. ただし、2つの同等のアルゴリズムが同じ直感的なアイデアを持っていることを期待することは決してありませんが、これもまた、キャプチャするのが容易ではない定義です。それ以上に、多くの場合、類似していると見なされるアルゴリズムが主な理論的根拠に従っていない場合があります。たとえば、さまざまなアイデアに従ってさまざまな方法で作成された並べ替えアルゴリズムを考えてみましょう。極端な例として、通常は数学的コミュニティによって確率過程と見なされる遺伝的アルゴリズムを考えてください(したがって、それらはまったく異なる方法でモデル化および分析されます)。
  3. さらに、この概念を一般化して、終了条件や前処理段階などの他の技術はそれほど重要ではないと言います。しかし、これは常にそうではありません。たとえば、ダイクストラのアルゴリズムと均一コスト検索、またはダイクストラのアルゴリズムに対するケースを参照してください。両方のアルゴリズムは非常に近いため、ほとんどの人は違いを語りませんが、その論文の著者にとっては、(技術的な)違いが非常に重要でした。前処理ステップでも同じことが起こります。精通している場合はしてください。NN21加法パターンデータベースは、実際には同じ数のノードをまったく同じ順序で拡張し、これにより両方のアルゴリズム(およびそのヒューリスティック)が非常に強い意味で厳密に同等になりますが、最初のアプローチには前処理がなく、2番目のアプローチには特定のインスタンスの解決を開始する前に大きなオーバーヘッドが発生します。ただし、パターンデータベースがよりシミュレートされた相互作用を考慮するとすぐに、それらの間のパフォーマンスに大きなギャップが生じるため、それらは明らかに異なるアイデア/アルゴリズムになります。
  4. 実際のところ、ほとんどの人はアルゴリズムをその目的パフォーマンスのために判断すると思います。したがって、漸近的パフォーマンスは、プログラム間の類似性を判断するのに適した指標です。ただし、このパフォーマンスは必ずしも典型的なケースではないため、2つのアルゴリズムの漸近的パフォーマンスが同じでも、実際には動作が異なる場合は、おそらく異なると結論付けることに注意してください。これに関する強力な証拠は、両方のアルゴリズムが時間とメモリの両方で同じパフォーマンスを持っていることです(これにより、Sureshが言ったように、DFSとBFSが異なって見えるようになります)。場合には、この主張はあなたに説得鳴らない、優れた(と非常にお勧めの本)を参照してください。宇宙のプログラミングセス・ロイド 189ページで、彼はアルゴリズムを異なるものとみなすために使用できる30以上の複雑さの尺度を含むリストを参照しています。

それでは、アルゴリズムの類似点/相違点は何ですか?私の見解では(そしてこれは純粋に投機的です)、主な違いは彼らがあなたに提案するものについてです。多くの(多くの!)アルゴリズムは、同じ目的に使用される場合にいくつかの技術的特徴が異なるだけなので、典型的なケースは入力の範囲によって異なります。ただし、すべての違いの中で最も大きいのは、(私の目には)それらがあなたに示唆するものです。アルゴリズムにはさまざまな機能があるため、独自の長所と短所があります。2つのアルゴリズムが同じように見えても、異なるケースに対処するために異なる方法で拡張される可能性がある場合、それらは異なると結論付けます。ただし、多くの場合、2つのアルゴリズムはほとんど同じに見えるので、それらは同じと見なされます...誰かが重要な区別をして到着するまで、突然、それらは完全に異なります!

申し訳ありませんが、私の応答は非常に長くなりました...

乾杯、


1
実際、ライアンは、両方のアルゴリズムで同じ問題を解決する必要はないことを提案しました。
ジェフ

本当だ!私はこの点で意見を集めていましたが、あなたは間違いなく正しいです!
カルロスリナレスロペス

2

類似性メトリックを定義せずに類似性に言及することは、明確に定義されていません。2つのアルゴリズムが類似する多くの方法があります。

QuicksortとMergesortは非常に似た問題を解決しますが、異なるアルゴリズムを使用してそうします。アルゴリズムの複雑さは似ています(ただし、最悪の場合のパフォーマンスとメモリ使用量は異なる場合があります)。QuicksortとMergesortはどちらもBubblesortに似ていますが、Bubblesortのパフォーマンスメトリックは大きく異なります。複雑性統計Quicksortを無視する場合、MergesortとBubblesortはすべて同じ等価クラスにあります。ただし、アルゴリズムの複雑さにまったく関心がある場合、QuicksortとMergesortは、Bubblesortよりも互いにはるかに類似しています。

Smith-Waterman動的プログラミングとHMMシーケンス比較は、2つのシーケンスを整列させる問題の解決を試みます。ただし、入力は異なります。Smith-Watermanは入力として2つのシーケンスを取り、HMMシーケンスの比較は入力としてHMMとシーケンスを取ります。両方の出力配列アライメント。アイデアの動機付けという点では、これらはどちらもレーベンシュタインの編集距離に似ていますが、非常に高いレベルにすぎません。

以下に、2つのアルゴリズムを類似と呼ぶいくつかの基準を示します。

  1. 入出力タイプ
  2. アルゴリズム/メモリの複雑さ
  3. 入力の種類に関する仮定(例:正数または浮動小数点の安定性)
  4. ネストされた関係(たとえば、一部のアルゴリズムは他のアルゴリズムの特殊なケースです)

類似性の意味についての重要な決定は残っています。アルゴリズムの複雑さを気にする人もいれば、気にしない人もいます。類似性の定義は議論のコンテキストに依存するため、「類似アルゴリズム」という用語は明確に定義されていません。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.