• <tr id="yyy80"></tr>
  • <sup id="yyy80"></sup>
  • <tfoot id="yyy80"><noscript id="yyy80"></noscript></tfoot>
  • 99热精品在线国产_美女午夜性视频免费_国产精品国产高清国产av_av欧美777_自拍偷自拍亚洲精品老妇_亚洲熟女精品中文字幕_www日本黄色视频网_国产精品野战在线观看 ?

    一種改進(jìn)的應(yīng)用于多模式串匹配的KR算法

    2018-03-02 08:04:15董志鑫李馨梅
    關(guān)鍵詞:個(gè)字符字符串哈希

    董志鑫, 李馨梅

    (1 哈爾濱工業(yè)大學(xué) 計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院, 哈爾濱 150001; 2 對(duì)外經(jīng)濟(jì)貿(mào)易大學(xué) 保險(xiǎn)學(xué)院, 北京 100029)

    引言

    KR算法[1]是一種直觀的基于某個(gè)散列函數(shù)的模式匹配算法,KR算法首先對(duì)模式串和文本中相同長(zhǎng)度的子串按哈希函數(shù)[2]求值,如果哈希值相同,則逐一比較模式串和子串。一個(gè)良好的哈希函數(shù),不同子串的哈希值相同的概率很小,且匹配速度快。KR算法理論上最壞情況下的時(shí)間復(fù)雜度是O(m×n),但實(shí)際應(yīng)用中平均時(shí)間復(fù)雜度是O(m+n)[3]。KR算法屬于暴力算法[4]的改進(jìn)型。KR算法設(shè)計(jì)的最初思想是考慮到每一次模式串在與目標(biāo)串進(jìn)行匹配時(shí)需要比較每一個(gè)字符,效率很低。而KR算法在每次比較時(shí),使用哈希函數(shù),分別計(jì)算出模式串以及目標(biāo)文本段的hash映射,通過比較映射哈希值是否相等來確定字符串。但是因?yàn)榇嬖趆ash沖突的可能性,所以在哈希值相同時(shí)還需進(jìn)一步比較字符串是否相同。在每次比較時(shí)需計(jì)算哈希值,所以選擇合適的哈希算法將尤為重要。

    1 常見的哈希函數(shù)分析

    哈希函數(shù)具有很多的用途,其中心思想是把一個(gè)大對(duì)象映射到另一個(gè)比較小的對(duì)象,可節(jié)省空間,以便于數(shù)據(jù)保存;或者進(jìn)行轉(zhuǎn)換,來加密原來的對(duì)象;或者在對(duì)字符串等數(shù)據(jù)研究處理后,便于查找、比較等功能實(shí)現(xiàn)。本文主要利用哈希函數(shù)應(yīng)用于字符串,來進(jìn)行字符串的比較[5]。

    1.1 哈希函數(shù)分類

    研究可知,哈希函數(shù)可以分為4類,現(xiàn)給出闡釋解析如下。

    (1)加法哈希函數(shù)[6]。就是把字符串中所有元素均加起來,這種方法不用考慮字符串中每個(gè)字符的順序,比較適合本文算法的要求。一般加法哈希函數(shù)的構(gòu)造如下:

    intadditiveHash(stringkey, intprime)

    {

    inthash,i;

    for (hash=key.length(),i= 0;i

    hash+=key.charAt(i);

    return (hash%prime);

    }

    其中,prime為一個(gè)比較大的素?cái)?shù),保證每個(gè)字符串的哈希值不會(huì)很大。

    (2)位運(yùn)算哈希函數(shù)[6]。就是利用移位或者異或等各種位運(yùn)算來處理輸入的字符串,此種方法在計(jì)算整個(gè)字符串的哈希值時(shí),都要對(duì)前期運(yùn)算得到的哈希值進(jìn)行位運(yùn)算,這是基于字符串中字符的順序來定制設(shè)計(jì)了,字符相同但位置順序不同的字符串經(jīng)過位運(yùn)算后得到的哈希值不同,不適用于本文中的算法。一般位運(yùn)算哈希函數(shù)的構(gòu)造如下:

    static introtatingHash(stringkey, intprime)

    {

    inthash,i;

    for (hash=key.length(),i= 0;i

    hash= (hash<<4)^(hash>>28)^key.charAt(i);

    return (hash%prime);

    }

    (3)乘除法哈希函數(shù)[7]。就是對(duì)字符串中的字符進(jìn)行乘除運(yùn)算,由此得到字符串的哈希值。一般乘法哈希函數(shù)的構(gòu)造如下:

    static introtatingHash(stringkey, intprime)

    {

    inthash,i;

    for (hash=key.length(),i= 0;i

    hash=hash*33 +key.charAt(i);

    return (hash%prime);

    }

    (4)混合哈希函數(shù)[8]。就是綜合利用上述方式進(jìn)行哈希運(yùn)算,得到字符串的哈希值。

    1.2 KR算法解析

    KR算法一般所使用的哈希函數(shù)算法為加法和乘法混合使用的算法,可以表示為:

    Hash(x[0,1,2,…,m-1])=(x[0]*2^(m-1)+x[1]*2^(m-2)+…+x[m-1]*2^0)

    對(duì)于模式串其哈希值是不變的,而目標(biāo)串每移動(dòng)一個(gè)字符需重新計(jì)算,即:

    Hash(x[i+1,i+2,…,i+m])=(Hash(x[i,i+1,…,i+m-1]) -x[i] * 2^(m-1)) *2+x[i+m]

    很明顯,該算法考慮了字符串中每個(gè)字符的順序,字符相同、順序不同的哈希值則不同,這與本文對(duì)KR算法改進(jìn)的思想不同,本文需要尋找一個(gè)不考慮字符順序的哈希函數(shù)設(shè)計(jì)方法。

    1.3 本文設(shè)計(jì)的哈希函數(shù)算法

    綜合分析了上述多種哈希算法,針對(duì)本文需求設(shè)計(jì)提出了如下的哈希函數(shù)算法。本算法的根本思想是利用加法哈希函數(shù),首先設(shè)計(jì)一個(gè)等比數(shù)列,公比和首項(xiàng)的選取根據(jù)模式串的規(guī)模和其中包含的不同字符數(shù)目來決定,模式串集合中每個(gè)字符對(duì)應(yīng)等比數(shù)列中的一項(xiàng),在計(jì)算整個(gè)模式串的哈希值時(shí),直接將對(duì)應(yīng)字符的哈希值相加得出的結(jié)果作為整個(gè)模式串的哈希值。設(shè)等比數(shù)列為arr[n],則:

    選取等比數(shù)列中的值作為模式串中每個(gè)字符的哈希值,是因?yàn)樵谙嗤?xiàng)數(shù)的情況下,等比數(shù)列的各項(xiàng)相加和不可能相等。本文借助計(jì)算機(jī)用暴力枚舉的方法進(jìn)行逐一列舉,并未發(fā)現(xiàn)哈希值相同的情況。

    2 DKR算法

    本文提出一種基于上述哈希算法的DKR算法,并運(yùn)用到多模式串匹配上。研究中,該算法能夠準(zhǔn)確地匹配到模式串,對(duì)比實(shí)驗(yàn)顯示了該算法的有效性。

    2.1 模式串的預(yù)處理

    2.1.1 預(yù)處理中的值設(shè)定

    首先對(duì)于模式串中出現(xiàn)的字符,選取包含整個(gè)模式串集所有字符的最大集合M,必須能涵蓋所有模式串中出現(xiàn)的所有字符,通常可選取ASCII碼集,記為集合H。對(duì)于互聯(lián)網(wǎng)上網(wǎng)址型數(shù)據(jù),URL只能使用英文字母、阿拉伯?dāng)?shù)字和某些標(biāo)點(diǎn)符號(hào),不能使用其他文字和符號(hào)。這是因?yàn)榫W(wǎng)絡(luò)標(biāo)準(zhǔn)RFC 1738[9]做出了硬性規(guī)定:只有字母和數(shù)字[0-9a-zA-Z]、一些特殊符號(hào)“$ - _ . + ! * ’ ( ) ,”[不包括雙引號(hào)]、以及某些保留字,才可以不經(jīng)過編碼直接用于URL。

    對(duì)集合H中的每個(gè)字符賦值,該值直接關(guān)系到哈希函數(shù)的好壞,本文選取字符對(duì)應(yīng)的ASCII碼值減去某固定值b,得到的值取另一個(gè)定值x(x>1)的次冪。減去固定值b是因?yàn)锳SCII碼表所對(duì)應(yīng)的某些字符一般不出現(xiàn)在模式串集合中,使得模式串字符集M中字符對(duì)應(yīng)的哈希值都比較小,避免出現(xiàn)較大數(shù)的情況。針對(duì)不同的模式串集合,值b可以變化。本文在處理數(shù)據(jù)時(shí),采用了ASCII碼集作為模式串的字符集合,因?yàn)锳SCII碼表中,用十進(jìn)制數(shù)表示字符,則0~31及127(共33個(gè))是控制字符或通信專用字符,這些不出現(xiàn)在模式串中,而且32代表的空格,也不會(huì)出現(xiàn)在模式串中,所以在ASCII碼表中,模式串中代表數(shù)字最小的字符為嘆號(hào)(!),其所代表的數(shù)字為33,因此在本文的實(shí)驗(yàn)測(cè)試中,固定值b取33。

    對(duì)于x的取值,不僅關(guān)系到每個(gè)字符對(duì)應(yīng)哈希值大小,而且還涉及到運(yùn)算是否簡(jiǎn)便。x取2時(shí)進(jìn)行冪運(yùn)算的花費(fèi)時(shí)間較少,但是會(huì)造成部分字符對(duì)應(yīng)的哈希值太大。此時(shí)應(yīng)該調(diào)取mod(k)函數(shù),k為一個(gè)較大的素?cái)?shù),保證在字符集M中的每個(gè)字符都可得到一個(gè)合理且不相同的哈希值,并盡量保證不同字符的哈希值相加結(jié)果不同。

    這里,基于上一節(jié)中設(shè)計(jì)的哈希函數(shù),研究將選取等比數(shù)列,計(jì)算出字符集M中的字符個(gè)數(shù)m,確定等比數(shù)列公比q,生成首項(xiàng)為1,公比為q的等比數(shù)列,并選取前m項(xiàng),由此構(gòu)成的集合S作為模式串字符集M對(duì)應(yīng)的哈希值集合。根據(jù)上述分析可知,集合S中任意相同數(shù)量的項(xiàng)相加和均不相同,所以對(duì)于每個(gè)字符所對(duì)應(yīng)等比數(shù)列中具體哪一項(xiàng),不用考慮順序。而且,還可依據(jù)目標(biāo)文本發(fā)生動(dòng)態(tài)改變。對(duì)于目標(biāo)文本中出現(xiàn)次數(shù)較多的字符可以選用等比數(shù)列中位置排前的項(xiàng),對(duì)應(yīng)的哈希值較小,有利于計(jì)算機(jī)的求值,可進(jìn)一步減少運(yùn)算時(shí)間;對(duì)于出現(xiàn)較少的字符選用等比數(shù)列中相對(duì)偏后的項(xiàng),字符對(duì)應(yīng)的哈希值較大。

    2.1.2 求得基準(zhǔn)長(zhǎng)度PLBase

    研究中,求出模式串集合P中最短和最長(zhǎng)模式串的長(zhǎng)度,分別記為PLmin和PLmax;若PLmax-PLmin<10(該值表示最短模式串長(zhǎng)度和最長(zhǎng)模式串長(zhǎng)度相差不大),對(duì)模式串集合P中的模式串長(zhǎng)度大于PLmin的取前PLmin個(gè)字符,若前PLmin個(gè)字符與之前某個(gè)模式串的前PLmin個(gè)字符相同或者字符對(duì)應(yīng)的哈希值不計(jì)順序相加結(jié)果值相同,則從該模式串的第二個(gè)字符開始選取PLmin個(gè)字符;若仍與之前某個(gè)模式串的前PLmin個(gè)字符相同或者字符哈希值之和相同,則從該模式串的第三個(gè)字符開始選取PLmin個(gè)字符,依此類推,直到選取出模式串PLmin長(zhǎng)度的代表段所對(duì)應(yīng)的哈希值均不相同。

    對(duì)于最短模式串長(zhǎng)度和最長(zhǎng)模式串長(zhǎng)度相差比較大的情況,研究采取另一種方法,對(duì)其展開論述如下。

    對(duì)每個(gè)模式串的長(zhǎng)度進(jìn)行統(tǒng)計(jì),選取出現(xiàn)頻率最高的模式串長(zhǎng)度記為PLbase。把小于PLbase長(zhǎng)度的模式串與大于等于PLbase長(zhǎng)度的模式串分類,各自存儲(chǔ)起來,而且并行地開啟模式串匹配識(shí)別流程。對(duì)于小于PLbase長(zhǎng)度的字符串,按照上述方法,選取這些模式串中的最短長(zhǎng)度,記為PLmin,繼續(xù)按照上述方法進(jìn)行處理,得到每個(gè)模式串的哈希值。對(duì)于不小于PLbase長(zhǎng)度的模式串,以PLbase為基準(zhǔn),選取前PLbase個(gè)字符,若前PLbase個(gè)字符與之前某個(gè)模式串的前PLbase個(gè)字符相同或者字符所對(duì)應(yīng)的哈希值不計(jì)順序相加結(jié)果值相同,則從該模式串的第二個(gè)字符開始選取PLbase個(gè)字符;若仍與之前某個(gè)模式串的前PLbase個(gè)字符相同或者字符哈希值之和相同,則從該模式串的第三個(gè)字符開始選取PLbase個(gè)字符,依此類推,直到選取出模式串PLbase長(zhǎng)度的代表段所對(duì)應(yīng)的哈希值均不相同,此時(shí)選出的PLbase個(gè)字符串段代表原模式串段。在匹配時(shí),首先匹配代表段,若代表段相同,再匹配代表段所對(duì)應(yīng)的原模式串,兩次匹配成功才能完成匹配。

    不失規(guī)范性,將上述2種方法中的PLmin和PLbase統(tǒng)稱為PLbase。方法不變,則將利于后續(xù)文章的書寫。同時(shí)為了方便上述的處理,對(duì)模式串進(jìn)行存儲(chǔ)時(shí),增加存儲(chǔ)模式串的長(zhǎng)度,并在新增、修改模式串時(shí),一并新增或更改模式串長(zhǎng)度的數(shù)值,這樣在預(yù)處理時(shí)就可對(duì)模式串的長(zhǎng)度做出整合統(tǒng)計(jì),選取出現(xiàn)次數(shù)最多的模式串長(zhǎng)度,以及最長(zhǎng)、最短的長(zhǎng)度,不僅實(shí)效便捷,而且不會(huì)增加太多存儲(chǔ)空間。

    2.1.3 哈希值的研究設(shè)定

    經(jīng)過上述處理后,按照集合M中字符對(duì)應(yīng)的哈希數(shù)值,對(duì)每個(gè)模式串中包含的字符對(duì)應(yīng)數(shù)值不計(jì)順序相加,得到每個(gè)模式串對(duì)應(yīng)的哈希值,盡可能地實(shí)現(xiàn)每個(gè)模式串對(duì)應(yīng)的哈希值唯一。若不唯一,可采取3種方法進(jìn)行處理使哈希值唯一,執(zhí)行方法具體如下:

    (1)對(duì)字符集合M重復(fù)賦值,在上述賦值的基礎(chǔ)上每個(gè)值再乘以(或除以)一個(gè)相同的素?cái)?shù),或者對(duì)每一個(gè)值都乘以一個(gè)不同的素?cái)?shù)。

    (2)調(diào)整變換字符集M所對(duì)應(yīng)的等比數(shù)列集合S,進(jìn)行更改,更改等比數(shù)列的公比q,在(1,2)之間進(jìn)行取值。

    (3)對(duì)具有相同哈希值的模式串,若這些模式串的長(zhǎng)度大于基準(zhǔn)長(zhǎng)度PLbase,按照上述選取方法,繼續(xù)后移一位選取PLbase長(zhǎng)度的標(biāo)志字符段,直到各個(gè)模式串的哈希值不同。

    若經(jīng)過前述3種方法仍然無法避免每個(gè)模式串的哈希值不同,那就先按相同來檢控處理,當(dāng)與目標(biāo)文本匹配成功時(shí),再多比較一步,看具體與哪個(gè)模式串相同,但此種情況的概率較低,在本文實(shí)驗(yàn)中還并未出現(xiàn)。

    最終,模式串集合P有一個(gè)對(duì)應(yīng)的哈希值表PH。然后求出每個(gè)模式串前半段和后半段對(duì)應(yīng)的哈希值hash_half_before和hash_half_after,仍然保存在表PH中。當(dāng)模式串長(zhǎng)度為奇數(shù)時(shí),即PLbase是奇數(shù)時(shí),在選擇半段(前后半段的統(tǒng)稱)長(zhǎng)度時(shí),取PLbase/2整數(shù)部分加1;當(dāng)PLbase為偶數(shù)時(shí),直接取PLbase/2。這種做法就使得與目標(biāo)串段匹配時(shí),只考慮包含大于等于模式串50%的部分,保證算法的有效性。

    接下來,將繼續(xù)求出包含該模式串前半段或者后半段的具有PLbase長(zhǎng)度的最小哈希值MinH,即選取包含前半段的最小值和包含后半段的最小值中的最小的那個(gè)記為MinH。設(shè)該半段的長(zhǎng)度為L(zhǎng)_half,對(duì)于PLbase-L_half部分用字符集H中具有最小哈希值的字符來補(bǔ)充,這樣補(bǔ)全的長(zhǎng)度為PLbase的字符串的哈希值即為MinH,該哈希值一定是包含該半段模式串的任何字符串中具有的最小哈希值,因?yàn)槿绻麆e的字符串包含該半段,則其余部分肯定具有大于最小哈希值的字符,那最終的哈希值肯定不是最小哈希值MinH。這樣保證在匹配時(shí),只要該目標(biāo)段的哈希值比最小哈希值MinH小,則該目標(biāo)段就必然不能與該模式串匹配,將該模式串記為無效,在對(duì)該目標(biāo)段進(jìn)行的后續(xù)匹配中,無需比較無效的模式串。而后將hash_half_before,hash_half_after,MinH三個(gè)值均保存在表PH中。如果用結(jié)構(gòu)體表示模式串的每個(gè)屬性,則該結(jié)構(gòu)體如下:

    struct _pattern_data

    {

    unsigned chardata[MAX_PATTERN_LEN];

    //模式串

    unsigned chardata[MAX_PATTERN_LEN];

    //模式串代表段

    intlen; //模式串長(zhǎng)度

    doublehash; //模式串哈希值

    doublehash_half_min;

    //包含模式串半段的最小哈希值

    doublehash_half_befor;

    //模式串前半段的哈希值

    doublehash_half_after;

    //模式串的后半段的哈希值

    intflag_is_useful;

    //模式串在當(dāng)前匹配時(shí),是否有效

    } pattern_data ;

    首先利用上述算法計(jì)算出每個(gè)模式串的哈希值,再利用上述數(shù)據(jù)結(jié)構(gòu)來存儲(chǔ)每個(gè)模式串的信息,對(duì)模式串施以統(tǒng)一的預(yù)處理后,將相關(guān)信息進(jìn)行存儲(chǔ),以備后續(xù)使用。

    2.2 目標(biāo)串的處理與匹配

    引理1對(duì)于長(zhǎng)度為m的字符串Str,將其分成2個(gè)字符串Str1和Str2,則Str1或者Str2至少有一個(gè)其中包含不少于50%的Str中的字符個(gè)數(shù)。該引理可用反證法證明。

    證明假設(shè)Str1和Str2沒有一個(gè)包含不少于50%的Str的字符個(gè)數(shù)。

    設(shè)Str1包含a%的字符個(gè)數(shù),Str2包含b%的字符個(gè)數(shù)(a% < 50%,b% < 50%)。

    則a%+b% < 100%,這與字符串Str分成兩個(gè)字符串Str1和Str2矛盾。

    所以,該理論為真。

    根據(jù)引理1可知,任何一個(gè)模式串只要被包含在目標(biāo)串中,目標(biāo)串的PLbase劃分中一定有一個(gè)分段包含該模式串至少50%的字符,運(yùn)用該引理,對(duì)目標(biāo)串T進(jìn)行PLbase劃分,對(duì)于每個(gè)劃分設(shè)立一個(gè)變量p,表示該劃分包含模式串的概率。然后根據(jù)2.1節(jié)中字符集M中字符對(duì)應(yīng)的哈希數(shù)值表,對(duì)每個(gè)劃分求取哈希值B。將哈希值B與模式串的哈希值A(chǔ)進(jìn)行比較,分析處理過程如下:

    (1)若與某個(gè)值A(chǔ)相等,則將該劃分的概率p設(shè)為100%,并將該劃分與哈希值為A的模式串進(jìn)行比較,若2個(gè)字符串相等,則進(jìn)一步驗(yàn)視該模式串是否為模式串的代表段。若是代表段,則還要續(xù)接與原模式串的設(shè)計(jì)匹配,因?yàn)樵J酱L(zhǎng)度肯定比劃分的長(zhǎng)度(PLbase)大,此時(shí)應(yīng)在該劃分后面繼續(xù)比較,一直比較到某個(gè)字符與原模式串不同,或者匹配到原模式串長(zhǎng)度后,則表示匹配成功,繼續(xù)下一劃分的匹配。

    (2)否則,與表PH中的最小哈希值hash_half_min進(jìn)行比較,若小于該表中的某個(gè)模式串的最小哈希值,則將該劃分在當(dāng)前匹配中的有效性flag_is_useful置為無效,表示該劃分不包含該模式串不小于50%部分,后續(xù)無需對(duì)該劃分處理時(shí)考慮該模式串。

    (3)對(duì)該劃分從第一個(gè)字符開始計(jì)算前PLbase/2個(gè)字符的哈希值,將此哈希值與模式串前后半段的哈希值(hash_half_befor和hash_half_after)進(jìn)行比較,若與某個(gè)模式串前半段的哈希值相等,則將該劃分的PLbase/2個(gè)字符與這些字符后的PLbase/2個(gè)字符進(jìn)行相連,然后與該模式串進(jìn)行比較,若相等則匹配成功,否則匹配失敗,從下一字符開始繼續(xù)計(jì)算PLbase/2個(gè)字符的哈希值,繼續(xù)按照上述方法進(jìn)行比較,直至該劃分的第PLbase/2個(gè)字符時(shí)比較終止,停止該劃分比較,繼續(xù)下一劃分的匹配。舉例說明如下。

    假設(shè)目標(biāo)串T為12345abcdefghij67890,劃分段Tk為abcdefghij,詳細(xì)過程可闡釋為:

    (1)首先計(jì)算Tk的哈希值Hash(Tk),與每個(gè)模式串的哈希值比較,若與模式串Px相同,則分析Px是否為原模式串。若為原模式串,則判斷Tk與Px是否相同,得出匹配結(jié)果;若Px不是原模式串,則將原模式串與目標(biāo)串劃分段及其后續(xù)字符(67890部分)進(jìn)行比較,比較時(shí)保證2個(gè)字符串長(zhǎng)度相同。

    (2)若Tk的哈希值Hash(Tk)小于模式串Py的最小哈希值,則將該模式串的有效位置為無效。

    (3)選取Tk的前PLbase/2個(gè)字符abcde,計(jì)算這5個(gè)字符的哈希值H_temp,將H_temp與每個(gè)模式串前后半段的哈希值(hash_half_befor和hash_half_after)進(jìn)行比較,若與某個(gè)模式串Pz的前半段相等,則將字符a的前面的PLbase/2個(gè)字符12345,與字符abcde相連,構(gòu)成字符串12345abcde,與模式串Pz進(jìn)行比較,若相同,匹配成功,繼續(xù)下一劃分匹配;若與某個(gè)模式串Pz的后半段相等,則將最后一個(gè)字符e后續(xù)的PLbase/2個(gè)字符fghij,與字符abcde相連,構(gòu)成字符串a(chǎn)bcdefghij,與模式串Pz進(jìn)行比較,若相同,匹配成功,繼續(xù)下一劃分匹配。否則,繼續(xù)從第二個(gè)字符b開始,選取PLbase/2個(gè)字符bcdef這5個(gè)字符,計(jì)算相應(yīng)的哈希值,進(jìn)行同樣的比較,一直到目標(biāo)串結(jié)束。

    因?yàn)楦鶕?jù)引理1,若目標(biāo)串存在模式串,必然有一個(gè)劃分包含大于等于50%的模式串,因此只需考慮每次單元?jiǎng)澐值?0%,在這個(gè)劃分的50%里沒有查到,就不可能存在該劃分中,因而將繼續(xù)在下一個(gè)劃分中查找,則無需查找該劃分中全部的字符。

    按照上述方法從目標(biāo)串第一劃分開始處理,一直到最后一個(gè)劃分,若最后一個(gè)劃分小于PLbase長(zhǎng)度,則直接可以不用比較。原因在于此時(shí)模式串的長(zhǎng)度都大于該劃分,故而不再存在匹配的情況。

    2.3 算法分析

    本文提出的針對(duì)多模式串的匹配算法,與AC自動(dòng)機(jī)算法[10]相比,首先在空間復(fù)雜度上就具有顯著優(yōu)勢(shì)。本算法的空間復(fù)雜度為O(n),而AC自動(dòng)機(jī)算法的空間復(fù)雜度則為指數(shù)級(jí)的。并且無論將如何優(yōu)化,AC自動(dòng)機(jī)算法都很難達(dá)到本算法的空間復(fù)雜度。

    在時(shí)間復(fù)雜度方面,本算法也具有突出優(yōu)勢(shì),主要探討解析如下。

    2.3.1 預(yù)處理上的時(shí)間復(fù)雜度分析

    本文研究中主要是對(duì)模式串進(jìn)行預(yù)處理,設(shè)模式串個(gè)數(shù)為m,模式串的平均長(zhǎng)度為基準(zhǔn)長(zhǎng)度,即PLbase。過程中涉及指定的操作主要有統(tǒng)計(jì)模式串中所有出現(xiàn)的字符,構(gòu)成字符集M,時(shí)間復(fù)雜度為O(m*PLbase);統(tǒng)計(jì)每個(gè)模式串的長(zhǎng)度,時(shí)間復(fù)雜度為O(m);選取出現(xiàn)最多的長(zhǎng)度PLbase,時(shí)間復(fù)雜度為O(m);計(jì)算每個(gè)模式串的哈希值、模式串前后半段的哈希值、模式串對(duì)應(yīng)的最小哈希值,這3項(xiàng)操作的時(shí)間復(fù)雜度均為O(m*PLbase),所以預(yù)處理最終的時(shí)間復(fù)雜度為O(m*PLbase)。

    2.3.2 匹配過程的時(shí)間復(fù)雜度分析

    對(duì)于每一個(gè)文本段,本算法在實(shí)際的運(yùn)用中都會(huì)有多個(gè)模式串無需送入驗(yàn)證比較。因?yàn)樵趯?duì)每一段目標(biāo)串進(jìn)行處理時(shí),首先計(jì)算該目標(biāo)串段的哈希值,如果該目標(biāo)串段的哈希值比某個(gè)模式串所對(duì)應(yīng)的最小哈希值還小,則該模式串對(duì)于本目標(biāo)段不會(huì)匹配成功,屬于無效模式串,在處理本目標(biāo)串段時(shí)可以忽略該模式串。

    假設(shè)每次無需比較的模式串為h個(gè),目標(biāo)串長(zhǎng)度為n,模式串的基準(zhǔn)長(zhǎng)度為p,則完成一次匹配,可優(yōu)化減少的匹配次數(shù)為hn/p次。相對(duì)于每個(gè)字符均需比較的情況,本算法可以減少的比較次數(shù)占總比較次數(shù)比值為h/p。在實(shí)際的測(cè)試中該比值并不小,在本次研究測(cè)試中,該比值平均為24.49%。

    在比較的過程中,每次以模式串基準(zhǔn)長(zhǎng)度PLbase為標(biāo)準(zhǔn)長(zhǎng)度,即目標(biāo)文本段的長(zhǎng)度,對(duì)各段每次需要比較PLbase次,獲得目標(biāo)文本段加上前后目標(biāo)文本段的后半段和后個(gè)目標(biāo)文本段的前半段之后的總文本段,對(duì)其計(jì)算哈希值,也就是計(jì)算PLbase個(gè)長(zhǎng)度為PLbase的目標(biāo)文本段的哈希值,經(jīng)過與上述第一步后仍然有效的模式串哈希值進(jìn)行比較,比較結(jié)束后每次跳躍PLbase個(gè)長(zhǎng)度。相較于AC自動(dòng)機(jī)算法,本算法每次跳躍的距離很大,因?yàn)樵谔幚砟繕?biāo)串時(shí)的方法原理不同,不能只是簡(jiǎn)單地比較跳躍距離,還應(yīng)計(jì)算一個(gè)長(zhǎng)度為n的目標(biāo)串,2個(gè)算法將調(diào)用展開的比較次數(shù)。設(shè)模式串個(gè)數(shù)為m個(gè),模式串平均長(zhǎng)度為L(zhǎng),目標(biāo)串長(zhǎng)度為n,研究可得分析過程如下。

    2.3.2.1 最壞情況下比較

    AC自動(dòng)機(jī)算法的最壞情況下比較次數(shù)C為:

    C=m*n*L

    (1)

    DKR算法的最壞情況下比較次數(shù)C為:

    C=m*n/L

    (2)

    如果再加上求取哈希值所使用的加法運(yùn)算,把加法運(yùn)算與比較運(yùn)算都算作一次運(yùn)算的情況下(因?yàn)樵趨R編語言指令下都是一個(gè)操作,而且實(shí)質(zhì)上比較大小是做減法),DKR算法的最壞情況下比較次數(shù)C為:

    C= (L*L/4+2m) *n/ 2L

    (3)

    基于前文探討結(jié)果,對(duì)其給出說明如下。在加法運(yùn)算與比較運(yùn)算都算作一次運(yùn)算的前提下,此時(shí)將PLbase基準(zhǔn)模式串長(zhǎng)度看作模式串平均長(zhǎng)度L,則目標(biāo)串總共可分為n/L段,對(duì)于每一目標(biāo)段只需計(jì)算該段的前半段哈希值。因?yàn)楦鶕?jù)引理1的結(jié)論,模式串若存在目標(biāo)段中,對(duì)于任意目標(biāo)段肯定有一段是包含不少于一半模式串,研究只考慮半段即可。對(duì)于每一段目標(biāo)串,都要計(jì)算L/2個(gè)字符相加得到哈希值,對(duì)于該半段中以每個(gè)字符開頭的PLbase/2長(zhǎng)度的段,都要計(jì)算哈希值,統(tǒng)共要計(jì)算L/2次。所以,加法運(yùn)算的運(yùn)算次數(shù)為L(zhǎng)*L/ 4。計(jì)算出哈希值后,需要與模式串的前后半段的哈希值設(shè)定比較,對(duì)于m個(gè)模式串每段就需要比較2*m次。

    從上述3個(gè)公式可以發(fā)現(xiàn),在不考慮加法運(yùn)算的情況下,只要L>1,公式(1)中比較次數(shù)C就大于公式(2)中的比較次數(shù)。考慮加法運(yùn)算后,只需要在L*L> 8*m/ (8*m-1)時(shí),公式(3)中的比較次數(shù)C就小于公式(1)的比較次數(shù),即DKR算法的比較次數(shù)小于AC自動(dòng)機(jī)算法的比較次數(shù)。因?yàn)樵谶\(yùn)行實(shí)踐中,無論m多大,L*L都會(huì)遠(yuǎn)大于8*m/ (8*m-1)。所以,在最壞情況下,DKR算法的比較次數(shù)明顯小于AC自動(dòng)機(jī)算法,即DKR算法的時(shí)間復(fù)雜度明顯優(yōu)勝于AC自動(dòng)機(jī)算法。

    2.3.2.2 一般情況下比較

    AC自動(dòng)機(jī)算法在匹配過程中存在可跳躍的情形,從而達(dá)到減少比較次數(shù)的目的。跳躍的情況,則根據(jù)不同的模式串有不同的情況。在最優(yōu)的情況下,時(shí)間復(fù)雜度可以達(dá)到O((m+n)L)。

    DKR算法在匹配過程中對(duì)每段不同的目標(biāo)文本段,都包含不用比較的模式串個(gè)數(shù),而當(dāng)目標(biāo)串與文本串差別較大時(shí),算法效率則將提升。理想情況,每次只剩下一個(gè)模式串,即命中模式串,無需與別的模式串比較。至于匹配成功的目標(biāo)串的前半段比較就相等,即2*m= 1,此時(shí)算法效率極高,時(shí)間復(fù)雜度為O((L/8+1 /8*L)*n),約為O(n*L/8)。

    存在直接找到的情況也并不少見,即目標(biāo)串劃分的哈希值與模式串哈希值相同,但卻非一定是匹配成功,需要再次驗(yàn)證一次即可,而且可能存在順序不同,因?yàn)楸竟:瘮?shù)不考慮順序問題。最高出現(xiàn)次數(shù)的模式串長(zhǎng)度PLbase,所以不論什么樣的文本都有很高的幾率,即使只有1%的機(jī)會(huì)直接命中,對(duì)于分類型數(shù)據(jù)的效率提升也相當(dāng)高。

    本算法自動(dòng)包含壞字符規(guī)則,對(duì)于并未在字符集中出現(xiàn)的字符,則沒有相關(guān)的哈希值與該字符對(duì)應(yīng),可直接跳過,將匹配串直接移動(dòng)到該字符下一字符進(jìn)行匹配。

    在實(shí)際應(yīng)用中,比如一些網(wǎng)絡(luò)監(jiān)測(cè)系統(tǒng),模式串是有一定的規(guī)則和格式的,那么子串重復(fù)的可能性就會(huì)減少。因此,使用哈希函數(shù)h(X) 計(jì)算字符串的值,通過比較函數(shù)值來代替逐一的字符串比較可以減去至少(l-lm) 的無用子串比較。

    本算法在預(yù)處理上,主要存儲(chǔ)模式串的4個(gè)哈希值表,其空間復(fù)雜度為O(m)。而AC算法,因?yàn)榇嬖赥rie樹的存儲(chǔ)和失敗指針的存儲(chǔ)導(dǎo)致可觀空間消耗,不管采用怎樣的存儲(chǔ)優(yōu)化,其空間消耗也都是指數(shù)級(jí)的,由此帶來的空間復(fù)雜度均為指數(shù)級(jí)。因此算法在空間復(fù)雜度上的優(yōu)勢(shì)相當(dāng)明顯,在模式串?dāng)?shù)量較多的情況下,本算法將呈現(xiàn)巨大優(yōu)勢(shì)。

    3 實(shí) 驗(yàn)

    為了對(duì)上述算法提供合理全面的性能驗(yàn)證,本節(jié)將DKR算法和AC算法在同樣的實(shí)驗(yàn)環(huán)境下,對(duì)同樣的模式串和目標(biāo)串進(jìn)行驗(yàn)證,驗(yàn)證的主要標(biāo)準(zhǔn)是比較各自的時(shí)間效率和空間占用情況,然后通過對(duì)結(jié)果的分析得出最終結(jié)論。

    3.1 實(shí)驗(yàn)環(huán)境

    操作系統(tǒng):Ubuntu 16.04(64位);

    處理器:Intel(R)Core(TM) i7-2670QM CPU @ 2.20 GHz ;

    處理器核心數(shù):4核;

    編譯器:gcc version 5.4.0;

    編程語言:c語言。

    3.2 實(shí)驗(yàn)結(jié)果

    因本文主要研究算法的高效性,而且是在線匹配的高效,所以只對(duì)2種算法的匹配時(shí)間效率進(jìn)行分析,暫不考慮算法的空間效率(占用內(nèi)存大小)和算法的預(yù)處理時(shí)間。

    實(shí)驗(yàn)選用的數(shù)據(jù)中,測(cè)試目標(biāo)文本大小為100 M;模式串集個(gè)數(shù)分別為1 000,5 000,10 000,模式串長(zhǎng)度則為5~1 000內(nèi),任意長(zhǎng)度。

    算法運(yùn)行預(yù)處理時(shí)間可見表1。

    表1 不同模式串個(gè)數(shù)對(duì)應(yīng)算法預(yù)處理時(shí)間Tab. 1 Preprocessing time of string matching in different patterns

    算法運(yùn)行匹配時(shí)間可見表2。

    表2 不同模式串個(gè)數(shù)對(duì)應(yīng)算法匹配時(shí)間Tab. 2 Matching time of string matching in different patterns

    算法采用的是Linux中/usr/bin/time命令,內(nèi)存的占用選取的是最大駐留集的大小來表示程序運(yùn)行中內(nèi)存占用的最大量。

    算法運(yùn)行內(nèi)存最大占用量可見表3。

    表3不同模式串個(gè)數(shù)對(duì)應(yīng)算法內(nèi)存最大占用量

    Tab.3Maximummemoryusageofstringmatchingindifferentpatterns

    模式個(gè)數(shù)/個(gè)DKR算法/KBAC算法/KB1000102376138892500011059229078810000120876478124

    3.3 實(shí)驗(yàn)分析

    通過對(duì)以上結(jié)果的分析,本文所提出的DKR算法在多模式串匹配的預(yù)處理和內(nèi)存占用上具有顯著鮮明優(yōu)勢(shì)。而且隨著模式串個(gè)數(shù)的增多,本算法實(shí)際展現(xiàn)出來的優(yōu)勢(shì)就越發(fā)明顯。但是本算法在匹配時(shí)間上效率并不如AC算法,這在此后的實(shí)驗(yàn)中,將進(jìn)一步展開研究?jī)?yōu)化,以達(dá)到更好的效果。

    4 結(jié)束語

    本文首先論述了KR算法,分析了常見的哈希函數(shù),根據(jù)DKR算法的思想提出了相應(yīng)的哈希函數(shù)算法,同時(shí)詳細(xì)研究了該算法對(duì)模式串的預(yù)處理過程以及算法的匹配過程,并將該算法與AC算法在時(shí)間復(fù)雜度和空間復(fù)雜度兩個(gè)方面進(jìn)行了闡釋分析。實(shí)驗(yàn)結(jié)果顯示,該算法在多模式串匹配的預(yù)處理和內(nèi)存占用上具有相當(dāng)大的優(yōu)勢(shì),證明了算法的有效性。

    [1] KARP R M, RABIN M O. Efficient randomized pattern-matching algorithms[J]. IBM Journal of Research and Development—Mathematics and computing,1987,31(2):249-260.

    [2] “科普中國(guó)”百科科學(xué)詞條編寫與應(yīng)用工作項(xiàng)目. 哈希函數(shù)[EB/OL].[2017-06].http://baike.baidu.com/link?url=_mdPrKjxu9EOMuUgQ18D55OO9Mti5FJ1pE7Ov_3gO9Ccs7fGarPGN_VVWCOboUm33y1AX6lksC6iLsl8VezzbDXxLgPIN17luuKQ-IPc B1tkHjvqFVyIkLu_vQGBIv0T.

    [3] KNUTH D E,MORRIS J H,PRATT V R.Fast pattern matching in strings[J]. SIAM J Computing,1977,6(2):323-350.

    [4] 毛先森. 字符串匹配—暴力匹配算法[EB/OL]. [2016-08-12]. http://www.cnblogs.com/Kevin-mao/p/5764726.html.

    [5] 葉軍偉. 哈希函數(shù)構(gòu)造方法及其適用情況[J]. 科技致富向?qū)?2014(8) :278.

    [6] HORSPOOL R N. Practical fast searching in strings [J]. Software Practice and Experience,1980,10(6):501-506.

    [7] WU Sun, MANBER U. A fast algorithm for multi-pattern searching[R]. Tucson:University of Arizona, 1994.

    [8] Chinaunix.幾種常用hash算法及原理[EB/OL].[2016-08-09]. http://blog.chinaunix.net/uid-30592332-id-5749402.html.

    [9] Network Working Group. RFC 1738 - Uniform Resource Locators[EB/OL].[1994-11]. https://tools.ietf.org/html/rfc1738.html.

    [10]AHO A V, CORASICK M J. Efficient string matching: An aid to bibliographic search[J]. Communications of the ACM, 1975, 18(6):333-340.

    猜你喜歡
    個(gè)字符字符串哈希
    基于OpenCV與均值哈希算法的人臉相似識(shí)別系統(tǒng)
    基于維度分解的哈希多維快速流分類算法
    不讓長(zhǎng)文件名成為“絆腳石”
    電腦迷(2014年8期)2014-04-29 07:37:40
    一種新的基于對(duì)稱性的字符串相似性處理算法
    基于同態(tài)哈希函數(shù)的云數(shù)據(jù)完整性驗(yàn)證算法
    一種基于Bigram二級(jí)哈希的中文索引結(jié)構(gòu)
    依據(jù)字符串匹配的中文分詞模型研究
    一種針對(duì)Java中字符串的內(nèi)存管理方案
    工資報(bào)表計(jì)算機(jī)軟件論述
    卷宗(2011年9期)2011-05-14 17:51:19
    庖丁解牛,小說按章分割
    国国产精品蜜臀av免费| 国产高潮美女av| 51国产日韩欧美| 22中文网久久字幕| 日本一本二区三区精品| 午夜激情欧美在线| 69av精品久久久久久| 国产精品电影一区二区三区| 禁无遮挡网站| 69人妻影院| 亚洲国产欧洲综合997久久,| 男女视频在线观看网站免费| 最近在线观看免费完整版| 日韩亚洲欧美综合| 91在线精品国自产拍蜜月| 久久国内精品自在自线图片| 美女高潮的动态| 亚洲第一电影网av| 午夜免费男女啪啪视频观看 | 女人被狂操c到高潮| 日韩欧美国产在线观看| 国产精品乱码一区二三区的特点| 三级国产精品欧美在线观看| 国产精品久久久久久精品电影| 国产黄色视频一区二区在线观看 | 久久久久久国产a免费观看| 男人舔女人下体高潮全视频| 在线免费十八禁| 变态另类丝袜制服| 美女免费视频网站| 欧美日韩综合久久久久久| 人人妻人人看人人澡| 麻豆精品久久久久久蜜桃| 老司机影院成人| 黄色配什么色好看| 九九在线视频观看精品| 深夜精品福利| 日韩 亚洲 欧美在线| 久久久久久久久久久丰满| 可以在线观看毛片的网站| 大香蕉久久网| 国产av在哪里看| 99热网站在线观看| 搡老妇女老女人老熟妇| 18禁在线播放成人免费| 人妻少妇偷人精品九色| 51国产日韩欧美| 国产精品女同一区二区软件| 国产在线男女| 老师上课跳d突然被开到最大视频| 欧美日本视频| 日本撒尿小便嘘嘘汇集6| 欧美成人一区二区免费高清观看| 国产黄色小视频在线观看| 九九热线精品视视频播放| 哪里可以看免费的av片| 国产精品国产三级国产av玫瑰| 久久综合国产亚洲精品| 51国产日韩欧美| 日韩欧美国产在线观看| 国产探花极品一区二区| 国内少妇人妻偷人精品xxx网站| 亚洲精品成人久久久久久| 麻豆国产97在线/欧美| 免费人成视频x8x8入口观看| 男人狂女人下面高潮的视频| 精品久久久久久久久久免费视频| 伦精品一区二区三区| 日本黄大片高清| 久久精品国产自在天天线| 亚洲精品色激情综合| 久久久午夜欧美精品| 亚洲欧美中文字幕日韩二区| 毛片一级片免费看久久久久| 精华霜和精华液先用哪个| 国产aⅴ精品一区二区三区波| 精品一区二区三区av网在线观看| 免费在线观看成人毛片| 嫩草影院新地址| 欧美又色又爽又黄视频| 日韩av不卡免费在线播放| 精品一区二区免费观看| 男女之事视频高清在线观看| 国产视频内射| 久久草成人影院| 99久久精品一区二区三区| 黄色日韩在线| 精品国产三级普通话版| 最近中文字幕高清免费大全6| 熟女人妻精品中文字幕| 国产欧美日韩精品一区二区| 99国产精品一区二区蜜桃av| 久久久精品大字幕| 亚洲精品国产av成人精品 | 桃色一区二区三区在线观看| 国产精品久久视频播放| 国产精品精品国产色婷婷| 午夜影院日韩av| 欧美+日韩+精品| 99久久无色码亚洲精品果冻| 一夜夜www| 亚洲一级一片aⅴ在线观看| 波多野结衣高清无吗| 小说图片视频综合网站| 亚洲在线自拍视频| 日本撒尿小便嘘嘘汇集6| 亚洲欧美中文字幕日韩二区| 夜夜爽天天搞| 综合色av麻豆| 黄片wwwwww| 日本-黄色视频高清免费观看| 免费一级毛片在线播放高清视频| 桃色一区二区三区在线观看| 午夜精品在线福利| av在线播放精品| 欧美性感艳星| 日韩成人av中文字幕在线观看 | 久99久视频精品免费| 精品免费久久久久久久清纯| or卡值多少钱| 亚洲精品粉嫩美女一区| 久久久久久久久久黄片| 国产精品人妻久久久影院| 18禁黄网站禁片免费观看直播| 亚洲精品日韩在线中文字幕 | 国产 一区 欧美 日韩| 日本一二三区视频观看| 亚洲性夜色夜夜综合| 久久婷婷人人爽人人干人人爱| 亚洲激情五月婷婷啪啪| 午夜福利在线观看免费完整高清在 | 午夜a级毛片| 永久网站在线| 插逼视频在线观看| 亚洲,欧美,日韩| 午夜精品一区二区三区免费看| 天堂影院成人在线观看| 三级毛片av免费| 99国产精品一区二区蜜桃av| 亚洲无线在线观看| 色吧在线观看| 少妇人妻一区二区三区视频| 99久久久亚洲精品蜜臀av| 国产爱豆传媒在线观看| 国产三级在线视频| 五月玫瑰六月丁香| 免费人成视频x8x8入口观看| 一级黄片播放器| 亚洲美女搞黄在线观看 | 久久中文看片网| 亚洲精品国产成人久久av| 99九九线精品视频在线观看视频| 国产精品久久久久久精品电影| 日韩欧美三级三区| 美女xxoo啪啪120秒动态图| 日韩强制内射视频| 亚洲aⅴ乱码一区二区在线播放| 一本久久中文字幕| 亚洲人与动物交配视频| 午夜精品国产一区二区电影 | 我的女老师完整版在线观看| 成年女人永久免费观看视频| 69人妻影院| 男人和女人高潮做爰伦理| 日本撒尿小便嘘嘘汇集6| 国产乱人偷精品视频| 99精品在免费线老司机午夜| 亚洲,欧美,日韩| 久久精品91蜜桃| 欧美又色又爽又黄视频| 最新中文字幕久久久久| 亚州av有码| 日韩强制内射视频| 欧美成人一区二区免费高清观看| 亚洲欧美日韩高清专用| 韩国av在线不卡| 蜜桃久久精品国产亚洲av| 国产av麻豆久久久久久久| 色综合色国产| 天天躁夜夜躁狠狠久久av| 搡女人真爽免费视频火全软件 | 欧美色视频一区免费| 人妻久久中文字幕网| 91狼人影院| ponron亚洲| 久久国产乱子免费精品| 美女黄网站色视频| 天美传媒精品一区二区| 高清毛片免费观看视频网站| 成年免费大片在线观看| 久久久a久久爽久久v久久| 国产伦一二天堂av在线观看| 全区人妻精品视频| 日日啪夜夜撸| 久久久久久久久大av| 欧美性感艳星| 国产欧美日韩一区二区精品| 欧美极品一区二区三区四区| 国产探花在线观看一区二区| 欧美人与善性xxx| 悠悠久久av| 日韩制服骚丝袜av| 嫩草影院精品99| 免费看光身美女| 色哟哟哟哟哟哟| 久久精品夜夜夜夜夜久久蜜豆| 综合色av麻豆| 亚洲最大成人手机在线| 亚洲欧美精品综合久久99| 少妇的逼水好多| 亚洲欧美精品自产自拍| 成人三级黄色视频| 天堂√8在线中文| 日日摸夜夜添夜夜爱| 非洲黑人性xxxx精品又粗又长| 久久久久久久亚洲中文字幕| 黄色配什么色好看| 亚洲激情五月婷婷啪啪| 深夜精品福利| 日日摸夜夜添夜夜爱| 精品无人区乱码1区二区| 国产av一区在线观看免费| 91狼人影院| 日本免费一区二区三区高清不卡| 一区福利在线观看| 露出奶头的视频| 日本欧美国产在线视频| 国产精品久久电影中文字幕| 亚洲中文日韩欧美视频| 在线天堂最新版资源| 亚洲精品日韩av片在线观看| 在线免费观看的www视频| 最近中文字幕高清免费大全6| 国产麻豆成人av免费视频| 国产在线精品亚洲第一网站| 欧美激情久久久久久爽电影| 嫩草影视91久久| 免费不卡的大黄色大毛片视频在线观看 | 午夜影院日韩av| 精品久久国产蜜桃| 一本久久中文字幕| 校园春色视频在线观看| 久久亚洲国产成人精品v| 欧美三级亚洲精品| 国产伦精品一区二区三区视频9| 国产精品三级大全| 久久久国产成人免费| 免费人成在线观看视频色| 不卡一级毛片| 亚洲18禁久久av| 久久天躁狠狠躁夜夜2o2o| 人妻久久中文字幕网| 中文字幕免费在线视频6| 午夜福利成人在线免费观看| 中文字幕免费在线视频6| 亚洲图色成人| 国产 一区 欧美 日韩| 国产成人a区在线观看| 青春草视频在线免费观看| 国产熟女欧美一区二区| 深夜a级毛片| 亚洲国产精品sss在线观看| 日本五十路高清| 久久久午夜欧美精品| 亚洲自拍偷在线| eeuss影院久久| 亚洲欧美成人综合另类久久久 | 久久精品国产亚洲av天美| 国产综合懂色| 亚洲性久久影院| 你懂的网址亚洲精品在线观看 | 久久精品国产99精品国产亚洲性色| 老女人水多毛片| 伦精品一区二区三区| 亚洲成人久久性| 亚洲美女视频黄频| 最近视频中文字幕2019在线8| 久久国内精品自在自线图片| 干丝袜人妻中文字幕| 免费人成在线观看视频色| 国产黄片美女视频| 婷婷精品国产亚洲av在线| 亚州av有码| 亚洲国产精品成人综合色| 最近的中文字幕免费完整| 国产aⅴ精品一区二区三区波| 天天一区二区日本电影三级| 国产乱人视频| 国产私拍福利视频在线观看| 一级毛片久久久久久久久女| 春色校园在线视频观看| 免费看日本二区| 成人综合一区亚洲| 伦理电影大哥的女人| 国产精品福利在线免费观看| 久久人人爽人人爽人人片va| 六月丁香七月| 免费看日本二区| 久久久欧美国产精品| 亚洲第一区二区三区不卡| av国产免费在线观看| 丰满乱子伦码专区| 国产精华一区二区三区| 中文字幕免费在线视频6| av在线亚洲专区| 在线观看av片永久免费下载| 久久中文看片网| 色综合亚洲欧美另类图片| 18禁在线播放成人免费| 美女cb高潮喷水在线观看| 国产亚洲欧美98| 啦啦啦啦在线视频资源| 人妻丰满熟妇av一区二区三区| 久久综合国产亚洲精品| 国产精华一区二区三区| 女的被弄到高潮叫床怎么办| 91在线观看av| 国产高潮美女av| 国产高清激情床上av| 嫩草影院新地址| 国产精品一二三区在线看| 99久久精品一区二区三区| 亚洲欧美精品自产自拍| 国产成人91sexporn| 日韩av在线大香蕉| 久久精品国产99精品国产亚洲性色| 小蜜桃在线观看免费完整版高清| 久久精品91蜜桃| 99热网站在线观看| 一区二区三区四区激情视频 | 精品一区二区三区视频在线| 丝袜喷水一区| 九九在线视频观看精品| a级毛片免费高清观看在线播放| 午夜免费激情av| 欧洲精品卡2卡3卡4卡5卡区| 欧美激情国产日韩精品一区| 波多野结衣高清无吗| 国产一区二区在线av高清观看| 久久午夜亚洲精品久久| 国产又黄又爽又无遮挡在线| 白带黄色成豆腐渣| 久久精品国产自在天天线| 最近中文字幕高清免费大全6| 干丝袜人妻中文字幕| 国产伦一二天堂av在线观看| 国产av在哪里看| 欧美性猛交黑人性爽| 最近2019中文字幕mv第一页| 美女被艹到高潮喷水动态| 日韩欧美 国产精品| 哪里可以看免费的av片| 免费观看的影片在线观看| 真实男女啪啪啪动态图| 夜夜看夜夜爽夜夜摸| 美女黄网站色视频| 99riav亚洲国产免费| 乱码一卡2卡4卡精品| 熟女电影av网| 国产私拍福利视频在线观看| 亚洲va在线va天堂va国产| 国产 一区 欧美 日韩| av.在线天堂| 日本精品一区二区三区蜜桃| 久久九九热精品免费| 日本一本二区三区精品| 亚洲中文字幕一区二区三区有码在线看| 91在线精品国自产拍蜜月| 精品一区二区三区av网在线观看| 欧美日韩精品成人综合77777| 最近在线观看免费完整版| 国产色婷婷99| 精品一区二区三区人妻视频| 色吧在线观看| 男插女下体视频免费在线播放| 日韩欧美国产在线观看| 精品福利观看| av国产免费在线观看| 午夜免费激情av| 真实男女啪啪啪动态图| 亚洲欧美日韩东京热| 精华霜和精华液先用哪个| 狠狠狠狠99中文字幕| 亚洲欧美精品综合久久99| 午夜日韩欧美国产| 久久久午夜欧美精品| a级毛片a级免费在线| 免费观看的影片在线观看| 男女那种视频在线观看| 欧美三级亚洲精品| 久久久久久久久久黄片| 亚洲四区av| 黄色欧美视频在线观看| 成人av一区二区三区在线看| 哪里可以看免费的av片| 欧美丝袜亚洲另类| 欧美高清成人免费视频www| 日本黄色视频三级网站网址| 91麻豆精品激情在线观看国产| 18禁在线无遮挡免费观看视频 | 久久热精品热| 亚洲精品粉嫩美女一区| av女优亚洲男人天堂| 精品久久久久久久久久免费视频| 亚洲专区国产一区二区| 成人国产麻豆网| 丝袜美腿在线中文| 校园春色视频在线观看| 免费在线观看影片大全网站| 免费看美女性在线毛片视频| 欧美极品一区二区三区四区| 国产精品亚洲一级av第二区| 久久久精品94久久精品| 成年免费大片在线观看| 人妻制服诱惑在线中文字幕| 久久精品国产亚洲av香蕉五月| 日韩高清综合在线| 99热精品在线国产| 国产精品福利在线免费观看| 久久韩国三级中文字幕| 精品一区二区三区av网在线观看| 又粗又爽又猛毛片免费看| 日本爱情动作片www.在线观看 | 在线观看一区二区三区| 国产精华一区二区三区| 久久久久久久久中文| eeuss影院久久| 禁无遮挡网站| 日韩在线高清观看一区二区三区| 少妇丰满av| 老司机影院成人| 伦精品一区二区三区| 亚洲综合色惰| 国产真实乱freesex| 熟妇人妻久久中文字幕3abv| 九九久久精品国产亚洲av麻豆| 日本一二三区视频观看| 欧美一级a爱片免费观看看| 午夜福利高清视频| 亚洲最大成人av| 欧美中文日本在线观看视频| 天天一区二区日本电影三级| 亚洲欧美成人综合另类久久久 | 国产探花极品一区二区| av黄色大香蕉| 两个人的视频大全免费| 激情 狠狠 欧美| 国产精品永久免费网站| 22中文网久久字幕| 日本免费a在线| av在线老鸭窝| 久久人人精品亚洲av| 久久久久国内视频| 久久久欧美国产精品| 婷婷六月久久综合丁香| 好男人在线观看高清免费视频| 91在线观看av| 亚洲综合色惰| 在线看三级毛片| 精品不卡国产一区二区三区| 综合色av麻豆| 99久久成人亚洲精品观看| 午夜福利高清视频| 少妇猛男粗大的猛烈进出视频 | 日韩成人av中文字幕在线观看 | 亚州av有码| 国产美女午夜福利| 三级经典国产精品| 丰满乱子伦码专区| 国内久久婷婷六月综合欲色啪| 国产乱人视频| 精品久久久久久久末码| 日韩欧美在线乱码| 久久久久久伊人网av| 夜夜夜夜夜久久久久| av.在线天堂| 搡老妇女老女人老熟妇| 久久久a久久爽久久v久久| 亚洲自拍偷在线| 好男人在线观看高清免费视频| 人妻制服诱惑在线中文字幕| 变态另类丝袜制服| 蜜桃久久精品国产亚洲av| 91午夜精品亚洲一区二区三区| 亚洲高清免费不卡视频| 亚洲成av人片在线播放无| 久久中文看片网| 亚洲精品456在线播放app| 1000部很黄的大片| 男女视频在线观看网站免费| 亚洲中文日韩欧美视频| 国产精品免费一区二区三区在线| 老司机福利观看| 2021天堂中文幕一二区在线观| 少妇熟女欧美另类| 国产男靠女视频免费网站| 亚洲成a人片在线一区二区| 91久久精品电影网| videossex国产| 伊人久久精品亚洲午夜| 亚洲精品国产成人久久av| 国产 一区 欧美 日韩| 深夜a级毛片| 美女高潮的动态| 国产成人精品久久久久久| 亚洲精品久久国产高清桃花| 久久久久久久久中文| 少妇人妻一区二区三区视频| 色播亚洲综合网| 伦精品一区二区三区| 国国产精品蜜臀av免费| 真实男女啪啪啪动态图| 精品国产三级普通话版| 性欧美人与动物交配| 午夜福利高清视频| 最近手机中文字幕大全| 欧美不卡视频在线免费观看| 欧美性猛交╳xxx乱大交人| 中文字幕久久专区| 日韩欧美一区二区三区在线观看| 麻豆av噜噜一区二区三区| 日韩一本色道免费dvd| 久久午夜亚洲精品久久| 三级男女做爰猛烈吃奶摸视频| 午夜老司机福利剧场| 国产亚洲精品久久久久久毛片| 国产成人影院久久av| 在线天堂最新版资源| 日本欧美国产在线视频| 人妻夜夜爽99麻豆av| 男人的好看免费观看在线视频| 精品福利观看| av在线播放精品| 欧美日韩国产亚洲二区| a级毛片免费高清观看在线播放| 国产精品电影一区二区三区| 日韩欧美三级三区| 日本在线视频免费播放| 五月伊人婷婷丁香| 97超级碰碰碰精品色视频在线观看| 国产高清视频在线播放一区| 国产精华一区二区三区| 免费av不卡在线播放| 亚洲国产精品成人综合色| 国产精品99久久久久久久久| 乱人视频在线观看| 天堂av国产一区二区熟女人妻| 亚洲国产欧洲综合997久久,| 国产在视频线在精品| 久久这里只有精品中国| 亚洲av不卡在线观看| 97人妻精品一区二区三区麻豆| 欧美色欧美亚洲另类二区| 大型黄色视频在线免费观看| av女优亚洲男人天堂| 色哟哟哟哟哟哟| 久久九九热精品免费| 高清午夜精品一区二区三区 | 久久久久久大精品| a级一级毛片免费在线观看| 十八禁网站免费在线| 天堂网av新在线| 深夜精品福利| 最近最新中文字幕大全电影3| 久久精品夜夜夜夜夜久久蜜豆| 99久国产av精品| 久久国产乱子免费精品| 啦啦啦啦在线视频资源| 村上凉子中文字幕在线| 少妇熟女欧美另类| 欧美又色又爽又黄视频| 午夜激情福利司机影院| 大型黄色视频在线免费观看| 亚洲国产色片| 大型黄色视频在线免费观看| 最近2019中文字幕mv第一页| 22中文网久久字幕| 精品人妻熟女av久视频| 成人毛片a级毛片在线播放| 别揉我奶头~嗯~啊~动态视频| 国产高潮美女av| 最近2019中文字幕mv第一页| 91午夜精品亚洲一区二区三区| 国产黄色视频一区二区在线观看 | 麻豆成人午夜福利视频| 悠悠久久av| 一进一出抽搐动态| 波多野结衣高清无吗| 成年免费大片在线观看| 亚洲自拍偷在线| 极品教师在线视频| 在线观看一区二区三区| 九九爱精品视频在线观看| 亚洲精品色激情综合| 又黄又爽又刺激的免费视频.| 久久精品国产清高在天天线| 99久久成人亚洲精品观看| 色吧在线观看| 亚洲人成网站高清观看| 亚洲av成人av| 免费一级毛片在线播放高清视频| 久久天躁狠狠躁夜夜2o2o| 欧美最新免费一区二区三区| 国模一区二区三区四区视频| 插逼视频在线观看| 亚洲av免费高清在线观看| 成人毛片a级毛片在线播放| 亚洲国产精品成人久久小说 | 全区人妻精品视频| 久久久色成人| 99久久久亚洲精品蜜臀av| 三级毛片av免费| 午夜福利18| 欧美另类亚洲清纯唯美| 国产精品久久久久久精品电影|