如何在java中使用bfs和路由表绘制图中最安全的路径

时间:2012-04-22 16:13:22

标签: java algorithm search path routes

我有一个包含资源级别的节点图,它们可以是正面的和负面的,原则是一只瓢虫或一些物体从每个节点获得生命或受到节点的伤害。

我设法用队列结构实现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+

事情是我不知道如何存储不同的路线,这个表只存储一条路线。

1 个答案:

答案 0 :(得分:0)

当所有边长不相同时,BFS并不真正用于查找最短路径。我会建议Bellman Ford Algorithm。与Dijkstra算法一样,它用于计算给定图形的最短路径。但是,与Dijkstra的算法不同,它允许您在不是所有边长均为正的图形上操作(看起来您会给出您的问题)。

这是一个video解释它(通过OpenCourseWare)。