ダイグラフを可逆的な方法で無向グラフに変換する


10

私は、有向グラフ(有向グラフ)を無向グラフに可逆的に変換するアルゴリズムを探しています。つまり、無向グラフが与えられれば、有向グラフは再構築可能でなければなりません。これは無向グラフの頂点が増えることで発生することを理解していますが、気にしません。

これを行う方法を知っているか、参照を提案できますか?前もって感謝します。


更新:以下のAdrianNの回答について。それは良い出発点かもしれませんが、それが現在の形で機能するとは思いません。これが私がそうではないと思う理由の画像です: ここに画像の説明を入力してください


DWのコメントの後に更新:グラフの頂点はラベル付けされていないと見なします。解決策が頂点のラベル付けを伴う場合(AdrianNのように)、ラベル付けがどのように行われても、同じ(同形)無向グラフが得られるはずです。ラベル付けされた頂点を持つグラフの「同形」の私の定義は、2つのグラフに関連するラベル付けの順列があるということですが、ラベル付けされていないグラフの正確な定義はわかりません...


1
この質問は広すぎると思います。あなたの制約は何ですか?
adrianN 2014年

今のところ、制約はあまり考えられません。有向グラフの情報を無向グラフにエンコードする方法は、それが可逆的である限り、どんな方法でも実行できると思います。私が念頭に置いているのは、最も単純なタイプの無向グラフであるため、頂点またはエッジのいずれにも色を使用しないソリューションを探しています。
2014年

(V,E)(3,4)(1,2)

2
してください組み込む質問にあなたの更新を。いつでも、SEの投稿は、履歴を気にすることなく、上から下に読める必要があります。それは別にアーカイブされます。
ラファエル

回答:


6

e=(x,y)v1e,,v5eexv1ev1ev2ev1ev3ev3ev4ev4ev5ev3ey

v5ee=(x,y)v4ev4ev3ev3ev1ev2ev1ev2ev1exv3ey(x,y)v1e,,v5e


7

デビッド・リチャービーの答え(これは受け入れられました)は良いです。

私は簡単な例のダイグラフで彼の指示に従いました、そしてそれが誰かを助けることを望みます。

ダイグラフa <-> b、c-> a、b-> c

(Davidの回答に対するコメントとしてこれを投稿しましたが、必要な評判ポイントがありません。)


1
グラフィカルな表現は、元の回答を大幅に改善したものです。コメントではなく回答として投稿していただきありがとうございます。
OrangeSherbet

1
数学の論文の正式な説明や公式を見ると、いつも圧倒されます。私はその不安を乗り越えて、それぞれの文をゆっくりと見なければなりません。次に、このような例を書いて、理解できるようにします。結局のところ、私はそれがどれほど単純であるかということに常に戸惑っていて、それを理解するのにどれだけの労力を費やしたかということに一種の恐怖を感じていました。私は時々別の惑星から来たように感じます。早く理解していただけると嬉しいです。一度見たら簡単です。
William

2

DG

  1. D
  2. 2つの無向グラフ作成するGGD
  3. すべてのエッジについて、におけるにエッジを追加する場合他にエッジを追加するuvDGu<vG
  4. Gはとの素な結合ですGG

ばらばらのユニオンを実行するときは、可逆にできるように注意する必要があります。

例


これは良い試みであり、私が回答のために考えていた線に沿っていますが、逆は一意ではないため、うまくいきません。たとえば、グラフO <-> OOOはグラフOO OO OO OOに変換されますが、この後者も有向グラフO-> O O-> OOOから取得されている可能性があるため、プロセスは元に戻せません。
2014年

わかりやすくするために写真を追加しました。
adrianN 2014年

-1

恒等関数はどうですか?つまり、すべてのダイグラフは、同じサイズのパーティションを持つ無向の2部グラフとして見ることができ、その逆も同様です。


ダイグラフをグラフコーディングするつもりだと思います。あれば、それは、双方向エッジに対処することができず、ので、それは仕事をしない中ですべてのエッジを反転した結果であるは、および同型のエンコーディングを持っているが、必ずしもそれ自身同型ではありません。G=(V,E)(V×{0,1},{(u,0,v,1)(u,v)E})GGGG
David Richerby 2014年

-1

これがこれに刺されます:

無向グラフの方向情報を追加の頂点に置き換えます。つまり、無向グラフの追加の頂点を使用して、方向情報を「エンコード」します。たとえば、少なくとも1つのエッジを持つ有向頂点ごとに、1 +「受信」エッジの数に等しい無向頂点の数を追加します。エッジがゼロの頂点は変更されません。

逆方向を実行するには、エッジが0または1を超える各頂点に対して有向頂点を作成します。(エッジが1つだけの頂点は、「方向エンコーディング」の頂点です)。別のマルチエッジ頂点を接続する各エッジは、有向グラフの接続です。これが、アルゴリズムを説明できないトリッキーな部分です(ただし、アルゴリズムは存在すると思います)。各頂点の入力矢印の数のみを指定して、矢印の方向を推測する必要があります。

トリッキーな部分は、マインスイーパをプレイするようなものだと思います:-)各正方形(頂点)に隣接する爆弾の数が爆弾(受信エッジ)に与えられている場所を特定します。


「有向頂点」とは何ですか?いずれにせよ、これは一意にデコード可能ではありません。頂点に、他の次数の頂点の束とともに、次数1の頂点の束がアタッチされているとします。それらのうちいくつが次数1の頂点からの入力エッジを表し、いくつが次数をコーディングしているのかをどのようにわかりますか?いずれにせよ、マインスイーパの解法はNP困難であり、解は常に一意であるとは限らず、正方形が必ずしも適切なグリッドに配置されていない場合でも、解くことができるかどうかは明らかではありません。xx
David Richerby 2014年

「有向頂点」とは、(同等の無向グラフとは対照的に)有向グラフの頂点を意味します。「実際の」エッジと「次数エンコーディング」エッジは区別できます。これは、「次数エンコーディング」の頂点にのみ1つのエッジがあるためです。それが私の説明で「1 +」の理由でした。マインスイーパスクの「トリッキーな部分」についてお話しします マインスイーパとまったく同じかどうかはわかりませんが、たぶんバケツを蹴り飛ばしただけだと思います:-)
Aaron

また、私が最初に読んだとき、私はあなたの解決策を完全には理解していませんでしたが、今、それがどのように機能するかを見ています。賢い!
アーロン

ましょ着信縁と正確に1つの出力端を有していないオリジナルのグラフにおける頂点です。コード化されたグラフでは、は頂点として現れ、エッジが1つだけ出てきます。そのような次数1の頂点を、次数をコード化する次数1の頂点とどのように区別しますか?xx
David Richerby 2014年

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