Answers:
我认为您可能正在寻找网络的图形直径。关于stackexchange的几个问题都提到了该主题,例如:
大多数算法建议先计算“所有对最短路径”,然后选择最长的路径,但是我发现了Koushik Narayanan的博客文章,其中提出了一种可能更理想的替代方法(我没有检查),遍历每个顶点并找到最远的一对:
我们可以从顶点V1计算出路径,以使其成为V1和其中一个顶点之间的最短路径,并且比任何其他顶点之间的最短路径长。有关算法,请参见这篇文章。然后,我们可以遍历每个顶点并找到以每个顶点为根的最长路径。一旦有了所有最长的最短路径的列表,我们就可以找到具有最大值的那个并返回它。
根据维基百科页面最长路径问题,此问题
...是NP难解的,这意味着 除非P = NP,否则它无法在多项式时间内求解任意图。还已知更强的硬度结果,表明难以估计。但是,它具有用于有向无环图的线性时间解,在解决调度问题的关键路径方面具有重要的应用。
如果您使用(或可以将图形表示为DAG),那么networkx
Python包将允许您对其进行计算。寻找功能dag_longest_path
。
除非我丢失了某些内容,否则您将需要计算图节点之间的长度并对它们进行排序,但不幸的是,它们只能在线性时间内工作,因此没有有效的算法。