Datastrukturer och algoritmer Frelsning 12 Anders Broberg Lena
Datastrukturer och algoritmer Föreläsning 12 © Anders Broberg, Lena Kallin Westin, 2007
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 2 Innehåll u Handledning, labbar, samarbete, etc u Sökträd u Sökning u Delar av kapitel 15. 4 -15. 5 i boken + OHbilderna
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 3 Handledning/labutlämning u Ingen labhandledning via mail u Alla handlednings/labutlämningsresurser finns i schemat u Ingen handledning/labutlämning sker utanför dessa tider u Gruppövning 5 (den 22/5) ställs in u OU 4 kommer att vara rättad och lämnas ut tis 29/5 ons 30/5. Ø Se schemat för utlämningstider. Ø C/DV-studenterna skriver tenta den 29 e men alla IDstudenter kan passa på att hämta ut sina labbar då. u OU 4 kompletteras senast torsdag 7/6
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 4 Samarbete, plagiat och vilseledande vid prov u Samarbete, diskussion kring tex problemställningen, mindre syntaxproblem men inte gemensamt lösande av uppgiften i sin helhet. u Plagiat, oredovisad imitation eller kopiering av ett verk som framställs som egen skapelse; litterär, vetenskaplig eller konstnärlig stöld. u Vilseledande vid prov, fusklappar, inlämnande av kod/rapport som någon annan (helt eller delvis) skrivit
Hederskodex © Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 5 http: //www. cs. umu. se/information/hederskodex. html u The Honour Code is an agreement from the students, individually and collectively: Ø that they will not give or receive aid in examinations; that they will not give or receive unpermitted aid in class work, in the preparation of reports, or in any other work that is to be used by the instructor as the basis of grading; Ø that they will acknowledge any (permitted) help they have received and resources they have used for doing such work; that they will make sure they understand the entirety of submitted works, including all parts they received help for; Ø that they 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. u While the faculty alone has the right and obligation to set academic requirements, the students and faculty will work together to establish optimal conditions for honourable academic work.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 6 Binärt sökträd -repetition u Ett binärt träd som är sorterat med avseende på en sorteringsordning R av etikettypen 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.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 7 Binära sökträd u Om trädet är komplett så vet vi att både medel- och värstafallskomplexiteten är O(log n). u Men… ØDet tar tid och kraft att se till att trädet är komplett. ØIbland kan man tvingas bygga om hela trädet. u Det räcker att se till att balansen är god…
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 8 AVL-träd u Kallas även höjdbalanserat binärt sökträd. ØAdelson – Velskii and Landis, 1962 u 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.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 9 AVL-träd u 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.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 10 Exempel på ett AVL-träd 44 3 17 1 78 2 0 50 1 32 48 0 88 62 0 0
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 11 AVL-träd u Minimala höjdbalanserade träd Bild från sidan 319 i Janlert L-E. , Wiberg T. , Datatyper och algoritmer, Studentlitteratur, 2000
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 12 Insättning i ett AVL-träd u Det nya elementet gör att trädhöjden förändras och att trädet måste höjdbalanseras. u Man kan hålla reda på delträdens höjd på olika sätt: Ø Lagra höjden explicit i varje nod Ø Lagra en balansfaktor för noden (-1, 0, +1 men kan temporärt bli +/-2) o Balansen = h(vänster barn) – h(höger barn) u 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.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 13 Insättningsalgoritm u Börja med att sätta in elementet som vanligt i ett binärt sökträd. u 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. u 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.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 14 Exempel: Insättning i ett AVL-träd 44 4 z/c 78 3 17 1 y/a 0 50 2 32 T 0 48 0 T 1 54 T 3 x/b 62 1 88 0
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 15 Exempel: Insättning i ett AVLträd b a 44 3 T 0 17 1 c T 1 T 2 62 2 0 78 1 50 1 32 48 0 54 0 88 0 T 3
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 16 Fyra olika rotationer (1) Om b = y kallas det en enkel rotation ”Rotera upp y över z”
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 17 Fyra olika rotationer (2) T 0 T 1 Om b = y kallas det en enkel rotation ”Rotera upp y över z” T 2 T 3
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 18 Fyra olika rotationer (3) Om b = x kallas det en dubbel rotation ”Rotera upp x över y och sedan över z”
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 T 0 19 Fyra olika rotationer (4) T 1 T 3 T 0 T 1 T 2 Om b = x kallas det en dubbel rotation ”Rotera upp x över y och sedan över z” T 2 T 3
Ett annat sätt att beskriva det på © Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 20 Anta att vi har balans… y x T 2 T 0 T 1. . . och sen stoppar in något som sabbar den
Ett annat sätt att beskriva det på © Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 21 y Gör en enkel rotation. x T 2 T 0 T 1
Ett annat sätt att beskriva det på © Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 22 y Gör en enkel rotation. x T 0 T 1 T 2
Ett annat sätt att beskriva det på © Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 23 Gör en enkel rotation. x T 0 y T 1 T 2
Ett annat sätt att beskriva det på © Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 24 Gör en enkel rotation. x Klart! y T 0 T 1 T 2
Ett annat sätt att beskriva det på Do. A VT -07 y © Anders Broberg, Lena Kallin Westin, 2007 I ett steg: 25 x T 2 T 1 T 0
Ett annat sätt att beskriva det på Do. A VT -07 © Anders Broberg, Lena Kallin Westin, 2007 I ett steg: 26 x y T 0 T 1 T 2
© Anders Broberg, Lena Kallin Westin, 2007 Exempel från boken Döp om x, y, z till a, b och c baserat p inorder-ordning. c/z b/y 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. ) a/x T 1 T 3 T 2 T 0 27 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. T 0 T 1 T 2 T 3
Ett annat sätt att beskriva det på © Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 28 Ett nytt exempel dubbelrotation y z
Ett annat sätt att beskriva det på © Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 29 z y. . . den här gången stoppar vi in något här
Ett annat sätt att beskriva det på © Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 30 z y … och tittar på strukturen i Y
Ett annat sätt att beskriva det på © Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 31 z Vi får lov att göra en dubbel rotation y T 3 x T 0 T 1 T 2
Ett annat sätt att beskriva det på © Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 32 x z y T 0 T 1 T 2 Klart! T 3
Ett annat sätt att beskriva det på © Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 33 z I ett steg. . . y T 3 x T 0 T 1 T 2
Ett annat sätt att beskriva det på © Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 34 I ett steg. . . x z y T 0 T 1 T 2 T 3
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 35 Borttagning ur ett AVL-träd u Borttagningen börjar som en vanlig borttagning ur ett binärt sökträd. u 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). u 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.
Do. A VT -07 Flervägs sökträd m-vägs sökträd (m-way search tree, mary search tree) är en generalisering av ett binärt sökträd. u Trädet är ett ordnat träd där varje nod har högst m delträd. u Etiketterna är sekvenser av upp till m-1 värden i stigande sorteringsordning som fungerar som delningspunkter vid sökning. u Oftast är etiketterna nycklar och värdet till en viss nyckel finns i lövet. 36 © Anders Broberg, Lena Kallin Westin, 2007 u Ett
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 Flervägs sökträd u Till en nod med k+1 delträd, t 0, t 1, …, tk hör en sekvens med värden v 1, v 2, …, vk. 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 tj ligger mellan vj och vj+1 för 1<j<k Øalla värden i tk går efter vk u Operationerna blir liknande de för binärt sökträd. u Plattare träd. Höjden = logm n 37 u Mer jobb i noderna
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 Exempel Bild från sidan 323 i Janlert L-E. , Wiberg T. , Datatyper och algoritmer, Studentlitteratur, 2000 38
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 39 B-träd u 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 minst två barn ØAlla noder utom roten och löven har mellan m/2 och m barn ØAlla löv är på samma djup
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 40 B-träd u 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. u Borttagning kan leda till att man måste justera värderna och slå ihop noder eller omfördela värden mellan dem. u B-träd av ordning 3 kallas också 2 -3 träd
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 41 Exempel på B-träd: 2 -4 träd u Varje nod har 1, 2 eller 3 nycklar och varje icke-löv har 2 -4 barn. u 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.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 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 Wiley & Sons, 1998 och/eller tillhörande OH-material.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 43 Insert i 2 -4 träd u Stoppa u Att in elementen 4, 6, 12 stoppa in elementet 15 orsakar en split. ØErsätt den temporära 5 -noden med en 3 -nod och en 2 -nod och flytta upp ett element till föräldern
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 44 Insert i 2 -4 träd, forts u Sätt nu in först 3 och sen 5(som orsakar en ny split)
© Anders Broberg, Lena Kallin Westin, 2007 En split kan sprida sig uppåt. . . 45
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 46 2 -4 träd, borttagning u Man letar sig fram till rätt löv på liknande sätt som i ett vanligt sökträd. u Enkla fallet: Det finns flera nycklar i noden, ta bort den som ska bort. u Halvsvåra fallet: Syskonen har ”extra” element som vi kan sno. u Svåra fallet: Vi får tomt och syskonet har bara ett element. Då måste vi göra en ”fuse”operation.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 47 Enkla fallet, det finns flera element i noden
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 48 Halvsvåra fallet: Syskonen har ”extra” element som vi kan sno. Kallas ”transfer”
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 49 Svåra fallet: Måste göra en ”fuse”operation.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 50 Svåra fallet: Måste göra en ”fuse”operation som vandrar uppåt i trädet.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 51 Linjär sökning u Starta från början och sök tills elementet hittat eller sekvensen slut. u Komplexitet ØElementet finns: I medel gå igenom halva listan, O(n) ØElementet saknas: I medel gå igenom hela listan, O(n) u Om listan är sorterad: ØElementet saknas: Räcker i medel att leta genom halva listan n/2, O(n)
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 52 Binär sökning u Om sekvensen har index (tex i en array eller numrerad lista) kan man söka binärt. u Successiv halvering av sökintervallet. u Vi får värsta-falls och medelkomplexitet O(log n). u 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.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 53 Exempel: u 1 2 4 4 6 7 9 13 14 19 u 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. u 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.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 54 Strängsökning u Specialfall av sökning. ØMan söker inte ett enstaka element utan en sekvens av element. ØElementet ofta tecken. u 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.
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 55 Första försök till algoritm: u 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. u Värsta fallet: Varje element i S avläses m gånger, dvs O(n*m) ØI praktiken bättre
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 56 Exempel
© Anders Broberg, Lena Kallin Westin, 2007 Do. A VT -07 57 Boyer-Moores algoritm u 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. o o Om det finns upprepningar av element i mönstret så får man bara flytta fram till den högraste förekomsten. Förskjutningstabell talar om hur långt man får flytta.
- Slides: 57