【问题标题】: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,,使得 max{d(vi ,,vi+1,) } 是最小的

【问题讨论】:

  • 我需要将图形的所有节点放在该字符串中,并检查通过直接弧连接的每两个节点之间的距离(在字符串中)。最大距离给出结果。

标签: java c++ algorithm graph


【解决方案1】:

嗯,看来你正面临Hamiltonian Path Problem的变体

在这个问题中,给定一个图形 - 您正在寻找一条通过所有顶点而不重复任何节点两次的路径。

请注意,汉密尔顿路径是解决您的问题的完美解决方案,因此如果您的问题可以得到有效解决 - 汉密尔顿路径问题也是如此。

不幸的是,哈密顿路径问题没有已知的多项式解决方案,问题是NP-Complete(因此普遍认为不存在这种(有效)解决方案)。

一个蛮力解决方案将是 O(n!) - 检查所有可能的排列,并选择最佳的一个。这可以使用branch and bound techniques 进行优化。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-05-25
    • 2019-03-29
    • 1970-01-01
    • 2011-12-05
    • 2013-03-31
    相关资源
    最近更新 更多