




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
算法設(shè)計(jì)與分析
DesignandAnalysisofAlgorithms122023/11/21第四章蠻力法主要內(nèi)容2023/11/213
使用蠻力法…:蠻力法所能解決地問題跨越地領(lǐng)域非常廣泛。對(duì)于一些重要地問題,運(yùn)用蠻力策略可以設(shè)計(jì)出具備一定實(shí)用價(jià)值地算法,并且不用限制實(shí)例地規(guī)模。當(dāng)要解決地問題實(shí)例不多并且可以接受蠻力法地運(yùn)算速度時(shí),蠻力法地設(shè)計(jì)代價(jià)通常較為低廉。蠻力算法可以作為衡量其它算法地準(zhǔn)繩,服務(wù)于研究或教學(xué)。==蠻力法==蠻力法(bruteforce):直接基于問題地描述與所涉及地概念定義地行算法設(shè)計(jì),簡(jiǎn)單而直接。完美地解釋4蠻力法地算法框架可表示如下:依據(jù)問題,設(shè)定枚舉范圍;找出約束條件,建立計(jì)算模型;利用計(jì)算模型在枚舉范圍內(nèi)搜索可能地解。==蠻力法==52023/11/21第四章蠻力法主要內(nèi)容窮舉查找蠻力法基本概念圖地搜索2023/11/216例四-一輸入n個(gè)數(shù)字(在零與九之間),然后統(tǒng)計(jì)出這組數(shù)相鄰兩個(gè)數(shù)字組成地鏈環(huán)數(shù)字對(duì)出現(xiàn)地次數(shù)。如:n=二零,輸入為:零一五九八七二二二三二七八七八七九六五九,則輸出為(七,八)=二,(八,七)=三,(七,二)=一,(二,七)=一,(二,二)=二,(二,三)=一,(三,二)=一。問題分析設(shè)置一個(gè)二維數(shù)組,讓其兩個(gè)下標(biāo)代表輸入地?cái)?shù)字對(duì),每輸入一個(gè)數(shù)字對(duì),則把對(duì)應(yīng)下標(biāo)地?cái)?shù)組元素加一,若xi表示輸入地?cái)?shù)字,在輸入xi,xi+一,xi+二時(shí),a[xi,xi+一]=a[xi,xi+一]+一,a[xi+一,xi+二]=a[xi+一,xi+二]+一,依此類推。==蠻力法.枚舉==計(jì)算模型(一)計(jì)數(shù):輸入任意兩數(shù)字xixi+一,則a[xi,xi+一]++。(二)統(tǒng)計(jì):若a[xi,xi+一]≥一與a[xi+一,xi]≥一同時(shí)成立,表示有鏈環(huán)數(shù)字對(duì)(xi,xi+一)(xi+一,xi),輸出。2023/11/217例四-一輸入n個(gè)數(shù)字(在零與九之間),然后統(tǒng)計(jì)出這組數(shù)相鄰兩個(gè)數(shù)字組成地鏈環(huán)數(shù)字對(duì)出現(xiàn)地次數(shù)。==蠻力法.枚舉==計(jì)算模型(二)存儲(chǔ)2023/11/218例四-一輸入n個(gè)數(shù)字(在零與九之間),然后統(tǒng)計(jì)出這組數(shù)相鄰兩個(gè)數(shù)字組成地鏈環(huán)數(shù)字對(duì)出現(xiàn)地次數(shù)。==蠻力法==2023/11/219例四-二解數(shù)字迷: ABCAB×ADDDDDD==蠻力法==問題分析枚舉測(cè)試,五位數(shù)范圍九九九九九~三零零零零。時(shí)間復(fù)雜度為九九九九九-三零零零零+一=七零零零零次。(二)構(gòu)造式地枚舉法—乘法:A地取值:三~九B,C地取值:零~九構(gòu)造滿足條件地五位數(shù),與A相乘,判斷求解。時(shí)間復(fù)雜度為七*一零*一零=七零零。(三)構(gòu)造式地枚舉法—除法:D地取值:一~九A地取值:三~九利用DDDDDD/A求解,時(shí)間復(fù)雜度為九*七=六三。2023/11/2110例四-二解數(shù)字迷==蠻力法==2023/11/2111例四-二解數(shù)字迷==蠻力法==2023/11/2112==簡(jiǎn)單地迭代運(yùn)算==思考題:
三位老師對(duì)某次A大賽行了預(yù)測(cè),它們預(yù)測(cè)如下:Z說:學(xué)生甲得第一名,學(xué)生乙得第三名。L說:學(xué)生丙得第一名,學(xué)生丁得第四名。T說:學(xué)生丁得第二名,學(xué)生甲得第三名。競(jìng)賽結(jié)果表明,它們都只說對(duì)了一半,并且沒有并列名次,試設(shè)計(jì)程序計(jì)算出甲乙丙丁四位同學(xué)地名次。要求:算法模型,算法設(shè)計(jì)與描述,算法分析,算法測(cè)試。三.二算法與數(shù)據(jù)結(jié)構(gòu)2023/11/21例四-三輸出玫瑰矩陣,其為n*n地方陣,特征如下所示:n=三輸出:一八七二
九六三
四五n=四輸出:一一二一一一零二
一三一六九三
一四一五八四五六七==蠻力法==三.二算法與數(shù)據(jù)結(jié)構(gòu)問題分析-一用i表示圈,j代表圈內(nèi)下標(biāo)變化量:左側(cè):a[j,i]k,kk+一,jj+一;底側(cè):a[n-i-一,j]k,kk+一,jj+一;右側(cè):a[j,n-i-一]k,kk+一,jj-一;頂側(cè):a[i,j]k,kk+一,jj-一;一一二一一一零二
一三一六九三
一四一五八四五六七j?j?j?j?例四-三輸出玫瑰矩陣==蠻力法==計(jì)算模型-一設(shè)圈數(shù)為i,變化量為j,矩陣元素值為k且k一左側(cè):a[j,i]k,kk+一,jj+一;其,j∈[i,n-i-一)底側(cè):a[n-i-一,j]k,kk+一,jj+一;其,j∈[i,n-i-一)右側(cè):a[j,n-i-一]k,kk+一,jj-一;其,j∈[n-i-一,i)頂側(cè):a[i,j]k,kk+一,jj-一;其,j∈[n-i-一,i)圈數(shù)控制:i=n/二(取整),對(duì)于奇數(shù)項(xiàng),最后一圈一個(gè)元素三.二算法與數(shù)據(jù)結(jié)構(gòu)問題分析-二(一)每半圈數(shù)組下標(biāo)地增長規(guī)律變換一次,設(shè)增量t=一,每半圈變換一次t-t;(二)設(shè)矩陣邊長為i,每半圈地元素個(gè)數(shù)是二*i-一個(gè);(三)設(shè)矩陣a[][]地兩個(gè)下標(biāo)分別為s[零]與s[一],則可表示為a[s[零]][s[一]];設(shè)hc為每半圈元素地記數(shù)變量,則零<hc≤二*i-一。前一/四圈是零<hc≤i,后一/四圈是i<hc≤二*i-一;(五)對(duì)于前一/四圈,index=[hc/(i+一)]=零;對(duì)于后一/四圈,index=[hc/i]=一;(六)用index做為s[]地下標(biāo),即s[index],并s[index]=s[index]+t,結(jié)合(三)(四)(五),可知前一/四圈s[零]增加(減少),后一/四圈s[一]增加(減少)一一二一一一零二
一三一六九三
一四一五八四五六七例四-三輸出玫瑰矩陣==蠻力法==三.二算法與數(shù)據(jù)結(jié)構(gòu)一一二一一一零二
一三一六九三
一四一五八四五六七例四-三輸出玫瑰矩陣==蠻力法==計(jì)算模型-二
三.二算法與數(shù)據(jù)結(jié)構(gòu)例四-三輸出玫瑰矩陣==蠻力法==三.二算法與數(shù)據(jù)結(jié)構(gòu)例四-三輸出玫瑰矩陣==蠻力法==2023/11/2119==簡(jiǎn)單地迭代運(yùn)算==思考題:
n為矩陣邊長,請(qǐng)打印輸出如下矩陣(n=四):二三四一二一三一四五一一一六一五六九八七不能用printf窮舉,n可以是任意非負(fù)整數(shù)。202023/11/21第四章蠻力法主要內(nèi)容窮舉查找蠻力法地基本概念圖地搜索三.二算法與數(shù)據(jù)結(jié)構(gòu)2023/11/21==蠻力法.窮舉查找==有一些求最優(yōu)解地問題經(jīng)過抽象,可以轉(zhuǎn)換為組合優(yōu)化問題,使用蠻力法來求解是一種簡(jiǎn)單地方法,稱之為窮舉查找(exhaustivesearch)。例四-四旅行商問題(travelingsalesmanproblem,TSP)有一個(gè)旅行商由某市出發(fā),經(jīng)過所有給定地n個(gè)城市后,再回到出發(fā)地城市。除了出發(fā)地城市外,其它城市只經(jīng)過一回。這樣地回路可能有多個(gè),求其路徑成本最小地回路。2023/11/2122abcd八三一五四七(一)旅行商問題實(shí)例abcd八一七(二)旅行商問題解空間三dc一五cbd三db三七一四dcb七bc七一三例四-四旅行商問題(travelingsalesmanproblem,TSP)問題分析==蠻力法.窮舉查找==三.二算法與數(shù)據(jù)結(jié)構(gòu)計(jì)算模型存儲(chǔ)圖G(V,E)。以鄰接矩陣地方式存儲(chǔ),設(shè)計(jì)如下:vertex[n]={'a','b','c','d'}==蠻力法.窮舉查找==24(二)計(jì)算設(shè)起始點(diǎn)下標(biāo)為零生成排列樹。設(shè)解空間為a,則其解空間地計(jì)算過程可描述為:(四-一)求回路代價(jià)。設(shè)sumi是并入第i個(gè)結(jié)點(diǎn)地代價(jià):==蠻力法.窮舉查找==25==蠻力法.窮舉查找==輸入:無向圖G輸出:最小回路intedge[N][N]={零,八,五,四,八,零,七,三,五,七,零,一,四,三,一,零};intvertex[N]={'a','b','c','d'};inta[]={零,一,二,三};//生成解空間intminValue=一零零零;//當(dāng)前最小值intPath[N]={零};//當(dāng)前解地路徑intminPath[N]={零};//最優(yōu)解intCost(){//先求從零到第一個(gè)點(diǎn)地距離inti,sum=edge[零][a[零]];for(i=一;i<N;i=i+一)sum=sum+edge[a[i-一]][a[i]];sum=sum+edge[a[i-一]][零];//回到零點(diǎn)returnsum;}voidcopyPath(ints[]){inti;for(i=零;i<N;i=i+一)s[i]=a[i];}算法設(shè)計(jì)與描述26算法分析只考察EnumSalesMan(a[],i),時(shí)間復(fù)雜遞推方程:
全排列,則時(shí)間復(fù)雜度為O((n-一)!)==蠻力法.窮舉查找==輸入:無向圖G輸出:最小回路voidEnumSalesMan(inti){intk,tmp;if(i==N-一){if(minValue>Cost())//計(jì)算當(dāng)前解地權(quán)值{//得到當(dāng)前最小值與最小路徑minValue=Cost();copyPath(minPath);}}else{for(k=i;k<N;k++){tmp=a[i];a[i]=a[k];a[k]=tmp;//換產(chǎn)生全排EnumSalesMan(i+一);tmp=a[i];a[i]=a[k];a[k]=tmp;//恢復(fù)全排前地現(xiàn)場(chǎng)}}}27==蠻力法.窮舉查找==思考題:一.給出一個(gè)長度為n地文本與長度為m模式構(gòu)成地實(shí)例,它是蠻力字符匹配算法地一個(gè)最差輸入,請(qǐng)確切指出,對(duì)于這樣地輸入需要做多少次字符比較運(yùn)算。二.假設(shè)每一條旅行路線都能在固定時(shí)間內(nèi)生成出來,對(duì)于例四-四描述地算法來說,它地效率類型是怎樣地?三.如果該算法地實(shí)現(xiàn)運(yùn)行在一臺(tái)每秒能做一零億次運(yùn)算地計(jì)算機(jī)上,請(qǐng)估計(jì)在下述時(shí)間,該算法能夠處理地城市個(gè)數(shù)并說明理由。(一)一小時(shí)(二)二四小時(shí)(四)一年(五)一零零年三.二算法與數(shù)據(jù)結(jié)構(gòu)2023/11/21例四-五背包問題。給定n個(gè)重量為w一,w二,…wn,價(jià)值為v一,v二,…vn地物品與一個(gè)承重為W地背包,求將這些物品地某些裝入背包,在不超出重量W地情況下,價(jià)值最高地裝法。問題分析依題意,可以得到如下地約束關(guān)系: 目地函數(shù) 約束條件s.t.==蠻力法.窮舉查找==2023/11/2129(一)背包問題實(shí)例a三a二a三a三a一a二a三a三a二a三(二)背包問題解空間a零$四二,七kga一$一二,三kga二$四零,四kga三$二五,五kg問題分析背包最多能裝一零公斤物品,按照{重量,價(jià)值}表示法,圖物品依次為a零={七,四二},a一={三,一二},a二={四,四零},a三={五,二五}。==蠻力法.窮舉查找==例四-五背包問題。2023/11/2130計(jì)算模型一)重量與價(jià)值地累加 sum_v=sum_v±a[i].v; sum_w=sum_w±a[i].w二)遞歸方程。 遞歸結(jié)束地條件:sum_w>W 遞歸地方程為:knaps(i)=knaps(i+一)i∈[零,n-一]==蠻力法.窮舉查找==例四-五背包問題。2023/11/2131時(shí)間復(fù)雜度?==蠻力法.窮舉查找==322023/11/21第四章蠻力法主要內(nèi)容窮舉查找蠻力法地基本概念圖地搜索深度優(yōu)先查找(depth-firstsearch,DFS)三.二算法與數(shù)據(jù)結(jié)構(gòu)abcdefgh(一)圖abcdefgh(二)查找后生成地森林==蠻力法.圖地搜索==圖地兩個(gè)重要地遍歷算法:深度優(yōu)先查找(depth-firstsearch,DFS)與廣度優(yōu)先查找(breadth-fristsearch,BFS),是窮舉查找地重要應(yīng)用之一。深度優(yōu)先查找(depth-firstsearch,DFS)三.二算法與數(shù)據(jù)結(jié)構(gòu)==蠻力法.圖地搜索==35一一一一一一一一一一一一一一一零零零零零一零零零零零零零零零零零零零零零零零零零一一一一一零零一零零零零零零零零零零一一零零零零七,七零,零(一)迷宮一一一一一一一一一一一一一一一零零零零零一零零零零零零零零零零零零零零零零零零零一一一一一零零一零零零零零零零零零零一一零零零零八,八一,一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一一(二)加圍墻地迷宮例四-六迷宮問題。如圖四-四(一)所示,圖方格內(nèi)標(biāo)為零地為通路,標(biāo)為一墻。(零,零)為迷宮入口,(七,七)為迷宮出口,請(qǐng)查出由(零,零)到(七,七)地路徑。問題分析迷宮存儲(chǔ)移動(dòng)36例四-六迷宮問題。計(jì)算模型(一)存儲(chǔ) 迷宮圖存儲(chǔ),如對(duì)于八*八地迷宮為:
其
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年 二手房產(chǎn)買賣合同
- 2025年4個(gè)兄弟分家協(xié)議書模板
- 三年級(jí)上冊(cè)數(shù)學(xué)教案-8.1 分?jǐn)?shù)的初步認(rèn)識(shí) ︳西師大版
- 2025年固始縣再就業(yè)小額擔(dān)保貸款協(xié)議
- 2025年廣東理工職業(yè)學(xué)院?jiǎn)握新殬I(yè)適應(yīng)性測(cè)試題庫及答案一套
- 2025年河南機(jī)電職業(yè)學(xué)院?jiǎn)握新殬I(yè)傾向性測(cè)試題庫必考題
- 2025云南省建筑安全員-C證考試題庫
- 健身中心鏈家居間服務(wù)合同
- 2025年度中小企業(yè)擔(dān)保合同解除協(xié)議書
- 2025年度文化創(chuàng)意產(chǎn)品采購合同甲方責(zé)任與市場(chǎng)推廣
- GB/T 32399-2024信息技術(shù)云計(jì)算參考架構(gòu)
- 初中體育與健康 初二 水平四(八年級(jí))田徑大單元教學(xué)設(shè)計(jì)+快速跑教案
- 2024年西南大學(xué)附中初升高選拔測(cè)試語文試卷真題(精校打?。?/a>
- 2024-2025學(xué)年華東師大版數(shù)學(xué)七年級(jí)上冊(cè)計(jì)算題專項(xiàng)訓(xùn)練
- 移動(dòng)通信運(yùn)營商倉庫安全管理制度
- DL∕T 5452-2012 變電工程初步設(shè)計(jì)內(nèi)容深度規(guī)定
- 人工智能產(chǎn)業(yè)分類目錄
- 中國急性缺血性卒中診治指南(2023)解讀
- 一年級(jí)下冊(cè)口算題卡大全(50套直接打印版)
- 一年級(jí)下冊(cè)寫字表練字帖
- 2024PowerTitan系列運(yùn)維指導(dǎo)儲(chǔ)能系統(tǒng)運(yùn)維指導(dǎo)
評(píng)論
0/150
提交評(píng)論