如何对图的节点进行排序,以使两个相邻节点之间的距离最小

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 进行优化。

【讨论】:

以上是关于如何对图的节点进行排序,以使两个相邻节点之间的距离最小的主要内容,如果未能解决你的问题,请参考以下文章

根据不同的比例对图的节点进行着色

图的广度优先遍历

如何使WPF的TreeView节点之间有连线

UBUNTU NS3里面的给2组节点设置距离具体要用哪个函数?

GraphDB 查询和分片

如何找到树上一组节点之间的最大距离?