Datastrukturer och algoritmer

Relevanta dokument
Föreläsning 2. AVL-träd, Multi-Way -sökträd, B-träd TDDD71: DALG. Innehåll. Innehåll. 1 Binära sökträd

Föreläsning 6. Sökträd: AVL-träd, Multi-Way -sökträd, B-träd TDDC70/91: DALG. Innehåll. Innehåll. 1 AVL-träd

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

Föreläsning 5 TDDC91,TDDE22,725G97: DALG. Föreläsning i Datastrukturer och algoritmer 18 september 2018

Föreläsning 9 Datastrukturer (DAT037)

Självbalanserande träd AVL-träd. Koffman & Wolfgang kapitel 9, avsnitt 1 2

Datastrukturer. föreläsning 10. Maps 1

Binära sökträd. Seminarium 9 Binära sökträd Innehåll. Traversering av binära sökträd. Binära sökträd Definition. Exempel på vad du ska kunna

Självbalanserande AVL-träd Weiss, avsnitt 4.4

Datastrukturer. föreläsning 10. Maps 1

Ett generellt träd är. Antingen det tomma trädet, eller en rekursiv struktur: rot /. \ /... \ t1... tn

Träd Hierarkiska strukturer

Föreläsning Datastrukturer (DAT036)

Föreläsning 9 Innehåll

Föreläsning Datastrukturer (DAT036)

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5

Programkonstruktion och. Datastrukturer

Ännu mera träd: 2-3-träd, B-träd, rödsvarta träd, träd Weiss, avsnitt 4.7, 11.5, 12.2, etc.

Upplägg. Binära träd. Träd. Binära träd. Binära träd. Antal löv på ett träd. Binära träd (9) Binära sökträd (10.1)

Föreläsning 10 Innehåll. Diskutera. Inordertraversering av binära sökträd. Binära sökträd Definition

Föreläsning 10 Innehåll

Linjär sökning. Föreläsning 12. Binär sökning. Exempel: Binära sökträd. Binärt sökträd

Datastrukturer. föreläsning 9. Maps 1

Föreläsning 11 Innehåll. Diskutera. Binära sökträd Definition. Inordertraversering av binära sökträd

Datastrukturer som passar för sökning. Föreläsning 10 Innehåll. Inordertraversering av binära sökträd. Binära sökträd Definition

Lösningar Datastrukturer TDA

Föreläsning 4 Datastrukturer (DAT037)

Informationsteknologi Tom Smedsaas 19 augusti 2016

Datastrukturer som passar för sökning. Föreläsning 11 Innehåll. Binära sökträd Definition. Inordertraversering av binära sökträd

Sökning. Översikt. Binärt sökträd. Linjär sökning. Binär sökning. Sorterad array. Linjär sökning. Binär sökning Hashtabeller

Seminarium 13 Innehåll

Trädstrukturer och grafer

Föreläsning 10 Innehåll. Prioritetsköer och heapar. ADT Prioritetskö. Interface för Prioritetskö. Exempel på vad du ska kunna

TDDI16 Datastrukturer och algoritmer. Prioritetsköer, heapar, Union/Find

ADT Prioritetskö. Föreläsning 13 Innehåll. Prioritetskö vs FIFO-kö. Prioritetskö Exempel på användning. Prioritetsköer och heapar

ADT Prioritetskö. Föreläsning 12 Innehåll. Prioritetskö. Interface för Prioritetskö. Prioritetsköer och heapar

Datastrukturer. föreläsning 9. Maps 1

Algoritmer och datastrukturer 2012, fo rela sning 8

Föreläsning 4 Datastrukturer (DAT037)

Föreläsning 13 Innehåll

Föreläsning 10 Datastrukturer (DAT037)

Datastrukturer. Föreläsning 5. Maps 1

Innehåll. Binära sökträd. Binärt sökträd. AVL-träd. Exempel på ett AVL-träd. ÿdelar av kapitel 15 i boken + OH-bilderna

Föreläsning 7. Träd och binära sökträd

DAI2 (TIDAL) + I2 (TKIEK)

Linjärt minne. Sammanhängande minne är ej flexibelt. Effektivt

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 8 Erik Nilsson, Institutionen för Datavetenskap, LiU

Abstrakta datatyper. Primitiva vektorer. Deklarera en vektor

Datastrukturer och algoritmer. Innehåll. Trie. Informell specifikation. Organisation av Trie. Föreläsning 13 Trie och Sökträd.

Rekursiva algoritmer sortering sökning mönstermatchning

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Tentamen Datastrukturer (DAT036)

Föreläsning 9 Innehåll

Fredag 10 juni 2016 kl 8 12

TDDC74 Programmering: Abstraktion och modellering Datortenta , kl 14-18

3. Toppkvinnor på hög Låt lådan och de två kvinnornas famnar utgöra stackarna L, K1 respektive K2. Från början finns alla kort i L.

Föreläsning Datastrukturer (DAT037)

Tommy Färnqvist, IDA, Linköpings universitet

Magnus Nielsen, IDA, Linköpings universitet

Tentamen Datastrukturer D DAT 036/INN960

Två fall: q Tom sekvens: () q Sekvens av element: (a b c) ; (sum-rec '(2 4 6)) = 12. q Första elementet uppfyller vissa villkor: (2 a b c)

Innehåll. Föreläsning 11. Organisation av Trie. Trie Ytterligare en variant av träd. Vi har tidigare sett: Informell specifikation

Tentamen kl Uppgift 4. Uppgift 5

Tentamen Datastrukturer D DAT 036/INN960

Tentamen Datastrukturer, DAT037 (DAT036)

13 Prioritetsköer, heapar

Tentamen Datastrukturer (DAT036/DAT037/DIT960)

Tabeller. Programkonstruktion. Moment 8 Om abstrakta datatyper och binära sökträd. Implementering av tabellen. Operationer på tabellen

Föreläsning Datastrukturer (DAT036)

Inlämningsuppgiften. Föreläsning 9 Innehåll. Träd. Datastrukturer i kursen

Lösningsförslag för tentamen i Datastrukturer (DAT037) från

Datastrukturer och algoritmer. Föreläsning 15 Inför tentamen

Lösningsförslag till tentamen Datastrukturer, DAT037 (DAT036), Tiden det tar att utföra en iteration av loopen är oberoende av värdet på

BINÄRA TRÄD. (X = pekarvärdet NULL): struct int_bt_node *pivot, *ny; X X X 12 X X 12 X X -3 X X

Datastrukturer, algoritmer och programkonstruktion (DVA104, VT 2015) Föreläsning 6

Datastrukturer i kursen. Föreläsning 8 Innehåll. Träd rekursiv definition. Träd

Programmeringsmetodik DV1 Programkonstruktion 1. Moment 8 Om abstrakta datatyper och binära sökträd

Inom datalogin brukar man använda träd för att beskriva vissa typer av problem. Om man begränsar sig till träd där varje nod förgrenar sig högst två

TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:00-19:00

Programmering i C++ EDA623 Dynamiska datastrukturer. EDA623 (Föreläsning 11) HT / 31

ORDINARIE TENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Quicksort. Koffman & Wolfgang kapitel 8, avsnitt 9

Föreläsning 5 Datastrukturer (DAT037)

Tentamen Datastrukturer D DAT 035/INN960

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 08:15 13:15

Träd och koder. Anders Björner KTH

Hitta k största bland n element. Föreläsning 13 Innehåll. Histogramproblemet

TENTAMEN: Algoritmer och datastrukturer. Läs detta! Uppgifterna är inte avsiktligt ordnade efter svårighetsgrad.

Föreläsning Datastrukturer (DAT036)

Föreläsning 5. Träd Binära träd Binärt sökträd som ADT Implementering av binärt sökträd Travestera binärt sökträd Sökning Insättning/borttagning

Träd - C&P kap. 10 speciellt binära sökträd sid. 452

Prov i DAT 312: Algoritmer och datastrukturer för systemvetare

Optimala koder. Övre gräns för optimala koder. Gränser. Övre gräns för optimala koder, forts.

Optimala koder. Det existerar förstås flera koder som har samma kodordsmedellängd. Enklaste fallet är att bara byta 0:or mot 1:or.

Programmering för Språkteknologer II. Innehåll. Associativa datastrukturer. Associativa datastrukturer. Binär sökning.

OMTENTAMEN I DATASTRUKTURER OCH ALGORITMER DVG B kl. 14:15 19:15

Tentamen Datastrukturer, DAT037 (DAT036)

TENTAMEN: Algoritmer och datastrukturer. Läs detta!

Programmering i C++ EDAF30 Dynamiska datastrukturer. EDAF30 (Föreläsning 11) HT / 34

Transkript:

Datastrukturer och algoritmer Föreläsning 12 2 Innehåll Handledning, labbar, samarbete, etc Sökträd Sökning Delar av kapitel 15.4-15.5 i boken + OHbilderna 3 Handledning/labutlämning Ingen labhandledning via mail Alla handlednings/labutlämningsresurser finns i schemat Ingen handledning/labutlämning sker utanför dessa tider Gruppövning 5 (den 22/5) ställs in OU4 kommer att vara rättad och lämnas ut tis 29/5- ons 3/5. Se schemat för utlämningstider. C/DV-studenterna skriver tenta den 29e men alla IDstudenter kan passa på att hämta ut sina labbar då. OU4 kompletteras senast torsdag 7/6 4 Samarbete, plagiat och vilseledande vid prov Samarbete, diskussion kring te problemställningen, mindre sntaproblem men inte gemensamt lösande av uppgiften i sin helhet. Plagiat, oredovisad imitation eller kopiering av ett verk som framställs som egen skapelse; litterär, vetenskaplig eller konstnärlig stöld. Vilseledande vid prov, fusklappar, inlämnande av kod/rapport som någon annan (helt eller delvis) skrivit 5 Hederskode http://www.cs.umu.se/information/hederskode.html The Honour Code is an agreement from the students, individuall and collectivel: that the will not give or receive aid in eaminations; that the will not give or receive unpermitted aid in class work, in the preparation of reports, or in an other work that is to be used b the instructor as the basis of grading; that the will acknowledge an (permitted) help the have received and resources the have used for doing such work; that the will make sure the understand the entiret of submitted works, including all parts the received help for; that the will do their share and take an active part in seeing to it that others as well as themselves uphold the spirit and letter of the Honour Code. While the facult alone has the right and obligation to set academic requirements, the students and facult will work together to establish optimal conditions for honourable academic work. 6 Binärt sökträd -repetition Ett binärt träd som är sorterat med avseende på en sorteringsordning R av etikettpen så att I 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. Alla noder är definierade.

Binära sökträd AVL-träd 7 Om trädet är komplett så vet vi att både medel- och värstafallskompleiteten är O(log n). Men Det tar tid och kraft att se till att trädet är komplett. Ibland kan man tvingas bgga om hela trädet. Det räcker att se till att balansen är god 8 Kallas även höjdbalanserat binärt sökträd. Adelson Velskii and Landis, 1962 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. AVL-träd Eempel på ett AVL-träd 9 Vi får värstafallskompleitet för sökning O(log n) utan att försämra kompleiteten 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. 1 44 3 17 1 78 2 32 5 1 88 48 62 AVL-träd Insättning i ett AVL-träd 11 Minimala höjdbalanserade träd Bild från sidan 319 i Janlert L-E., Wiberg T., Datatper och algoritmer, Studentlitteratur, 2 12 Det na 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: Lagra höjden eplicit i varje nod Lagra en balansfaktor för noden (-1,, +1 men kan temporärt bli +/-2) o 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.

Insättningsalgoritm Eempel: Insättning i ett AVL-träd 13 Börja med att sätta in elementet som vanligt i ett binärt sökträd. Starta från den na noden och leta uppåt tills man hittar en nod så att grandparent z är obalanserat. Markera :s förälder. Gör en rekonstruering av trädet så här: Döp om,, z till a, b och c baserat på inorder-ordning. Låt,, och vara delträden till, och z i inorder-ordning. (Inget av delträden får ha, eller z som rot.) z bts ut mot b, dess barn är nu a och c. och är barn till a och och är barn till c. 14 44 4 z/c 17 1 78 3 /a 32 5 2 88 /b 48 62 1 54 Eempel: Insättning i ett AVLträd Fra olika rotationer (1) 15 b a c 44 3 T T1 T2 T3 17 1 62 2 32 5 1 78 1 48 54 88 16 Om b = kallas det en enkel rotation Rotera upp över z Fra olika rotationer (2) Fra olika rotationer (3) 17 Om b = kallas det en enkel rotation Rotera upp över z 18 Om b = kallas det en dubbel rotation Rotera upp över och sedan över z

Fra olika rotationer (4) 19 Om b = kallas det en dubbel rotation Rotera upp över och sedan över z 2 Anta att vi har balans... och sen stoppar in något som sabbar den 21 Gör en enkel rotation. 22 Gör en enkel rotation. 23 Gör en enkel rotation. 24 Gör en enkel rotation. Klart!

25 I ett steg: 26 I ett steg: a/ Eempel från boken b/ c/z Döp om,, z till a, b och c baserat på inorder-ordning. Låt T, T1, T2 och T3 vara delträden till, och z i inorder-ordning. (Inget av delträden får ha, eller z som rot.) z bts ut mot b, dess barn är nu a och c. T och T1 är barn till a och T2 och T3 är barn till c. 28 Ettntteempel dubbelrotation z 29 z... den här gången stoppar vi in något här 3 z och tittar på strukturen i Y

31 z Vi får lov att göra en dubbel rotation 32 z Klart! 33 z I ett steg... 34 z I ett steg... Borttagning ur ett AVL-träd Flervägs sökträd 35 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. 36 Ett m-vägs sökträd (m-wa search tree, m-ar 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 ncklar och värdet till en viss nckel finns i lövet.

Flervägs sökträd Eempel 37 Till en nod med k+1 delträd, t, 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 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 38 Bild från sidan 323 i Janlert L-E., Wiberg T., Datatper och algoritmer, Studentlitteratur, 2 B-träd B-träd 39 Ett B-träd av ordning m är en tp av balanserat m-vägs sökträd som uppfller följande: Roten är antingen ett löv eller har minst två barn Alla noder utom roten och löven har mellan m/2 och m barn Alla löv är på samma djup 4 Insättning av na 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 Eempel på B-träd: 2-4 träd 41 Varje nod har 1, 2 eller 3 ncklar 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 na nckeln sätts in där. Om det blir för många ncklar i det lövet splittras det. 42 Denna bild och resterande bilder om 2-4 träd kommer från 529 och framåt i Goodrich M. T., Tamassia R., Datastructures and Algorithms in Java, John Wile & Sons, 1998 och/eller tillhörande OH-material.

Insert i 2-4 träd Insert i 2-4 träd, forts 43 Stoppa in elementen 4, 6, 12 Att stoppa in elementet 15 orsakar en split. Ersätt den temporära 5-noden med en 3-nod och en 2-nod och fltta upp ett element till föräldern 44 Sätt nu in först 3 och sen 5(som orsakar en n split) En split kan sprida sig uppåt... 2-4 träd, borttagning 46 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 ncklar i noden, ta bort den som ska bort. Halvsvåra fallet: Sskonen har etra element som vi kan sno. Svåra fallet: Vi får tomt och sskonet har bara ett element. Då måste vi göra en fuse - operation. Enkla fallet, det finns flera element i noden Halvsvåra fallet: Sskonen har etra element som vi kan sno. 47 48 Kallas transfer

49 Svåra fallet: Måste göra en fuse - operation. 5 Svåra fallet: Måste göra en fuse - operation som vandrar uppåt i trädet. Linjär sökning Binär sökning 51 Starta från början och sök tills elementet hittat eller sekvensen slut. Kompleitet 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) 52 Om sekvensen har inde (te i en arra eller numrerad lista) kan man söka binärt. Successiv halvering av sökintervallet. Vi får värsta-falls och medelkompleitet 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. Eempel: Strängsökning 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 1 Linjär sökning: 8 jämförelser innan man ger upp. Binär sökning: 4 jämförelser innan man ger upp. 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 54

Första försök till algoritm: Eempel 55 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 misslckas. Fltta 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 56 Boer-Moores algoritm 57 Två idéer: Gör matchningen baklänges, med start i mönstrets sista element. Utnttja kunskap om mönstrets uppbggnad och informationen om värdet på den första felmatchande elementet i S för att fltta fram mönstret så långt som möjligt varje gång. o Om det finns upprepningar av element i mönstret så får man bara fltta fram till den högraste förekomsten. o Förskjutningstabell talar om hur långt man får fltta.