算法在信息学奥赛中的应用(搜索法二)在深度优先搜索算法中,深度越大的结点越先得到扩展,若把它改为深度越小的结点越先得到扩展,就是广度优先搜索法
广度优先搜索基本算法:programbfs;初始化;建立队列data;设队列首指针closed:=0;队列尾指针open:=1;repeatclosed增1,取出closed所指结点进行扩展;fori:=1tordobeginif子结点符合条件thenbeginopen增1,并把新结点存入数据库队尾;if新结点与原有结点有重复then删于该结点(open减1)elseif新结点即目标then输出并退出;end{if};end{for};untilclosed>=open;{队列为空}使用广度优先搜索时,离根结点最近的结点先扩展,所以广度优先搜索法比较适合求步数最少的解,由于深度优先使用了标志法,使得存储空间大大减少,而广度优先要保留所有搜索过的节点,随着搜索程度的加深,所需的存储空间成指数增加
因此在必要时我们采用双向搜索来减少搜索空间和存储空间,如下面的例子
广度优先算法应用例字串变换(NOIP2002tg)[问题描述]:已知有两个字串A$,B$及一组字串变换的规则(至多6个规则):A1$->B1$A2$->B2$规则的含义为:在A$中的子串A1$可以变换为B1$、A2$可以变换为B2$…
例如:A$='abcd'B$='xyz'变换规则为:‘abc’->‘xu’‘ud’->‘y’‘y’->‘yz’则此时,A$可以经过一系列的变换变为B$,其变换的过程为:‘abcd’->‘xud’->‘xy’->‘xyz’共进行了三次变换,使得A$变换为B$
[输入]:键盘输人文件名
文件格式如下:A$B$A1$B1$\A2$B2$|->变换规则
/所有字符串长度的上限为20
[输出]:输出至屏幕