詳細:
グラフのサブセットの隣接リストを表すマルチマップ実装があります。
グラフのこのサブセットを通るパスを見つける必要があります。これは、実際には開始ノード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できると思いましたが、それをサポートする例が見つかりません。