电网最小传输的最佳图算法
Best graph algorithm for least transfer in an electric grid
给定一系列城市,每个城市产生一定数量的电力,并需要一定数量的电力。每个城市最多有8个相邻的城市,我尽量减少换乘的次数。如果A->B 10个能量,总转移成本为10。如果A->B->C 10能量(A到C通过B),总转移成本为20。我考虑过在每个需要能量的点上使用Djikstra,并在找到足够的能量时结束对该点的搜索,但想到了几个陷阱。我想知道我还能考虑什么可能有效的方法?我还考虑过研究Floyd-Warshall算法以及Hagerup(在维基百科上读了一些关于它们的内容,它们似乎是可行的)
谢谢
你的问题很容易被简化为众所周知的最小成本流问题:
最小成本流问题(MCFP)是找到最便宜的可能通过流量网络发送一定流量的方式。
这种缩减可以通过以下方式完成。在你的图中添加一个虚拟的"源"answers"汇"顶点,从源到每个原始顶点添加一条有向边,其容量等于该顶点的生产率,从每个原始顶点添加一条有向边到该顶点的容量等于消耗率的汇。根据需要在原始边缘上设置容量和成本,并在生成的网络上解决最大流量最小成本问题。
我也怀疑Dijkstra算法或任何最短路径算法将有任何用途,因为它们只关注来自特定城市的一个单位电力的路径,并且没有考虑到不同城市产生的电力的"干扰"效应。例如,如果你有两个城市(A和B)生产1单位能源,靠近A和B的另一个城市(C)消耗1单位能源,远离A和B的另一个城市(D)消耗1单位能源,那么你就必须将能源从A或B输送到D,但没有最短路径算法可以为你提供这一点。
当你有足够的能量时就结束搜索并不能保证找到最短的路径,但是让Dijkstra在每个耗电点上完全运行,这可能仍然是合理的,这取决于网络的大小。
Lookup A*算法,它使用启发式算法改进了dijkstra,这可能会消除一些缺陷。我实在想不出其他的算法了
实际上我认为A*应该可以。
- 打印所有儿童树元素的最佳算法?
- 算法设计:用边界数字表示 2D 网格的最佳方式,以C++?
- 在 c++ 或 python 中生成一个体面的视差图以在 Raspberry Pi 上实现的最佳方法(算法或函数)是什么
- 从整数向量向量搜索整数向量的最佳算法
- 绘制线条的最佳算法
- 为一群追逐兔子的狐狸创建蜂群算法的最佳方法
- 找到多组对象的最佳匹配的算法
- 从QTcpSocket上的数据流中连续运行复杂算法的最佳Qt线程解决方案是什么
- 比较阵列相似性的最佳比较算法是什么?
- 最佳页面替换算法
- 在C/C 中实现实时最佳拟合内存分配算法
- 找出所有给定数组中公共元素的最佳算法
- 将集合与集合进行比较的最佳算法
- 哪种算法是求所有子阵列之和的最佳算法
- 删除 2 个给定索引之间的元素的最佳算法
- 合并索引对的最佳算法
- 随机生成一个能被N整除的数的最佳算法
- 城市环境中特征检测的最佳算法- OpenCV
- Rational函数级数展开的最佳算法
- 检查矢量是否排序的最佳算法