詳細:
グラフのサブセットの隣接リストを表すマルチマップ実装があります。
グラフのこのサブセットを通るパスを見つける必要があります。これは、実際には開始ノードF
から終了ノードまでのすべての可能なパスG
であり、完全なグラフで幅優先検索を実行することによって取得されます。
実装のアイデア:
BFSG
はいったん見つかると終了するためG
、マルチマップの値のみで終了します。私の考えでは、 value から始めて、の「キー」G
を取得しG
(これを と呼びましょうH
)、H == F
パスがあれば取得します。それ以外の場合は、続行して、別のキーに関連付けられた値として探しH
ます (それを と呼びますD
)。D == F
パスがある場合...この時点で、から始まるパスは次F
のようになりますF -> H -> G
問題:
これはスケールしますか?マップには G で停止する からF
までの可能なパスのサブセットのみが含まれているG
ため、誤って循環パスを作成したり、キーを複製したりしないでください。また、サブセットのカーディナリティが n の場合、特定のキーの値の最大量は n になるため、接続するエッジの数が n を超えることはありません。
これをどのようにコーディングしますか??
関連するロジックと数学について考えることができますが、マップ ライブラリを自分で書き出すほど十分には理解していません。C++ のリファレンスを読んだ後、map メソッドを使用upper/lowerbound
できると思いましたが、それをサポートする例が見つかりません。