我有一个包含资源级别的节点图,它们可以是正面的和负面的,原则是一只瓢虫或一些物体从每个节点获得生命或受到节点的伤害。
我设法用队列结构实现BFS: -
给出一个没有节点资源的图表
a---b---e
| |
c---d f
路线表是: -
node parent
===============
a null
b a
c a
d c
e b
f e
所以使用父节点绘制路线,假设(a)是起始节点,(f)是出口节点 最快的路线是从底部f-e-b-a
我已经在java代码中解决了这个问题,问题是你如何使用这个方法,每个节点都有可以杀死你或给你生命的资源。
所以说一些节点有-20而其他节点给+10
我不确定如何确定给定队列结构的路线。
有没有人有任何想法?
我不需要java代码,但是任何东西都会有所帮助,我真的对解决方案的理论和可以使用的数据结构等感兴趣...
我的想法可能是
child parent resource
=======================
a b 20+
b a 10-
c b 5+
事情是我不知道如何存储不同的路线,这个表只存储一条路线。
答案 0 :(得分:0)
当所有边长不相同时,BFS并不真正用于查找最短路径。我会建议Bellman Ford Algorithm。与Dijkstra算法一样,它用于计算给定图形的最短路径。但是,与Dijkstra的算法不同,它允许您在不是所有边长均为正的图形上操作(看起来您会给出您的问题)。
这是一个video解释它(通过OpenCourseWare)。