亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

        基于散列函數(shù)的模式匹配算法

        2015-11-04 07:40:16周慶勛
        山東工業(yè)技術(shù) 2015年21期

        周慶勛

        摘 要:本文簡(jiǎn)要介紹了利用散列函數(shù)進(jìn)行模式匹配的原理,散列函數(shù)的構(gòu)造,給出了基于散列函數(shù)的模式匹配算法。

        關(guān)鍵詞:散列函數(shù);模式匹配;算法

        DOI:10.16640/j.cnki.37-1222/t.2015.21.196

        0 引言

        模式匹配是數(shù)據(jù)結(jié)構(gòu)中字符串的一種基本運(yùn)算,給定一個(gè)子串,要求在某個(gè)字符串中找出與該子串相同的所有子串,這就是模式匹配。

        假設(shè)P是給定的子串,T是待查找的字符串,要求從T中找出與P相同的所有子串,這個(gè)問題成為模式匹配問題。P稱為模式,T稱為目標(biāo)。如果T中存在一個(gè)或多個(gè)模式為P的子串,就給出該子串在T中的位置,稱為匹配成功;否則匹配失敗。

        模式匹配算法是文本處理領(lǐng)域中比較重要的算法,一個(gè)簡(jiǎn)單、高效率的模式匹配算法對(duì)提高和模式匹配有關(guān)的軟件的效率有很大幫助,本文介紹一種基于散列函數(shù)的模式匹配算法,該算法簡(jiǎn)單,易于理解且具有較高的效率。

        1 原理

        令模式記為x=x[0..m-1],長(zhǎng)度為m,文本串記為y=y[0..n-1],長(zhǎng)度為n。令算列函數(shù):hash(x[0..m-1]=x[0]*2m-1+x[1]*2m-2+…+x[m-1]) mod q(式中q為系統(tǒng)最大整型值)

        該散列函數(shù)具有以下特點(diǎn):

        1.1 易于計(jì)算

        1.2 易于從hash(y[i,i+m-1])計(jì)算hash(y[i+1,i+m])

        hash(y[i+1,i+m])=(( hash(y[i,i+m-1])-y[i]*2m-1)*2+y[i+m]) mod q

        為提高運(yùn)算速度,乘以2的操作可通過左移1位實(shí)現(xiàn),對(duì)于給定的模式x,2m-1是一個(gè)常數(shù)。在一個(gè)模式匹配的過程中,若模式x在文本y中出現(xiàn)的位置為i,則必定hash(x)=hash(y[i,i+m-1]),但要注意,hash(x)=hash(y[i,i+m-1])時(shí),x[0..m]和y[i,i+m-1]未必完全匹配。因此,模式匹配的過程就是hash(x)=hash(y[i,i+m-1])(其中i=0,1,…,n-m)逐個(gè)比較的過程,若hash(x)和hash(y[i,i+m-1]),則將x[0..m]和y[i,i+m-1]逐字符比較,若完全相等,則模式匹配的位置為i,否則不匹配,繼續(xù)比較hash(x)和hash(y[i+1,i+m]),直到匹配或比較結(jié)束為止。

        2 算法

        下面給出用C語言函數(shù)描述的具體算法

        int HashMatching(char *x,char *y, int n, int n)

        {

        int hash_x,hash_y,i,k,k1;

        k=1;

        for (i=1;i

        hash_x=0;

        hash_y=0;

        for (i=0;i

        {

        Hash_x=(hash_x<<1)+x[i];

        Hash_y=(hash_y<<1)+y[i];

        }

        for (i=0;i<=n-m;i++)

        if (hash_y==hash_x)

        {

        k1=0;

        while (k1

        if (x[k1]==y[i+k1])

        k1=k1+1;

        else

        break;

        if (k1==m) return i;

        }

        else

        hash_y=((hash_y-y[i]*k)<<1)+y[i+m];

        return -1

        }

        3 結(jié)語

        在預(yù)期情況下該算法的時(shí)間復(fù)雜度為O(n+m),在最壞情況下,該算法的時(shí)間復(fù)雜度為O(n*m)。盡管該算法在效率上不是最好,但算法簡(jiǎn)單,易于理解,在對(duì)時(shí)間復(fù)雜度要求不是很苛刻的環(huán)境下,還是一個(gè)簡(jiǎn)單高效的模式匹配算法。

        參考文獻(xiàn):

        [1]羅大光,郝玉潔,劉乃琦.一種非常快速的字符串匹配算法[J].電子科技大學(xué)學(xué)報(bào),2005,34(06):802-805.

        [2]嚴(yán)大治.字符串匹配算法比較與分析[J].計(jì)算機(jī)光盤軟件與應(yīng)用,2013(02):138-140.

        [3]嚴(yán)蔚敏,吳偉民.數(shù)據(jù)結(jié)構(gòu)(C語言版)[M].北京:清華大學(xué)出版社,1996:79-80.endprint

        在线观看免费视频发布白白色| 亚洲国产成人久久精品一区| 自拍偷区亚洲综合第一页| 少妇激情高潮视频网站| av网站在线观看亚洲国产| 亚洲精品国产av成拍| 激情五月开心五月麻豆| 激情伊人五月天久久综合| 国产乱码精品一区二区三区四川人| 性一交一乱一透一a级| 国产99久久亚洲综合精品 | 欧美性色欧美a在线播放| 无码gogo大胆啪啪艺术| 国产av麻豆mag剧集| 911国产精品| 欧美日韩精品一区二区三区高清视频| 免费无遮挡毛片中文字幕| 熟妇与小伙子露脸对白| 久久国产精品av在线观看| 人妻少妇不满足中文字幕| 亚洲av无码一区二区乱孑伦as| 97精品依人久久久大香线蕉97| 日本道免费精品一区二区| 亚洲一区二区三区乱码在线| 中文字幕文字幕视频在线| 日本久久久免费观看视频| 国产精品99久久久久久猫咪| 香蕉视频一级| 国产一区二区三区免费在线视频| 久久综合五月天啪网亚洲精品| 中国亚洲一区二区视频| 国产av永久无码天堂影院| 亚洲暴爽av人人爽日日碰| 亚洲乱码一区二区三区成人小说 | 国产成人av综合色| 青青草绿色华人播放在线视频| 久久99精品久久久久麻豆| 品色永久免费| 国产在线天堂av| 成年网站在线91九色| 巨茎中出肉欲人妻在线视频|