我正在处理个人项目的图像,我坚持一步(此外这是一个相对容易的步骤)我的问题与图像无关。
我正在计算图像上每个像素的int值。我想找到像素(节点)之间的最小成本路径。实际上我有一个A *算法的工作实现。但我不想使用它,因为我不想限制你可以传递或不能传递的节点的“地图”。我希望每个节点都可以通过,但需要付出代价。有些节点通过成本太高,有些则不然。但是没有不能传递的节点。
我认为我不需要提供任何代码,因为它是项目中非常孤立的部分。所以我不想操纵任何人。但基本上我有一个具有节点列表的地图对象。节点有id,x,y位置。成本,邻居(顶部,底部,左右像素)和一个节点参考,以了解我来自哪里等。
我希望我可以表达与Dijkstra最短路径算法的区别。我该如何相应地修改它?或者任何人都可以推荐另一种方式来做到这一点吗?
答案 0 :(得分:2)
我想我看到了这个问题......“有些节点传递成本太高,有些节点不会。”这不是算法的工作原理,你应该将问题转化为节点(没有成本)和边缘(带成本)。那么应该很容易使用A *,Dijkstra或任何其他路径寻找算法。
在您的情况下,每个像素都是一个节点/顶点。每个像素都有4条边(除了边框处的边)。边缘的成本将是目标像素的int值。
此外,您不应该在节点中保留节点引用,这是算法工作,以跟踪它来自何处。
希望这有帮助。