这里是一个消费:
在某些图形问题,顶点具有可具有的权重,而不是或addi-重刑边缘的权重。 让了Cv是顶点v的成本,和C(X,Y)的边缘(X,Y)的成本。 这个问题涉及到求在图G的顶点A和B之间的最廉价的路径的路径成本的路径上遇到的边和顶点的成本的总和。
(a)假设在图中每条边具有零权重(而非边缘具有∞的成本).Assume该CV = 11≤v≤n所有顶点(即,所有顶点具有相同的费用) 。 举一个高效的算法来找到从A到B的时间复杂度最廉价的路径。
(b)现在假设顶点成本不恒定(但都是正)和边缘成本仍然如上。 举一个高效的算法来找到从A到B的时间复杂度最廉价的路径。
(c)现在假设,无论是边缘和顶点费用是不固定的(但都是积极的)。 举一个高效的算法来找到从A到B的时间复杂度最廉价的路径。
下面是我的回答:
(a)中使用正常BFS;
(二)使用Dijkstra算法,但与顶点权重代替重;
(C)
还可以使用Dijkstra算法
如果只考虑对边的权重,然后Dijkstra算法的重要组成部分,我们有:
if (distance[y] > distance[v]+weight) {
distance[y] = distance[v]+weight; // weight is between v and y
}
现在,考虑约顶点权重,我们有:
if (distance[y] > distance[v] + weight + vertexWeight[y]) {
distance[y] = distance[v] + weight + vertexWeight[y]; // weight is between v and y
}
我对吗?
我想我的答案(C)是太简单了,是吗?