版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
編輯距離問(wèn)題1題目描述假設(shè)字符串的基本操作僅為:刪除一個(gè)字符、插入一個(gè)字符和將一個(gè)字符修改成另一個(gè)字符這三種操作。
我們把進(jìn)行了一次上述三種操作的任意一種操作稱(chēng)為進(jìn)行了一步字符基本操作。
下面我們定義兩個(gè)字符串的編輯距離:對(duì)于兩個(gè)字符串a(chǎn)和b,通過(guò)上述的基本操作,我們可以把a(bǔ)變成b或b變成a,那么字符串a(chǎn)變成字符串b需要的最少基本字符操作步數(shù)稱(chēng)為字符串a(chǎn)和字符串b的編輯距離。
例如:a=“ABC”,b=“CBCD”,則a與b的編輯距離為2。
你的任務(wù)就是:編寫(xiě)一個(gè)快速的程序來(lái)計(jì)算任意兩個(gè)字符串的編輯距離。輸入輸入包含兩行:第一行為字符串A,第二行為字符串B。
字符串的長(zhǎng)度不大于10000,且全為字母。輸出輸出只有一行,為編輯距離。樣例輸入ABC
CBCD樣例輸出22題目分析乍一看仿佛是搜索,但仔細(xì)一想,這道題用搜索是不可能實(shí)現(xiàn)的(至少我是這么認(rèn)為的)。那么我們就要采取新的策略:動(dòng)態(tài)規(guī)劃。我們知道,所有的動(dòng)規(guī)問(wèn)題都是可以分段解決的,那么這道題也是如此。我們可以把長(zhǎng)的字符串拆解為短的字符串,一直拆解到只剩下一個(gè)字符為止。3動(dòng)態(tài)轉(zhuǎn)移方程的推導(dǎo)判斷啊a、b兩個(gè)字符的編輯距離十分簡(jiǎn)單:若a=b則編輯距離為0;反之則為1計(jì)算字符a與長(zhǎng)度為二的字符串b的編輯距離也不難:首先計(jì)算a與b[1]的編輯距離,記為f,再判斷a與b[2]是否相同,相同則最終編輯距離為f,不同則為f+1。若b的長(zhǎng)度大于2,則該規(guī)律依然成立。
注意:這里出現(xiàn)問(wèn)題了:假如a=‘a(chǎn)’,b=‘a(chǎn)a’,則它們的編輯距離應(yīng)為1,但通過(guò)上述計(jì)算得到的結(jié)果為0。4注意這里我們要明確一點(diǎn),對(duì)于任意兩字符串a(chǎn)、b,它們的編輯距離不可能小于它們的長(zhǎng)度之差的絕對(duì)值。因?yàn)閷?duì)于三種基本操作,它們對(duì)字符串長(zhǎng)度的影響為±1(插入和刪除)或0(修改)。
舉一個(gè)例子:a的長(zhǎng)度la=9,b的長(zhǎng)度lb=15
則a、b的編輯距離m≥abs(la-lb)
即m≥65動(dòng)態(tài)轉(zhuǎn)移方程的推導(dǎo)解決了上面一個(gè)問(wèn)題,我們繼續(xù)。
剛才我們已經(jīng)分析出了兩個(gè)字符的編輯距離和一個(gè)字符與一個(gè)字符串的編輯距離,接下來(lái)便是兩個(gè)字符串的編輯距離。假如a=‘a(chǎn)b’,b=‘cd’,則一眼就可以看出編輯距離m=2。這是沒(méi)有重復(fù)字母的情況下。但是如果有重復(fù)字母呢?
6動(dòng)態(tài)轉(zhuǎn)移方程的推導(dǎo)若a=‘a(chǎn)b’,b=‘bc’,則它們的編輯距離m=2若a=‘a(chǎn)b’,b=‘cb’,則它們的編輯距離m=1若a=‘a(chǎn)b’,b=‘a(chǎn)b’,則它們的編輯距離m=0若a=‘a(chǎn)bc’,b=‘cba’,則它們的編輯距離m=2若a=‘a(chǎn)bc’,b=‘cab’,則它們的編輯距離m=2若a=‘a(chǎn)bc’,b=‘bac’,則它們的編輯距離m=2若a=‘a(chǎn)bc’,b=‘bcd’,則它們的編輯距離m=2這有什么規(guī)律呢?7動(dòng)態(tài)轉(zhuǎn)移方程的推導(dǎo)我們把上面的幾種情況繪成表格:
8動(dòng)態(tài)轉(zhuǎn)移方程通過(guò)觀(guān)察表格我們可以發(fā)現(xiàn)以下規(guī)律:對(duì)于表格f,f[j,k]表示a的前j個(gè)字符到b的前k個(gè)字符的編輯距離①若a[j]≠b[k]
則f[j,k]為f[j-1,k-1]、f[j-1,k]、f[j,k-1]三個(gè)數(shù)中最小數(shù)+1②若a[j]=b[k]
則f[j,k]=f[j-1,k-1]最終結(jié)果為f[la,lb](la、lb為字符串長(zhǎng)度)9邊界問(wèn)題對(duì)于方程①
若j=1且k≠1則f[j,k]=f[j,k-1]+1
若k=1且j≠1則f[j,k]=f[j-1,k]+1
若j=1且k=1則f[1,1]=1對(duì)于方程②
若j=1且k≠1則f[j,k]=f[j,k-1]
若k=1且j≠1則f[j,k]=f[j-1,k]
若k=1且j=1則f[1,1]=010程序設(shè)定programbjjl;consti_f='bjjl.in';o_f='bjjl.out';maxx=10000;typesz=array[1..maxx]ofchar;dt=array[1..maxx,1..maxx]ofinteger;vara,b:sz;f:dt;la,lb,j,k:integer;{數(shù)組長(zhǎng)度}{存放字符串,string型存不到1萬(wàn)}{動(dòng)態(tài)規(guī)劃二維表}{a、b字符串}{動(dòng)規(guī)二維表}{la、lb字符串長(zhǎng)度,j、k循環(huán)控制變量}11min函數(shù)functionmin:integer;vart:integer;beginif(j=1)and(k=1)thenmin:=0elseifj=1thenmin:=f[j,k-1]elseifk=1thenmin:=f[j-1,k]elsebeginiff[j-1,k]>f[j,k-1]thent:=f[j,k-1]elset:=f[j-1,k];iff[j-1,k-1]<tthenmin:=f[j-1,k-1]elsemin:=t;end;end;{用于方程①}{t:臨時(shí)變量}{這三行是處理邊界問(wèn)題}{找最小}12fid函數(shù)functionfid:integer;vart:integer;beginif(j=1)and(k=1)thent:=0elseifj=1thent:=f[j,k-1]elseifk=1thent:=f[j-1,k]elset:=f[j-1,k-1];ift<abs(j-k)thenfid:=abs(j-k)elsefid:=t;end;{用于方程②}{t:臨時(shí)變量}{處理邊界問(wèn)題}{處理注意事項(xiàng)}13程序主體la:=0;lb:=0;repeatinc(la);read(a[la]);untileoln;readln(b[1]);repeatinc(lb);read(b[lb]);untileoln;forj:=1toladofork:=1tolbd
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版生產(chǎn)線(xiàn)生產(chǎn)線(xiàn)設(shè)備技術(shù)支持合作合同范本2篇
- 二零二五年度2025版車(chē)輛租賃合同違約責(zé)任條款3篇
- 二零二五年度智慧社區(qū)門(mén)衛(wèi)服務(wù)外包合同
- 二零二四年度藥房藥品推廣與廣告投放合同范本3篇
- 二零二五年度工業(yè)廢料資源化利用承包合同4篇
- 2025年乘用汽車(chē)租賃與出行方案定制合同2篇
- 二零二五年度能源互聯(lián)網(wǎng)項(xiàng)目投資與建設(shè)合同3篇
- 二零二五年度電子商務(wù)平臺(tái)代運(yùn)營(yíng)合同規(guī)范3篇
- 個(gè)人與企業(yè)之間租車(chē)合同(2024年)
- 二零二五年度2025版獼猴桃產(chǎn)業(yè)扶貧項(xiàng)目合作合同4篇
- 壞死性筋膜炎
- 2024輸血相關(guān)知識(shí)培訓(xùn)
- 整式的加減單元測(cè)試題6套
- 股權(quán)架構(gòu)完整
- 山東省泰安市2022年初中學(xué)業(yè)水平考試生物試題
- 注塑部質(zhì)量控制標(biāo)準(zhǔn)全套
- 人教A版高中數(shù)學(xué)選擇性必修第一冊(cè)第二章直線(xiàn)和圓的方程-經(jīng)典例題及配套練習(xí)題含答案解析
- 銀行網(wǎng)點(diǎn)服務(wù)禮儀標(biāo)準(zhǔn)培訓(xùn)課件
- 二年級(jí)下冊(cè)數(shù)學(xué)教案 -《數(shù)一數(shù)(二)》 北師大版
- 晶體三極管資料
- 銀行內(nèi)部舉報(bào)管理規(guī)定
評(píng)論
0/150
提交評(píng)論