我遇到了一个问题,即找到解决问题的最佳算法:在图表中找到从起点到起点(制作一个周期)的最小路径,并访问图中最少的三个不同节点。例如,如果我们的图表G(V,E)
包含V={a,b,c,d,e}
且边E={(a,b,16),(a,c,300),(a,d,1),(b,c,100),(b,e,15),(c,a,10),(e,c,20)}
,则最短距离为61,并且会访问a->c->e->b->a
。
我想将Dijkstra's algorithm用于加权图,但我不知道如何实现约束条件以访问最少3个节点?它看起来像汉密尔顿循环问题,但没有使用所有节点,只有部分节点。这是NP完全问题吗?
任何帮助都将不胜感激。
答案 0 :(得分:0)
实现这一目标的一种简单方法如下:
运行时将由第二步控制,它具有运行时O(n 3 )。所以不,问题不是NP难,因为我们必须访问的不同节点的数量是固定的(在这种情况下,3)。