【发布时间】:2019-03-05 02:31:19
【问题描述】:
令 G 是一个有向加权图,其节点为黑色或白色,所有权重均为非负数。没有指定其他信息——没有起点或终点。
我需要找到一条最小重量的路径(不一定简单),它至少可以交替颜色n 次。我的第一个想法是运行 Kosaraju 的算法来获取组件图,然后找到组件之间的最小路径。然后,您可以选择入度等于零的节点,因为这些节点的颜色交替至少与从入度为正的组件开始的路径一样多。但是,这也意味着您可能有一条不必要的长路径。
我考虑过可能尝试以某种方式修改图形,可能会复制黑白边缘或白到黑边缘指向的图形,或者复制或删除边,但我没有我的头脑风暴似乎奏效了。
【问题讨论】:
-
我们可以重新访问节点吗?其他约束呢?节点数?
n有多大? -
我只需运行 Dijkstra 并将到目前为止看到的交替数添加到节点状态。这实际上会复制节点。
-
@PhamTrung 是的,您可以重新访问节点。节点数是一个变量,可以称它为|V|。 n 是任意常数。我们需要一种高效的(对数线性)算法。
-
@NicoSchertler Plain Dijkstra 需要指定一个开始。在这里,足够多次交替的路径可以从任何地方开始。如果你在每个顶点上运行 Dijkstra,你会得到一个低效的算法。
-
哦,我以为你有一个开始。您可能希望将其添加到问题中。我承认它已经存在了。