現在、Unityのノードベースのビルダーで作業しています。このシステムはワークフローが非常にシンプルです。ユーザーは単にキューブであるノードを作成し、相互に接続して壁を作成することができます。メッシュ処理はすでに完了しており、すばやくスムーズに動作します。無向グラフでユニークなループを見つける
ここで私がしようとしているのは、いくつの閉じた部屋が作成されているか、どの部屋にどのような頂点が含まれているかを検出することです。可能な入力は、次の画像で見ることができる:最初の画像で
、ループは
あろう(1,5,3,4)、(1、 2,6,8,7,5)、(6,9,12,11,10,8)、(8,10,14,13)および(10,11,17,16,15,14)。
第一
それらは、
(1,2,5,6,8,7)、(2,3,4,14,13,6,5)だろう(6,13,12,11,10)および(8,6,10,9)。
各ノードは、最大4つの他のノード(基幹側に1つ)に接続でき、すべてのリンクは両側に格納されます。私はノードが特定の順序で来る必要はありません。
一般的なループ検出アルゴリズムを使用し、サブループを再帰的に検索するには、内部接続がないループが見つかるまで再帰的に検索することを検討しましたが、これは非常にリソースを消費します。内部接続のないループを検出するために使用できるいくつかのプロパティがグラフ上で何回も繰り返されていなければなりませんが、見つけられませんでした。
ご意見はありますか?作業するには、次のアルゴリズムについて、あなたは以下のものが必要
これはグラフを接続する必要があることを追加する必要があります。さもなければ、オイラー特性は変化する。 –