Datastrukturer. Stakker (Stacks) Hva er en datastruktur? Fordeler / Ulemper. Generelt om Datastrukturer. Stakker (Stacks) Elementære Datastrukturer

Like dokumenter
Grunnleggende Datastrukturer

Enkle datastrukturer. Lars Greger Nordland Hagen. Introduksjon til øvingsopplegget og gjennomgang av python

Lars Vidar Magnusson

Løsningsforslag for Obligatorisk Oppgave 3. Algoritmer og Datastrukturer ITF20006

INF januar 2015 Stein Michael Storleer (michael) Lenkelister

... Når internminnet blir for lite. Dagens plan: Løsning: Utvidbar hashing. hash(x) katalog. O modellen er ikke lenger gyldig ved

Heap og prioritetskø. Marjory the Trash Heap fra Fraggle Rock

Repetisjon: Binære. Dagens plan: Rød-svarte trær. Oppgave (N + 1)!

Sist gang (1) IT1101 Informatikk basisfag. Sist gang (2) Oppgave: Lenket liste (fysisk) Hva menes med konseptuelt og fysisk i forb med datastrukturer?

Liste som abstrakt konsept/datatype

INF Algoritmer og datastrukturer

IN Algoritmer og datastrukturer

Lenkelister, iteratorer, indre klasser. Repetisjonskurs våren 2018 kristijb

Binære søketrær. Et notat for INF1010 Stein Michael Storleer 16. mai 2013

Definisjon. I et binært tre har hver node enten 0, 1 eller 2 barn

Magnus Moan (Undertegnede) Enkle datastrukturer, trær, traversering og rekursjon

Et eksempel: Åtterspillet

Heap* En heap er et komplett binært tre: En heap er også et monotont binært tre:

INF2220: Forelesning 1. Praktisk informasjon Analyse av algoritmer (kapittel 2) (Binær)trær (kapittel )

Ny/utsatt EKSAMEN. Dato: 5. januar 2018 Eksamenstid: 09:00 13:00

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

INF2220: Gruppe me 2. Mathias Lohne Høsten 2017

Øvingsforelesning 4. Martin Aasen

PG4200 Algoritmer og datastrukturer Forelesning 5 Implementasjon av lister

INF2220: Forelesning 2

Øvingsforelesning 6. Sorteringsalgoritmer. Kristian Veøy

Algoritmer og Datastrukturer

Binære søketrær. En ordnet datastruktur med raske oppslag. Sigmund Hansen

Stack. En enkel, lineær datastruktur

Hva er en liste? Hvert element har en forgjenger, unntatt første element i listen. Hvert element har en etterfølger, unntatt siste element i listen

Fra Kap.10 Binære søketre (BS-tre) Sist oppdatert Definere en abstrakt datastruktur binært søketre. Vise hvordan binær søketre kan brukes

Programmeringsspråket C Del 3

Gjøre noe i hele treet = kalle på samme metode i alle objekten. Java datastruktur Klassestruktur

Programmeringsspråket C Del 3

INF2810: Funksjonell Programmering. Køer, tabeller, og (litt om) parallelitet

Eks 1: Binærtre Binærtretraversering Eks 2: Binærtre og stakk

INF2810: Funksjonell Programmering. Køer, tabeller, og (litt om) parallelitet

Prioritetskøer. Prioritetskøer. Binære heaper (vanligst) Prioritetskøer

Programmeringsspråket C Del 3

INF Algoritmer og datastrukturer

Programmeringsspråket C Del 3

Lars Vidar Magnusson Kapittel 13 Rød-Svarte (Red-Black) trær Rotasjoner Insetting Sletting

Lars Vidar Magnusson

Binær heap. En heap er et komplett binært tre:

INF Algoritmer og datastrukturer

Definisjon: Et sortert tre

Ny/utsatt EKSAMEN. Dato: 6. januar 2017 Eksamenstid: 09:00 13:00

INF2220: Forelesning 2

Inf 1020 Algoritmer og datastrukturer

Øvingsforelesning 6. Sorteringsalgoritmer. Martin Kirkholt Melhus Basert på foiler av Kristian Veøy 30/09/14 1

INF2220: Forelesning 2. Balanserte søketrær Rød-svarte trær (kapittel12.2) B-trær (kapittel 4.7)

Definisjon av binært søketre

EKSAMEN. Dato: 9. mai 2016 Eksamenstid: 09:00 13:00

INF1010 siste begreper før oblig 2

Et eksempel: Åtterspillet

INF Algoritmer og datastrukturer

Dagens tema. INF Algoritmer og datastrukturer. Binærtrær. Generelle trær

Prioritetskøer. Binære heaper Venstrevridde heaper (Leftist) Binomialheaper Fibonacciheaper

Kap 9 Tre Sist oppdatert 15.03

INF Algoritmer og datastrukturer

Studieaktiviteter i INF1010

Løsnings forslag i java In115, Våren 1998

Alg. Dat. Øvingsforelesning 3. Grafer, BFS, DFS og hashing. Børge Rødsjø

Dagens forelesning. INF1010 Datastrukturer Lister og køer Pekerkjedelister Øvelser. Innhold i dette lysarksettet

Operasjoner på lenkede lister (enkeltlenket) Eksempel på en lenket liste: personliste. INF januar 2010 (uke 3) 2

Velkommen til INF1010

Lenkelister. Lister og køer.

Object [] element. array. int [] tall

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

Datastrukturer. Algoritmer og datastrukturer. Øvingsforelesning 2

Eksamen i IN 110, 18. mai 1993 Side 2 Del 1 (15%) Vi skal se på prioritetskøer av heltall, der vi hele tiden er interessert i å få ut den minste verdi

Innhold uke 10. Objektorientert programmering i Python. Oblig 7 og 8. IN1000 Seminar! IN1000 Høst 2018 uke 10 Siri Moe Jensen

EKSAMEN. Emne: Algoritmer og datastrukturer

Binære trær: Noen algoritmer og anvendelser

UNIVERSITETET I OSLO

Algoritme-Analyse. Asymptotisk ytelse. Sammenligning av kjøretid. Konstanter mot n. Algoritme-kompeksitet. Hva er størrelsen (n) av et problem?

Dagens tema INF1010 INF1010 INF1010 INF1010

PG4200 Algoritmer og datastrukturer Forelesning 7

EKSAMEN. Dato: 28. mai 2018 Eksamenstid: 09:00 13:00

Flerveis søketrær og B-trær

Trær. Består av sammenkoblede noder Hver node har 0 eller flere barne-noder. Må være asyklisk. Et tre med n noder har n-1 kanter.

EKSAMEN Løsningsforslag. med forbehold om bugs :-)

... HASHING. Hashing. Hashtabeller. hash(x)

INF1020 Algoritmer og datastrukturer

PQ: HEAP. Heap. Er disse heap er? Hvordan implementere heap:

UNIVERSITETET I OSLO

EKSAMEN. Dato: 18. mai 2017 Eksamenstid: 09:00 13:00

INF110 Algoritmer og datastrukturer TRÆR. Vi skal i denne forelesningen se litt på ulike typer trær:

Dynamisk programmering Undervises av Stein Krogdahl

Dagens stoff er hentet fra kapittel 9 i læreboka, samt kapittel 20.5 (som vi «hoppet over» sist)

Pensum: fra boken (H-03)+ forelesninger

Oppgavesettet består av 7 sider, inkludert denne forsiden. Kontroll& at oppgaven er komplett før du begynner å besvare spørsmålene.

INF1010. Om pensum INF1010 INF1010 INF1010 INF1010. Det vesentlige er å forstå og kunne lage programmer ved hjelp av eksemplene i bøkene.

Pensum: fra boken (H-03)+ forelesninger

ADTer: Stabel, Kø og 2-sidig Kø. ADT Kø (eng: queue) ... En tabell-basert kø. Abstrakt Data Type Kø

Hashing. INF Algoritmer og datastrukturer HASHING. Hashtabeller

INF1010 Binære søketrær ++

Hva er en kø? En lineær datastruktur der vi til enhver tid kun har tilgang til elementet som ble lagt inn først

Et eksempel: Åtterspillet

Dynamisk programmering

Transkript:

Hva er en datastruktur? Datastrukturer Elementære Datastrukturer En datastruktur er en systematisk måte å lagre og organisere data på, slik at det er lett å aksessere og modifisere dataene Eksempler på datastrukturer kan være stacker, køer, lenkede-lister, endimensjonale array (vektor), todimensjonale array (matrise), binære tre, b-tre etc Bernt Ingvald Sunde 1 Bernt Ingvald Sunde 2 Generelt om Datastrukturer Elementer består av En nøkkel og eventuell annen data En kan utføre spørringer Search(S,k), Minimum(S), Maimum(S), Successor(S,) Predecessor(S,) En kan modifisere dataene Insert(S,), Delete(S,) Fordeler / Ulemper Fordeler: Systematisk programmeringsmetodikk Letter programmering av store systemer Bibliotek; mindre repetering av kode Ulemper: Liten ekstra overhead (samme kompleksitet) Bernt Ingvald Sunde 3 Bernt Ingvald Sunde 4 Stakker (Stacks) Stakker (Stacks) Ide: (LIFO) Tallerkenstabel Last-in-first-out Operasjoner Stack-Empty(S) Push(S,) og Pop(S) (Kjøretid O(1) på alle) Tallerkenstabel Bernt Ingvald Sunde 5 Bernt Ingvald Sunde 6

Køer (Queues) Køer (Queues) Ide: (FIFO) Butikk-kø First-in-First-out Operatorer Enqueue(Q,) Dequeue(Q) Kjøretid O(1) på begge Bernt Ingvald Sunde 7 Bernt Ingvald Sunde Lenkede Lister Lenkede lister Representasjon Objekter arrangert i linjær rekkefølge Rekkefølgen er bestemt av pekere, og ikke indeen i et array Egenskaper Tilbyr en fleksibel representasjon av dynamiske sett. Bernt Ingvald Sunde 9 Bernt Ingvald Sunde 10 Lenkede Lister : Grafisk Lenkede Lister : Begreper Grafisk representasjon Enkel: NIL Head [L] key net Tail [L] Dobbel: prev Sortert liste Nøklene ordnet i linjær rekkefølge Bernt Ingvald Sunde 11 Bernt Ingvald Sunde 12

Lenkede Lister : Begreper Senitel Er et dummy objekt som tillater oss å forenkle grense-betingelser. X <- head[l] while NIL and key[] k do <- net[] return Sirkulær liste: Bernt Ingvald Sunde 13 Bernt Ingvald Sunde 14 X <- head[l] while NIL and key[] k do <- net[] return X <- head[l] while NIL and key[] k do <- net[] return Key[] = 6 Key[] = Node ikke funnet Node ikke funnet Bernt Ingvald Sunde 15 Bernt Ingvald Sunde 16 <- head[l] while NIL and key[] k do <- net[] return <- head[l] while NIL and key[] k do <- net[] return Key[] = 3 Key[] = 3 Node funnet, returner node. Kjøretid O(n) i verste tilfelle, siden en kanskje må søke gjennom hele listen Bernt Ingvald Sunde 17 Bernt Ingvald Sunde 1

Lister : Sletting Lister : Sletting List-Delete(L,) if prev[] NIL then net[prev[]] <- net[] else head[l] <- net[] if net[] NIL then prev[net[]] <- prev[] Slett node med key= List-Delete(L,) if prev[] NIL then net[prev[]] <- net[] else head[l] <- net[] if net[] NIL then prev[net[]] <- prev[] Slett node med key= Bernt Ingvald Sunde 19 Bernt Ingvald Sunde 20 Lister : Sletting Lister : Innsetting List-Delete(L,) if prev[] NIL then net[prev[]] <- net[] else head[l] <- net[] if net[] NIL then prev[net[]] <- prev[] Slett node med key= List-Insert(L,) net[] <- head[l] if head[l] NIL then prev[head[l]] <- head[l] <- prev[] <- NIL Sett inn node med key=5 Kjøretid O(1), men O(n) dersom vi vil slette et element med en gitt verdi. Vi må da kalle List-Insert først. Bernt Ingvald Sunde 21 Bernt Ingvald Sunde 22 Lister : Innsetting Lister : Innsetting List-Insert(L,) net[] <- head[l] if head[l] NIL then prev[head[l]] <- head[l] <- prev[] <- NIL Sett inn node med key=5 List-Insert(L,) net[] <- head[l] if head[l] NIL then prev[head[l]] <- head[l] <- prev[] <- NIL Sett inn node med key=5 5-5 - Kjøretid O(1), men O(n) dersom vi vil slette et element med en gitt verdi. Vi må da kalle List-Insert først. Bernt Ingvald Sunde 23 Bernt Ingvald Sunde 24

Hva er et tre? Trestrukturer Tre er en veldig viktige og nyttig datastruktur De er som regel tegnet opp-ned Tillater oss å representere hierarki Alle noder har en far, utenom roten Bernt Ingvald Sunde 25 Bernt Ingvald Sunde 26 Subrutine-struktur Hoved progr. Organisering av informasjon Ola og Kari 1 2 3 Familietre Truls (Gry) Trine (Per) Ole Marte Frank Mona 4 5 Bernt Ingvald Sunde 27 Bernt Ingvald Sunde 2 Organisering av informasjon Bibiliotek Bibiliotek Representasjon av aritmetiske uttrykk i kompilatorteknikken - A * C/D + E/F Bok A Bok B A B * ( C/D + E/F ) B + / / Kapittel 1 Kapittel 2 C D E F Bernt Ingvald Sunde 29 Bernt Ingvald Sunde 30

rot søsken Anatomien til et Tre Rot B og C s Mor/Far-node R Grener Noder far & barn R s subtre A D H B C F G Terminalnode, (endenode, løvnode) Bernt Ingvald Sunde 31 A s barn (venstre) A s barn (høyre) Søskennoder D s etterfølgere Bernt Ingvald Sunde 32 Komplett tre Et tre er komplett dersom alle løvnoder har den samme distansen fra roten Proper tre Alle indre noder har to barn Proper tre Komplett tre Fritt tre Enhver node oppfattes som rot Grener uten retning Rettet tre Grenene har retning Roten entydig valgt Trehøyden Maks antall grener som kan passeres fra og med rot til og med løvnode Bernt Ingvald Sunde 33 Bernt Ingvald Sunde 34 Nivå for node Antall grener som må passeres fra og med tot til og med node Node grad Antall subtrær for noden Antall barn Binær tre Rettet tre der hver node har høyst 2 etterfølgere Ordnet tre Den relative ordning av subtrær har betydning Bernt Ingvald Sunde 35 Bernt Ingvald Sunde 36

Tre vs. Grafer / Nettverk Internet er ikke et tre. Hvorfor ikke? Noder i et kan bare ha en far Grafer / Nettverk er det mer generelle tilfellet Abstrakte, nøstede datastrukturer Bernt Ingvald Sunde 37 Bernt Ingvald Sunde 3 Nøstede datastrukturer Nøstede datastrukturer Liste av Lister Matrise av Lister Vektor av binære trær av lister Bernt Ingvald Sunde 39 Bernt Ingvald Sunde 40 Nøstede datastrukturer Blandet tilfelle: Flettdede lister Fylke Stikk- Ordliste Parti Bernt Ingvald Sunde 41 Bernt Ingvald Sunde 42