细节:
我有一个表示图子集的邻接列表的多图实现。
我需要通过图的这个子集找到一条路径,它实际上是从开始节点F
到结束节点的所有可能路径G
,通过在全图上运行广度优先搜索获得。
实施思路:
BFS 退出一次G
被发现,所以你最终G
只在多图的值中。我的想法是,如果你从 value 开始G
,得到G
的“key”(我们称之为H
),如果H == F
我们有我们的路径。否则,您继续并寻找H
与另一个键关联的值(称为它D
),如果D == F
我们有我们的路径......此时我们的路径开始F
看起来像F -> H -> G
问题:
这会扩展吗?由于地图只包含从F
到的可能路径的子集G
,在 G 处停止,因此它不应该意外地生成循环路径或生成重复的键。如果子集的基数为 n,那么 n 将是任何给定键的最多值,因此您连接的边数永远不会超过 n。
你将如何编码?
我可以思考所涉及的逻辑和数学,但我对地图库的理解还不够好,无法自己写出来。在阅读了 c++ 参考之后,我知道我可以使用 map 方法upper/lowerbound
,但我找不到支持它的示例。