Presentation laddar. Vänta.

Presentation laddar. Vänta.

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

Liknande presentationer


En presentation över ämnet: "© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd."— Presentationens avskrift:

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

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

3 Datastrukturer och algoritmer VT 2003 3© 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.

4 Datastrukturer och algoritmer VT 2003 4© 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…

5 Datastrukturer och algoritmer VT 2003 5© 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.

6 Datastrukturer och algoritmer VT 2003 6© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Exempel på ett AVL-träd 44 17 78 32 50 88 48 62 3 1 2 0 1 0 00

7 Datastrukturer och algoritmer VT 2003 7© 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.

8 Datastrukturer och algoritmer VT 2003 8© 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.

9 Datastrukturer och algoritmer VT 2003 9© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Exempel: Insättning i ett AVL-träd 44 17 78 32 50 88 48 62 4 1 3 0 2 0 01 54 x/b z/c y/a T0T0 T1T1 T3T3

10 Datastrukturer och algoritmer VT 2003 10© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Exempel: Insättning i ett AVL-träd 44 17 62 32 50 78 48 54 3 1 2 0 1 0 00 b ac T0T1T2T3 88 1

11 Datastrukturer och algoritmer VT 2003 11© 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”

12 Datastrukturer och algoritmer VT 2003 12© 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

13 Datastrukturer och algoritmer VT 2003 13© 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”

14 Datastrukturer och algoritmer VT 2003 14© 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

15 Datastrukturer och algoritmer VT 2003 15© 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

16 Datastrukturer och algoritmer VT 2003 16© 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

17 Datastrukturer och algoritmer VT 2003 17© 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

18 Datastrukturer och algoritmer VT 2003 18© 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.

19 Datastrukturer och algoritmer VT 2003 19© 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.

20 Datastrukturer och algoritmer VT 2003 20© 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.

21 Datastrukturer och algoritmer VT 2003 21© 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.

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

23 Datastrukturer och algoritmer VT 2003 23© 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.

24 Datastrukturer och algoritmer VT 2003 24© 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

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

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

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

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

29 Datastrukturer och algoritmer VT 2003 29© 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

30 Datastrukturer och algoritmer VT 2003 30© 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

31 Datastrukturer och algoritmer VT 2003 31© 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

32 Datastrukturer och algoritmer VT 2003 32© 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

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

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

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

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

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

38 Datastrukturer och algoritmer VT 2003 38© 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

39 Datastrukturer och algoritmer VT 2003 39© 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

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

41 Datastrukturer och algoritmer VT 2003 41© 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.

42 Datastrukturer och algoritmer VT 2003 42© 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.

43 Datastrukturer och algoritmer VT 2003 43© 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 15.18 på s 323!

44 Datastrukturer och algoritmer VT 2003 44© 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

45 Datastrukturer och algoritmer VT 2003 45© 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

46 Datastrukturer och algoritmer VT 2003 46© 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)

47 Datastrukturer och algoritmer VT 2003 47© 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.

48 Datastrukturer och algoritmer VT 2003 48© 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.

49 Datastrukturer och algoritmer VT 2003 49© 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)

50 Datastrukturer och algoritmer VT 2003 50© 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.

51 Datastrukturer och algoritmer VT 2003 51© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Exempel:  1 2 4 4 6 7 9 13 14 19  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.

52 Datastrukturer och algoritmer VT 2003 52© 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.

53 Datastrukturer och algoritmer VT 2003 53© 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

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

55 Datastrukturer och algoritmer VT 2003 55© 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.


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

Liknande presentationer


Google-annonser