- 1、本文档共12页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
一深度优先搜索遍历算法.doc
广度优先搜索算法
一.宽度优先搜索的过程
宽度优先搜索算法是最简便的图搜索算法之一,这一算法也是很多重要的图的算法的原型。Dijkstra单源最短路径算法和Prim最小生成树算法都采用了和宽度优先搜索类似的思想。……,如此依次扩展,检查下去,直到发现目标节点为止。即
1、从图中的某一顶点V0开始,先访问V0;V0相邻接的顶点V1,V2,......,Vt;V1,V2,......,Vt相邻接的所有未曾访问过的顶点;Program Bfs;
初始化,初始状态存入OPEN表;
队列首指针head:=0;尾指针tail:=1;
repeat
指针head后移一位,指向待扩展结点;
for I=1 to max do {max为产生子结点的规则数}
begin
if 子结点符合条件 then
begin
tail指针增1,把新结点存入列尾;
if新结点与原已产生结点重复then删去该结点(取消入队,tail减1)
else
if新结点是目标结点then输出并退出;
end;
end;
until(tail=head); {队列空}
三、广度优先搜索注意事项:
1、每生成一个子结点,就要提供指向它们父亲结点的指针。当解出现时候,通过逆向跟踪,找到从根结点到目标结点的一条路径。
2、生成的结点要与前面所有已经产生结点比较,以免出现重复结点,浪费时间,还有可能陷入死循环。
3、如果目标结点的深度与“费用”(如:路径长度)成正比,那么,找到的第一个解即为最优解,这时,搜索速度比深度搜索要快些;如果结点的“费用”不与深度成正比时,第一次找到的解不一定是最优解。
4、广度优先搜索的效率还有赖于目标结点所在位置情况,如果目标结点深度处于较深层时,需搜索的结点数基本上以指数增长。
下面我们看看怎样用宽度优先搜索来解决八数码问题。
例如 图2给出广度优先搜索应用于八数码难题时所生成的搜索树。搜索树上的所有结点都标记它们所对应的状态,每个结点旁边的数字表示结点扩展的顺序。粗线条路径表明求得的一个解。从图中可以看出,扩展26个结点和生成46个结点之后,才求得这个解。此外,直接观察此图表明,不存在有更短走步序列的解。
广度优先搜索图
Program BFS;
data;数据库赋初值;
H:=0;队列尾指针L:=1;
repeat
取下一个H所指的结点;
for i:=1 to max do {i为产生新结点规则编号}
begin
L增1,把新结点存入数据库队尾;记录父结点的位置;
if then
删去该结点(L减1)
else
if 新结点为目标结点 then
end;
end;
until H=L {队列为空}program 8no_bfs; {八数码的宽度优先搜索算法}
Const
Dir : array[1..4,1..2]of integer {四种移动方向,对应产生式规则}
= ((1,0),(-1,0),(0,1),(0,-1));
N=10000;
Type
T8No = array[1..3,1..3]of integer;
TList = record
Father : integer; {父指针}
dep : byte; {深度}
X0,Y0 : byte; {0的位置}
State : T8No; {棋盘状态 }
end;
Var
Source,Target : T8No;
List : array[0..10000] of TList; {综合数据库 }
Closed,Open,Best : integer { Best表示最优移动次数}
Answer : integer; {记录解}
Found : Boolean; {解标志}
procedure GetInfo; {读入初始和目标节点}
var i,j : integer;
begin
for i:=1 to 3 do
for j:=1 to 3 do read
您可能关注的文档
最近下载
- ISO∕IEC 42001-2023《信息技术-人工智能-管理体系》之7:“6策划-6.1 确定风险和机遇的措施”解读和应用指导材料(雷泽佳编制-2024A0).docx VIP
- 2025年高职单招计算机基础知识考试题库.pdf VIP
- 2025年卫生院岗位绩效考核细则.pdf VIP
- 网络信息安全知识培训.docx VIP
- 在线网课学习课堂《学术交流英语(哈工 )》单元测试考核答案.docx
- QLP YJC 0001-2023 汽车禁限用物质的限值及测量方法-ELV.pdf
- ISO∕IEC 42001-2023《信息技术-人工智能-管理体系》之10:“7支持-7.2能力”解读和应用指导材料(雷泽佳编制-2024A0).docx VIP
- 2025年常州机电职业技术学院高职单招语文2018-2024历年参考题库频考点含答案解析.docx
- 人教版三年级下册书法教案.pdf VIP
- 2025年全国国家版图知识竞赛(中小学组)题库及答案.doc
文档评论(0)