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



Relevanta dokument
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

Datastrukturer och algoritmer

Lathund, procent med bråk, åk 8

Listor. TDDD73 Funktionell och imperativ programmering i Python Föreläsning 7. Peter Dalenius Institutionen för datavetenskap

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

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

Handbok Blinken. Danny Allen Översättare: Stefan Asserhäll

FRÅN A TILL Ö LäraMera Ab / och Allemansdata Ab / FRÅN A TILL Ö

Snabbslumpade uppgifter från flera moment.

Kapitel 6. f(x) = sin x. Figur 6.1: Funktionen sin x. 1 Oinas-Kukkonen m.fl. Kurs 6 kapitel 1

Vad är en webbläsare?

DATASAMORDNING NYHETERNA I CHAOS Utbildning Chaos/Handledning - Nyheterna i Chaos 3/

Idag. Hur vet vi att vår databas är tillräckligt bra?

DOP-matematik Copyright Tord Persson. Bråktal Läs av vilka tal på tallinjen, som pilarna pekar på. Uppgift nr

Lathund till Annonsportalen

Avsikt På ett lekfullt sätt färdighetsträna, utveckla elevers känsla för hur vårt talsystem är uppbyggt samt hitta mönster som uppkommer.

ANVÄND NAVIGATIONEN I CAPITEX SÄLJSTÖD

Skriva B gammalt nationellt prov

Träningsprogram - sommaren 2010

Träning i bevisföring

Guide för att hitta markavvattningssamfälligheter och täckdikningsplaner

Algebra, polynom & andragradsekvationer en pampig rubrik på ett annars relativt obetydligt dokument

Laganmälan & Laghantering

Administrera utskick på utbildningstillfälle

VÄRDERINGSÖVNINGAR. Vad är Svenskt?

Hur skapar man formula r

TIMREDOVISNINGSSYSTEM

Sammanfattning på lättläst svenska

Menys webbaserade kurser manual för kursdeltagare. Utbildningsplattform: Fronter

konstanterna a och b så att ekvationssystemet x 2y = 1 2x + ay = b 2 a b

Erfarenheter från ett pilotprojekt med barn i åldrarna 1 5 år och deras lärare

Texturbild. Lagerpaletten du kommer arbeta med ser du till höger. 1. Kopiera bakgrunden till ett nytt lager och gör den svartvit.

Ha det kul med att förmedla och utveckla ett knepigt område!

ELEV- HANDLEDNING (Ansökan via webben)

Något om permutationer

Tomi Alahelisten Lärare Idrott & Hälsa - Internationella Skolan Atlas i Linköping. Orientering

Vi skall skriva uppsats

Utveckla arbetsmiljö och verksamhet genom samverkan

Tränarguide del 1. Mattelek.

Modul 6: Integraler och tillämpningar

Funktionsbeskrivning

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

Presentationsövningar

Snapphanalegen. Firekángabogena. Spelregler. (4 spelare)

Snabbhjälp till. Kristian. elevdata.se

Mätningar på op-förstärkare. Del 3, växelspänningsförstärkning med balanserad ingång.

Två konstiga klockor

Office 365 Kompetens 2013 / MB

En lönerevision görs i flera steg; Initiering - Lönerevision Attestering - Skapa förmån - Uppdatera lön.

Nämnarens adventskalendern 2007

Här har konan skruvats ur litegrann och det gäller att inte kulorna ramlar ur hur som helst. De ska hamna i olika burkar!

Design by. Manual Jossan.exe. Manual. till programmet. Jossan.exe. E-post:

Efter att du har installerat ExyPlus Office med tillhörande kartpaket börjar du med att göra följande inställningar:

Manual för BPSD registret. Version 6 /

En grafisk guide till vår identitet

Virkade tofflor. Storlek & By: Pratamedrut. pratamedrut.se/blog/virkade tofflor 1

Handledning för digitala verktyg Talsyntes och rättstavningsprogram. Vital, StavaRex och SpellRight

Observera att alla funktioner kan ritas, men endast linjära funktioner blir räta linjer.

Rallylydnad Nybörjarklass

Riktlinjer - Rekryteringsprocesser inom Föreningen Ekonomerna skall vara genomtänkta och välplanerade i syfte att säkerhetsställa professionalism.

Skapa en rapport med snygg formatering, rubriker, sidnummer och innehållsförteckning

4-3 Vinklar Namn: Inledning. Vad är en vinkel?

Tentamen i matematisk statistik (9MA241/9MA341/LIMAB6, STN2) kl 08-13

Intervjumall. Datum: Intervjuare: Kandidatens namn: Kandidatens uppgifter: Växel: (5)

Välkommen till Arbetsförmedlingen! Information till dig som är arbetssökande

3.1 Linjens ekvation med riktningskoefficient. y = kx + l.

När du som vårdpersonal vill ta del av information som finns hos en annan vårdgivare krävs det att:

Sammanfattning av kursdag 2, i Stra ngna s och Eskilstuna

Axiell Arena. Samarbeta om bilder Regionbiblioteket i Kalmar län

MANUAL För externa leverantörer Projektportal Investera

Webb-bidrag. Sök bidrag på webben Gäller från

Examensarbete är det en kurs? Inst. för Samhällsbyggnad 2009

Utbildningsmodulen i IdrottOnline-appen

ANVÄNDARHANDLEDNING FÖR

FORTNOX SMÅFÖRETAGENS BÄSTA VÄN. Fortnox kom igång guide Praktisk bokföring. En guide för dig som vill komma igång med bokföring i Fortnox

Hjälp för digital röst. Mikro Værkstedet A/S

Logga in. Gå in på: Klicka på Logga in. Klicka på den region, kommun eller organisation där din verksamhet finns

Gruppindelning JUNIOR

Start. Mål. Rallylydnad Nybörjarklass. Mom nr Skylt Beskrivning

Lathund. Drift Teknisk Förvaltning Redigera driftåtgärder INFORMATION FRÅN VITEC

Scoot Boot - frågor & svar

Manual BizPart Semesterplan

Fack. Phaser 4400 laserskrivare. Detta avsnitt handlar om:

Sid i boken Rekrytering. Författare Annica Galfvensjö, Jure Förlag

Att koda en magnetremsa i plastkortskrivare med inbyggd magnetkodare.

Anna Kinberg Batra Inledningsanförande 15 oktober 2015

Hemsida Arbetsrum. Skapa arbetsrumslista

Adobe Acrobat Connect Pro. E-möte. Studenthandledning

L(9/G)MA10 Kombinatorik och geometri Gruppövning 1

Vehicle Security System VSS3 - Vehicle original remote

ÖSS jolles Seglarsaga

MultiBoot. Användarhandbok

Repetitivt arbete ska minska

a n = A2 n + B4 n. { 2 = A + B 6 = 2A + 4B, S(5, 2) = S(4, 1) + 2S(4, 2) = 1 + 2(S(3, 1) + 2S(3, 2)) = 3 + 4(S(2, 1) + 2S(2, 2)) = = 15.

Allmänna instruktioner

Utbildningsplan för arrangörer

För att lära sig hur man lär sig att göra flätor över 4 maskor utan att använda en flätsticka se följande länk:

UPPVÄRMNING. Ta med styrketräningen på semestern:

Vehicle Security System VSS3 - Alarm system remote

Hur du presenterar och marknadsför dig under själva intervjun är avgörande för att du ska bli en intressant kandidat.

Transkript:

Innehåll ÿþýüûúùø øö ôó ÿsökträd ÿsökning þ ø øö þ ýú ÿdelar av kapitel 5 i boken + OH-bilderna 2 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 o 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. o Alla noder är definierade. 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 4 5 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. ÿ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 Anders att Broberg, konstruera. Ulrika Hägglund, Lena Kallin Westin, 2 Må l i f i höjd å 6 Exempel på ett AVL-träd 7 78 2 2 5 48 62

7 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: o Lagra höjden explicit i varje nod o Lagra en balansfaktor för noden (-,, + med kan temporärt bli +/-2) Balansen = h(vänster barn) h(höger barn) ÿförändringen brukar beskrivas som en högereller vänsterrotation av ett delträd. ÿdet räcker med en rotation för att få trädet i balans igen. 8 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,T,T 2 och T 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 och T är barn till a och T 2 och T är barn till c. Exempel: Insättning i ett AVL-träd 4 z/c 7 78 y/a 2 5 2 T x/b T 48 62 Exempel: Insättning i ett AVL-träd b a c T T T2 T 7 62 2 2 5 78 48 54 T 54 9 Fyra olika rotationer () Fyra olika rotationer (2) T T T 2 T Om b = y kallas det en enkel rotation Rotera upp y över z Om b = y kallas det en enkel rotation Rotera upp y över z 2 2

Fyra olika rotationer () Fyra olika rotationer (4) T T T 2 T T T T 2 T Om b = x kallas det en dubbel rotation Rotera upp x över y och sedan över z Om b = x kallas det en dubbel rotation Rotera upp x över y och sedan över z 4 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. Exempel på borttagning: Ta bort 2 z y T 7 62 2 x 2 5 78 T 48 54 T T 2 5 6 Exempel på borttagning: Ta bort 2 x 5 Skulle kunnat bli obalans här! z y 62 2 T 7 78 48 T 54 T 2 T 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- 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. 7 8

Flervägs sökträd ÿþ B-träd ÿtill en nod med k+ delträd, t,t,,t k hör en sekvens med värden v,v 2,,v k. Sorteringsvillkoret för trädet är att: alla värden i t går före v (i sorteringsordningen) alla värden i t j ligger mellan v j och v j+ för <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 ÿett B-träd av ordning m är en typ av balanserat m-vägs sökväg 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 9 2 2 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 kallas också 2- träd 22 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() 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) Exempel på B-träd: 2-4 träd ÿvarje nod har, 2 eller 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. 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. 2 24 4

Röd-svarta träd Röd-svarta träd ÿ(2,4)-träd där varje nod lagras som ett litet träd med röda och svarta färgmarkeringar. ÿkanterna i trädet är antingen röda eller svarta. ÿdet finns aldrig två röda kanter i följd i en gren. ÿdet är lika många svarta kanter i alla grenar. (Den svarta höjden på trädet.) ÿkanter som når ett löv är svarta. ÿinsättning och borttagning motsvarar i princip omfärgning av kanterna. 25 26 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) 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. 27 28 Exempel: Strängsökning ÿ 2 4 4 6 7 9 4 9 ÿsök efter elementet. 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 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. 29 5

Första försök till algoritm: Exempel ÿ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 2 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. o Om det finns upprepningar av element i mönstret så får man bara flytta fram till den högraste förekomsten. o Förskjutningstabell talar om hur långt man får flytta. 6