【发布时间】:2011-04-29 02:17:36
【问题描述】:
假设我有一个节点图(网络),权重如下: 1. 在两个节点之间的链路上单向行驶。 2. 在两个节点之间的链接上以另一种方式行驶(这些可能不同)。 3. 从一个链接更改为另一个链接。
另外,有些节点是单向的。
在这种情况下,什么是最好的算法: a) 找到最小生成树 b) 找到两个节点之间的最短路径 c) 找到“旅行推销员”的路径(即最短的路线去任何地方,重复最少)?
另外,是否最好将双向事物视为两条单向路径,而不是在每个方向上具有不同权重的双向路径?
---一个例子---
3
A --<2/3>-- B --<3/2>-- C
| 1 2|3
| |
^1/4 ^4/3
| |
|3 4|
8 D --<3/5>-- E
|2
|
1 ^3/1
|
|
F
其中 表示 2 左行和 3 右行的重量。 ^1/4 表示 1 向上移动, 4 向下移动。两个链接之间的单个数字是更改链接的成本 - 例如,从 AD 到 DF 成本为 8,从 AB 到 BE 成本为 2。
希望这是有道理的......
西蒙
(p.s 为不好的术语道歉 - “链接”,“边缘” - 无论你喜欢什么;))
为了更好地解释权重类型,假设边缘是火车轨道,节点是车站。边缘的成本是火车在两个车站之间的行程时间,节点的成本是换乘时间的长短(即使在同一节点,边缘之间也可能有所不同,具体取决于站台的距离,服务的定期性等)。
【问题讨论】:
-
我对“将一个链接(/edge)更改为另一个”有点困惑。你的意思是改变图表?对于最短路径和旅行商来说,重要的是节点之间的权重。
-
我这里有一个通过每个节点的权重,以及沿边缘行进的权重。将其视为一个道路系统,它相当于改变道路以及沿着道路行驶(节点是交叉路口)的成本。
标签: algorithm graph shortest-path minimum-spanning-tree