我有多重映射实现,代表了一个图的子集的邻接表。
我需要找到通过图形,这实际上是从一个起始节点F
结束节点G
,通过运行广度取得所有可能路径的这个子集的路径首先在全图搜索。
体系的构想:G
被发现,所以你最终G
只在多重映射值
的BFS退出一次。我的想法是,如果你从价值G
开始,得到G
的“钥匙”(我们称之为H
),如果H == F
那么我们有我们的路径。否则,你继续寻找H
作为关联到其它的键的值(称之为D
),如果D == F
那么我们有我们的道路......在这一点上我们的道路从F
开始看起来像F -> H -> G
问题:
这个比例是?由于地图仅包含从F
到G
的可能路径的子集,因此停在G处,它不应该无意地制作圆形路径或制作重复键。如果子集的基数为n,那么对于任何给定的键,n将是最大数量的值,因此,连接的边数永远不会超过n。
你会如何编码?
我可以通过所涉及的逻辑和数学来思考,但我不明白地图库还不够完善,但自己写出来。
阅读C++参考后,我得到了一个想法,我可以使用地图方法
upper/lowerbound
,但我找不到支持该示例的示例。