代价树的广度优先搜索

背景:如图是5城市之间交通路线图,A城市是出发地,E城市是目的地,两城市间的交通费用(代价)如图中数字所示,求从A到E的最小费用路线。
[img]http://dl.iteye.com/upload/attachment/196611/aca00476-f1ed-3c79-8385-4b0215553f1e-thumb.jpg[/img]
解法:采用 代价树的广度优先搜索
理论:

1. 首先根据交通图,画出代价图

代价图 如图2:

[img]http://dl.iteye.com/upload/attachment/196613/b866a3d8-a96d-3c7b-aa41-f462f9699fff-thumb.jpg[/img]

2. 开始搜索

oepn表存放刚刚生成的节点。
closed表存放将要扩展的节点或已经扩展过的节点。

open表结构:
[代价]|[节点]|[父节点]

closed表结构:
[序号]|[节点]|[父节点]


1) 把A放入 open表

open表:
0| A | 0
Closed表: 空

2) 把A从open表放入closed表

open表: 空
closed表:
1 | A | 0

3) 扩展A,得C1,B1,放入open表
C1的代价:3
B1的代价:4

Open表:
3 | C1 | A
4 | B1 | A
closed表:
1 | A | 0


4) 把C1从open表放到closed表

Open表:
4 | B1 | A
closed表:
1 | A | 0
2 | C1 | A

C1不是目标节点,于是继续扩展

5) 把C1扩展得到 D1,放入open表
D1的代价:3+2=5
B1的代价:4

open表:
4 | B1 | A
5 | D1 | C1
closed表:
1 | A | 0
2 | C1 | A

6) 把B1从open放入closed表

open表:
5 | D1 | C1
closed表:
1 | A | 0
2 | C1 | A
3 | B1 | A
B1不是目标节点,于是继续扩展

7) 扩展B1得D2,E1,放入Open表
D2的代价:4+4=8
E1的代价:4+5=9

open表:
5 | D1 | C1
8 | D2 | B1
9 | E1 | B1
closed表:
1 | A | 0
2 | C1 | A
3 | B1 | A


8) 把D1从open表放入closed表

open表:
8 | D2 | B1
9 | E1 | B1
closed表:
1 | A | 0
2 | C1 | A
3 | B1 | A
4 | D1 | C1

D1不是目标节点,于是继续扩展

9) 把D1扩展得到E2,B2,放入open表
E2的代价:3+2+3=8
B2的代价:3+2+4=9
D2的代价:8
E1的代价:9

open表:
8 | E2 | D1
8 | D2 | B1
9 | B2 | D1
9 | E1 | B1
closed表:
1 | A | 0
2 | C1 | A
3 | B1 | A
4 | D1 | C1

10) 把E2从open表放入closed表


open表:
8 | D2 | B1
9 | B2 | D1
9 | E1 | B1
closed表:
1 | A | 0
2 | C1 | A
3 | B1 | A
4 | D1 | C1
5 | E2 | D1
E2 是目标节点,搜索结束。

则搜索路径 A - C1 - D1 -E2
即:A - C - D - E
  • 3
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值