与其他n个顶点的距离最小的顶点

时间:2018-09-04 03:18:52

标签: algorithm graph

给出一个有向加权循环图,并用m(x,y)给出的顶点之间的最小路径距离,找到使m(a,v)+ m(b,v)+ m(c)最小的顶点v ,v)+ ...对于n个顶点a,b,c ...

例如,如果图形是无向的,并且我们想要具有到顶点a和b的最小路径的顶点v,则v只是从a到b的最小路径中心的顶点。

我可以想象一种涉及深度遍历等的方法,但是我想问一句SO会提出什么建议-希望这很清楚。

1 个答案:

答案 0 :(得分:0)

现在,我对此进行了更多思考,您可能应该看看Bidirectional Search

基本思想是从每个查询节点(a,b,c,...)同时启动Dijkstra。他们所有人发现的第一个顶点是您的结果顶点。

您可以通过将遇到的所有(未访问的顶点,距离,查询顶点)三元组放在一个优先级队列(按距离排序)中,并像Dijkstra一样对其进行处理来实现此目的。您将需要使用到达的顶点作为查询节点来标记已看到的顶点。当一个顶点带有所有查询顶点的标签时,这就是您的结果(我们称之为中间顶点)。