© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.

Slides:



Advertisements
Liknande presentationer
Svenska WebDewey Introduktion
Advertisements

Innehåll, huvudpresentation 4. Rangordning av ordningsstörningar (fråga 1) 5. Problem med nedskräpning (fråga 1a) 6. Problem med skadegörelse (fråga 1b)
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 4.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning
BENÄMNA lätta ord SPRÅKTRÄNING VID AFASIKg VIII
Tillämpning av bolagsstyrningskoden vid årsstämmor 2005 och 2006.
Hela Sverige ska leva Totalrapport. Regeringens bidrag har medverkat till kunskapsförmedling?
Leif Håkansson’s Square Dancer Rotation
Projektföljeforskning
Eddie Arnold - Make The World Go Away Images colorées de par le monde Déroulement automatique ou manuel à votre choix 1 för dig.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 4.
Elkraft 7.5 hp distans: Kap. 3 Likströmsmotorn 3:1
DoA VT -07 © Anders Broberg, Lena Kallin Westin, P = ((C,F,3), (B,D,3), (C,G,4),(A,F,4), (A,R,4), (C,D,5), (E,G,6), (B,R,6), (A,E,6), (A,C,8)) A.
Förstudie 2. Design 3. Migrering 4 Analys av befintlig miljö –Microsoft Assessment and Planning (MAP) kan användas för att analysera sin miljö.
LANDSTINGSDIREKTÖRENS STAB Regional utveckling BILD 1 Resultat av enkät till landstingspolitiker
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 7 Träd.
Svenska WebDewey Introduktion
Skånedatabasen & Region Skånes tillgänglighetsmodell
Karolinska Institutet, studentundersökning Studentundersökning på Karolinska Institutet HT 2013.
Kommunpussel Din uppgift är att sortera de organisatoriska delar på nästa sida på ett sådant sätt att det överensstämmer med hur din kommun är organiserad.
Punktprevalensmätning av trycksår 2011, v.40 Resultat från landstingen
V E R S I O N N R 2. 0 T A V E L I D É E R I M I L J Ö.
Bastugatan 2. Box S Stockholm. Blad 1 Läsarundersökning Maskinentreprenören 2007.
| Trycksår Kommun/Områdes-skillnader (inklusive könsdimensionen) Dennis Nordvall Statistiker/Datamanager,
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Svenska WebDewey Introduktion Harriet Aagaard Svenska Deweyredaktion
Enkätresultat för Grundskolan Elever 2014 Skola:Hällby skola.
15 x 25 meter. Skriv banenavn Skriv designet af Skriv dato MÅL sväng vänster 6 sväng höger 5 runt 7 Vänster runt hund höger runt.
Avgiftsstudie Nils Holgersson år 2007 Bild 1 Baserat på rapportversion
1 Vänsterskolan Debattartiklar. 2 Aktuell krok 3 Aktuella krokar 1. Direkt krok.
Postmilen båda banorna
(2) Avvikelse från std. kostnad (5) Andel inv 65+ med insats (4) Andel 80+ i befolkningen (1) Kronor/ invånare (65+) (3) Kronor/ brukare (6) Ytterfall.
Hittarps IK Kartläggningspresentation år 3.
Från Gotland på kvällen (tågtider enligt 2007) 18:28 19:03 19:41 19:32 20:32 20:53 21:19 18:30 20:32 19:06 19:54 19:58 20:22 19:01 21:40 20:44 23:37 20:11.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
TÄNK PÅ ETT HELTAL MELLAN 1-50
Greppa Näringen Medlemsundersökning, kvartal 1. 1.
Grundskolan år 9 Droger och spel 2008 BILD 1 Elever som röker (dagligen eller ibland)
/hp Beräkning av kommunernas och samkommunernas utgifter år 2013 Övriga utgifter 0,81 md € Investeringar 4,70 md € Övr. verksamhetskostn. 0,79.
Helhet Händelse Agerande Kunskap om vardagsverksamheten Förståelse av vardagsverksamheten.
1 Joomla © 2009 Stefan Andersson 1. 2 MÅL 2 3 Begrepp Aktör: en användare som interagerar med webbplatsen. I diagrammet till höger finns två aktörer:
Listor En lista är en föränderlig ordnad samling objekt.
Kouzlo starých časů… Letadla Pár foteček pro vzpomínku na dávné doby, tak hezké snění… M.K. 1 I Norrköping får man inte.
Best pictures on the internet 2007 Awards 1http:// Är vänsteralliansen trovärdig i Norrköping.
Enkätresultat för Fritidshem Elever 2014 Skola:Fritidselever, Gillberga skola.
Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Bredden-först exempel ABCD EFGH IJKL MNOP = Obesökt.
Best pictures on the internet 2007 Awards 1http:// (s), (v), och (mp) i Norrköping, gillar inte att vi använder grundlagarna.
2 Agenda 1. Börja arbeta med Excel Hantera arbetsböcker 3. Formler 4. Formatera 5. Diagram 6. Skriva ut 7. Referenser mellan kalkylblad 8. Arbeta.
Arbetspensionssystemet i bilder Bildserie med centrala uppgifter om arbetspensionssystemet och dess funktion
SDDB hösten 2003 Preliminära resultat Svensk Njurmedicinsk Förening Riksstämman Stockholm KG Prütz Verksamhetsområde Internmedicin Helsingborgs.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 11 Trie, Sökning och Sökträd.
Datastrukturer och algoritmer
Enkätresultat för Grundskolan Föräldrar 2014 Skola - Gillberga skola.
Logikprogrammering 21/10 Binära träd
Datastrukturer och algoritmer
Smittspårarutbildning
Gymnasieskolan år 2 Droger och spel 2008 BILD 1 Elever som röker (dagligen eller ibland)
Räkna till en miljard 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13,14,15,16,17,18,19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, En miljard är ett.
Förskoleenkät Föräldrar 2012 Förskoleenkät – Föräldrar Enhet:Hattmakarns förskola.
Bild 1 Prognos för länets arbetsmarknad Stefan Tjb.
Grundskola Elever 2013 Grundskoleenkät - Elever Enhet: Gillberga skola.
1 Jan Lundström OV’s Hemsida Utbildning Ledare. 2 Jan Lundström OV’s Hemsida Standard Lagrum.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 12.
ITM1 Kapitel 8 Datastrukturer Grundläggande datavetenskap, 4p Utgående från boken Computer Science av: J. Glenn Brookshear.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 9 Grafalgoritmer.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 13 Sortering.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 14.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 14.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 8 Relationer, prioritetsköer och grafer.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 16.
Presentationens avskrift:

© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Innehåll  Sökträd  Sökning  Delar av kapitel 15 i boken + OH-bilderna…

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Binärt sökträd  Används för sökning i linjära samlingar av dataobjekt, specifikt för att konstruera tabeller och lexikon.  Organisation:  Ett binärt träd som är sorterat med avseende på en sorteringsordning R av etikett-typen så att oI varje nod N gäller att alla etiketter i vänster delträd går före N som i sin tur går före alla etiketter i höger delträd. oAlla noder är definierade.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Binära sökträd  Om trädet är komplett så vet vi att både medel- och värstafallskomplexiteten är O(log n).  Men… Det tar tid och kraft att se till att trädet är komplett. Ibland kan man tvingas bygga om hela trädet.  Det räcker att se till att balansen är god…

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 AVL-träd  Kallas även höjdbalanserat binärt sökträd.  Adelson – Velskii and Landis  Noderna är fördelade så att trädet är väl balanserat. För varje enskild nod gäller:  Höjden för vänster och höger delträd skiljer sig åt med högst 1.  Vi får värstafallskomplexitet för sökning O(log n) utan att försämra komplexiteten för insättning och borttagning (som alltså också är O(log n)).  Algoritmerna för insättning och borttagning blir lite bökigare att konstruera.  Måste lagra information om höjden på delträden i noderna.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Exempel på ett AVL-träd

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Insättning i ett AVL-träd  Det nya elementet gör att trädhöjden förändras och att trädet måste höjdbalanseras.  Man kan hålla reda på delträdens höjd på olika sätt: oLagra höjden explicit i varje nod oLagra en balansfaktor för noden (-1, 0, +1 men kan temporärt bli +/-2) –Balansen = h(vänster barn) – h(höger barn)  Förändringen brukar beskrivas som en höger- eller vänsterrotation av ett delträd.  Det räcker med en rotation för att få trädet i balans igen.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Insättningsalgoritm  Starta från den nya noden och leta uppåt tills man hittar en nod x så att ”grandparent” z är obalanserat. Markera x:s förälder y.  Gör en rekonstruering av trädet så här:  Döp om x, y, z till a, b och c baserat på inorder-ordning.  Låt T 0, T 1, T 2 och T 3 vara delträden till x, y och z i inorder-ordning. (Inget av delträden får ha x, y eller z som rot.)  z byts ut mot b, dess barn är nu a och c.  T 0 och T 1 är barn till a och T 2 och T 3 är barn till c.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Exempel: Insättning i ett AVL-träd x/b z/c y/a T0T0 T1T1 T3T3

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Exempel: Insättning i ett AVL-träd b ac T0T1T2T3 88 1

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Fyra olika rotationer (1) Om b = y kallas det en enkel rotation ”Rotera upp y över z”

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Fyra olika rotationer (2) Om b = y kallas det en enkel rotation ”Rotera upp y över z” T0T0 T1T1 T2T2 T3T3

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Fyra olika rotationer (3) Om b = x kallas det en dubbel rotation ”Rotera upp x över y och sedan över z”

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Fyra olika rotationer (4) Om b = x kallas det en dubbel rotation ”Rotera upp x över y och sedan över z” T0T0 T1T1 T2T2 T3T3 T0T0 T1T1 T2T2 T3T3

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Ett annat sätt att beskriva det på y x T0T0 Anta att vi har balans… T1T1 T2T2

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Ett annat sätt att beskriva det på y x Anta att vi har balans…... och sen stoppar in något som sabbar den T0T0 T1T1 T2T2

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 y x Gör en enkel rotation. Ett annat sätt att beskriva det på T0T0 T1T1 T2T2

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 y x Ett annat sätt att beskriva det på T0T0 T1T1 T2T2 Gör en enkel rotation.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 x Ett annat sätt att beskriva det på T0T0 T1T1 T2T2 Gör en enkel rotation.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 y x Ett annat sätt att beskriva det på T0T0 T1T1 T2T2 Gör en enkel rotation.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 yx Ett annat sätt att beskriva det på T0T0 T1T1 T2T2 Gör en enkel rotation.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 y x Ett annat sätt att beskriva det på T0T0 T1T1 T2T2

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 y x Klart! Ett annat sätt att beskriva det på T0T0 T1T1 T2T2 Gör en enkel rotation.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 y x I ett steg: Ett annat sätt att beskriva det på T0T0 T1T1 T2T2

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 y x Ett annat sätt att beskriva det på T0T0 T1T1 T2T2

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 z y Ett nytt exempel… Ett annat sätt att beskriva det på

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, den här gången stoppar vi in något här Ett annat sätt att beskriva det på z y

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Prova en enkel rotation igen… Ett annat sätt att beskriva det på z y

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 … hmm vi har inte fått balans… Ett annat sätt att beskriva det på z y

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Börja om från början… Ett annat sätt att beskriva det på z y

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 … och titta på strukturen i Y Ett annat sätt att beskriva det på z y

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Vi får lov att göra en dubbel rotation Ett annat sätt att beskriva det på z y x T0T0 T1T1 T2T2 T3T3

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Ett annat sätt att beskriva det på z y x T0T0 T1T1 T2T2 T3T3

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Ett annat sätt att beskriva det på z y x T0T0 T1T1 T2T2 T3T3

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Ett annat sätt att beskriva det på z y x T0T0 T1T1 T2T2 T3T3

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Ett annat sätt att beskriva det på z y x T0T0 T1T1 T2T2 T3T3

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Ett annat sätt att beskriva det på z y x T0T0 T1T1 T2T2 T3T3

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Klart! Ett annat sätt att beskriva det på z y x T0T0 T1T1 T2T2 T3T3

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Double rotation in one step... Ett annat sätt att beskriva det på z y x T0T0 T1T1 T2T2 T3T3

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Ett annat sätt att beskriva det på z y x T0T0 T1T1 T2T2 T3T3

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Borttagning ur ett AVL-träd  Borttagningen börjar som en vanlig borttagning ur ett binärt sökträd.  Men även borttagning ur ett AVL-träd kan störa balansen.  Vi gör en rotation som tidigare för att återställa den (behövs bara enkla rotationer).  När vi återställer balansen på ett ställe kan det uppstå obalans på ett annat…  Måste upprepa balanseringen (eller kontroll av balansen) till dess vi nått roten.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Flervägs sökträd  Ett m-vägs sökträd (m-way search tree, m-ary search tree) är en generalisering av ett binärt sökträd.  Trädet är ett ordnat träd där varje nod har högst m delträd.  Etiketterna är sekvenser av upp till m-1 värden i stigande sorteringsordning som fungerar som delningspunkter vid sökning.  Oftast är etiketterna nycklar och värdet till en viss nyckel finns i lövet.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Flervägs sökträd  Till en nod med k+1 delträd, t 0, t 1, …, t k hör en sekvens med värden v 1, v 2, …, v k. Sorteringsvillkoret för trädet är att:  alla värden i t 0 går före v 1 (i sorteringsordningen)  alla värden i t j ligger mellan v j och v j+1 för 1<j<k  alla värden i t k går efter v k  Operationerna blir liknande de för binärt sökträd.  Plattare träd. Höjden = log m n  Mer jobb i noderna Se Fig på s 323!

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 B-träd  Ett B-träd av ordning m är en typ av balanserat m-vägs sökträd som uppfyller följande:  Roten är antingen ett löv eller har två barn  Alla noder utom roten och löven har mellan m/2 och m barn  Alla löv är på samma djup

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 B-träd  Insättning av nya element görs alltid på den djupaste nivån, i rätt löv för att bevara sorteringsordningen.  En insättning kan leda till att noden blir för stor (dvs > m). Då måste noden delas upp.  Borttagning kan leda till att man måste justera värderna och slå ihop noder eller omfördela värden mellan dem.  B-träd av ordning 3 kallas också 2-3 träd

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 B-träd analys:  För ett B-träd av ordning m, med höjden h och n nycklar insatta gäller h = O(log n).  För att välja rätt underträd vid sökning krävs att man stänger in sökt nyckel mellan två nycklar i noden. Om nycklarna är sorterade och lagrade i en vektor kan man använda binärsökning. Sökning i en nod O(log m)  Nycklarna i vektorn måste skiftas runt vid splittring av en nod. Kostnad O(m)  Eftersom m är en konstant blir det O(1) arbete i varje nod vid sökning och insättning. Antalet noder som berörs är uppåt begränsad av höjden.  Värstafallskostnad för sökning och insättning O(log n)

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Exempel på B-träd: 2-4 träd  Varje nod har 1, 2 eller 3 nycklar och varje icke-löv har 2-4 barn.  Regel för insättning:  Man letar sig fram till rätt löv på liknande sätt som i ett vanligt sökträd.  Den nya nyckeln sätts in där. Om det blir för många nycklar i det lövet splittras det.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Exempel på B-träd: 2-4 träd  Regel för borttagning:  Man letar sig fram till rätt löv på liknande sätt som i ett vanligt sökträd.  Enkla fallet: Det finns flera nycklar i noden, ta bort den som ska bort.  Halvsvåra fallet: Syskonen har ”extra” element som vi kan sno.  Svåra fallet: Vi får tomt och syskonet har bara ett element. Då måste vi göra en ”fuse”- operation.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Linjär sökning  Starta från början och sök tills elementet hittat eller sekvensen slut.  Komplexitet  Elementet finns: I medel gå igenom halva listan, O(n)  Elementet saknas: I medel gå igenom hela listan, O(n)  Om listan är sorterad:  Elementet saknas: Räcker i medel att leta genom halva listan n/2, O(n)

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Binär sökning  Om sekvensen har index (tex i en array eller numrerad lista) kan man söka binärt.  Successiv halvering av sökintervallet.  Vi får värsta-falls och medelkomplexitet O(log n).  Jämför med elementet närmast mitten i intervallet.  Om likhet – klart!  Om det sökta värdet kommer före i sorteringsordningen fortsätt sökningen rekursivt i det vänstra delintervallet.  Om det kommer efter i sorteringsordningen fortsätt sökningen rekursivt i det högra delintervallet.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Exempel:   Sök efter elementet 13.  Linjär sökning: 8 jämförelser innan träff.  Binär sökning: 2 jämförelser innan träff.  Sök efter elementet 10  Linjär sökning: 8 jämförelser innan man ger upp.  Binär sökning: 4 jämförelser innan man ger upp.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Strängsökning  Specialfall av sökning.  Man söker inte ett enstaka element utan en sekvens av element.  Elementet ofta tecken.  Formellt:  Vi har ett mönster P med längd m och vi söker i en sekven S av längd n där m<<n.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Första försök till algoritm:  Börja jämföra mönstret med sekvensen med start i position ett.  Jämför mönstret från vänster till höger tills man misslyckas.  Flytta då fram en position i sekvensen och försök igen.  Värsta fallet: Varje element i S avläses m gånger, dvs O(n*m)  I praktiken bättre

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Exempel

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Boyer-Moores algoritm  Två idéer:  Gör matchningen baklänges, med start i mönstrets sista element.  Utnyttja kunskap om mönstrets uppbyggnad och informationen om värdet på den första felmatchande elementet i S för att flytta fram mönstret så långt som möjligt varje gång. oOm det finns upprepningar av element i mönstret så får man bara flytta fram till den högraste förekomsten. oFörskjutningstabell talar om hur långt man får flytta.