我很有趣的是NP-complete“最小带宽”问题,用于查找图的最小带宽。对于那些不熟悉的人,这里有一个关于它的链接......
http://en.wikipedia.org/wiki/Graph_bandwidth
我已经实现了Cuthill-McKee算法,这非常成功地为我提供了带宽 减少的顶点的排列 ;但是,我正在寻找 最小带宽 ,而不仅仅是减少的带宽。如果您有任何遇到此问题的经验,哪些算法提供 最低 的解决方案,而不仅仅是 缩减 ?我不需要任何算法的实际实现,我只是想要研究什么算法来产生实际的 最小带宽 。
答案 0 :(得分:2)
这是一个有趣的问题,但是当我读到Wiki(你的链接)时:
未加权和加权 版本是特殊情况 二次瓶颈分配 问题。带宽问题是 NP难,即使是一些特殊的 例。[4]关于存在 它是有效的近似算法 众所周知,带宽是NP难的 在任何常数内近似, 这甚至在输入时都成立 图表仅限于卡特彼勒 树木(Dubey,Feige& Unger 2010)。上 另一方面,一些 多项式可解的特例 众所周知。
所以维基说NP-Hard用任何常数来近似它(所以这个问题没有PTAS)你的机会就是使用启发式算法,确保强力算法有效,(编号节点的数字在1之间.. n在启动时随机使用,然后使用蛮力)但你应该用1000年时间为卡特彼勒解决它。 您应该搜索启发式算法,而不是近似和精确算法。
答案 1 :(得分:1)
因为它是NP完全你必须使用某种“强力”算法。所以主要是你有不同的蛮力作为选择,例如像分支定界或线性规划(它的LIP,所以它在NP中)。
由于它是NP完成的,你也可以通过从NP完全性证明中转换问题实例,应用算法并将其转换回来,将每个解决方案都解决为不同的NP完全问题(TSP,SAT,...)。
答案 2 :(得分:1)
您可以做的最简单的改进可能是采用您的Cuthill-McKee算法的结果并在其上抛出禁忌搜索。
有关可应用的某些算法的概述,请参阅this answer。