我们正在开发一个项目,定期有向图适用于大多数情况。但是在我们的图表上,我们想要使一些路径无效。例如,如果我们的图表是:
A->B
A->D
B->C
D->C
然后A-> B-> C是有效路径但是A-> D-> C不是。我们可以在某处定义无效路径并每次进行验证检查,但这会导致重要的性能问题,因为我们的应用程序高度依赖于图形。
那么,这种类型的情况是否有特殊的数据结构或算法?
由于
答案 0 :(得分:0)
您可以在from:list(to)
的每个节点上存储映射,这样您就知道来自A的路径不能转到C,因为它不在它可以从C转到的节点列表中。如果您如果深度大于1,则导致它的节点元组可以是一个键而不是那个节点。这与eBGP如何用于互联网路由非常相似。
另一方面,如果您决定使用您所描述的数据结构,则需要进行检查。要么是这样,要么为每种情况存储多个图表。