下载此文档

驾照科目一考试技巧、口诀、最完整解析.pdf


文档分类:汽车/机械/制造 | 页数:约18页 举报非法文档有奖
1/18
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/18 下载此文档
文档列表 文档介绍
广度搜索在程序设计中的应用
深度优先: S L M N F F O P F Q F
广搜优先: S L O M F P Q N F F F
“广搜”用来解决那类问题?
用深度优先搜索找最优解时必须搜索完所有路径,即使一个目标结点在很浅的树枝上,也得等到它左边所有结点均被搜索后才能找到它。用这种方法求某些最优解时,效率比较低。而广度优先搜索,能较好地解决这个问题。
广度优先搜索是最简便和常用的图形搜索算法之一,从对图形的遍历来看,遵循“从浅入深”的搜索策略。在这种搜索过程中,树上的结点扩展是沿着深度的“断层”进行的,所以这种方法一定能保证找到最短(步数最少)的解答序列。在不少题中要求找到经历步骤最少而达到目标的方案时,多采用此种搜索方法。
最优化问题
“广搜”所用的数据结构-队列
为了体现先生成先扩展的执行方式又能保留所有生成的结点以待进一步扩展,广度优先搜索在数据结构上引用了“队列”结构。队列是一种线性表,具有先进先出的特点,对于它所有的插入和删除操作分别仅在队列尾和队列首进行。定义两个“指针”变量head和tail,分别用来指向队列的头和尾。初始结点先入队,头指针指向待扩展结点,每生成一个子结点,则尾指针tail增加1,当前结点的所有子结点均生成后,头指针向后移动(即加1),位于head指针之前的(已被删除)为已扩展结点,tail指向所有已生成结点的最后一个。若head指针大于tail指针,表示所有解答树上的结点已产生。如果目标结点仍求出现,说明“无解”。
原理解析
head
tail
s
L
O
M
F
P
Q
N
F
F
F
0
1
1
2
2
3
3
4
6
7
8
广度优先搜索的算法描述
Procedure BFS
初始化,初始状态存入OPEN表;
队列首指针head:=0;尾指针tail:=1;
repeat
for I:=1 to max do //其中,max为产生子结点的规则数
begin
if 子结点符合条件 then
begin
tail指针增1,把新结点存入队列尾;
if 新结点与原已产生的结点重复 then 删去该结点(取消入队,tail减1) else
if 新结点是目标结点 then 输出并退出;
end
end
until (head>=tail);
广度优先搜索的注意事项
(1)每生成一个子结点,就要提供指向它们父亲结点的指针。当解出现时,通过逆向跟踪,找到从根结点到目标结点的一条路径。
(2)生成的子结点要与前面的所有已产生结点比较,以免出现重复结点,浪费时间,还可能陷入死循环。
(3)广度优先搜索的效率还有赖于目标结点所有位置情况,如果目标结点处在比较深的层上时,需搜索的结点数基本上以指数增长。
例1:电子老鼠闯迷宫
电子老鼠闯迷宫。如下图12×12方格图,找出一条自入口(2,9)到出口(11,8)的最短路径。
12 //迷宫大小
2 9 11 8 //起点和终点
1 1 1 1 1 1 1 1 1 1 1 1
1 0 0 0 0 0 0 1 0 1 1 1
1 0 1 0 1 1 0 0 0 0 0 1
1 0 1 0 1 1 0 1 1 1 0 1
1 0 1 0 0 0 0 0 1 0 0 1
1 0 1 0 1 1 1 1 1 1 1 1
1 0 0 0 1 0 1 0 0 0 0 1
1 0 1 1 1 0 0 0 1 1 1 1
1 0 0 0 0 0 1 0 0 0 0 1
1 1 1 0 1 1 1 1 0 1 0 1
1 1 1 1 1 1 1 0 0 1 1 1
1 1 1 1 1 1 1 1 1 1 1 1
1
2
2
3
3
4
4
4
5
5
5
6
6
6
6
7
7
8
8
8
9
9
10
11
12
13
14
15
15
23
22
22
21
25
25
24
24
16
16
17
18
0
20
26
26
26
19
19
27
27
27
28
28
输入:
输出:28
数据结构定义:
A[1..maxn,1..maxn]表示邻接矩阵
Father[1..maxn*maxn]表示队列
State[1..maxn*maxn,1..2],1表示当前点的横坐标,2表示纵坐标,记录状态
procedure bfs;
var tail,head,k,i:integer;
begin
head:=0;tail:=1;state[1,1]:=px;state[1,2]:=py; father[1]:=0; //初始点状态
repeat
for

驾照科目一考试技巧、口诀、最完整解析 来自淘豆网www.taodocs.com转载请标明出处.

非法内容举报中心
文档信息
  • 页数18
  • 收藏数0 收藏
  • 顶次数0
  • 上传人1557281760
  • 文件大小2.88 MB
  • 时间2018-03-06