【发布时间】:2017-10-23 00:46:24
【问题描述】:
考虑这个笛卡尔图,其中每个索引代表一个权重。
[3, 2, 1, 4, 2
1、3、3、2、2
S、3、4、1、D
3、1、2、4、3
4、2、3、1、4]
一个人站在源'S',他必须以最低成本到达目的地'D'。约束是:
如果人员从一个索引移动到另一个索引且两个索引共享相同的成本,则移动人员的成本为“1”。
如果人从一个索引移动到另一个索引并且两个索引具有不同的成本,则移动人的成本为 abs(n-m)*10 + 1。
最后但同样重要的是,人只能上下左右移动。没有对角线移动。
哪种数据结构和算法最适合这个问题。我曾想过将这个问题表示为图表并使用其中一种贪婪的方法,但无法在我的脑海中找到干净的解决方案。
【问题讨论】:
-
“机器人”和“人”是一回事吗?第二种情况下
m和n是什么;它们是两个节点的节点成本吗? -
@Codor,我应该清除它。感谢您指出。是的,人和机器人是一回事。 'm' 和 'n' 是两个节点的节点成本。
-
@maraca,感谢您的来信。 S 和 D 的成本为“1”。另外,我在问题中增加了一个约束。请查看并提出建议。
-
是什么阻止您使用像 Dijakstra 这样的标准最短路径算法?所有边成本都是已知的,都是正的,并且您有稀疏图。