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

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

1
最小サイクルがダブルエッジカバーを形成するように周囲
してみましょう。すべてのgサイクルのセットがGのダブルエッジカバーを形成するように(つまり、すべてのエッジがちょうど2つのgサイクルによって共有される)、任意の2つの交点が交差するように、ガースgの単純なグラフGを生成する必要がありますg -cyclesは、頂点、エッジ、または空のいずれかです。生成されるグラフは、任意に大きくする必要があります。g≥3g≥3g\geq 3GGGggggggGGGgggggg 生成方法にはある程度のランダムさが必要ですが、簡単な意味ではありません。かなり複雑なグラフを取得したい。たとえば、平面に長方形グリッドがあるとします。外接する四角形の反対側を特定すると、g = 4に対する上記の要件をすべて満たすグラフが得られます。このグラフは単純であると見なします。n×mn×mn\times mg=4g=4g=4 そのような方法はありますか? 同様の問題への言及も歓迎します。

2
サブセット番号
修正K ≥ 5k≥5k\ge5。十分な大きさのについて、サイズんんnが{ 1 .. n }{1 ..ん}\{1..n\}のすべてのサブセットにn / kん/kn/kを正の整数で正確にラベル付けします{ 1 ... T}{1 ...T}\{1...T\}。このラベル付けが次のプロパティを満たすようにしたい:整数のセットSSSあり、st 場合kkkサイズのサブセットn / kん/kn/k交差する(すなわち、これらのセットの和集合は、すべてのセットを形成しない{ 1 .. n }{1 ..ん}\{1..n\})は、そのラベルの合計はであるSSS。 そうでなければ、それらのラベルの合計はありませんSSS。 そこに存在するかK ≥ 5k≥5k\ge5とラベリング、ST T⋅ | S| =O( 1.99ん)T⋅|S|=O(1.99ん)T\cdot|S|=O(1.99^n)? たとえば、任意のkkkに対して、次の方法でサブセットにラベルを付けることができます。 T= 2んT=2んT=2^n、各サブセットが有するんんnその数のビットは:最初のビットが同じである111サブセットが含まれているときに限り111第2のビットが同じで、111サブセットが含まときに限り222などそれは、参照することは容易だSSS唯一の要素含ま2ん− 12ん−12^n-1。しかし、ここでT⋅ | S| =Θ( 2ん)T⋅|S|=Θ(2ん)T\cdot|S|=\Theta(2^n)。もっと上手くできる?

2
3-SATの準多項式サイズの回路は簡単ですか?
変数とc句を含む3-SATを検討するとします。この説明に適合するSATの問題を解決するために、O (v 2 + log c)の時間/スペースを必要とする方法を調査しています。これは、任意の量に調整できるエラーの範囲内です。ただし、落とし穴があります。vvvcccO(v2+logc)O(v2+log⁡c)O(v^{2+\log c}) この方法では、事前に計算された値のセットが必要です。その後、上記の説明に適合する任意の3-SAT問題を解決できます。事前計算された値は、サイズセットであり、各値はO (1 )のスペースを取ります。実際の問題は、これらの値のそれぞれが計算にO (2 v)時間かかる可能性があることです。これらの計算を高速化する方法を見つけることができる可能性があります。O(v2+logc)O(v2+log⁡c)O(v^{2+\log c})O(1)O(1)O(1)O(2v)O(2v)O(2^v) 私は境界自体がこの質問で提示された上限を下回っていると思います(小さな)。だから私は疑問に思っています、O (v 2 + log c)事前計算を許可する場合、私が説明する上限に到達する簡単な方法はありますか?cccO(v2+logc)O(v2+log⁡c)O(v^{2+\log c}) 私はこの研究を続け、うまくいけば私の結果を公開したいと思いますが、最初に、それと同じかそれ以上の簡単な方法があるかどうかを知りたいです。 更新 このアルゴリズムの研究に加えて、関連する問題を研究しています。私は尋ねたStackExchangeのITセキュリティサイトでこの質問を、あなたが興味を持っている場合は、パスワードクラッキングおよびSATに関連します。少なくとも1つの回答がこれを反映しています。

2
カラーボールをシャッフルするには?
私は400個のボールを持っています。100個が赤、40個が黄色、50個が緑、60個が青、70個が紫、80個が黒です。(同じ色のボールは同じです) 効率的なシャッフルアルゴリズムが必要です。シャッフル後、ボールはリストに含まれます。 連続する3つのボールは同じ色ではありません。たとえば、「赤、赤、赤、黄色...」は使用できません。 そして、すべての順列が「等しく」発生する可能性があります。(まあ、効率と不偏性のトレードオフが十分良ければ、私は不偏性よりも効率を気にしません)。 フィッシャーイェイツクヌースを採用しようとしましたが、結果は理想的ではありません。 フィッシャーイェイツが十分でない理由 FYはモンテカルロ逆変換を採用しているため。そして、出力分布は同じカラーボールを異なる方法で処理します。つまり、私のニーズに対して偏った結果を生成します。 そして、素朴な考え方は、空間全体からすべての悪い順列をフィルタリング/バックトラックすることです。制限が非常に強い場合、たとえば、ボールが300個しかなく、そのうちの100個が赤である場合、適切な順列を取得する前に、バックトラッキング/失敗が多すぎます。 したがって、最終的には、すべての良い順列を反復できるようになりたいと思います。ただし、有効な順列の数が多すぎるため、ランダムにサンプリングできるのは一部のみです。それらの「一部」の統計的特徴が、可能な限り母集団に似ていることを望みます。

4
約実行のコスト。スキップ四分木における最近傍探索
注:質問は私の答えに修正再表示されている:我々は最低兄弟先祖を見つけることができる今と仮定すると、時間、ANNは本当にして行うことができるO (ログN )?O(1)O(1)O(1)O(logn)O(log⁡n)O(\log n) 四分木は効率的な空間インデックスです。[2]で説明されているように、圧縮四分木構造での最近傍探索の実装に関するパズルがあります。(詳細については説明しませんが、検索はいわゆる等距離の四角形に沿ってトップダウンで行われ、等距離パスのテールノードで終わります。添付画像では、これは点で満たされた南東のノードのいずれかである可能性があります。) それらのアルゴリズムが機能するためには、各ノード(少なくとも2つの空でない象限がある正方形)の4つの方向(北、西、南)のそれぞれの最下位(階層内で最も近い)の祖先ノードのポインターを維持する必要があります、東)。これらは、ノードの西向きの祖先の緑色の矢印で示されます(矢印は祖先の正方形の中心を指しています)。 この論文では、これらのポインタはポイントの挿入と削除中にO(1)で更新できると主張しています。ただし、緑のポイントの挿入を見ると、任意の数のポインター(この場合は6つ)を更新する必要があるようです。 私はこのポインタの更新を一定の時間で行うトリックを望んでいます。たぶん、悪用される可能性のある間接の形式があるのでしょうか? 編集: 論文の関連セクションは6.3で、「パスに曲がりがある場合、の最下位の祖先に加えて、方向ごとに最下位のルートも考慮する必要があります。その方向に向かう祖先[...] 各方向の最も近い祖先を指す各正方形に追加のポインターを関連付ける場合、からこれらの正方形を見つけることは、正方形あたり時間で実行できます。これらのポインタは、点の挿入または削除中に時間で更新することもできます。 "log(c/ε)log(c/ε)log(c/ε)qqq2d2d2^dqqqqqqO(1)O(1)O(1)2d2d2^dQ0Q0Q_0O(1)O(1)O(1) [2]:Eppstein、D。とGoodrich、MTとSun、JZ、「スキップ四分木:多次元データ用の単純な動的データ構造」、計算幾何学に関する第21回年次シンポジウムの議事録、pp。296—305 、2005年。

1
トランザクション/読み取り/書き込みロックを解決する際にどのアルゴリズム/読み取り問題をお勧めしますか?
簡略化された従来のデータベーストランザクションは、次のように見なすことができます。 Mアイテムの読み取り それらの読み取りに基づいていくつかの計算を実行する これらの計算に基づいてN個の結果を書き込みます。これには、最初に読み取られた要素が含まれる場合があります。 これらのトランザクションを(同時に)実行する場合、ACIDプロパティを維持する必要があります。 まったく同じ要件(トランザクションでのM読み取りに基づくN更新)が、他の非DBMSコンカレントシステムにも存在します。 私はこれらのトランザクションを実行/解決するためにどのようなアルゴリズムが存在し、これらのアルゴリズムの相対的な長所と短所は何かを見つけることに興味があります。いくつかの読書をお勧めできますか?これは、書籍またはオンラインの参照/チュートリアルである可能性があります。 明確化: したがって、たとえば、単純なアルゴリズムは、各トランザクションが単一のグローバルロックを取得することであり、事実上、単一のスレッド化を強制し、同時実行性を削除します。やや複雑なアルゴリズムは、個々のアイテムの読み取り/書き込みロックであり、デッドロックを回避するための順序があります)。などなど。この問題を解決するためのさまざまなアルゴリズムを文書化した優れた情報源はありますか。その長所と短所を備えた単一のアルゴリズムのみを指し示した答えでさえ有用です。

1
短くて太いパスを見つける
動機:標準の拡張パスmaxflowアルゴリズムでは、内側のループは、有向の重み付きグラフでソースからシンクへのパスを見つける必要があります。理論的には、不合理なエッジキャパシティが存在する場合でもアルゴリズムが終了するためには、検出したパスに制限を加える必要があることはよく知られています。たとえば、Edmonds-Karpアルゴリズムは、最短経路を見つけるように指示します。 経験的に、太いパス(これにはもっと良い用語がありますか?)のパスも見つけたいと思うかもしれません。たとえば、容量スケーリングを使用する場合、少なくとものフローに耐えられる最短パスを見つけます。パスの長さに制限はありません。パスが見つからなくなったら、を減らして繰り返します。ϵεϵ\epsilonεϵ\epsilon max-flowの非常に具体的なアプリケーションの拡張パスの選択を最適化することに興味があり、短いパスと太いパスの間のこのトレードオフを調査したいと思います。(注:常に問題を解決する必要はありません。最短のウォールタイムでフローの最大の下限を見つけることに最も興味があります。) 質問:最短経路アプローチと容量スケーリングアプローチの間を補間する標準的な方法はありますか?つまり、理想的には、いくつかのパラメータが、太さとトレードオフするパスの長さを制御する、短くて太いパスを見つけるアルゴリズムがありますか?極端な場合は、一方の端で最短パスを、もう一方の端で容量スケーリングスタイルのパスを回復できるようにしたいと考えています。

1
アルゴリズムの複雑さの隠された定数
多くの問題で、漸近的な複雑性が最も高いアルゴリズムには、大きなO表記法によって隠されている非常に大きな定数係数があります。これは、行列乗算、整数乗算(具体的には、Harveyおよびvan der Hoevenの最近のO(n log n)整数乗算アルゴリズム)、低深度ソートネットワーク、およびグラフマイナーの検出で発生し、いくつかを作成します。このようなアルゴリズムは、銀河アルゴリズムと呼ばれることもあります。 一般的なソートや整数加算などの他のアルゴリズムの場合、アルゴリズムは最適な漸近的な複雑さと小さな定数係数で知られていることに注意してください。 前者のアルゴリズムを後者のアルゴリズムから分離するために、理論的な観点からどのような研究が行われましたか? 計算の異なるモデル間の違いを隠すために、隠された定数がしばしば省略されることを知っています。ただし、多種多様なモデルの下では、これらの銀河アルゴリズムは、たとえば10億サイズの入力に対して漸近的に悪いアルゴリズムよりも遅くなると確信しています。場合によっては、区別が微妙ではありません。厳密にされていますか? たとえば、非常に単純なISAを備えたフォンノイマンマシンなどの非常に単純な計算モデルを考案し、アルゴリズムを実装して、実行時間を明示的な定数で制限することができます。これはさまざまなアルゴリズムで行われましたか?

2
無理な重みを持つ最大フローアルゴリズムの反例?
一部の重みが非合理的である場合、ファットパイプヒューリスティック(max-flowの2つのアルゴリズム)を使用するFord-FulkersonまたはEdmonds-Karpは停止する必要がないことがわかっています。実際、それらは間違った値に収束することさえあります!ただし、私が文献で見つけることができるすべての例[以下の参照とその中の参照]は、単一の非合理的な値のみを使用しています。共役黄金比、および有理であるか、ϕの有理倍数である他の値。私の主な質問は:φ』= (5–√− 1 )/ 2ϕ′=(5−1)/2\phi' = (\sqrt{5}-1)/2φ』ϕ′\phi' 一般的な質問:他の不合理な値はどうなりますか? 例(ただし、投稿するためにこれらすべてに回答する必要があるとは思わない-誰でも、または上記の一般的な質問に該当する他の質問への回答が興味深いと思います): 任意のなど反例一方の構築物(のかさえショーの有無)、できますか?α ∈ Rα∈R\alpha \in \mathbb{R} より弱く:そこの例は、不合理な値は、使用することが知られている本質的に異なるから?それは、いくつか存在する、あるαの有理倍数でないφ ' (またはより強くないQは、(φ '))と、すべての重みがにあるフォード・フルカーソン及び/又はエドモンズ-カープに反例が存在するようにQ(α )?φ』ϕ′\phi'αα\alphaϕ′ϕ′\phi'Q(ϕ′)Q(ϕ′)\mathbb{Q}(\phi')Q(α)Q(α)\mathbb{Q}(\alpha) 他の方向では、不合理が存在する例えば、そのフォードフルカーソン(それぞれ、エドモンズ-カープ。)に正しい値で停止すべてのグラフの重みからのすべてであるQ ∪ { Q α :Q ∈ Q }?(またはより強く、Q(α )から?)αα\alphaQ∪{qα:q∈Q}Q∪{qα:q∈Q}\mathbb{Q} \cup \{q\alpha : q \in \mathbb{Q}\}Q(α)Q(α)\mathbb{Q}(\alpha) すべての場合において、実際のRAMモデルのようなものを想定して、正確な算術および実数の正確な比較が一定の時間で行われるようにします。 (任意の実際の重みがあっても、多項式時間で実行されることが知られている他のmax-flowアルゴリズムがあります。これが、このタイプの質問がさらに調査されなかった理由かもしれません。しかし、私の学部生アルゴリズムクラスでこれらのアルゴリズムを教えたばかりです、私はまだこれに興味があります。) 参考文献 Ford-Fulkersonの最小限の反例はZwick TCS 1999によって与えられました エドモンズ・カープの反例は、キーランネまたはキーラン・マスによって与えられました。オーパー。解像度 1980年、それが最小限のものかどうかはわかりません。 これらは両方ともジェフエリクソンの講義ノートにあり、最初のセクションは23.5節にあり、2番目は講義23の演習14です。

1
QFBV SMTソルバーのパフォーマンスについて
Z3やBoolectorなどのSMTソルバーは、複雑なヒューリスティックセットを使用して問題を解決します。ただし、これにより、特定の問題に対するそのようなソルバーのパフォーマンスの予測も非常に困難になります。私の質問はこうして: 質問 量指定子なしのビットベクトル(QFBV)の理論における特定のSMTソルバーのパフォーマンスを理解または洞察する方法はありますか? これには、ソルバーが「行き詰まっている」/進行しない場所を理解するのに役立つ視覚化ツールも含まれます。 用途 同じ問題の異なるエンコーディングがソルバーのパフォーマンスにどのように影響するかを事前に理解します(ここでの最新技術は、「いくつかの異なるエンコーディングを試してみて、十分に高速であることを期待する」ことはできません)。 時間の制約のために特定の問題がSMTソルバーで解決できない場合は、問題を別の方法で表現して解決できるようにします。 ソルバーのパフォーマンスにまったく影響を与えない、またはソルバーのパフォーマンスに悪影響を与えることのない、ドメイン固有の問題の単純化に時間を費やすことを避けます。 既存の研究 私はこのトピックについての研究を見つけようとしましたが、私は多くを見つけることができませんでした。私はまだSAT / SMTソルバーの分野での経験があまりないので、何かを見逃したことをお詫びします。 SATzilla:機械学習技術を使用して問題から抽出された機能に基づいて、最高のパフォーマンスのソルバーを予測します。 これは、SMTではなくSATにのみ適用され、ソルバーのパフォーマンスの理由を説明しません。 Z3公理プロファイラー Z3インスタンス化グラフの視覚化とマッチングループの分析 これは数量化された理論にのみ焦点を当てているように見えます。

1
パワー間の距離を計算するアルゴリズム
素数、をすばやく計算できますかa,ba,ba, bminx,y>0|ax−by|minx,y>0|ax−by| \min_{x, y > 0} |a^x - b^y| ここで、x,yx,yx, yは整数です。明らかに、x=y=0x=y=0x = y = 0をとると、面白くない答えが得られます。一般に、これらの力はどの程度近づくことができますか?また、最小化x、yをすばやく計算するにはどうすればよいx,yx,yx, yですか?

5
ニューラルネットワークを使用してアルゴリズムを考案できますか?
ボードゲームでニューラルネットワークがどんどん成功した後、私たちが設定する次の目標は、Starcraftで人間を倒すことよりも役立つものになり得ると感じています。より正確には、私はかどうか疑問に思いました ニューラルネットワークをトレーニングして、古典的なアルゴリズムの問​​題を解決できますか? ここでは、たとえば、ネットワークが重み付きエッジと2つの頂点と指定された入力グラフを取得し、最短のパスをできるだけ早く見つけるように求めたことを意味します。次に、ニューラルネットワークがダイクストラまたは類似のものを使用するようにそれ自体を発見し、トレーニングすることになると思います。s t s tGGGssstttststst 一方では、ニューラルネットワークの計算能力がTC0TC0TC^0であることを知ってい。一方、これが私の質問に必ずしも関連しているのかどうかはわかりません。それでも、ほとんどの問題について、解決できるかどうかはわかりません。ニューラルネットワークがそれ自体をトレーニングできるかどうかを確認することは、高速なアルゴリズムがあるかどうかに関係なく、優れた指標になる可能性があります。たとえば、ニューラルネットワークがSATを高速に解決するように自分自身をトレーニングできない場合、(さらに)可能性が高くなり。ニューラルネットワークはグラフィソモルフィズムやFACTORIZATIONで何をするのだろう。TC0TC0TC^0NP⊄TC0NP⊄TC0NP\not\subset TC^0 もちろん、アルゴリズムの抽出はまったく別の問題です。専門家はそれを行う方法を知っていると思いますが、それを議論することはこの質問のトピックではありません。 2日後に追加:回答を確認した後、否定で回答する場合は、私が知りたいことを明記します。 チェスをプレイするのがダイクストラやグラフ同型写像よりも簡単なのはなぜですか?

1
ドントケアとのパターンマッチング:複数のパターン
Kalaiの2ページのSODAペーパーは、ドントケア(1文字に一致するワイルドカード)を使用したパターンマッチングのためのシンプルで効率的なアルゴリズムを提供します。本質的には、畳み込みと同じくらい簡単です。 しかし、ドントケアで複数のパターンを検索している場合はどうなりますか?それでも、たとえばFFTベースの手法でなんとかしてそれを解決できますか?

1
Schönhage–Strassenアルゴリズムではどのように内側のリングが選択されますか?
私はSchönhage–Strassen整数乗算アルゴリズムを実装しようとしましたが、再帰的なステップで障害にぶつかりました。 Iは、値有するバツxxとんnnビットを、私は計算したい。私はもともとアイデアが選ぶことだと思ったように4 ^ K \ GEQ 2N、分割XにK ^ 2と各片2 ^ {K-1}ビットモジュロ作業中に、SSAの畳み込みを適用する2 ^ {2 ^ kは} +1、値ごとに2 ^ kビットの容量を持つリング。次に、ピースを元に戻します。ただし、たたみ込みの出力には2nビットより少し多い(つまり、> 2 ^ kK 4 、K ≥ 2 N X 2 、K 2 、K - 1 2 2 K + 1 2 K 2 N > 2 Kバツ2(mod2ん+ 1 )x2(mod2n+1)x^2 \pmod {2^n+1}kkk4k≥ 2 …


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