<rt id="bn8ez"></rt>
<label id="bn8ez"></label>

  • <span id="bn8ez"></span>

    <label id="bn8ez"><meter id="bn8ez"></meter></label>

    HelloWorld 善戰者,求之于勢,不責于人;故能擇人而任勢。

    知止而后有定,定而后能靜,靜而后能安,安而后能慮,慮而后能得。物有本末,事有終始。知所先后,則近道矣。

      BlogJava :: 首頁 ::  :: 聯系 ::  :: 管理 ::
      167 隨筆 :: 1 文章 :: 40 評論 :: 0 Trackbacks

    KMP算法

    KMP算法是一種改進的字符串匹配算法,此算法可以在O(n+m)的時間數量級上完成串的模式匹配操作,基本思想是,每當匹配過程中出現字符串比較不等時,不需回溯指針,而是利用已經得到的“部分匹配”結果將模式向右“滑動”盡可能遠的一段距離,據徐進行比較。

    定義:

    ① 要搜索的關鍵字符串 key K1K2......Km

    ② 被搜索的源字符串 source S1S2.....Sn

    針對要查找的關鍵字字符串構造失效函數f(s),該函數的功能就是在比較當K!= Sj的時候計算出從K的第多少個字符開始重新比較。

    使得K1K2...Kf(s)是最長的既是K1K2...Ks的的真前綴,又是K1K2...Ks的后綴的字串。也就是說如果我們試圖用一個文本串x匹配K1K2......Km并且我們已經匹配了前i個字符,但匹配Ki+1的時候失敗,也就是說x的下一個位置不是Ki+1,那么f(s)就是可能和我們當前位置為結尾的文本串匹配的最長的K1K2......Km的前綴和后綴y。也就是說文本x的下一個位置和Kf(s)比較,X當前位置之前的f(s)個字符和K1..Kf(s)是匹配的。所以直接從Kf(s)之后進行比較。

    算法如下:

    t = 0;

    f(1) = 0;

    for (i = 1; i < m; i++) {

    while(t > 0 && (Ki+1 != Kt+1)) t = f(t);

    if(Ki+1 == Kt+1) {

    t = t + 1;

    f(i+1) = t;

    } else f(i+1) = 0;

    }

    對于串"a b a b a a"的計算f(s)的過程如下:

    s

    f(s)

    當前字符串

    說明

    1

    0

    a

    無真前綴

    2

    0

    ab

    無真前綴

    3

    1

    aba

    "a"是"aba"的真前綴和后綴

    4

    2

    abab

    "ab"是"abab"的真前綴和后綴

    5

    3

    ababa

    "aba"是"ababa"的真前綴和后綴

    6

    1

    ababaa

    "a"是"ababaa"的真前綴和后綴

    針檢查S1S2.....Sn是否包含關鍵字K1K2......Km的算法

    s = 0;

    for (i = 1; i <= n i++) {   // 下標從1開始

    while (s > 0 && Si != Ks+1) s = f(s);

    if(Si == Ks+1) s = s + 1;

    if(s == n) return "yes";

    }

    return "no";



    </script>

    posted on 2010-03-21 01:14 helloworld2008 閱讀(291) 評論(0)  編輯  收藏 所屬分類: 數據結構和算法

    只有注冊用戶登錄后才能發表評論。


    網站導航:
     
    主站蜘蛛池模板: 国产精品亚洲不卡一区二区三区| 欧美日韩国产免费一区二区三区| 亚洲性日韩精品国产一区二区| 亚洲国产精品网站在线播放| 成人午夜大片免费7777| 亚洲天堂2016| 毛片免费观看的视频| 亚洲欧洲精品成人久久曰| 啦啦啦www免费视频| 自拍偷自拍亚洲精品播放| 免费观看国产小粉嫩喷水| 免费的黄色的网站| 国产91精品一区二区麻豆亚洲| 国产美女视频免费观看的网站| 亚洲国产精品成人精品无码区 | 激情综合亚洲色婷婷五月| 麻豆一区二区免费播放网站| 久久久国产亚洲精品| 四虎永久成人免费影院域名| 日韩a毛片免费观看| 亚洲日韩精品无码专区网址| 久久久久久免费一区二区三区| 亚洲色图在线观看| 在线观看AV片永久免费| 国产成人综合亚洲绿色| 中文字幕亚洲专区| 最近2019年免费中文字幕高清| 亚洲男人天堂2022| 亚洲综合亚洲综合网成人| 国产好大好硬好爽免费不卡| 亚洲五月综合网色九月色| 免费h黄肉动漫在线观看| 日本免费电影一区二区| 亚洲人成小说网站色| 亚洲国产精品成人久久蜜臀| 亚洲免费观看视频| 亚洲色中文字幕在线播放| 亚洲色精品aⅴ一区区三区| 国产在线a免费观看| 天堂亚洲免费视频| 亚洲无成人网77777|