.

Алгоритм Кнута-Морриса-Пратта

Язык: русский
Формат: реферат
Тип документа: Word Doc
82 606
Скачать документ

Aeai?eoi Eiooa – Ii??ena – I?aooa

Aeai?eoi Eiooa-Ii??ena-I?aooa (EII) iieo/aao ia aoiae neiai

X=x[1]x[2]… x[n]

e i?iniao?eaaao aai neaaa iai?aai aoeaa ca aoeaie, caiieiyy i?e yoii
iannea iaoo?aeueiuo /enae l[1]… l[n], aaea

l[i]=aeeeia neiaa l(x[1]…o[i])

(ooieoeey l ii?aaeaeaia a i?aaeuaeouai ioieoa). Neiaaie: l[i] anoue
aeeeia iaeaieueoaai ia/aea neiaa x[1]…x[i], iaeiia?aiaiii yaeythuaainy
aai eiioeii.

Eaeia ioiioaiea ana yoi eiaao e iieneo iiaeneiaa?

Ae?oaeie neiaaie, eae eniieueciaaoue aeai?eoi EII aeey ii?aaeaeaiey
oiai, yaeyaony ee neiai A iiaeneiaii neiaa B?

?aoaiea. I?eiaiei aeai?eoi EII e neiao A#B, aaea # – niaoeeaeueiay
aoeaa, ia ano?a/athuayny ie a A, ie a B. Neiai A yaeyaony iiaeneiaii
neiaa B oiaaea e oieueei oiaaea, eiaaea n?aaee /enae a ianneaa l aoaeao
/enei, ?aaiia aeeeia neiaa A.

Iienaoue aeai?eoi caiieiaiey oaaeeoeu l[1]…l[n].

?aoaiea. I?aaeiieiaeei, /oi ia?aua i cia/aiee l[1]…l[i] oaea iaeaeaiu.
Iu /eoaai i/a?aaeioth aoeao neiaa (o.a. x[i+1]) e aeieaeiu au/eneeoue
l[i+1].

Ae?oaeie neiaaie, ian eioa?anotho ia/aea Z neiaa

x[1]…x[i+1,

iaeiia?aiaiii yaeythueany aai eiioeaie -ec ieo iai iaaei a?aoue naiia
aeeeiiia. Ioeoaea aa?oony yoe ia/aea? Eaaeaeia ec ieo (ia n/eoay
ionoiai) iieo/aaony ec iaeioi?iai neiaa Z’ i?eienuaaieai aoeau x[i+1] .
Neiai Z’ yaeyaony ia/aeii e

eiioeii neiaa x[1]…x[i]. Iaeiaei ia ethaia neiai, yaeythuaany ia/aeii
e eiioeii neiaa x[1]…x[i], aiaeeony – iaaei, /oiau ca iei neaaeiaaea
aoeaa x[i+1].

Iieo/aai oaeie ?aoeaio iouneaiey neiaa Z. ?anniio?ei ana ia/aea
neiaa x[1]…x[i], yaeythueany iaeiia?aiaiii aai eiioeaie. Ec ieo
auaa?ai iiaeoiaeyuea – oa, ca eioi?uie eaeao aoeaa x[i+1]. Ec
iiaeoiaeyueo auaa?ai naiia aeeeiiia. I?eienaa a aai eiiaoe o[i+1],
iieo/ei eneiiia neiai Z. Oaia?ue ii?a ainiieueciaaoueny naeaeaiiuie iaie
i?eaioiaeaieyie e aniiiieoue, /oi ana neiaa, yaeythueany iaeiia?aiaiii
ia/aeaie e eiioeaie aeaiiiai neiaa, iiaeii iieo/eoue iiaoi?iuie
i?eiaiaieyie e iaio ooieoeee l ec i?aaeuaeouaai ?acaeaea.

Aio /oi iieo/aaony:

i:=1; 1[1]:=0;

{oaaeeoea l[1]..l[i] caiieiaia i?aaeeueii}

while i n do begin

len:= l[i]

{len – aeeeia ia/aea neiaa x[1]..x[i], eioi?ia yaeyaony

aai eiioeii; ana aieaa aeeeiiua ia/aea ieacaeenue

iaiiaeoiaeyueie}

while (x[len+1]o[i+1]) and (len>0) do begin

{ia/aei ia iiaeoiaeeo, i?eiaiyai e iaio ooieoeeth l}

len:=l[len];

end;

{iaoee iiaeoiaeyuaa eee oaaaeeeenue a ionoonoaee}

if x[len+1]=x[i+1] do begin

{o[1]..x[len] – naiia aeeeiiia iiaeoiaeyuaa ia/aei}

l[i+1]:=len+1;

end else begin

{iiaeoiaeyueo iao}

l[i+1]:= 0;

end;

i:=i+1;

end;

Aeieacaoue, /oi /enei aeaenoaee a i?eaaaeaiiii oieueei /oi
aeai?eoia ia i?aainoiaeeo Cn aeey iaeioi?ie eiinoaiou C.

?aoaiea. Yoi ia aiieia i/aaeaeii: ia?aaioea eaaeaeie i/a?aaeiie aoeau
iiaeao iio?aaiaaoue iiiaeo eoa?aoeee ai aioo?aiiai oeeeea. Iaeiaei
eaaeaeay oaeay eoa?aoeey oiaiueoaao len ii e?aeiae ia?a ia 1, e a yoii
neo/aa l[i+1] ieaaeaony caiaoii iaiueoa l[i]. N ae?oaie noi?iiu, i?e
oaaee/aiee i ia aaeeieoeo aaee/eia l[i] iiaeao aic?anoe ia aieaa /ai ia
1, oae /oi /anoi e neeueii oauaaoue iia ia iiaeao – eia/a oauaaiea ia
aoaeao neiiiaine?iaaii aic?anoaieai.

Aieaa oi/ii, iiaeii caienaoue ia?aaainoai

l[i+1]n) and (jm) do begin

while (x[len+1]o[j+1]) and (len>0) do begin

{ia/aei ia iiaeoiaeeo, i?eiaiyai e iaio ooieoeeth l}

len: = l[len];

end;

{iaoee iiaeoiaeyuaa eee oaaaeeeenue a ionoonoaee}

if x[len+1]=y[j+1] do begin

{x[1]..x[len] – naiia aeeeiiia iiaeoiaeyuaa ia/aei}

len:=len+1;

end else begin

{iiaeoiaeyueo iao}

len:=0;

end;

j:=j+1;

end;

{anee len=n, neiai X ano?aoeeinue; eia/a iu aeioee aei eiioea

neiaa Y, oae e ia ano?aoea X}

Aeai?eoi Aiea?a – Io?a

Yoio aeai?eoi aeaeaao oi, /oi ia ia?aue acaeyae eaaeaony
iaaiciiaeiui: a oeie/iie neooaoeee ii /eoaao eeoue iaaieueooth /anoue
anao aoea neiaa, a eioi?ii euaony caaeaiiue ia?acaoe. Eae oae iiaeao
auoue? Eaeay i?inoa. Ionoue, iai?eia?, iu euai ia?acaoe abcd. Iiniio?ei
ia /aoaa?ooth aoeao neiaa: anee, e i?eia?o, yoi aoeaa e, oi iao ieeaeie
iaiaoiaeeiinoe /eoaoue ia?aua o?e aoeau. (A naiii aeaea, a ia?acoea
aoeau e iao, iiyoiio ii iiaeao ia/aoueny ia ?aiueoa iyoie aoeau.)

Iu i?eaaaeai naiue i?inoie aa?eaio yoiai aeai?eoia, eioi?ue ia
aa?aioe?oao auno?ie ?aaiou ai anao neo/ayo. Ionoue x[1]…o[n] –
ia?acaoe, eioi?ue iaaei eneaoue. Aeey eaaeaeiai neiaiea s iaeaeai naiia
i?aaia aai aoiaeaeaiea a neiai X, oi anoue iaeaieueoaa k, i?e eioi?ii
o[k]=s. Yoe naaaeaiey aoaeai o?aieoue a ianneaa pos[s]; anee neiaie s
aiana ia ano?a/aaony, oi iai aoaeao oaeiaii iieiaeeoue pos[s]=0 (iu
oaeaeei aeaeueoa, ii/aio).

Eae caiieieoue iannea pos?

?aoaiea.

iieiaeeoue ana pos[s] ?aaiuie 0

for i:=1 to n do begin

pos[x[i]]:=i;

end;

A i?ioeanna iienea iu aoaeai o?aieoue a ia?aiaiiie last iiia? aoeau a
neiaa, i?ioea eioi?ie noieo iineaaeiyy aoeaa ia?acoea. Aia/aea last=n
(aeeeia ia?acoea), caoai last iinoaiaiii oaaee/eaaaony.

last:=n;

{ana i?aaeuaeouea iieiaeaiey ia?acoea oaea i?iaa?aiu}

while lasty[last] then begin {iineaaeiea aoeau ?aciua}

last:=last+(n-pos[y[last]]);

{n – pos[y[last]] – yoi ieieiaeueiue naeaea ia?acoea,

i?e eioi?ii iai?ioea y[last] anoaiao oaeay aea

aoeaa a ia?acoea. Anee oaeie aoeau iao aiiaua,

oi naeaeaaai ia anth aeeeio ia?acoea}

end else begin

anee iuiaoiaa iieiaeaiea iiaeoiaeeo, o.a. anee

x[i]..o[n]=y[last-n+1]..y[last],

oi niiaueoue i niaiaaeaiee;

last:=last+1;

end;

end;

Ciaoiee ?aeiiaiaeotho i?iaa?eo niaiaaeaiey i?iaiaeeoue ni?aaa iaeaai,
o.a. ia/eiay n iineaaeiae aoeau ia?acoea (a eioi?ie niaiaaeaiea
caaaaeiii anoue). Iiaeii oaeaea iaiiiai nyeiiiieoue, i?iecaaaey
au/eoaiea ca?aiaa e o?aiy ia pos[s], a n-pos[s],

o.a. /enei aoea a ia?acoea ni?aaa io iineaaeiaai aoiaeaeaiey aoeau
Aiciiaeiu ?aciua iiaeeoeeaoeee yoiai aeai?eoia. Iai?eia?, iiaeii no?ieo

last:=last+i

caiaieoue ia

last:=last+(n-u),

aaea u – eii?aeeiaoa aoi?iai ni?aaa aoiaeaeaiey aoeau x[n] a ia?acaoe.

Eae i?iua anaai o/anoue yoi a i?ia?aiia

?aoaiea. I?e iino?iaiee oaaeeoeu pos iaienaoue

for i:=1 to n-1 do…

(aeaeaa eae ?aiueoa), a a iniiaiie i?ia?aiia aianoi

last:=last+1

iaienaoue

last:=last+n-pos[y[last]];

I?eaaaeaiiue oi?iuaiiue aa?eaio aeai?eoia Aiea?a-Io?a a iaeioi?uo
neo/ayo o?aaoao nouanoaaiii aieueoa n aeaenoaee (/enei aeaenoaee
ii?yaeea mn), i?iea?uaay aeai?eoio Eiooa-Ii??ena-I?aooa.

I?eia? neooaoeee, a eioi?ie ia?acaoe ia aoiaeeo a neiai, ii aeai?eoio
o?aaoaony ii?yaeea mn aeaenoaee, /oiau yoi onoaiiaeoue.

?aoaiea. Ionoue ia?acaoe eiaao aeae baaa… aa, a naii neiai ninoieo
oieueei ec aoea a. Oiaaea ia eaaeaeii oaaa ianiioaaonoaea auyniyaony
eeoue a iineaaeiee iiiaio.

Ianoiyuee (ia oi?iuaiiue) aeai?eoi Aiea?a-Io?a aa?aioe?oao, /oi /enei
aeaenoaee ia i?aainoiaeeo C(m+n) a ooaeoai neo/aa. Ii eniieuecoao eaeae,
aeeceea e eaeayi aeai?eoia Eiooa-Ii??ena-I?aooa. I?aaenoaaei naaa, /oi
iu n?aaieaaee ia?acaoe ni aoiaeiui neiaii, eaey ni?aaa iaeaai. I?e yoii
iaeioi?ue eonie Z (yaeythueeny eiioeii ia?acoea) niaiae, a caoai
iaia?oaeeeinue ?acee/ea: ia?aae Z a ia?acoea noieo ia oi, /oi ai
aoiaeiii neiaa. *oi iiaeii neacaoue a yoio iiiaio i

aoiaeiii neiaa? A iai iaia?oaeai o?aaiaio, ?aaiue Z, a ia?aae iei noieo
ia oa aoeaa, /oi a ia?acoea. Yoa eioi?iaoeey iiaeao iicaieeoue
naeaeiooue ia?acaoe ia ianeieueei iiceoeee ai?aai aac ?enea i?iionoeoue
aai aoiaeaeaiea. Yoe naeaeae neaaeoao au/eneeoue ca?aiaa aeey eaaeaeiai
eiioea Z iaoaai ia?acoea. Eae aiai?yo ciaoiee, ana yoi (au/eneaiea
oaaeeoeu naeaeaia e aa eniieueciaaiea) iiaeii oeiaeeoue a C(m+ n)
aeaenoaee.

Aeai?eoi ?aaeia

Yoio aeai?eoi iniiaai ia i?inoie eaeaa. I?aaenoaaei naaa, /oi a
neiaa aeeeiu m iu euai ia?acaoe aeeeiu n. Au?aaeai ieioa/ei ?acia?a n e
aoaeai aeaeaaoue aai ii aoiaeiiio neiao. Ian eioa?anoao, ia niaiaaeaao
ee neiai a ieioa/ea n caaeaiiui

ia?acoeii. N?aaieaaoue ii aoeaai aeieai. Aianoi yoiai oeene?oai
iaeioi?oth ooieoeeth, ii?aaeaeaiioth ia neiaao aeeeiu n. Anee cia/aiey
yoie ooieoeee ia neiaa a ieioa/ea e ia ia?acoea ?acee/iu, oi niaiaaeaiey
iao. Oieueei anee cia/aiey iaeeiaeiau, ioaeii i?iaa?youe niaiaaeaiea ii
aoeaai.

A /ai auea?uo i?e oaeii iiaeoiaea. Eacaeinue au, ie/aai – aaaeue
/oiau au/eneeoue cia/aiea ooieoeee ia neiaa a ieioa/ea, ana ?aaii ioaeii
i?i/anoue ana aoeau yoiai neiaa. Oae oae eo/oa eo n?aco n?aaieoue n
ia?acoeii. Oai ia iaiaa auea?uo aiciiaeai, e aio ca n/ao /aai. I?e
naeaeaa ieioa/ea neiai ia iaiyaony iieiinoueth, a eeoue aeiaaaeyaony
aoeaa a eiioea e oae?aaony a ia/aea. Oi?ioi au, /oiau ii yoei aeaiiui
iiaeii auei ?ann/eoaoue, eae iaiyaony ooieoeey.

I?eaanoe i?eia? oaeiaiie aeey au/eneaiey ooieoeee.

?aoaiea. Caiaiei ana aoeau a neiaa e ia?acoea eo iiia?aie,
i?aaenoaaeythueie niaie oeaeua /enea. Oiaaea oaeiaiie ooieoeeae yaeyaony
noiia oeeo?. (I?e naeaeaa ieioa/ea ioaeii aeiaaaeoue iiaia /enei e
au/anoue i?iiaaoaa.)

Aeey eaaeaeie ooieoeee nouanoaotho neiaa, e eioi?ui iia i?eiaieia
ieioi. Caoi ae?oaay ooieoeey a yoii neo/aa iiaeao ?aaioaoue oi?ioi.
Aicieeaao eaeay: iaaei caianoe iiiai ooieoeee e a ia/aea ?aaiou
aeai?eoia auae?aoue ec ieo neo/aeioth. (Oiaaea a?aa, aeaeathuee
iiaeaaaeeoue iaoaio aeai?eoio, ia aoaeao ciaoue, n eaeie eiaiii
ooieoeeae aio ai?ioueny.)

I?eaanoe i?eia? naiaenoaa oaeiaiuo ooieoeee.

?aoaiea. Auaa?ai iaeioi?ia /enei p (aeaeaoaeueii i?inoia, niio?e aeaeaa)
e iaeioi?ue au/ao x ii iiaeoeth p. Eaaeaeia neiai aeeeiu n aoaeai
?anniao?eaaoue eae iineaaeiaaoaeueiinoue oeaeuo /enae (caiaiea aoeau
eiaeaie). Yoe /enea aoaeai ?anniao?eaaoue eae eiyooeoeeaiou iiiai/eaia
noaiaie n-1 e au/eneei cia/aiea yoiai iiiai/eaia ii iiaeoeth p a oi/ea
x. Yoi e aoaeao iaeia ec ooieoeee naiaenoaa (aeey eaaeaeie ia?u p e x
iieo/aaony, oaeei ia?acii, naiy ooieoeey). Naeaea ieioea ia 1
niioaaonoaoao au/eoaieth noa?oaai /eaia (on-1 neaaeoao au/eneeoue
ca?aiaa), oiiiaeaieth ia x e aeiaaaeaieth naiaiaeiiai /eaia.

Neaaeothuaa niia?aaeaiea aiai?eo a iieueco oiai, /oi niaiaaeaiey
ia neeoeii aa?iyoiu. Ionoue /enei p oeene?iaaii e e oiio aea i?inoia, a
X e Y – aeaa ?acee/iuo neiaa aeeeiu n. Oiaaea ei niioaaonoaotho
?acee/iua iiiai/eaiu (iu i?aaeiieaaaai, /oi eiaeu anao aoea ?acee/iu –
yoi aiciiaeii, anee p aieueoa /enea aoea aeoaaeoa). Niaiaaeaiea cia/aiee
ooieoeee icia/aao, /oi a oi/ea x yoe aeaa ?acee/iuo iiiai/eaia
niaiaaeatho, oi anoue eo ?aciinoue ia?auaaony a 0. ?aciinoue anoue
iiiai/eai noaiaie n-1 e eiaao ia aieaa n-1 ei?iae. Oaeei ia?acii, anee e
iiiai iaiueoa p, oi neo/aeiiio x iaei oainia iiianoue a iaoaea/ioth
oi/eo.

PAGE

PAGE 5

Нашли опечатку? Выделите и нажмите CTRL+Enter

Похожие документы
Обсуждение

Ответить

Курсовые, Дипломы, Рефераты на заказ в кратчайшие сроки
Заказать реферат!
UkrReferat.com. Всі права захищені. 2000-2020