タグ付けされた質問 「ds.algorithms」

タスクを完了するための明確に定義された指示、および時間/メモリ/その他に関する関連分析に関する質問。

30
本からのアルゴリズム。
ポール・エルドスは、神がそれぞれの数学的定理の最もエレガントな証拠を保持している「本」について話しました。これは、本(現在は第4版になっていると思います):本からの証拠にも影響を与えました。 もし神がアルゴリズムに関する同様の本を持っていたら、どのアルゴリズムが候補者になると思いますか? 可能であれば、クリック可能なリファレンスと、それを機能させる重要な洞察も提供してください。 回答ごとに1つのアルゴリズムのみを入力してください。

29
展開されたコアアルゴリズム
アルゴリズムの重要性を実証するために(例えば、理論やまったく異なる分野の学生や教授にとっても)、コアアルゴリズムが商用、政府、または広く使用されているソフトウェア/ハードウェア。 私は次の基準を満たすような例を探しています: アルゴリズムを使用するソフトウェア/ハードウェアは、現在広く使用されているはずです。 例は具体的である必要があります。特定のシステムおよび特定のアルゴリズムへの参照を提供してください。 たとえば、「アルゴリズムXは画像処理に役立つ」では、「画像処理」という用語は十分に具体的ではありません。「Google検索でグラフアルゴリズムを使用する」では、「グラフアルゴリズム」という用語は十分に具体的ではありません。 アルゴリズムは、一般的な学部生または博士号で教える必要があります。アルゴリズムまたはデータ構造のクラス。理想的には、アルゴリズムは典型的なアルゴリズムの教科書でカバーされています。たとえば、「よく知られたシステムXはあまり知られていないアルゴリズムYを使用します」は良くありません。 更新: 素晴らしい回答とリンクをありがとう!コアアルゴリズムは広範にわたるため、特定の用途を示すのが難しいため、基準を満たすのは難しいと言う人もいます。難しさを感じます。しかし、私の経験では、人々に「見て、アルゴリズムはどこにでもあるので重要だ!」動作しません。

2
スーパーマリオギャラクシーの問題
マリオが惑星の表面を歩いているとします。既知の場所から一定の方向に所定の距離を歩き始めた場合、彼がどこで止まるかをどれくらい早く決定できますか? より正式に、我々は凸多面体を与えられていると仮定 3空間内で、開始点の表面に、方向ベクトル(いくつかの面を含む面内で)、及び距離。マリオのどのファセットが内部で停止するかをどれくらい早く決定できますか?(技術的なポイントとして、マリオが頂点に入るとすぐに爆発すると仮定します;幸いなことに、これはほとんど起こりません。)S P のV Pのℓ P PPPPsssPPPvvvpppℓℓ\ellPPPPPP または、必要に応じて、ポリトープ、ソースポイント、および方向ベクトルが事前に与えられているとします。前処理の後、与えられた距離質問にどれくらい早く答えることができますか?S のV ℓPPPsssvvvℓℓ\ell 特にに三角形のファセットしかない場合、マリオの足跡を簡単にトレースするのは簡単です。マリオがそのエッジの1つからファセットに入るたびに、時間で他の2つのエッジのどちらから抜けなければならないかを判断できます。このアルゴリズムの実行時間は、エッジ交差の数でのみ線形であるが、それはです無限の距離があるため、入力サイズの関数として直径よりも任意に大きくすることができた。もっと良くできますか?O (1 )ℓのPPPPO(1)O(1)O(1)ℓℓ\ellPPP バインドされたグローバルアッパーは、入力を表現するのに必要なビット数でありしかし、整数入力を主張することは、いくつかのかなり厄介な数値の問題を提起する-どのように計算します。(実際には、パスの長さは、実際には無制限ではありません。正確にどこ停止しますか?—では、実際の入力と正確な実際の演算に固執しましょう。) この問題の複雑さについて重要なことは何ですか? 更新: julkiewiczのコメントを踏まえると、(ポリトープの複雑さ)の点で純粋に制限された実RAMの実行時間は不可能であることは明らかです。マリオがから始まり方向に歩いている、両面単位正方形の特殊なケースを考えてみましょう。マリオは、整数のパリティに応じて、正方形の前面または背面で停止します。PSPACEとPを一致させない限り、実際のRAMで一定時間内にフロア関数を計算することはできません。しかし、を計算でき[ 0 、1 ] 2(0 、1 / 2 )(1 、0 )⌊ ℓ ⌋ ⌊ ℓ ⌋ O (ログℓ )N ログℓをnnn[0,1]2[0,1]2[0,1]^2(0,1/2)(0,1/2)(0,1/2)(1,0)(1,0)(1,0)⌊ℓ⌋⌊ℓ⌋\lfloor \ell \rfloor⌊ℓ⌋⌊ℓ⌋\lfloor \ell \rfloorO(logℓ)O(log⁡ℓ)O(\log \ell)単純なアルゴリズムに対する指数関数的な改善である指数関数検索による時間。 と時間多項式は常に達成可能ですか?nnnlogℓlog⁡ℓ\log \ell

11
文字列のシャッフル解除はどれくらい難しいですか?
2つの文字列のシャッフルは、文字列を散在させて新しい文字列にし、各文字列の文字を順番に並べることによって形成されます。例えば、MISSISSIPPIのシャッフルであるMISIPPとSSISI。2つの同一の文字列のシャッフルである場合、文字列の正方形を呼び出します。例えば、ABCABDCDそれはのシャッフルであるため、正方形であるABCDとABCD、しかし、文字列はABCDDCBA、正方形ではありません。 文字列が正方形か、NP困難かを判断するための高速アルゴリズムはありますか?明らかな動的プログラミングのアプローチはうまくいかないようです。 次の特殊なケースでさえ難しいようです:(1)各文字が最大4 回6回現れる文字列、および(2)2つの異なる文字のみを含む文字列。 Per Austrinが以下で指摘しているように、各キャラクターが最大4回出現する特殊なケースは2SATに減らすことができます。 更新: この問題には、硬度をより簡単に証明できる別の定式化があります。 頂点が1〜nの整数であるグラフGを考えます。エンドポイント間の実際の間隔で各エッジを識別します。Gの2つのエッジは、一方の間隔に他方が適切に含まれている場合にネストされると言います。たとえば、エッジ(1,5)と(2,3)はネストされていますが、(1,3)と(5,6)はネストされておらず、(1,5)と(2,8)はネストされていません。Gでの一致は、エッジのペアがネストされていない場合、ネストされません。 Gがネストされていない完全一致を持っているかどうかを判断する高速なアルゴリズムはありますか、それとも問題はNP困難ですか? 文字列のシャッフル解除は、クリークの互いに素な結合(入れ子になっていない文字間のエッジを持つ)でネストされていない完全一致を見つけることと同じです。特に、バイナリ文字列のシャッフル解除は、2つのクリークの互いに素な結合でネストされていない完全一致を見つけることと同じです。しかし、この問題が一般的なグラフにとって難しいのか、グラフの興味深いクラスにとって簡単なのかさえ、私には分かりません。 完全な非交差マッチングを見つける簡単な多項式時間アルゴリズムがあります。 更新(2013年6月24日):問題は解決しました! 現在、正方形の文字列を識別することがNP完全であるという2つの独立した証拠があります。 2012年11月に、Sam BussとMichael Soltysは3パーティションからの削減を発表しました。これは、9文字のアルファベットの文字列でも問題が難しいことを示しています。Journal of Computer System Sciences 2014の「正方形のシャッフル解除はNPハード」を参照してください。 2013年6月、Romeo RizziとStéphaneVialetteは、最も一般的なサブシーケンス問題からの削減を発表しました。「を参照してくださいシャッフル製品のための正方形で単語認識では、」PROCを。ロシアでの第8回国際コンピューターサイエンスシンポジウム、Springer LNCS 7913、pp。235–245。 2009年のShuai Cheng LiとMing Liによる、ネストされていない完全一致の検索はNP困難であるというより単純な証拠もあります。「2間隔パターンの2つの未解決問題」、Theoretical Computer Science 410(24–25 ):2410–2423、2009。

17
抽象化の価格の例?
理論的なコンピューターサイエンスは、「抽象化の代価」の例を示しています。最も顕著な2つは、ガウスの消去と並べ替えです。すなわち: 全体として行と列に操作を制限する場合、ガウス消去法は、たとえば行列式の計算に最適であることが知られています [1]。明らかに、Strassenのアルゴリズムはその制限に従わず、ガウス消去法よりも漸近的に優れています。 並べ替えにおいて、リストの要素を比較および移動のみが可能なブラックボックスとして扱う場合、標準のnlognnlog⁡nn \log n情報理論的下限があります。しかし、フュージョンツリーは、私が理解している限り、乗算の巧妙な使用に縛られています。 抽象化の価格の他の例はありますか? もう少し形式的にするために、弱いモデルの計算では下限が無条件にわかっているが、強いモデルでは違反していることがわかっている例を探しています。さらに、弱いモデルの弱点は抽象化の形でもたらされるべきであり、それは確かに主観的な概念です。たとえば、モノトーン回路の制限を抽象化とは考えていません。上記の2つの例が、私が探しているものを明らかにすることを願っています。 [1] KLYUYEV、VV、およびNI KOKOVKIN-SHcHERBAK:線形代数方程式の解の算術演算数の最小化について。GI TEEによる翻訳:テクニカルレポートCS 24、6月t4、t965、スタンフォード大学コンピューターサイエンス部。

6
グラフ(D *、D * -Lite、LPA *など)を変更するための最先端の経路探索アルゴリズムはどのように異なりますか?
近年、グラフの変化に応じてA *よりもはるかに高速に最適なパスを計算できる多くのパスファインディングアルゴリズムが開発されています。それらは何で、どのように違いますか。それらはさまざまな状況のためですか、それとも時代遅れのものですか? これらは私がこれまでに見つけたものです: D *(1994) フォーカスD *(1995) DynamicSWSF-FP(1996) LPA(1997) LPA * /インクリメンタルA *(2001) D * Lite(2002) SetA *(2002) HPA *(2004) いつでもD *(2005) PRA *(2005) フィールドD *(2007) シータ*(2007) HAA *(2008) GAA *(2008) 学習(2009) BDDD *(2009-この論文にアクセスできません:|) インクリメンタルファイ*(2009) GFRA *(2010) MTD * -Lite(2010) ツリー-AA *(2011) これらのどれが私の特定の問題に当てはまるかわかりません-必要に応じてすべて読みますが、誰かが要約を書くことができれば、時間を大幅に節約できます。 私の特定の問題:開始、終了、およびいくつかの壁があるグリッドがあります。現在、開始から終了までの最適なパスを見つけるためにA *を使用しています。 ユーザーが1つの壁を移動すると、パス全体を再計算する必要があります。「移動壁は/パスを再計算」ステップは、行で何回も起こるので、私はすぐに*の完全な反復を実行することなく、最適なパスを再計算することができるようになりますアルゴリズムを探しています。 ただし、私は必ずしもA *の変更を探しているわけではありません。完全に別のアルゴリズムである可能性があります。

2
ガウス消去法の実際の時間の複雑さは何ですか?
以前の質問への回答で、「ガウス」消去は時間で実行されるという一般的だが誤った信念に言及しました。アルゴリズムが算術演算を使用することは明らかですが、不注意な実装では指数関数的に多くのビットを持つ数値を作成できます。簡単な例として、次の行列を対角化するとします。O(n3)O(n3)O(n^3)O(n3)O(n3)O(n^3) ⎡⎣⎢⎢⎢⎢⎢⎢⎢211⋮1021⋮1002⋮1⋯⋯⋯⋱⋯000⋮2⎤⎦⎥⎥⎥⎥⎥⎥⎥[200⋯0120⋯0112⋯0⋮⋮⋮⋱⋮111⋯2]\begin{bmatrix} 2 & 0 & 0 & \cdots & 0 \\ 1 & 2 & 0 & \cdots & 0 \\ 1 & 1 & 2 & \cdots & 0 \\ \vdots & \vdots & \vdots & \ddots & \vdots\\ 1 & 1 & 1 & \cdots & 2 ...

9
実装するには複雑すぎる強力なアルゴリズム
実装するには単純に複雑すぎる正当なユーティリティのアルゴリズムとは何ですか? 明確にしましょう:現在の漸近最適行列乗算アルゴリズム(Coppersmith-Winograd)のようなアルゴリズムは探していません。これは実装するのに合理的ですが、実際には役に立たない定数を持っています。実用的な価値があると思われるアルゴリズムを探していますが、コーディングが非常に難しく、実装されたことがない、非常に人工的な設定でのみ実装されている、または非常に特殊な用途にのみ実装されています。 また、優れた漸近性を備えていますが、実際のパフォーマンスが低い可能性が高い、実装不可能に近いアルゴリズムも歓迎します。


4
行列乗算を2次時間で実行できるという証拠はありますか?
行列乗算の最適な指数であるは実際には2に等しいと広く推測されています。私の質問は簡単です:ωω\omega と信じる理由は何ですか?ω=2ω=2\omega = 2 Coppersmith-Winogradのような高速アルゴリズムは知っていますが、これらが証拠と見なされる理由はわかりません。ω=2ω=2\omega = 2 素朴に、それは、結果が純粋に審美的な理由で真実であることをコミュニティが望んでいる古典的な例のように思えます。それが本質的にここにあるかどうか知りたいです。

10
1つのスタック、2つのキュー
バックグラウンド 数年前、私が学部生だったとき、私たちは償却分析に関する宿題を与えられました。問題の1つを解決できませんでした。comp.theoryで尋ねましたが、満足のいく結果は得られませんでした。コースTAが彼が証明できないことを主張し、証拠を忘れたと言ったのを覚えています。 今日、私は問題を思い出した。私はまだ知りたいと思っていたので、ここにあります... 質問 2つのキューを使用してスタックを実装することは可能ですか?プッシュ とPOPの両方の操作が償却時間O(1)で実行されますか?はいの場合、どのように教えてもらえますか? 注意:私たちは実装したい場合は、状況は非常に簡単であるキューをして2つのスタック(対応する操作とENQUEUE&DEQUEUE)。違いを観察してください。 PS:上記の問題は宿題そのものではありません。宿題は下限を必要としませんでした。実装と実行時間分析だけです。

10
遺伝的アルゴリズムに関する証明可能な声明
遺伝的アルゴリズムは、理論の世界ではあまり注目されていませんが、かなりよく使用されているメタヒューリスティック手法です(メタヒューリスティックとは、アニーリング、勾配降下など、多くの問題に一般的に適用される手法を意味します)。実際、GAのような手法は、実際のユークリッドTSPに非常に効果的です。 一部のメタヒューリスティックは、理論的にはかなりよく研究されています。ローカル検索とアニーリングに関する研究があります。交互最適化(k-meansなど)がどのように機能するかについては、かなり良い感覚があります。しかし、私が知る限り、遺伝的アルゴリズムについて知っている有用なものは何もありません。 遺伝的アルゴリズムの振る舞いについて、形や形を問わず、強固なアルゴリズム/複雑性理論はありますか?スキーマ理論のようなことを聞​​いたことがありますが、特にアルゴリズム的ではないという領域の現在の理解に基づいて、議論からそれを除外します(しかし、ここで間違えられるかもしれません)。

7
Pのどの問題について、結果を見つけるよりも結果を確認する方が簡単ですか?
NP完全問題の(検索バージョン)の場合、検証は多項式時間で実行できるため、解決策の検証は明らかに見つけるよりも明らかに簡単です。 ではP検証高速化ソリューションを見つけることよりもときに、それは明らかにいないようですので、しかし、解決策はまた、多項式時間で見つけることができます。実際、さまざまな問題はこの観点とは異なる振る舞いをしているようです。いくつかの例: 3SUM:入力番号が与えられ、それらの合計が0になる3を見つけます。私が知る限り、既知の最速のアルゴリズムは 時間で実行され、この順序は最適であると推測されます。一方、解決策の検証ははるかに高速です。必要なのは、見つかった3つの数値が実際に合計して0になることを確認するだけだからです。O (n 2 − o (1 ))nnnO(n2−o(1))O(n2−o(1))O(n^{2-o(1)}) すべてのペアの最短経路: エッジの重み付きのグラフが与えられた場合、最短経路距離行列を計算します。そのような行列が与えられたら、それを再計算するよりも、それが実際に正しい距離行列であることをより速くチェックできますか?私の推測では、答えはおそらく「はい」ですが、3SUMほど明白ではありません。 線形計画。クレームされた最適なソリューションが提供されている場合、補助情報も提供されている場合、最適なソリューションを再計算するよりも簡単に確認できます(最適なデュアルソリューション)。一方、主解のみが利用可能な場合、実際にLPを解くよりも、より速くチェックできるかどうかは明確ではありません。 質問:この主題について何が知られていますか?つまり、解を見つけるよりもPの問題の解を検証する方が簡単なのはいつですか?

13
どのアルゴリズムについて、理論的分析と現実の間に大きなギャップがありますか?
アルゴリズムの効率を分析する2つの方法は次のとおりです。 ランタイムに漸近的な上限を設定する 実行して実験データを収集します。 (1)と(2)の間に大きなギャップがある既知のケースがあるのだろうか。これにより、(a)実験データがより厳密な漸近を示唆するか、(b)理論分析がXがYよりはるかに優れていることを示唆し、実験データがYがはるかに優れていることを示唆するようなアルゴリズムXおよびYがあることを意味しますバツ。 実験では通常、平均ケースの動作が明らかになるため、最も興味深い答えは平均ケースの上限を参照するものと期待しています。ただし、シンプレックスに関するNoamの回答など、さまざまな境界について話す興味深い回答を除外したくありません。 データ構造を含めます。回答ごとに1つのアルゴ/ DSを入力してください。

8
非構成的アルゴリズムの存在証明はありますか?
特定の複雑さで解決可能であることが証明されているが、実際にこの複雑さを達成するための既知のアルゴリズムがない問題への参照に出くわしたことを覚えています。 私は、これがどのように成り得るかについて心を包むのに苦労しています。アルゴリズムの存在の非構造的証明がどのように見えるか。 そのような問題は実際に存在しますか?彼らは多くの実用的な価値を持っていますか?

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