如何对图的节点进行排序,以使两个相邻节点之间的距离最小
Posted
技术标签:
【中文标题】如何对图的节点进行排序,以使两个相邻节点之间的距离最小【英文标题】:How to order graph's nodes such that the distance between two adjacent nodes is minimal 【发布时间】:2014-01-11 11:26:55 【问题描述】:我想知道这个问题在图论中是否已知: 我有一个没有权重 G=(V,A) 的无向图,我想将此图的节点放在一个字符串中,以便有向节点尽可能靠近。比如:
鉴于此图:
a,b;a,d;b,e;c,f;c,h;f,h;e,g;e,h.
弧由';'分隔
我需要得到这个解决方案: a,b,d,e,g,h,c,f=2 其中 2 是字符串 a,b,d,e,g,h,c,f 中两个有向节点之间的最大距离。
正式地:
根据图表,让 d(v,u) 为两个节点之间的距离。 求一个顺序 v1,,v2,,vn,,使得 maxd(vi ,,vi+1,) 是最小的【问题讨论】:
我需要将图形的所有节点放在该字符串中,并检查通过直接弧连接的每两个节点之间的距离(在字符串中)。最大距离给出结果。 【参考方案1】:嗯,看来你正面临Hamiltonian Path Problem的变体。
在这个问题中,给定一个图形 - 您正在寻找一条通过所有顶点而不重复任何节点两次的路径。
请注意,汉密尔顿路径是解决您的问题的完美解决方案,因此如果您的问题可以得到有效解决 - 汉密尔顿路径问题也是如此。
不幸的是,哈密顿路径问题没有已知的多项式解决方案,问题是NP-Complete(因此普遍认为不存在这种(有效)解决方案)。
一个蛮力解决方案将是 O(n!) - 检查所有可能的排列,并选择最佳的一个。这可以使用branch and bound techniques 进行优化。
【讨论】:
以上是关于如何对图的节点进行排序,以使两个相邻节点之间的距离最小的主要内容,如果未能解决你的问题,请参考以下文章