我试图解决当地的编程竞赛问题。问题基本上是在加权图中找到最短路径。我对这些类型的问题很陌生,我想我可以使用Dijkstra的算法。但是,有一个小的复杂性 - 某些值是不同的,这取决于当前路径的情况。图上用权重变化的最短路径
问题
有两种类型的权重:正常体重和权重与条件(我们姑且称之为K)。条件是这样的:一旦你移动通过边的权重为K,所有类型K的所有其他权重的值都为0.这带来了一些问题,因为表观最短路径可以通过带有类型K的权重的边的组合。
例
下面是这种类型的问题。如果没有权重会改变它们的价值,我们可以很容易地找到与Dijkstra最短的路径。然而,当权重K改变它们的值时,我们可以找到更短的路径,因为在移动通过边缘A-C之后边缘C-D的权重为0。
问题
我怎样才能找到最短路径?
我可以在这里使用Dijkstra算法还是使用A *或BFS等其他算法更好?
谢谢!这正是我所期待的。 K边的数量介于0和边数之间的范围内,但无论图中有多少个K边,解决方案似乎都能正常工作。 – KuboK
这不是我所知道的有多少个K在那里。想象一下你也有M值......或Z值。所以对于每个不同的价值,你将不得不做更多的工作。 K边缘的数量并不重要 – Dolev
哦,好吧,我现在明白了。因此,如果有更多特殊值(K,M或任何其他值),则可能路径的组合更多。 – KuboK