ユークリッド平面に埋め込まれたグラフの最短非交差パス(2D)


14

経路に自己交差が含まれないように、ユークリッド平面に埋め込まれたグラフの最短経路を見つけるためにどのアルゴリズムを使用しますか?

たとえば、次のグラフでは、ます。通常、ダイクストラのアルゴリズムのようなアルゴリズムは、次のようなシーケンスを生成します。0032

[00303212432]=7+2

完全なグラフ:

ここに画像の説明を入力してください

最短経路:

ここに画像の説明を入力してください

最短の非交差パス:

ここに画像の説明を入力してください

しかし、ユークリッド平面上のこのパスが交差自体は、それゆえ私はしたい、この場合には、私の最短非交差シーケンスを与えるアルゴリズムを:

[00303306532]=11。

このパスは最短パスより長くなりますが、最短の非交差パスです。

これを行うことができる(効率的な)アルゴリズムはありますか?

TikZソース


2
いい問題だ!(+1)。この問題が発生するアプリケーションまたはコンテキストについて何か言うことができますか?興味をそそられる。(PS別注:この難問から抜け出すための明らかな方法は、すべての交点、つまり、1つのエッジが別のエッジと交差できるすべてのポイントに新しい頂点を導入できるかどうかを確認することです。これは不可能かもしれません。)
DW

2
@DWこれは、バビブの不適切な言葉遣いのロバ/ポニー問題を再定式化する私です。アプリケーションは彼のユークリッドTSPヒューリスティックアルゴリズムです。彼がどのように使用するつもりなのか正確にはわかりませんが、すでに他のいくつかのポイントを訪れたときに2つのポイント間のパスを見つけることができるかどうか知りたいと思います(ユークリッドTSPの最適なツアーは交差しない)。そして、はい、もしあなたが新しいノードを導入できればそれは素晴らしいことですが、問題はあなたができないかということです(そして、ユークリッドTSPに新しい都市を導入することはできません)。
リアルツスロー

1
パスの存在の問題を3SATに変換してみましょう。2つのパスを交差させずに2つの信号を交差させる方法を作ることが最大の課題のようです。
ジョン・ドヴォルザーク

1
うん。これでSATを解決するつもりでした。
ジョン・ドヴォルザーク

2
パス/サイクルとTSPとの関係について同様の質問をしたtcs.sen
vzn

回答:


11

それも、かどうかを決定するためにNP完全である任意のパスが存在します。

特定のグラフで、特定のパスが有効なパスであることを検証することは明らかに可能です。したがって、長さの制限のある問題はNPにあり、そのサブセットであるany-path問題も同様です。

さて、any-path問題の(そして、その結果、有界長問題の)NP困難性を証明するために、SAT-CNFをこの問題に還元しましょう:


グローバル構造は、節の断片の列が隣接するワイヤーの断片のグリッドです。論理式は、グラフに交差しないパスが存在する場合に満たされます。

パスの2つの部分を横断することは不可能ですが、2つのロジックワイヤを横断する必要があります。むしろ、パスフローは厳密に指定されています。ワイヤポイントは2つのノードによって指定されます。パスが通過するワイヤポイントのシーケンスは、削減によって強制されます。ロジックは、選択されたノードによって表されます。すべてのワイヤポイントを通過する限り、任意のパスを選択できます。

この図では、パスは赤い曲線で表され、ロジックフローは黒い線で表されています。

左側にワイヤのグリッド、右側に節の断片の列。

それでは、各コンポーネントをビルドしましょう。


配線には、交差点、分岐点、垂直線の3つのタイルが使用されます。最も難しいものから始めましょう:

交差の背後にある基本的な考え方は、ワイヤポイントの各ペアにパスを準備し、同じロジック(互換性のあるパス)をエンコードするペアを除くすべてのペアが互いに交差するように、可能なパスを十分に曲げることです。もちろん、2つの平行なエッジが交差していると言うことはできませんが、2つのパスを交差させるために余分な次数2のノードを導入できます。

パスが北から西へ、南から東へ来ると仮定すると、次のことができます。北からの各パスを、東からの互換性のあるパスでライン上に収集します(互換性のないパスは互いに交差します)。ペアの順序を逆にすることにより、各ペアを互いに交差させます。パスを南および西のエンドポイントに配布します。これは図で最もよく説明されています。ここで、ノードの各ペアはワイヤポイントを表します。(同じロジックを実行する)同じ色コードのパスは交差しませんが、異なる色コードのパスは交差します:

上記のグラフィカルな描写

分岐点垂直ワイヤは同じように機能しますが、相関するパスが少なくなります。

ここでは、2組のパスで十分です。 ワイヤは本質的に分岐点であり、分岐は破壊されています

¬A¬B

ここに画像の説明を入力してください

読み取りワイヤを異なる方法で分岐させることにより、この削減を一般化して、ANDゲートとORゲートの任意のツリーをエンコードすることができます。特に、SAT-CNFとSAT-DNFは両方とも、上記の方法で非交差パスの問題を軽減することができます。


うわー、よくやった。私はまだそれをレビューしていませんが、あなたが入れた仕事は素晴らしいです。
Realzスロー

わかりました。最初のガジェットを使用して、任意の2つのリテラルパスペアを交差させ、使用するパスを維持できます。したがって、パスをレイアウトするために平面性を心配する必要はありません(PlanarCircuitSatのxorガジェットが回路に対して行うように)。次に、最終的なガジェットを使用して、任意の論理句を作成できます(平面性を心配する必要がなくなります)。これは正しいです?
リアルツスロー

これは正しいように見えますが、一般的なレイアウトでは2つのことを確認する必要があります:NIPパスを使用してすべてのガジェットに電力を供給できること(これは常に可能です-パスが中央でスタックした場合、ワイヤーガジェットを導入できます)パスの孤立した端部をまとめる)、読み取りワイヤのすべてのパスが、ワイヤ内で反転できないように互いに交差していること(本当の節がない場合は保証されているようです(リテラルを横切らない)およびすべての節が回路の外側にある場合(同じ面で開始と終了は))。
ジョン・ドヴォルザーク

読み取りワイヤのすべてのパスが相互に交差することを確認するのは簡単です-確認したい場合は、n個のパスから分岐して、すぐにすべてのパスを交差してください。しかし、これは決して必要ではないと思います。
ジョン・ドヴォルザーク

1
グローバル構造にはOpenOffice Drawを使用し、残りには[yEd](www.yworks.com/products/yed)を使用しました。(で<sub>)編集する必要がありますか?
ジョンドボラック

-1

この問題は1944年のTuranにまで遡ります。これは、理論とアルゴリズム、グラフの交差数: Mutzelによる理論と計算の良い調査のように見えます。ウィキペディアにはグラフの交差数の下にいくつかの情報があります


1
たぶんこれはコメントとして良いですか?
たJuho

それは科学的に「あなたが使用するどのようなアルゴリズム」の基本的な質問に答える
vzn

1
これは理論的には質問に答える可能性がありますが、答えの重要な部分をここに含め、参照用のリンクを提供することが望ましいでしょう
ジョンドヴォルザーク

janは、stackexchangeメタからの参照を引用しています。それは有効なアイデアですが、科学/数学における引用の役割は、プログラミングのヒントサイトとは異なります。...[確かに、refは現在、詳細な回答のために私には利用できません]。とにかく、 jansの構築は、有用/価値はありますが、すでに文献や科学にあります。標準プロセス/ベストプラクティスの一部であり、それを特定しようとしています
。...– vzn
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.