Föreläsning 3: Strängmatchning

Relevanta dokument
Föreläsning 7. Splay-träd. Prioritetsköer och heapar. Union/Find TDDC70/91: DALG. Innehåll. Innehåll. 1 Splay-träd

Induktion LCB 2000/2001

Uppsala Universitet Matematiska Institutionen Bo Styf. Sammanfattning av föreläsningarna 5-7.

1. (6p) (a) Använd delmängdskonstruktionen för att tillverka en DFA ekvivalent med nedanstående NFA. (b) Är den resulterande DFA:n minimal? A a b.

4 Signaler och system i frekvensplanet Övningar

Finita automater, reguljära uttryck och prefixträd. Upplägg. Finita automater. Finita automater. Olika finita automater.

6 Formella språk. Matematik för språkteknologer (5LN445) UPPSALA UNIVERSITET

Tentamen Programmeringsteknik II Skrivtid: Skriv läsligt! Använd inte rödpenna! Skriv bara på framsidan av varje papper.

FORMELLA SPRÅK, AUTOMATER OCH BERÄKNINGSTEORI ÖVNINGSUPPGIFTER PÅ REGULJÄRA SPRÅK

14. MINSTAKVADRATMETODEN

Repetition 2. a) Delmängdskonstruktionen ger nedanstående DFA. Till höger med nya tillståndsnamn.

Listor = generaliserade strängar. Introduktion till programmering SMD180. Föreläsning 8: Listor. Fler listor. Listindexering.

Trigonometri. 2 Godtyckliga trianglar och enhetscirkeln 2. 3 Triangelsatserna Areasatsen Sinussatsen Kosinussatsen...

MEDIA PRO. Introduktion BYGG DIN EGEN PC

SERIER OCH GENERALISERADE INTEGRALER

Nya regler för plåtbalkar-eurokod 3-1-5

Uppsala Universitet Matematiska Institutionen Thomas Erlandsson

AUBER 95 9 jan LÖSNINGAR STEG 1:

Appendix. De plana triangelsatserna. D c

Tentamen i ETE115 Ellära och elektronik, 25/8 2015

Finaltävling den 20 november 2010

Grundläggande textanalys, VT2012

1 e x2. lim. x ln(1 + x) lim. 1 (1 x 2 + O(x 4 )) = lim. x 0 x 2 /2 + O(x 3 ) x 2 + O(x 4 ) = lim. 1 + O(x 2 ) = lim = x = arctan x 1

Vilken rät linje passar bäst till givna datapunkter?

TMV151/TMV181. Fredrik Lindgren. 19 november 2013


Allmän information (1 av 1)

Tentamen i Databasteknik

Associativa lagen för multiplikation: (ab)c = a(bc). Kommutativa lagen för multiplikation: ab = ba.

Kontrollskrivning 3 till Diskret Matematik SF1610, för CINTE1, vt 2019 Examinator: Armin Halilovic Datum: 2 maj

Innehåll. Föreläsning 12. Binärt sökträd. Binära sökträd. Flervägs sökträd. Balanserade binära sökträd. Sökträd Sökning. Sökning och Sökträd

Programmeringsguide ipfg 1.6

TATA42: Föreläsning 4 Generaliserade integraler

Geometri. 4. Fyra kopior av en rätvinklig triangel kan alltid sättas ihop till en kvadrat med hål som i följande figur varför?

TATA42: Föreläsning 4 Generaliserade integraler

FÖRSÄTTSBLAD TILL TENTAMEN. ELLER (fyll bara i om du saknar tentamenskod): Datum: 21 december Bordsnummer:

Bokstavsräkning. Regler och knep vid bokstavsräkning

GEOMETRISKA VEKTORER Vektorer i rummet.

Operativsystemets uppgifter. Föreläsning 6 Operativsystem. Skydd, allmänt. Operativsystem, historik

Uppsala Universitet Matematiska Institutionen Bo Styf. Genomgånget på föreläsningarna Föreläsning 16-17, 2010:

Byt till den tjocka linsen och bestäm dess brännvidd.

XIV. Elektriska strömmar

Sfärisk trigonometri

PASS 1. RÄKNEOPERATIONER MED DECIMALTAL OCH BRÅKTAL

Kvalificeringstävling den 2 oktober 2007

19 Integralkurvor, potentialer och kurvintegraler i R 2 och R 3

Sidor i boken

Tentamen i Analys B för KB/TB (TATA09/TEN1) kl 08 13

Skriv tydligt! Uppgift 1 (5p)

SF1625 Envariabelanalys

Slutrapport Jordbruksverket Dnr /10 Kontroll av sniglar i ekologisk produktion av grönsaker och bär

Lösningar basuppgifter 6.1 Partikelns kinetik. Historik, grundläggande lagar och begrepp

SF1626 Flervariabelanalys Tentamen 8 juni 2011, Svar och lösningsförslag

SF1625 Envariabelanalys

Tentamen TEN1, HF1012, 30 maj Matematisk statistik Kurskod HF1012 Skrivtid: 14:00-18:00 Lärare och examinator : Armin Halilovic

ORTONORMERAT KOORDINAT SYSTEM. LÄNGDEN AV EN VEKTOR. AVSTÅND MELLEN TVÅ PUNKTER. MITTPUNKT. TYNGDPUNKT. SFÄR OCH KLOT.

KVADRATISKA MATRISER, DIAGONALMATRISER, MATRISENS SPÅR, TRIANGULÄRA MATRISER, ENHETSMATRISER, INVERSA MATRISER

Lösningar och kommentarer till uppgifter i 1.2

Belöningsbaserad inlärning. Reinforcement Learning. Inlärningssituationen Belöningens roll Förenklande antaganden Centrala begrepp

EGENVÄRDEN och EGENVEKTORER

Tentamen i ETE115 Ellära och elektronik, 4/1 2017

Löpsedel: Integraler. Block 4: Integraler. Lärobok. Exempel (jfr lab) Exempel (jfr lab) Integrering i Matlab

TENTAMEN. Matematik för basår I. Massimiliano Colarieti-Tosti, Niclas Hjelm & Philip Köck :00-12:00

x = x = x = x=3 x=5 x=6 42 = 10x x + 10 = 15 x = = 20 x = 65 x + 36 = 46

CHECKLISTA FÖR PERSONALRUM

SVERIGES LANTBRUKSUNIVERSITET

LINJÄR ALGEBRA II LEKTION 1

Kan det vara möjligt att med endast

Gör slag i saken! Frank Bach

Tentamen i EDA320 Digitalteknik-syntes för D2

Rapport gällande LUS- resultat under höstterminen 2011

13 Generaliserade dubbelintegraler

Evighetskalender. 19 a) nyårsdagen var år 2000 b) julafton kommer att vara på år 2010 c) de första människorna landade på månen, 20 juli 1969

Uttryck höjden mot c påtvåolikasätt:

Så här gör du? Innehåll

Allmän information (1 av 1)

Föreläsning 7: Trigonometri

Lödda värmeväxlare, XB

definitioner och begrepp

Campingpolicy för Tanums kommun

Lösningsförslag till tentamen i SF1683 och SF1629 (del 1) 23 oktober 2017

Magnus Nielsen, IDA, Linköpings universitet

Användande av formler för balk på elastiskt underlag

Exponentiella förändringar

Serier och potensserier

GEOMETRISKA VEKTORER Vektorer i rummet.

Repetitionsuppgifter i matematik

Sammanfattning, Dag 9

EasyMP Multi PC Projection-bruksanvisning

Integraler och statistik

IE1204 Digital Design

Volym och dubbelintegraler över en rektangel

Att mäta, hur mäter vi och vilka referenser använder vi?

TATA42: Föreläsning 11 Kurvlängd, area och volym

Ett förspel till Z -transformen Fibonaccitalen

Frami transportbult 2,5kN

ORTONORMERADE BASER I PLAN (2D) OCH RUMMET (3D) ORTONORMERAT KOORDINAT SYSTEM

Gauss och Stokes analoga satser och fältsingulariteter: källor och virvlar Mats Persson

Dnr 6/002/2006. Till pensionsstiftelser som bedriver tilläggspensionsskydd och är underställda lagen om pensionsstiftelser

Diskreta stokastiska variabler

Transkript:

2D1458, Prolemlösning oh progrmmering under press Föreläsning 3: Strängmthning Dtum: 2006-09-18 Srienter: Miel Elisson, Joim Erisson oh Mts Linnder Föreläsre: Miel Goldmnn Denn föreläsning ehndlr prolemet strängmthning. Den niv nstsen, ändlig utomter oh Knuth Morris Prtts lgoritm gås genom oh ortre översiter v någr metoder för mthning v fler mönster i smm text ges. 1 Strängmthning niv lgoritm Prolemet är tt givet en text T [1...n] oh ett mönster P [1...m] hitt ll föreomster v P som delsträng till T. Den niv lgoritmen undersöer ll positioner i texten melln 1 oh n m för tt se om mönstret örjr där. När en position är undersöt så sifts mönstret ett steg åt höger i T. Tidsomplexiteten för lgoritmen som n ses nedn är Θ(mn). Algoritm 1: Strängmthning - niv lgoritm Input: Text T [1...n], mönsterp [1...m]. Output: Positioner i T där P örjr. String mthing(t [1...n], P [1...m]) (1) for j 1 to n m (2) for i 1 to m (3) if P [i] T [i + j 1] then re (4) if i m then OUTPUT j 2 Strängmthning ändlig utomt En ändlig utomt för strängmthning är en ritd grf, vrs noder oh nter lls tillstånd respetive övergångr. Vrje övergång i utomten är märt med ett eller fler teen ur lfetet Σ. Automten hr ett strttillstånd oh minst ett epternde tillstånd. Strängmthning utförs genom tt vndr i utomten, med örjn i strttillståndet, tills det epternde tillståndet nås. I vrje tillstånd väljs näst tillstånd genom tt t ett nytt teen x ur T oh sedn låt den övergång som är märt x nge näst tillstånd. Betrt följnde utomt som söer efter mönstret P = : 1

2 2D1458 Popup HT 2006, 0 1,, 2 3, 4 5 6 7,,,, Mn efinner sig i tillstånd q om de senste q läst tenen i T mthr de först q tenen i P. Som synes n endst en föreomst v led till ett epternde tillstånd. Prolem uppstår do t ex om T =, tyefterde först fem tenen hmnr vi i strttillståndet oh missr därför föreomsten v P med örjn i teen 2 i T. Lösningen på dett är tt lägg till övergångr enligt följnde figur:, 0 1 2 3 4 5 6 7,, Automten hmnr nu i det epternde tillståndet preis om P föreommer i T. Eftersom vrje teen i T undersös en end gång oh övergångrn n görs i onstnt tid så lir tidsåtgången Θ(n). För tt gör övergångr i onstnt tid n vi nvänd en övergångsmtris δ[q, x] =näst tillstånd, där q är nuvrnde tillstånd oh x är indtteen. Prolem uppstår vid stor lfeten, t ex uniode, då mtrisen n li orimligt stor oh tidsrävnde tt onstruer. 3 Strängmthning Knuth Morris Prtt Prolemet med stor övergångsmtriser n vhjälps med Knuth Morris Prtt lgoritm (KMP). Här nvänder vi oss v en prefixfuntion π[1..m] sådn tt π[q] är längden v det längst prefix v P [1..q 1] som oså är ett suffix v P [1..m].

Strängmthning 3 Algoritm 2: Strängmthning Knuth Morris Prtt Input: Text T [1...n], mönsterp [1...m]. Output: Positioner i T där P örjr. KMP(T [1...n],P[1...m]) (1) π PREKMP(P ) (2) q 0 (3) for i 1 to n (4) while q>0 nd P [q +1] T [i] (5) q π[q] (6) if P [q +1]=T [i] then q q +1 (7) if q = m (8) OUTPUT i m +1 (9) q π[q] Algoritm 3: Prefixfuntionen π tillhörnde KMP Input: P [1...m] Output: π[1...m] så tt π[q] =mx{ <q,p[1...] suffix v P [1...q]} PREKMP(P [1...m]) (1) π[1] 0 (2) for q 2 to m (3) π[q 1] (4) while >0 nd P [ +1] P [q] (5) π[] (6) if P [ +1]=P [q] then π[q] +1 (7) else π[q] 0 Då π n föreräns i tid Θ(m) lir tidsåtgången för KMP Θ(m+n). Eftersom m<nrimligen gäller, så är lgoritmen Θ(n) itid. 4 Översiter v lgoritmer för mthning v fler mönster i smm text Under föreläsningen gvs även ett pr mer övergripnde genomgångr v någr lgoritmer för smtidig mthning v fler mönster i smm text. Upprepd nvändning v lgoritmer som KMP fungerr givetvis men ättre metoder finns tt tillgå. 4.1 Trie En trie är ett söträd som representerr en mängd S v ord över lfetet Σ. Trädets nter är märt med teen ur Σ oh dess noder är märt med 1 eller 0. En nod märt 1 svrr mot tt märningen v ntern, från trädets rot ner till

4 2D1458 Popup HT 2006 den märt noden, ildr ett ord i S. En nod märt 0 etyder tt motsvrnde ord ej finns i S. Betrt följnde trie för S = {p, pelsin, s, gnu, gur}: g p s n u e u r l s i n Vlet v dtstrutur för representtion v trädet eror på om låg minnesåtgång eller sn söningr sll prioriters. Om hstighet är vitigst så n det vr lämpligt tt i vrje nod håll en rry v storle Σ med pere till rnnodern. I vrje nod n då uppslgning v efterommnde nod görs snt, ovsett hur stort lfetet är, så uppslg v ett m teen långt ord går i tid Θ(m). Insättning v ett ord v längd m gåridettfllitidθ(m). Om minnessnålhet prioriters n det vr mer lämpligt med dynmis rryer i nodern. Dett låter oss i vrje nod lgr preis så mång rnreferenser som ehövs, istället för en rnreferens för vrje teen i lfetet. Dess rryer hålls med fördel sorterde för snre uppslg. Sillnden i tidsåtgång (oh minnesåtgång) siljer sig endst från det föregående fllet med en onsnt ftor, så tidsomplexiteten är oförändrd. 4.2 Suffixträd Om vi sll sö efter fler strängr P i i T, så n det lön sig tt först onstruer ett suffixträd över T oh sedn för vrje P i sö i suffixträdet. Själv suffixträdet är helt enelt en trie innehållndes ll suffix till T.OmP i är en delsträng till T så måste P i vr prefix till något v T s suffix oh n därför i tid Θ(m) slås upp i suffixträdet. Själv onstrutionen görs nivt i tid Θ(n 2 ) men n görs i tid Θ(n) (se littertur för detljer). 4.3 Suffixrry Ett lterntiv till tt onstruer suffixträd är tt nvänd en suffixrry, vilet är en rry vrs element är ll suffix till T (eller referenser till dess) sorterde i lexiogrfis ordning. På smm sätt som för suffixträdet n föreomster v ett mönster P i T finns genom tt sö efter de element i rryen vrs prefix är P. Söningen n görs genom inärsöning i tid O(m log n) där m oh n är mönstret respetive textens storle. Suffixrryen n onstruers i tid Θ(n), texgenom tt först ygg ett suffixträd oh sedn sö genom dett i lexiogrfis ordning. I

Strängmthning 5 prtien är det oft, lnd nnt på grund v hög onstntftorer, ättre tt nvänd ndr metoder. Den niv nstsen vore tt sorter suffixen med en vnlig jämförelseserd lgoritm. Eftersom suffixens längd är O(n) lir då tidsomplexiteten O(n 2 log n). Genom tt utnyttj tt vrje suffix till ett suffix föreommer som prefix till något nnt suffix, n vi reltivt enelt förättr den niv nstsen. Låt gå från 0 till log n oh sorter i vrje steg suffixen med vseende på de först 2 tenen. I den först itertionen inspeterr vi vrje suffix först teen oh sorterr efter dess. I efterföljnde itertioner utnyttjr vi tt den först hälften v de 2 tenen som sll ses till redn är i ordning oh tt de återstående 2 1 tenen är prefix till något nnt suffix oh som sådnt hr ordnts i föregående itertion. Sorteringssteget n reduers till ett onstnt ntl jämförelser för vrje suffixpr oh n lltså görs i tid O(n log n). Sorteringen utförs i ll de log n itertionern, så tidsomplexiteten lir O(n(log n) 2 ). 4.4 Aho Corsi Aho Corsis lgoritm är en generlisering v KMP som söer efter föreomster v fler strängr P i smtidigt. Algoritmen onstruerr en trie innehållndes P i, lägger till ett ntl återlänr oh ehndlr söträdet som en ändlig utomt med strttillstånd i roten oh epternde tillstånd i de noder som är märt 1. Följnde figur illustrerr hur en sådn utomt, med en mjoritet v övergångrn orttgn, sulle unn se ut för P i {v,rm,r,rmod,r}. 0 2 1 8 r v v 7 9 m r 6 3 o 4 d 5 10 I prtien nvänder Aho Corsis lgoritm, lisom KMP, inte den ändlig utomten diret, utn onstruerr istället en generlisering v KMP:s prefixfuntion. ÿ