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

Slides:



Advertisements
Liknande presentationer
Snabbguide och tips.
Advertisements

Talföljder formler och summor
Formulär Tänkte nu gå igenom vad ett formulär är och hur man kan skapa dem i Access.
X-mas algebra Är du redo? Klicka!!.
Att söka till högskolan
Relationsdatabasdesign
© 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
hej och välkomna EKVATIONER Ta reda på det okända talet.
1 Logikprogrammering ons 11/9 David Hjelm. 2 Repetition Listor är sammansatta termer. De består av en ordnad mängd element. Elementen i en lista kan vara.
Algoritmer och data strukturer -Länkade listor
Leif Håkansson’s Square Dancer Rotation
5. Grafiska objekt Redan på övning fem av sex! Här handlar det om att rita själv, färglägga och att låta kreativiteten flöda. Något för dig? Ritverktyg.
Logikprogrammering Ons, 25/9
Programmeringsteknik Föreläsning 4 Skolan för Datavetenskap och kommunikation.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 4.
Datastrukturer och algoritmer Föreläsning 11. Datastrukturer och algoritmer VT08 Innehåll  Mängd  Lexikon  Heap  Kapitel , , 14.4.
Binära Sökträd, kapitel 19
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.
Växjö 21 april -04Språk & logik: Kontextfria grammatiker1 DAB760: Språk och logik 21/4: Kontextfria 10-12grammatiker Leif Grönqvist
Föreläsning 10 Länkade lista Stack och Kö Att arbeta med listor
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 6 Asymtotisk analys.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 7 Träd.
Svenska WebDewey Introduktion
Träd och tillämpningar Data Structures & Problem Solving using Java -- Kapitel 19, 12.
Växjö 15 april -04Språk & logik: Reguljära uttryck1 DAB760: Språk och logik 15/4: Finita automater och 13-15reguljära uttryck Leif Grönqvist
Silberschatz, Galvin and Gagne ©2009 Operating System Concepts – 8 th Edition, Kapitel 11: Implementation av filsystem.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2004 Datastrukturer och algoritmer Föreläsning 3.
Demo dokument- och ärendehantering Polisförbundet
Programmering B PHP Lektion 3
Svenska WebDewey Introduktion Harriet Aagaard Svenska Deweyredaktion
Föreläsning 4 Kö Implementerad med array Implementerad med länkad lista Djup kontra bredd Bredden först mha kö.
Vektorer (klassen Vector) Sortering
Digitalteknik 7.5 hp distans: 5.1 Generella sekvenskretsar 5.1.1
Algebra och ekvationer
Felkalkyl Ofta mäter man inte direkt den storhet som är den intressanta, utan en grundläggande variabel som sedan används för att beräkna det som man är.
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.
1.Välj en nod vilken som helst och markera den som öppen. Låt den bli rot. A R B F C D E G
Funktioner, styrstrukturer, manipulering av matriser
1 Föreläsning 6 Programmeringsteknik och Matlab 2D1312/2D1305 Metoder & parametrar Array API och klassen ArrayList.
Datastrukturer och algoritmer
Logikprogrammering 21/10 Binära träd
Datastrukturer och algoritmer
Läsbar prolog CM 8.1. allmäna principer correctness user-friendliness efficiency readability modifiability robustness documentation.
Prioritets Köer (Priority Queues ), Graph Data Structures & Problem Solving using Java --Kap 21,14.
Ingenjörsmetodik IT & ME 2008
Initiera nätverket med nollflöde. Kapaciteterna i svart ovan bågarna och flödet i grönt nedan bågarna. Skicka igenom ett enhetsflöde genom nätverket. Flödesvägen.
Datastrukturer och algoritmer
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 14.
Projekt 5.3 Gilpins och Ayalas θ-logistiska modell A Course in Mathematical Modeling - Mooney & Swift.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Föreläsning 12 Sökning och Sökträd.
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 13.
BVForum - en genomgång för revisorer Sören Thuresson.
1 Mönstermatchning och rekursion Nr 4. 2 Förenklad notation val fnname = fn name => expression Förenklas till fun fnname name = expression Exempel fun.
1 Jan Lundström OV’s Hemsida Utbildning Ledare. 2 Jan Lundström OV’s Hemsida Standard Lagrum.
Träd -Allmänt om träd -Binärt träd -Filkomprimering med Huffman träd
© Anders Broberg, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 12.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastrukturer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd,
Logikprogrammering 23/10 Binära träd In- och uthantering David Hjelm.
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 10.
© 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, Lena Kallin Westin, 2007 Datastrukturer och algoritmer Föreläsning 4.
© Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Datastrukturer och algoritmer Föreläsning 16.
För utveckling av verksamhet, produkter och livskvalitet. Algoritmer och datastructurer - En annan sort tänkande, rekursiva metoder -Datastrukturen träd.
Presentationens avskrift:

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

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

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Trie  Ytterligare en variant av träd. Vi har tidigare sett:  Oordnat träd där barnen till en nod bildar en mängd  Ordnat träd där barnen till en nod bildar en lista  I Trie är barnen till en nod organiserade som tabellvärden i en tabell som hör till noden.  Trie kallas också för diskrimineringsträd, code- link tree eller radix-search tree.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Organisation av Trie  Man når barnen (delträden) direkt genom ”namn”, dvs argument/nycklar i barnnodens tabell.  När man ritar träd brukar nycklarna skrivas direkt intill motsvarande båge.  I en trie har tabellerna en och samma nyckeltyp, till exempel tecken.  I många tillämpningar av Trie saknar de inre noderna etiketter, träden är lövträd.  Trie är normalt nedåtriktad.  Binära träd kan ses som ett specialfall av Trie där nyckelvärdena är left och right.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Informell specifikation  Två sätt:  Utgå från Urträdets specifikation och låt typparametern sibling ha värdet Tabell. oDå hanteras insättning, borttagning och värdeskoll av Tabellen själv. oI övrigt används de vanliga operationerna för att sätta in och ta bort barn etc.  Sätt in lämpliga tabelloperationer direkt i specifikationen av Trie. oInsert-child blir tabellens Insert, Delete-child tabellens Remove och Child tabellens Lookup.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Konstruktion av Trie  De flesta konstruktioner av träd går bra  Om det går bra att byta ut de delar som hanterar barnen (till exempel som element i en lista) till att hantera dessa som tabellvärden i en tabell. oEn länkad lista med 2-celler byts till 3-celler.  Implementerar man tabellen som en vektor eller som en hashtabell får man effektiva Trieimplementationer.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Tillämpningar av Trie  Används för att konstruera Lexikon av sekvenser eller Tabeller där nycklarna är sekvenser.  För sekvenser med element av typ A väljer vi en Trie med tabellnycklar av typ A.  En sekvens motsvaras då av en väg i trädet från roten till ett löv.  Man lägger till en slutmarkör i slutet av varje sekvens om en sekvens kan vara början på en annan sekvens. oEn annan variant är att ha etiketter i de inre noderna också.  Ett viktigt/vanligt specialfall är Lexikon/Tabell av textsträng. En sträng kan ju ses som en lista eller vektor av tecken. Se Fig 14.2 på s 284! Se Fig 14.3 på s 286!

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Forts…  Fördelar med att använda Trie för Lexikon/Tabeller som lagras sekvenser som startar med samma följd av elementvärden:  Kompakt sätt att lagra lexikonet/tabellen på  Sökningens tidskomplexitet proportionell mot sekvenslängden. (En jämförelse per elementtecken)  Den relativa komplexiteten är oberoende av lexikonet/tabellens storlek. oDet blir inte ”dyrare” att söka i ett stort lexikon jämfört med ett litet.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Tillämpningar  Stavningskontroll  Skapa ett trie med alla ord som finns i språket.  Översättningstabell  Löven innehåller motsvarande ord i ett annat språk.  Filsystem på Unix/PC  Datakomprimering  LZ78 algoritmen  Huffman kodning

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Komprimerade Tries  Alla enbarnsnoder konverteras till att innehålla hela strängen/sekvensen som är under.  Varje intern nod i ett komprimerat Trie har två barn och varje löv symboliserar en sträng.  Minnesutrymmet krymper från O(m) till O(n)  m är summan av längderna av strängarna  n är antalet strängar i strukturen

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Tries för strängar  Insättning  Startar i noden och går nedåt i trädet så länge det finns en matchande väg.  När man hittar en skiljelinje, stanna och stoppa in resten av strängen som ett delträd.  Komprimerade tries: oLiknande algoritm men där är löven strängar som kan måsta delas upp i två barn  Borttagning  I princip samma algoritm som insättning fast ”tvärtom”. Sök upp strängen som ska tas bort och radera nerifrån i trädet upp till första förgreningen.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 LZ78 eller Lempel-Ziv kodning  Kodning:  Låt frasen 0 vara strängen ””  Skanna igenom texten oOm du stöter på en ”ny” bokstav lägg till den på toppnivån på trien. oOm du stöter på en ”gammal” bokstav gå nedåt i trien tills du inte kan matcha fler tecken, lägg till en nod i trien som representerar den nya strängen. oStoppa in paret (nodeIndex, sistaBokstaven) i den komprimerade strängen.  Exempel: ”how now brown cow in town.”

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 LZ78 eller Lempel-Ziv kodning  Avkodning:  Varje gång du stöter på ”0” i strängen lägg nästa bokstav i strängen direkt efter den föregående i den avkodade strängen.  För varje index 0 stoppa in delsträngen som motsvaras av den noden i den avkodade strängen, följt av nästa tecken i den komprimerade strängen.  Notera att man inte behöver skicka med trädet.  Exempel: 0h0o0w0_0n2w4b0r6n4c6_0i5_0t9.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Filkomprimering  ASCII-filer är textfiler där varje bokstav representeras av en 8-bitars ascii-kod.  Det är alltså en fixlängdskodning  Om man tittar på en textfil ser man att vissa bokstäver förekommer oftare än andra.  Om man lagrar vanligt förekommande bokstäver med färre bitar än ovanliga så skulle vi kunna spara utrymme.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Filkomprimering  Kodningen måste ske så att man enkelt kan avkoda strängen entydigt med kännedom om hur de olika tecknen översätts.  Exempel: Antag att de tre tecknen a, b och c kodas som 0, 1 respektive 01. oOm en mottagare får strängen 001 vad betyder det? aab eller ac??  Prefix-regeln: Ingen symbol kodas med en sträng som utgör prefix till en annan symbols kodsträng.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003  Bokstäverna lagras i löven.  Den vänstra kanten betyder 0  Den högra betyder 1  Vad betyder Vi använder ett trie!

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Vi vill ha optmial kompression!  Så kort sträng som möjligt. Strängen = 29 bits kan kortas ned till 24 bitar med trädet

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Huffman kodning  Börja med en serie träd bestående av ett enda löv. Till varje löv associeras en symbol och en vikt = symbolens frekvens i texten som ska kodas.  Välj de två träd som har minst vikt i roten. Bygg ihop dem till ett träd där de blir barn till en ny nod. Den nya noden innehåller en vikt = summan av barnens vikter.  Upprepa förra punkten tills vi har ett enda stort träd.

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 Informell specifikation  Skiljer sig från ett vanligt binärt träd:  Alla noder måste ha etiketter. oTa bort Create, Has-Label och Set-Label och inför Make som skapar rotnod med värde. oInsert-operationerna utökas med ett etikettvärde.  Man ska kunna ta bort inre noder också, inte bara löv. oPositionsparametern i Delete-node behöver inte peka på ett löv. oNär man rycker bort en inre nod slits trädet sönder. Hur lagar man det?  Är nedåtriktat oParent kan utelämnas.  Eftersom trädet är sorterat kan man inte få stoppa in ett nytt element vart som helst. oMåste uppfylla sorteringsordningen.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Varför sorterat träd?  Det går snabbare att söka i strukturen…  För binärt sökträd:  Kolla om det sökta värdet finns i den aktuella noden.  Om inte sök rekursivt nedåt i vänster eller höger delträd beroende på om det sökta elementet kommer före eller efter nodens värde i sorteringsordningen.  Om det binära trädet är komplett:  Värstafallskomplexitet för sökning O(log n) för ett träd med n noder.  Hur ser man till att trädet blir komplett vid insättning?

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Borttagning av nod i binärt sökträd  Hur lagar man ett träd när man tar bort en nod mitt i?  Om den borttagna noden bara hade ett delträd: oLyft upp det ett snäpp  Om den borttagna noden hade två delträd: oVälj noden med det minsta värdet i höger delträd som ersättning (alternativt noden med största värdet i vänster delträd).  Detta är standardkonstruktionen, är upp till den som implementerar trädet.  De vanligaste tillämpningarna är inte beroende av denna detalj.  Viktigt att visar sitt beslut i specifikation och dokumentation.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Varför inte ändra gränsytan?  Eftersom man inte får sätta in ett nytt element vart som helst så kanske man lika gärna kan ersätta insert-left och insert-right med en metod place som automatiskt placerar det rätt?  På samma sätt ersätta delete-node(pos, bt) med remove(val, bt)?  Bägge dessa metoder ligger på en högre abstraktionsnivå än övriga metoder i gränsytan.  Place implementerar man i huvudsak med hjälp av andra metoder i gränsytan vilket är lite märkligt.  Strukturen döljs (för oss) och blir mer lik en mängd.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Tillämpningar av Binärt sökträd  Framför allt till konstruktioner av Lexikon och Tabell.  Notera att inorder-traversering av binärt sökträd ger en sorterad sekvens av de ingående elementen.  Kan alltså sortera element genom att stoppa in dem ett och ett i ett tomt Binärt sökträd och sedan traversera det.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Generaliseringar  Ett binärt sökträd underlättar sökning i en en- dimensionell datamängd.  Lätt att generalisera detta till sökning i en 2- dimensionell datamängd (quadtree) eller så hög dimension man önskar (tex octtree). CNRSTUY

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Quadtree (Fyrträd)  Organiserat som ett binärt träd med förgreningsfaktor 4 istället för 2.  Tolkning (vanligast):  Rotnoden delar in den givna ytan (oftast kvadrat) i fyra lika stora kvadrater. Vart och ett av de fyra barnen delar i sin tur sin kvadrat i fyra osv. Inga koordinater behöver lagras i inre noder.  Kan användas för att lagra lägesinformation för punktformiga grafiska objekt.

Datastrukturer och algoritmer VT © Anders Broberg, Ulrika Hägglund, Lena Kallin Westin, 2003 Quadtree – forts.  Man kan också använda det för att representera kurvor och ytor.  Svarta kvadranter – fylls helt av objektet  Grå kvadranter – fylls delvis av objektet  Vita kvadranter – innehåller inte objektet  Exempel på tillämpning  GIS  m.shtml  qtdemo i Matlab på peppar…

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