次の属性を持つグラフがあります。
- 無向
- 加重なし
- 各頂点には、最小で 2 つ、最大で 6 つのエッジが接続されています。
- 頂点数は < 100 になります
- グラフは静的であり、頂点/エッジを追加/削除または編集することはできません。
頂点のランダムなサブセット (少なくとも 2 つ) 間のパスを探しています。パスは、頂点を 1 回だけ通過する単純なパスにする必要があります。
私の最終的な目標は、ルートのセットを作成して、サブセット頂点の 1 つから開始し、他のサブセット頂点のいずれかに到達できるようにすることです。ルートをたどる場合、すべてのサブセット ノードを通過する必要はありません。
私が見つけたすべてのアルゴリズム (ダイクストラ、深さ優先検索など) は、2 つの頂点間のパスと最短パスを処理しているようです。
これらの頂点のサブセットを接続するすべてのパス (これらはサブグラフだと思います) を提供する既知のアルゴリズムはありますか?
編集:
私が達成しようとしていることを説明するために、(警告! プログラマー アート) アニメーション GIF を作成しました: http://imgur.com/mGVlX.gif
前処理と実行時の 2 つの段階があります。
前処理
- グラフと頂点のサブセット (青いノード) があります。
- すべての青いノードを接続するすべての可能なルートを生成します
ランタイム
- 任意の青いノードから開始して、生成されたルートのいずれかを選択し、それに沿って移動して目的の青いノードに到達できます。
したがって、私のタスクは、A->B からのパスを作成するのではなく、すべての青いノードを接続するすべてのサブグラフ (ルート) を作成することです。