我给了一系列城市,每个城市都会产生一定数量的电力,需要一定的电量。每个城市最多有8个相邻城市,我正在尽量减少转移次数。 如果A-> B 10能量,则总转移成本为10。 如果A-> B-> C 10能量(A至C至B),则转移的总成本为20。 我想在每个需要能量的点上使用Djikstra,并在找到足够的能量时结束对该点的搜索,但想到了几个陷阱。 我想知道我还能考虑哪些可能有用? 我也考虑过调查Floyd-Warshall算法以及Hagerup(在维基百科上阅读一下这些算法,它们似乎有可行)
由于
答案 0 :(得分:1)
您的问题很容易缩小为众所周知的minimum-cost flow problem:
最低成本流量问题(MCFP)是找到最便宜的 通过流网络发送一定数量的流量的方法。
这种减少可以通过以下方式完成。添加一个虚拟"源"并且"下沉"如图所示,在图表的顶点,将有源边从源添加到每个原始顶点,其容量等于该顶点处的生产率,从每个原始顶点添加一个有向边,使其容量等于该顶点处的消耗率。根据需要设置原始边缘的容量和成本,并解决最终网络上的最大流量最小成本问题。
我也怀疑Dijkstra算法或任何最短路径算法都会有用,因为它们只涉及来自特定城市的一个单位电力的路径,并且没有考虑到干扰"干扰& #34;不同城市发电的影响。例如,如果你有两个城市(A和B)产生1个单位的能量,一个城市(C)接近A和B消耗1个单位的能量,而另一个城市(D)远离消耗1个单位的能量能量,那么你将不得不将能量从A到B路由到D,但没有最短路径算法可以为你提供。
答案 1 :(得分:0)
一旦你有足够的能量就结束搜索并不能保证找到最短的路径,但是让Dijkstra完全为每个能量消费者的点运行,并且可能仍然是合理的,可以根据大小来计算网络。
答案 2 :(得分:0)
查找A *算法,它通过启发式方法改进了dijkstra,可能会消除一些陷阱。 我无法想到任何其他算法。
其实我认为A *应该没问题。