トポロジーソーティングのテスト/識別


8

個の頂点Vの同じセット有向非グラフセットが与えられます。頂点のセット(v_1、v_2、...、v_m)の順列も与えられます。間のグラフを特定することができる最高のアルゴリズムは何であるG_1、G_2は、...、G_Nその持っている(V_1、V_2、...、V_M)トポロジカルソートなどを?誰かが(v_1、v_2、...、v_m)V上のDAG Gのトポロジカルな種類であるかどうかを準線形時間でテストできますか? G 1G 2G nは m個のV V 1V 2のV MG 1G 2G NV 1V 2のV MV 1V 2G1G2GメートルVv1v2vメートルG1G2Gv1v2vメートルG Vv1v2vメートルGV


6
頂点の順序が表示される前に、一連のグラフに基づいてデータ構造を構築できますか?順序付けですべてのグラフとすべてのエッジを確認する必要があるため、何らかの方法でグラフを前処理することが許可されていない限り、線形時間に勝ることはできないようです。m 1nメートル1
mjqxxxx

Hsien-Chih Chang、より良いソリューションを可能にする良い前処理技術は何でしょうか?ある種のハッシュ?解(確率的アルゴリズム)を近似できれば、線形時間を打つことができると思います。
user2471 2011年

@ user2471:以前の回答で述べたように、この投稿は私ではなく
@Steve

Hsien-Chih Changさん、申し訳ありません。私の質問はすべての人を対象としたものでした:)
user2471

@ user2471、謝罪する必要はありません!この質問に詳しい人がいい​​答えを投稿してくれるといいのですが:D
Hsien-Chih Chang張學之

回答:


3

これは、ほぼ線形の時間で実行できます。

順列をとし、k = k π )を単一のエッジu v πに対してチェックするために必要なステップ数とします。次に、G iのM iエッジのそれぞれがπと互換性があることを確認するだけで十分です。これは、O k M i時間またはO k π=v1vメートルk=kπあなたvπMGπOkM全体。OkΣM

前処理することで、ログのmエントリを含む配列でkを2つのルックアップに減らすことができます。πkメートルサイズ、および配列内の2つのlog m ビットエントリ間の比較。配列要素 a [ w ]には、順序付きリストと見なされる π内の wのインデックスが含まれます。これは、 k = O logログメートルログ メートルa[w]wπ O ログk=Oログメートル上限の全体的な時間。OログメートルΣM

@mjqxxxxが指摘するように、すべてのグラフのすべてのエッジが関連している可能性があります。これにより、ステップの下限が作成されます。ここで、Kはすべてのグラフエッジに対して実行する必要がある作業の最小量です。一部のアプローチでは、K = o logΩKΣMK。これは、せいぜい Ω M iであるため、ギャップはほとんどありません。K=oログメートルΩΣM


k = log mにするために使用できるアルゴリズム。それは接尾辞の木ですか?
vincent mathew、2015年

0

簡単な方法:

GS = {G1,G2...G3}
for v in (v1,v2,...vm)
      remove all graphs from GS where indegree(v) != 0
      remove v and attached edges from remaining GS

それはあなたが望むほど速くはありません。しかし、「DAGの有効なトポロジー順序が複数存在する可能性がある」という1つの問題を解決します。そして、それらすべてを見つけることは良い考えではありません。

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