我在解决最小生成树问题时遇到了一些困难。在一个图中,每个节点代表一个城市,可能会有带权重的边连接两个节点,这表示建造两个城市之间道路的成本。问题是要求建造道路的最小成本,并且使所有城市以某种方式相连。我可以使用Prim或kruskal算法轻松解决这个子问题。
现在出现了棘手的部分:每个城市(节点)都可以拥有一个机场,每个机场都有一次性成本(如果您决定建造它)。如果两个城市都有机场,则可以使用机场之间旅行。现在我必须计算建造道路和机场的最小成本,以便所有城市都能相互连接,但我很难将机场的连接与网络的其余部分表示出来。有人可以帮我吗?也许我在使用最小生成树方面完全错误?
我想到的唯一解决方案是:对于每个拥有机场的城市,我将该城市与其他拥有机场的城市相连。此外,如果建造两个机场的成本低于建造道路的成本,则我会考虑这种情况。我运行kruskal以获取最便宜的边缘,但如果kruskal选择了“机场”边缘,则我将其添加到生成树中,然后将两个机场的成本归零(如果它们以前没有被建造)。我相信,通过在运行kruskal时进行动态权重更改,我正在破坏获得最小成本的想法。
现在出现了棘手的部分:每个城市(节点)都可以拥有一个机场,每个机场都有一次性成本(如果您决定建造它)。如果两个城市都有机场,则可以使用机场之间旅行。现在我必须计算建造道路和机场的最小成本,以便所有城市都能相互连接,但我很难将机场的连接与网络的其余部分表示出来。有人可以帮我吗?也许我在使用最小生成树方面完全错误?
我想到的唯一解决方案是:对于每个拥有机场的城市,我将该城市与其他拥有机场的城市相连。此外,如果建造两个机场的成本低于建造道路的成本,则我会考虑这种情况。我运行kruskal以获取最便宜的边缘,但如果kruskal选择了“机场”边缘,则我将其添加到生成树中,然后将两个机场的成本归零(如果它们以前没有被建造)。我相信,通过在运行kruskal时进行动态权重更改,我正在破坏获得最小成本的想法。