日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

LD(Levenshtein distance)莱文斯坦距离----编辑距离

發布時間:2024/9/3 40 豆豆
生活随笔 收集整理的這篇文章主要介紹了 LD(Levenshtein distance)莱文斯坦距离----编辑距离 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

鏈接:https://ac.nowcoder.com/acm/contest/327/G
來源:牛客網
G處女座與復讀機
題目描述
一天,處女座在牛客算法群里發了一句“我好強啊”,引起無數的復讀,可是處女座發現復讀之后變成了“處女座好強啊”。處女座經過調查發現群里的復讀機都是失真的復讀機,會固定的產生兩個錯誤。一個錯誤可以是下面的形式之一:

  • 將任意一個小寫字母替換成另外一個小寫字母
  • 在任意位置添加一個小寫字母
  • 刪除任意一個字母
  • 處女座現在在群里發了一句話,他收到了一個回應,他想知道這是不是一個復讀機。



    /*
    算法簡介:
    萊文斯坦距離是兩個字符串序列的距離度量。形式化地說,是由一個單詞變為另一個單詞需要的最小編輯次數(編輯方式:插入,刪除,替換)。所以萊文斯坦距離也稱為編輯距離。
    定義:
    兩個字符串a,b之間的萊文斯坦距離為:
    如果
    min(i,j) = 0;
    levab(i,j) = max(i,j);
    {length_a = 0 || lenth_b = 0,levab(a,b) = max(length_a,length_b);}
    否則,
    t = min(levab(i-1,j)+1,levab(i,j-1)+1);
    levab = min( t,levab(i-1,j-1) + ( ai!= bj ) );
    {
    如果ai != bj,編輯數+1,否則+0;
    }
    為了實現上述定義,我們用dp[i][j]來存s1[1…i]變成s2[1…j]需要的最小編輯數
    得出公式:
    i = 0:
    dp[i][j] = j;
    j = 0:
    dp[i][j] = i;
    i,j都不為0:
    dp[i][j] = min(min(dp[i-1][j] + 1,dp[i][j-1] + 1),dp[i-1][j-1] + (s1[i] != s2[j] ) );
    公式理解:
    1.
    i == 0 || j==0好理解,有一個為空串,當然最小編輯數就是非空串的長度
    2.
    對于i,j都非零的情況,分三種情況:
    1)假設s1[1…i-1] 變換到s2[1…j]需要最小的操作數為dp[i-1][j] = k,那么對于dp[i][j] = k+1,那么s1i就多余了,只需將s1中s1i刪除
    2)假設s1[1…i] 變換到s2[1…j-1]需要最小的操作數為dp[i-1][j] = k,那么對于dp[i][j] = k+1,只需在s1中s1i后插入s2j
    3)假設s1[1…i-1] 變換到s2[1…j-1]需要最小的操作數為dp[i-1][j] = k,那么dp[i][j]可能需要編輯也可能不需要編輯,要看s1i 是否等于s2j,如果不相等,那就要把s1i替換成s2j,否則不需要編輯,所以dp[i][j] = k + (s1i!= s2j);

    */
    ac_code:

    #include <iostream> #include <string> #include <algorithm> using namespace std; int dp[105][105]; int main() {string s1,s2;while(cin>>s1>>s2){int length1 = s1.size(),length2 = s2.size();for(int i = 0; i < length1; i++)dp[i][0] = i;for(int j = 0; j < length2; j++)dp[0][j] = j;int temp;for(int i = 1; i <= length1; i++){for(int j = 1; j <= length2; j++){temp = min(dp[i-1][j],dp[i][j-1]) + 1;dp[i][j] = min(temp,dp[i-1][j-1]+(s1[i-1]!=s2[j-1]));}}if(dp[length1][length2] <= 2)cout<<"YES"<<endl;elsecout<<"NO"<<endl; }return 0; }

    總結

    以上是生活随笔為你收集整理的LD(Levenshtein distance)莱文斯坦距离----编辑距离的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。