爪を見つけるために行列乗算を


20

爪は、。簡単なアルゴリズムは、O n 4時間で爪を検出します。これは、で行うことができ、O N ω + 1ここで、ωは次のように、高速行列乗算の指数である:によって誘導されるサブグラフ取るNを[ V ]の各頂点のためのV、及びその相補体で三角形を見つけます。K1,3O(n4)O(nω+1)ωN[v]v

o(nω+1)O(nc)Ω N ωO(nmax(c,2))Ω(nω)

質問:

  1. これに進展はありますか。それとも不可能を示す進歩はありますか?
  2. 時間アルゴリズムには他に自然な問題がありますか?O(nω+1)

リマーク:

  1. 爪のないグラフの認識ではなく、爪の検出を明示的に求めています。アルゴリズムは通常両方を解決しますが、例外はほとんどありません。
  2. Handbook of Algorithms and Theoretical Computer Scienceで線形時間で見つけることができると主張されていますが、それはタイプミスにすぎません(「効率的なグラフ表現」を参照)。

で三角形を見つけるAlonらの方法を使用できますこれは、で終わるノードごとにグラフが密集していない場合、よりも優れています。O | V || E | 1.41| V | ω + 1O(|E|1.41)O(|V||E|1.41)|V|ω+1
RB 14

@RB、これを指摘してくれてありがとう。基本的な考え方は、whatever-triangle-detection-algorithmを回実行することです。これは避けたいものです。n
Yixin Cao 14

三角形の検出に関連しないアルゴリズムを見つけるにはどうすればよいでしょうか?アルゴリズムが何であれ、各頂点の近傍をチェックする必要があるためです。つまり、プロパティは非常にローカルなプロパティですが、すべての頂点が一定の係数差で表示される必要があることを除きます。(または、この局所性を回避する自然なアルゴリズムを想像することはできません)。あいまいな考えはありますか?
サイード14

2
たぶん、f(n)時間で爪を見つけることができれば、f(n + 1)時間で三角形を見つけることもできます(グラフの補数を取り、すべての人に接続されたもう1つの頂点を追加するだけです)、よりも良いものを見つけることを期待しないでください。nω
domotorp

1
@domotorp、一部が明確であるように見えますが、他の方法は明確ではありません。線形検索が必要な理由です。Yixinも指摘したように、三角形検出アルゴリズムを使用せずに問題を解決する別のアルゴリズムがあるかもしれませんが、そのようなアルゴリズムを見つけるのは難しく、おそらくより簡単ですアルゴリズムが三角形の検出をサブルーチンとして使用している(または変換できる)ことを示しています。o(nω+1)
サイード14

回答:


16

長方形の行列乗算を使用することで、密なグラフに対してよりもわずかに良いことができると思います。EisenbrandとGrandoni(「固定パラメータークリークと支配セットの複雑さ」、Theoretical Computer Science Volume 326(2004)57–67)でも同様のアイデアが4クリークの検出に使用されました。O(n1+ω)

してみましょう、我々は爪の有無を検出したいグラフとします。してみましょうで頂点の(注文)のペアの集合。次のサイズのブール行列を考えます:各行はいくつかのによってインデックス付けされ 、各列はいくつかのによってインデックス付けされ、対応するエントリは、と。とその転置のブール行列積を考えます。グラフは、存在する場合にのみ爪がありますA V M | V | × | A | U V V W A { U V } E { V W } E { U W } E M M T G { U V } EG=(V,E)AVM|V|×|A|uV(v,w)A{u,v}E{v,w}E{u,w}EMMTG{u,v}Eにより、でインデックス付けされた行とインデックス付けされた列 のエントリ U VMMTuv一つです。

このアルゴリズムの複雑さは、本質的に行列とn 2 × n行列のブール積を計算する複雑さです。ここで、nはグラフの頂点の数を示します。このような行列積は、時間で計算できることが知られているO N 3.3よりも良好であり、O N 1 + ωの上限知られている最良のためω。もちろん、ω = 2(推測どおり)の場合、2つのアプローチは同じ複雑さOを与えます。n×n2n2×nnO(n3.3)O(n1+ω)ωω=2O(n3)


すばらしいです!これはまさに私の最初の質問で求めているものです。行列乗算の呼び出しは1つだけですが、それよりも大きいものです。2番目の質問に対するコメントや回答を待ってから、回答として受け取ります。
宜信曹14

15

行列の乗算を回避する方法はわかりませんが、少数の行列の時間になるように分析できます。このトリックはn

クロクス、トン; クラッチ、ディーター。Müller、Haiko(2000)、「小さな誘導部分グラフの効率的な検索とカウント」、情報処理レター74(3–4):115–121、doi:10.1016 / S0020-0190(00)00047-8、MR 1761552。

最初の観測は、行列を乗算するとき、行列は実際にはではなく、d × dであり、dは各頂点の次数であるということです。探しているのは、各頂点の近傍。n×nd×dd

O(m)O(m)n

2mO(m)O(m)O(m(1+ω)/2)O(nmω/2)


うわー、それは賢いアイデアです。私は、サブリニア検索(実際にはこれを反証する)が可能かどうかを考えていましたが、問題の本質的な特性についても考えませんでした。
サイード14

デビッドありがとう。2番目の質問はまだ気付いていないようなので、しばらく開いたままにします。
Yixin Cao 14
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.