ランダムグラフで短いサイクルを見つけるにはどのくらい時間がかかりますか?


9

ましょうGG(n,n1/2)上のランダムグラフであるn3/2エッジ。非常に高い確率で、G4サイクルが多数あります。私たちの目標は、これらの4サイクルのいずれかをできるだけ早く出力することです。

隣接リスト形式でGにアクセスできるとすると、Oで一定の確率で成功できますO(n)任意のノードの選択以下の通り時間vランダム生成を開始2から出発-pathsをv。エンドポイントを共有する2つの異なる2つのパスが見つかったら、完了です。可能なエンドポイントはnあり、誕生日のパラドックスによって、約 √を発見した後、一定の確率で成功しますnそれらの n

もっと上手くできる?特に、一定の確率で成功する一定時間アルゴリズムは可能ですか?


このグラフにはエッジが少なすぎて必要なプロパティがありません。標準的な用語を使用している場合は、p = √のG(n,p)サンプルp=(n/C(n,2))=O(n3/2)
kodlu

おかげで、あなたは私のものだという権利(編集済み)。これらのグラフがありますC 4の任意の時間に2つのノードが共有2人のノード対当たり一定の確率で発生隣人。p=n1/2C42
GMB

私はここで用語を使用しています(en.wikipedia.org/wiki/Erd%C5%91s%E2%80%93R%C3%A9nyi_model)、各エッジは確率独立して含まれているため、エッジを期待しています。pp(n2)
GMB

回答:


6

いいえ、クエリに勝ることはできません。適応アルゴリズムで機能するように、これのexfretの証明スケッチを形式化する方法を説明します。これはすべてexfretの答えで予想されます。詳細の一部を記入しています。Θ(n)

各クエリが「頂点の隣接リストの番目のエッジをフェッチする」または「頂点がエッジによって接続されているかどうかをテストする」のいずれかである、クエリのシーケンスを発行する任意の(おそらく適応可能な)アルゴリズムを検討してください。クエリを繰り返すアルゴリズムは、クエリを繰り返さないアルゴリズムに変換できるため、クエリは繰り返されないと想定できます。同様に、我々は、アルゴリズムが(即ち、既にエッジによって接続されることが知られている頂点の任意のペアに接続クエリテストませんないと仮定することができるとき先にフェッチにクエリによって返された、またはでしたフェッチクエリによって以前に返されましたivv,wv,wwvvw、または以前に接続をテストしました)。w,v

ましょう最初の間、ことイベント表すクエリ、何頂点一方が戻り、以前に照会した頂点クエリをフェッチし、無クエリフェッチ以上によって返されないが、無接続テストクエリが返すは「接続されていないこと」場合、ことを証明します。したがって、クエリを作成するアルゴリズムは、4サイクルを見つける確率が一定になることはありません。EkkwPr[Eq]=1o(1)q=o(n)o(n)

これをどのように証明しますか?計算してみましょう。2つのケースがあります番目のクエリがフェッチクエリであるか、接続テストクエリであるかのいずれかです。Pr[Ek|Ek1]k

  1. もし番目のクエリのA頂点にクエリフェッチ、ある最初のうち上述の頂点クエリが、そして場合番目のクエリ返すものの一つは、我々が持っているであろうそうでなければ、我々は持っているだろう。これで、番目のクエリへの応答は、頂点のセットに均一に分散されますは、に対する以前のフェッチクエリによって返されなかったすべての頂点が含まれるため、番目のクエリへの応答は、セットに均一に分散されます。少なくとものサイズkv2(k1)k1k¬EkEkkSSvknk+1。これらの少なくとも1つにヒットする確率はであるため、この場合は。2(k1)/(nk+1)Pr[Ek|Ek1]12(k1)/(nk+1)

  2. 場合クエリ番目の接続テストクエリで、次に。kPr[Ek|Ek1]11/n

いずれの場合においては、我々はq=o(n)

Pr[Ek|Ek1]12(k1)(nk+1).

さて、

Pr[Eq]=k=1qPr[Ek|Eq1].

もし、その後kqn

Pr[Ek|Ek1]12qnq,

そう

Pr[Eq](12qnq)q.

右側は約です。場合、これは。exp{2q2/(nq)}q=o(n)1o(1)

結論として:場合、です。したがって、任意のサイクル(4サイクルは言うまでもありませんを見つける確率が一定になるには、が必要です。Pr[Eq]=1o(1)q=o(n)Ω(n)


「k番目のクエリが接続性テストクエリの場合、です。」考えていますか?(そうであっても、もちろん結論はまだ通ります。)Pr[Ek|Ek1]11/n11/n
usul

@usul、おっと、はい、ありがとう!修繕。
DW

5

与えられた頂点の隣接リスト(ソートされていないと想定している)の番目のエッジのみ、または2つの与えられた頂点が隣接しているかどうかを照会できると仮定しましょう。この場合、サイクルを見つけるためにもクエリが必要です。これは、最初のタイプのすべてのクエリが異なる頂点を返す可能性があり、2番目のタイプのすべてのクエリが2つの頂点が接続されていないことを返す可能性があるためです。in1o(1)

私がどこか間違っている、または問題を誤解している場合は、私を修正してください。


1
この証明スケッチは、それが非適応アルゴリズム(つまり、事前に修正されたクエリ)でのみ機能するように思えます。
usul

@usulなぜそうなのでしょうか?とにかく、ディシジョンツリーの1つのブランチのみを使用しています。
exfret

おそらく私は明確にする必要があります。規定どおりにクエリへの回答を受け取った場合、一定の確率で4サイクルを出力できないことは明らかです。ただし、深さ決定木については、確率でそのような分岐が送信されます。o(n)1o(1)
exfret

ありがとう!私は(ある程度恣意的に)他の肉付けされたバージョンを受け入れましたが、あなたはそれを手に入れたようです。応答を感謝します。
GMB

1
@GMB正しい判断をしたと思います。もう1つははるかに高品質の回答であり、他の人が最初に見る価値があります。
exfret
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.