歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

2019-2020年高中信息技術(shù) 全國青少年奧林匹克聯(lián)賽教案 搜索法二.doc

  • 資源ID:2564503       資源大小:22.50KB        全文頁數(shù):4頁
  • 資源格式: DOC        下載積分:9.9積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要9.9積分
郵箱/手機(jī):
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機(jī)號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

2019-2020年高中信息技術(shù) 全國青少年奧林匹克聯(lián)賽教案 搜索法二.doc

2019-2020年高中信息技術(shù) 全國青少年奧林匹克聯(lián)賽教案 搜索法二在深度優(yōu)先搜索算法中,深度越大的結(jié)點越先得到擴(kuò)展,若把它改為深度越小的結(jié)點越先得到擴(kuò)展,就是廣度優(yōu)先搜索法。廣度優(yōu)先搜索基本算法:program bfs;初始化;建立隊列data;設(shè)隊列首指針closed:=0;隊列尾指針open:=1;repeatclosed 增1,取出closed所指結(jié)點進(jìn)行擴(kuò)展; for i:=1 to r do begin if 子結(jié)點符合條件then begin open增1,并把新結(jié)點存入數(shù)據(jù)庫隊尾;if新結(jié)點與原有結(jié)點有重復(fù) then 刪于該結(jié)點(open減1)else if 新結(jié)點即目標(biāo) then 輸出并退出 ; endif; endfor;until closed>=open;隊列為空使用廣度優(yōu)先搜索時,離根結(jié)點最近的結(jié)點先擴(kuò)展,所以廣度優(yōu)先搜索法比較適合求步數(shù)最少的解,由于深度優(yōu)先使用了標(biāo)志法,使得存儲空間大大減少,而廣度優(yōu)先要保留所有搜索過的節(jié)點,隨著搜索程度的加深,所需的存儲空間成指數(shù)增加。因此在必要時我們采用雙向搜索來減少搜索空間和存儲空間,如下面的例子。廣度優(yōu)先算法應(yīng)用例 字串變換(NOIPxxtg)問題描述:已知有兩個字串 A$, B$ 及一組字串變換的規(guī)則(至多6個規(guī)則):A1$ -> B1$A2$ -> B2$ 規(guī)則的含義為:在 A$中的子串 A1$ 可以變換為 B1$、A2$ 可以變換為 B2$ 。例如:A$abcdB$xyz 變換規(guī)則為:abc->xuud->yy->yz則此時,A$ 可以經(jīng)過一系列的變換變?yōu)?B$,其變換的過程為:abcd->xud->xy->xyz 共進(jìn)行了三次變換,使得 A$ 變換為B$。輸入:鍵盤輸人文件名。文件格式如下:A$ B$A1$ B1$ A2$ B2$ |-> 變換規(guī)則. . /所有字符串長度的上限為 20。輸出:輸出至屏幕。格式如下:若在 10 步(包含 10步)以內(nèi)能將 A$ 變換為 B$ ,則輸出最少的變換步數(shù);否則輸出"NO ANSWER!"輸入輸出樣例b.in:abcd xyzabc xuud yy yz屏幕顯示:3算法分析:此題是求變換的最少步數(shù),很顯然可以使用廣度優(yōu)先搜索法,如果直接從初狀態(tài)搜到目標(biāo)狀態(tài),最壞情況下存儲的結(jié)點數(shù)超過6的10次方冪,搜索空間過大,因此我們考慮使雙向搜索,同時從初始狀態(tài)和目標(biāo)狀態(tài)向中間狀態(tài)搜索,當(dāng)相遇時搜索結(jié)束。采用雙向搜索,存儲的結(jié)點數(shù)還有可能超限,我們在前向搜索隊列中存儲5步內(nèi)變換的結(jié)點,在后向搜索隊列中,由于第5步產(chǎn)生的結(jié)點只是用來與前向隊列中的結(jié)點比較,所以可以不存儲在隊列中,后向搜索隊列只需存儲4步內(nèi)的結(jié)點,這樣就解決了存儲空間問題。為了使用方便,在程序設(shè)計中用一個數(shù)組a1.max存儲兩個隊列,前向搜索隊列為a1.mid,后向搜索隊列為amid.max,用st存儲搜索方向,st=0表示前向搜索,st=1表示后向搜索,用opst和clst分別表示隊列尾指針和首指針,用be表示隊列起始位置,循環(huán)產(chǎn)生每一個結(jié)點,若在10內(nèi)無解退出循環(huán),若在10內(nèi)找到解則輸出解并退出程序。源程序:const mid=1xx;max=16000;type node=record s:string;x:byte;end;var i,mark:integer; a:array 1.maxof node; x:array0.6,0.1of string20; d,fil:string; op,cl:array 0.1 of integer;procedure Init;讀取數(shù)據(jù),初始化var f:text;t:string;begin readln(fil); assign(f,fil);reset(f);i:=0; while not eof(f) do begin readln(f,t); xi,0:=copy(t,1,pos( ,t)-1); xi,1:=copy(t,pos( ,t)+1,length(t); inc(i); end;while mark:=i-1;close(f);end;判斷是否到達(dá)目標(biāo)狀態(tài)procedure bool(be,st:integer);begin for i:=mid-be+1 to cl1-st do if aclst.s=ai.s then begin writeln(aclst.x+ai.x); halt; end;ifend;判斷節(jié)點是否與前面的結(jié)點重復(fù)procedure check(be,st:integer);begin for i:=be+1 to clst-1 doif ai.s=aclst.s thenbegin dec(clst);exit; end; bool(be,st);end; 擴(kuò)展產(chǎn)生新節(jié)點procedure expand(be,st:integer);var i,j,k,lx,ld:integer;begin inc(opst);d:=aopst.s; k:=aopst.x;ld:=length(d); for i:=1 to mark do begin lx:=length(xi,st); for j:=1 to ld do begin if (copy(d,j,lx)=xi,st) then begin if (st<>1)or(k<>4)then begin inc(clst); new(aclst); end;if aclst.s:= copy(d,1,j-1)+ xi,1-st+ copy(d,j+lx,ld); aclst.x:=k+1; check(be,st);檢查是否重復(fù) end;if end;for end;forend;procedure bfs;var be,k,st:integer;Begin for st:=0 to 1 do begin if st=0 then be:=0 else be:=mid; opst:=be+0;clst:=be+1; new(aclst); aclst.s:=x0,st; aclst.x:=0; end;for repeat if (op0<cl0)and(acl0.x<=5)then expand(0,0); if (op1<cl1)and(acl1.x<=5)then expand(mid,1); until(op0>=cl0)or(acl0.x>5)or(op1>=cl1)or (acl1.x>5);End;BEGIN init;bfs;writeln(NO ANSWER!)END.兩種搜索算法的比較:搜索方式擴(kuò)展方式數(shù)據(jù)結(jié)構(gòu)適合求解的問題深度優(yōu)先后產(chǎn)生先擴(kuò)展??尚薪饣蛩薪鈴V度優(yōu)先先產(chǎn)生先擴(kuò)展隊列最優(yōu)解在選擇搜索方式時,并不是完全遵循以上原則,具體還是要根據(jù)題目的要求而定。在求最優(yōu)解時,如果搜索的深度不大,我們也可以考慮使用深度優(yōu)先搜索;在求解可行解時,如果搜索的深度沒有限制,或者搜索的代價與搜索的深度成正比,我們也應(yīng)該使用廣度優(yōu)先搜索。

注意事項

本文(2019-2020年高中信息技術(shù) 全國青少年奧林匹克聯(lián)賽教案 搜索法二.doc)為本站會員(tian****1990)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號:ICP2024067431-1 川公網(wǎng)安備51140202000466號


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺,本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng),我們立即給予刪除!