【发布时间】:2020-10-14 07:19:26
【问题描述】:
我必须给出一个算法如下:
给定一个无向连通图 G,给出一个算法,找到两个节点 x,y,使得它们的距离至少是图直径的一半。证明任何主张。
我假设我必须从任意节点运行 BFS 并找到其最远的节点才能找到直径。然后找到两个距离大于直径一半的已探索节点。 但我怀疑这是最优的并要求解决方案。在运行 BFS 查找直径时,是否有其他方法可以同时找到这两个所需节点?所以复杂度仍然是多项式的。 任何指导或提示将不胜感激!
【问题讨论】:
-
选择任意根并找到距该根最远的节点实际上并不能给出直径。例如考虑直径为 3 的图 A-B-C-D;如果你选择 C 作为根,离 C 最远的节点是 A,它离 C 的距离为 2。但是,BFS 仍然是一个好主意; tucuxi 的回答解释了原因。
标签: algorithm graph undirected-graph