通路/道路铺设问题

时间:2010-11-25 20:26:55

标签: algorithm optimization variable-assignment graph-algorithm

今天我们完成了在实验室完成的任务(两小时内完成)。问题是:

  • 你得到一个m * n矩阵。
  • 矩阵有'h'住宅大厅和'b'主楼入口。
  • 这些'h'大厅和'b'入口的位置是已知的(按(x,y)坐标)。
  • 您需要铺设通道,使每个住宅大厅至少有一种方式可以到达其中一个'b'入口。
  • 最多可能有'b'这样的断开路径。
  • 通路的长度必须最小。
  • 你只能向上,向下,向左或向右移动。
  • 解决方案绝不能是强力企图。

任务结束了。但我仍然在想如何解决这个问题。这些问题是否有标准术语?我该怎么读?

人们是否也使用这种算法在城市铺设道路?

5 个答案:

答案 0 :(得分:3)

这是我提出的解决方案。它不会生成'b'断开连接的路径。它产生一条通过所有住宅大厅和入口的路径。

  • 计算每对节点之间的距离(X坐标的差异+ Y坐标的差异)。现在你有了一个完整的图表。
  • 查找完整图表的MST
  • MST的每个倾斜边缘(非垂直或水平)可分为两部分 - 水平和垂直。
  • 每次拆分都可以通过两种方式进行 - 首先是水平,然后是垂直,反之亦然。
  • 完成每个这样的排列并计算出最小长度的路径。这就是答案。

答案 1 :(得分:2)

无法告诉你解决方案是什么(某种最低成本路径分析,猜测),但我对道路建模软件有一些经验。

在规模的一端,您拥有使用类似(广义)方法的战略建模系统。它们可以被认为是一种引力模型 - 它将使用流量产生和需求的估计来对城市和城市之间或工业区域与住宅等之间的交通流进行高水平预测。这对于寻找在重大计划发展的宏观影响,人口分布或土地使用区的变化......那种事情。

另一方面,您拥有城市,城镇,交汇处等特定区域的模拟模型。这些模型是将每辆汽车视为具有侵略,道路知识等因素的自主代理的数字模型。这是一种蛮力风格的方法,但它是在交通信号灯,公交车等功能的复杂网络中提供实际交通行为的有用统计数据的唯一方法。交通建模者可以将其插入到实际的交通控制数据,针对特定设计解决方案运行特定时期的模型,并将其设置为运行6或7次。结果数据可以非常好地评估特定解决方案对另一个解决方案(或现状)的性能。

希望这能提供一些有用的背景。

答案 2 :(得分:1)

问题描述的一个方面对我来说并不清楚:

  • 当你说“你需要铺设一条通道”时,这是否意味着“只有一条连接路径?”或者可以有多个断开的路径? (例如,从大厅H1到建筑物入口B1的路径以及从大厅H2到建筑物入口B2的单独路径)

但是你回答我的问题,这是一个非常棘手的问题:它是NP难的,因为它包含rectilinear Steiner tree问题作为一个特例(当只有一个主建筑入口时)。

所以没有人知道如何在一般情况下有效地解决它!

答案 3 :(得分:1)

我认为问题更简单,而不是Steiner树,甚至不是最小生成树。

  1. 将矩阵M表示为图G,其中V = {Mij | i <= m,j <= n},E = {(Mi1j1,Mi2j2):i1,i2 <= m,j1,j2&lt; = n,| i1-i2 | = 1-exclusive OR | j1-j2 | = 2}

  2. 拿入B组的入口,设置大厅的H

  3. H'= H / B,B'= B / H(标记入口处的大厅,它们在深度0处到达,移除所有这些入口,因为它们是大厅)

  4. 进行广度优先遍历。在每个深度标记处可以从B到达的大厅,直到所有大厅都被标记。选择相应的途径。

答案 4 :(得分:1)

这是一个搜索问题。你被期望在2小时内完成,对吧?我会 DFS 修剪。您可以使用启发式来更快地获得更好的解决方案。但请记住,启发式方法无法保证最佳解决方案,因此您必须尝试所有可能性。似乎是NP难的。