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

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

1
最適化問題のNP硬度
アルゴリズムゲーム理論の問題を研究しているときに、次の最適化問題の複雑さに興味を持ちました。 問題 与えられた: グラウンドセットによって与えられ、U=[n]={1,…,n}U=[n]={1,…,n}U = [n] = \{1,\ldots,n\}nnn mmmランキングは、合計注文として与えられます where()、⟨Si,σi⟩⟨Si,σi⟩\langle S_i, \sigma_i \rangleSi⊆USi⊆US_i \subseteq U1≤i≤m1≤i≤m1 \leq i \leq m によって与えられる重みベクトル。UUUw∈Rnw∈Rnw \in \mathbb{R}^n 目標:次の合計を最大化するサブセット見つけます: whereは、よると 、で最高ランクのアイテム。L⊆UL⊆UL \subseteq Ur(L)=∑i∈[m], Si∩L≠∅w(ti(L))r(L)=∑i∈[m], Si∩L≠∅w(ti(L))r(L) = \sum_{i \in [m],\ S_i \cap L \neq \emptyset} w(t_i(L))ti(L)ti(L)t_i(L)L∩SiL∩SiL\cap S_iσiσi\sigma_i 問題は -hardだと思います。実際、すべてのがサイズあっても、問題は難しいようです。しかし、私はこれを証明することができませんでした。NPNP\mathsf{NP}SiSiS_i222 私が知っていること 次の制限により問題が簡単になることが簡単にわかります。 すべての重みは均一です。すべての要素を選択することが明らかに最適です。 すべてのランキングは全体の完全なランキングです。最大の重みを持つ要素を取得することにより、最良のソリューションが得られます。UUU 重みはバイナリ()だけなので、重み付け要素をすべて選択するのが最適です。w∈{0,1}nw∈{0,1}nw \in \{0,1\}^n111 しかし、一般的なケース(LPを使用するなど)の多項式時間アルゴリズムを見つけることができませんでした。一方、問題が …

2
「Google Eggs Puzzle」には、数学的に閉じた形(または少しきつい漸近形)がありますか?
以下の既知の「Google Eggs Puzzle」の簡単な説明は、主にWebサイトGoogle Eggsからのものです。 Google Eggs Puzzle:床がmで卵がmの場合、投げを最小限に抑えながら(壊れた卵ではなく)卵を安全に投げることができる最も高い床を見つける方法は何ですか。 上記の問題のいわゆる「最高階」は、より正式な定義に値します。 「最高」:f階から落下した卵は壊れますが、(f-1)階から落下した卵は壊れないような、床f(十分に高い建物)がなければなりません。そして、ここのf-1が最上階です。 実際、「最高」の記述は、スティーブン・S・スキエナの著書「アルゴリズム設計マニュアル(第2版)」からの抜粋です。第8章「動的プログラミング」の練習問題として、Google EggsやThe Two Egg Problemのように、動的プログラミングによってパズルを解くことに専念する多くのリソースがWebにあります。 しかし、上記の本からの質問があります: E(n,m)=Θ(n1m)E(n,m)=Θ(n1m)E(n, m) = \Theta(n^{\frac{1}{m}})E(⋅)E(⋅)E(\cdot) それが私の問題を動機づける質問です: E(n,m)=Θ(n1m)E(n,m)=Θ(n1m)E(n, m) = \Theta(n^{\frac{1}{m}})

3
立方体の最も近い
立方体 の点に最も近い単位立方体のコーナーをどのように見つけることができますか? L1メトリックを使用して、4d | -0000 | =、| -0001 | = (右側の)など。R d x x ∑ x i x x 3 + x 2 + x 1 + (1 − x 0)x 0d+1d+1d+1RdRd\mathbb{R}^dxxxxxx∑xi∑xi\sum {x_i}xxxx3+x2+x1+(1−x0)x3+x2+x1+(1−x0)x_3 + x_2 + x_1 + (1 - x_0)x0x0x_0 別の定式化の場合、最初に > 1/2を反転してソートし、 1/2; 対称性により、このケースのアルゴリズムはキューブ内の任意のを実行できます。 定義、。 次に、コーナーが最も小さいコーナーが必要です。 0 ≤ …

1
最短経路シンプレックスアルゴリズムを開発する動機
私は、「特定のノードから他のすべてのノードへの有向最短経路のツリーを見つける問題への主なシンプレックスアルゴリズムの特殊化」を検討した、ドナルドゴールドファーブ、建秀豪、シェンロアンカイによる効率的な最短経路シンプレックスアルゴリズムを読んでいます。 nノードのネットワークまたは負の長さの有向サイクルを見つける。この最短経路シンプレックスアルゴリズムの2つの効率的なバリアントが分析され、最大でピボットと時間。」(n − 1 )(n − 2 )/ 2(ん−1)(ん−2)/2(n − 1)(n − 2)/2O (n3)O(ん3)O(n^3) この記事の動機を見つけようとしていますが、Bellman-Fordアルゴリズムでは十分ではないのでしょうか。時間で動作し、上記のアルゴリズムが処理するグラフのタイプに適しています。O (n m )O(んメートル)O(nm)

1
コプライムの比較
(p、d)のリストとして表される2つの数値を素数に因数分解するとします。ここで、すべてのpは素数で、dはpのべき乗です。 それらを長整数に変換せずにそのような2つの数値を比較する方法はありますか? 2つの数値の比較は2つの素数の比較に減らすことができますが、運が足りなくなったようで、長整数に変換するのと同じである多項式演算を行う必要があるようです。

1
組み合わせ埋め込みでの高速削除/縮小
平面グラフの組み合わせの埋め込みで、エッジの削除または縮小を行うサブリニアアルゴリズムがあるのでしょうか。 組み合わせの埋め込みでは、GとG *の頂点を同時に維持する必要があるため、プライマルの収縮は双対の削除であることを考慮に入れて、削除を行い、双対に従って主の順列を更新するだけで十分です(逆も同様) 。しかし、それを行う明白な方法は、それらを再計算することです。もっと良いことはできますか? 2番目の質問:同じ頂点間の複数のエッジを取り除くのに役立つテクニックはありますか?(2番目の問題で私が目にする唯一の解決策は、たとえばm = 6nでグラフが表示されるまで、複数のエッジの削除を延期することです。ここで、m-エッジの数、n-頂点の数、これにより時間が償却されますO (1))おそらく、この時間を償却しないようにすることができるいくつかのテクニックがありますか?(私はまたo(n)ソリューションに興味があります、必ずしもO(1)ではありません) どうもありがとうございました!

1
サイズの制約が異なる2つのセットの部分モジュラー関数を最大化する
2つの完全に異なるドメイン(リンゴとオレンジ)があり、最初のドメインからオブジェクトのセットを取得し、2番目のドメインからオブジェクトのセットを取得して実数を返す関数fffがあります。 f(S、T)f(S、T)f(S,T)は、以下の興味深いプロパティがあります。 固定すると、それはに対して負ではなく、サブモジュラーで単調になります。STTTSSS 固定すると、それは負ではなく、サブモジュラーでTに関する単調になります。TSSSTTT 2つのカーディナリティー制約を使用してf(S、T)を最大化したい| S | = sおよび| T | = t。f(S、T)f(S、T)f(S,T)| S| =s|S|=s|S| = s| T| =t|T|=t|T| = t どうやってやるの?製品空間を考えると、関数は単調で部分モジュラーです。したがって、標準の貪欲アルゴリズムを適用できます。2つの異なるサイズの制約を処理しても問題にならない場合があります。(a 、x )(a、バツ)(a, x)と(a 、y)(a、y)(a, y)を順番に追加すると、| T |を増やすことができます。| S || T||T||T|を増やすことなく 。| S||S||S| 問題は、1 − 1 / e1−1/e1-1/e近似がまだ成り立つかどうかです。

1
リストをソートするために必要な最小数の転置を効率的に見つける
リストを並べ替えるのに必要な転置の最小数を計算する効率的な方法を教えてください。転置が実際に何であるかを知る必要はありません。 たとえば、リスト[1、1、2、0]には2つの転置が必要です。 [1, 1, 2, 0] // Start [1, 1, 0, 2] // Swap index 2 and 3 [0, 1, 1, 2] // Swap index 0 and 2 リスト[0、1、0、0]には1つの転置が必要です: [0, 1, 0, 0] // Start [0, 0, 0, 1] // Swap index 1 and 3 リスト[2、2、2、2]は既に並べ替えられているため、0の転置が必要です。 一部のメタ情報:1)リストには要素が繰り返されている可能性があるため、単純にソートとID置換の間にCayley距離を使用しても機能しません。2)このMath Overflowの質問は関連しています。

2
加重比較による安価なオンライン選択
要素に1からnまでのインデックスが付けられているセット最小要素を検索するとします。これらの要素の値にはアクセスできませんが、Sの任意の2つの要素を比較して、どちらが小さいかを確認できます。インデックスiおよびjの場合、Sのi番目とj番目の要素を比較するために、関連するコストC i 、jがあります。完全なコスト行列C i 、jは、事前に与えられています。SSS111nnnSSSiiijjj Ci,jCi,jC_{i,j}iiijjjSSSCi,jCi,jC_{i,j} Sの最小要素を見つけるには、n−1n−1n-1比較が必要かつ十分であることはよく知られています。ただし、比較ごとに異なるコストがかかる可能性があるため、比較の総コストもできるだけ小さくしたいと考えています。SSS 最小要素を見つける、小さな総コストの一連の比較を見つけるオンラインアルゴリズムはありSSSますか?n = 3の場合でも、最小の総コストで 一連の比較を見つけるオンラインアルゴリズムはありませんが、おそらく競合率が小さいオンラインアルゴリズムがあります。 n=3n=3n=3 特に、オンラインアルゴリズムが超える比較を実行できるようにすることは役立ちますか?いくつかの高価な比較ではなく、いくつかの「余分な」安価な比較を行う方が良いですか?n−1n−1n-1 私は特に、ケースに興味、dがセットにわたって離散メトリックであるS、及び0 ≤ D (I 、J )≤ kの全てについて、I 、J。最適なオンラインアルゴリズムは、この設定ではまだ不可能です。Ci,j=4d(i,j)Ci,j=4d(i,j)C_{i,j} = 4^{d(i,j)}dddSSS0≤d(i,j)≤k0≤d(i,j)≤k0 \le d(i,j) \le ki,ji,ji,j 同様の問題への言及はありがたいです。私は自分の問題を解決するために誰かを探しているのではありません(ただし、いくつかのアイデアが役立ち、ありがたいです)。この問題がわかっているかどうか知りたいだけです。(何も見つかりませんでした。)

2
合理ポリトープ内の点生成
分離オラクルによって定義される有理多面体を考えます。つまり、はとして暗黙的に記述できますが、は非常に大きい場合、オラクルを使用します。これは、点が与えられると、と言うか、ような半空間を返します。P P = { X ∈ R K:AはX ≤ B 、A ∈ ZのM × K、B ∈ ZのM } M のx ∈ R K X ∈ P X ∉ SPPPPPPP= { X ∈ Rk:Ax≤b,A∈Zm×k,b∈Zm}P={x∈Rk:Ax≤b,A∈Zm×k,b∈Zm}P = \{x \in R^k: Ax \leq b, A \in Z^{m \times k}, b \in Z^m \}mmmx∈Rkx∈Rkx \in …

3
頂点/サブグラフの挿入と削除を含む完全に動的なグラフの接続性の決定
私は次の問題の解決策を探しています。このトピックに関する既存の研究を誰かが私に指摘できるかどうか疑問に思っています。私はグラフの実際のアプリケーションから来ているので、私の用語が正確でない場合は我慢してください。 ユーザーが関係を作成、削除、変更してオブジェクトを追加、削除、移動できるデータベースシステムがあります。そのため、オブジェクトをグラフの頂点として見ることができ、関係はエッジであり、関係のタイプ(構成、関連付け、または集約)に応じてエッジに重みを付けることができます。 ユーザーの観点から見ると、新しい要素の追加はシングルクリックで可能で、フードの下で、プログラムは関係によってリンクされたオブジェクトのグラフを作成します。このグラフは、データベース全体を定義するメイングラフに追加されます。要素を削除すると、リンク/エッジが切断され、グラフが2つのばらばらなグラフになり、1はデータベース、もう1つは要素とそのサブ要素によって形成される頂点で構成されます。 素なグラフがある場合と、素な2つのグラフが再び1になる場合を判断するための本当に迅速な方法が必要です。Holm、de Lichtenberg、およびThorup(2001 ; pdf)をざっと見ました。それは進むべき道のようですが、著者は頂点の数が固定されたグラフのみを検討していると述べました。アルゴリズムは通常、エッジの追加を段階的に実行するだけで、頂点の追加/削除に拡張されますか?それとも、そのようなシナリオに特化した作品はありますか?

1
グラフの分割、サブセットエッジの重み内でのバランス
各サブセット内のエッジの重みの合計が(ほぼ)等しくなるようにグラフを2つのサブセットに分割しようとするアルゴリズム(近似アルゴリズムは問題ありません)へのポインターと、2つの間のエッジの重みの合計に興味があります。サブセットは(ほぼ)最小です。 どんなポインタでも大歓迎です。

2
k比較を使用したソートの漸近的な複雑さ
2要素比較を使用したソートは、漸近的な最悪の場合の複雑さ少なくとも、mergesort、heapsort、バイナリ挿入、ford-によって到達)を持ち、最適です。nlog2(n)nlog2⁡(n)n \log_2(n) k個の要素をビルディングブロックとしてソートする比較を使用してソートする場合、情報理論的な下限はです。k-ary挿入でに簡単に到達できます。nlogk!(n)nlogk!⁡(n)n \log_{k!}(n)nlogk(n)nlogk⁡(n)n \log_k(n) 質問:と間の最適な複雑度はどこにありますか?nlogk(n)nlogk⁡(n)n \log_k(n)nlogk!(n)nlogk!⁡(n)n \log_{k!}(n) 適切な参照もいただければ幸いです。 編集:それは明確ではなかったので: Iはで複雑について興味がで、。それの漸近挙動有すると、およびI精度を高めたい。nnnk=O(1)k=O(1)k=O(1)αnlog2(n)αnlog2⁡(n)\alpha n\log_2(n)α∈[1log2(k),1log2(k!)]α∈[1log2⁡(k),1log2⁡(k!)]\alpha \in [\frac{1}{\log_2(k)},\frac{1}{\log_2(k!)}]αα\alpha


2
平面内の線の動的上部エンベロープ
平面内の線の配置の上部エンベロープを計算する簡単なアルゴリズムがあります。たとえば、調査Davenport-Schinzelシーケンスとその幾何学的アプリケーションのセクション2.3を参照してください 。 同じ問題の動的バージョンの既知のアルゴリズム/データ構造はありますか?つまり、次の操作で平面内の一連の線の上部エンベロープを維持したいとします。 挿入):セットに行を追加しますℓ(ℓ(ℓ(\ellℓℓ\ell 削除:セットから行を削除しますℓ(ℓ)(ℓ)(\ell)ℓℓ\ell query:上部エンベロープに座標を持つラインを返します。つまり、点から垂直方向の下向きの光線が最初に当たるセットの線を返します。x (x 、∞ )(x)(x)(x)xxx(x,∞)(x,∞)(x, \infty)

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