igraph 有“has_path”功能吗?

问题描述

我正在尝试将代码从 python NetworkX 移植到 R igraph。在 NetworkX 中有一个名为 has_path函数,用于查找两个顶点是否具有路径。我想以一种有效的方式找到图中没有边但它们有路径的所有顶点。

解决方法

我觉得你可以用下面的代码来检查是否有从顶点V1V2的路径(图可以有向也可以无向)

c(!is.infinite(distances(g,V1,V2,mode = "out")))
,

如果您需要在无向图中重复检查这一点,只需将其分解为连接的组件并检查两个顶点是否在同一组件内。这将非常有效,因为组件只需要找到一次。

参见 components 函数。它为您提供了一个成员资格向量。您需要检查两个顶点对应的位置是否具有相同的值(相同的组件索引)。

如果图是有向图,最简单的解决方案是@ThomasIsCoding 发布的解决方案。这对于一次性检查来说完全没问题。加快重复检查的速度更麻烦,并且需要自己提出问题。