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

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

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.

Definisjon av binært søketre

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

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

Lars Vidar Magnusson

Definisjon: Et sortert tre

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

Binære trær: Noen algoritmer og anvendelser

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

Kap 9 Tre Sist oppdatert 15.03

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

Grunnleggende Datastrukturer

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

INF2220: Forelesning 2

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

INF2220: Forelesning 2

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

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

PG4200 Algoritmer og datastrukturer Forelesning 7

Et eksempel: Åtterspillet

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

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

Trær. En datastruktur (og abstrakt datatype ADT)

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

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

Object [] element. array. int [] tall

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

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

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

INF2220: Forelesning 1

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

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

Dagens plan: INF Algoritmer og datastrukturer. Repetisjon: Binære søketrær. Repetisjon: Binære søketrær

INF Algoritmer og datastrukturer

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

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

Balanserte binære søketrær

INF1010 Rekursive metoder, binære søketrær. Algoritmer: Mer om rekursive kall mellom objekter Ny datastruktur: binært tre

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

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

INF2220: Forelesning 1

INF Algoritmer og datastrukturer. Hva er INF2220? Algoritmer og datastrukturer

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

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

Selv-balanserende søketrær

INF1010 siste begreper før oblig 2

INF1010 Binære søketrær ++

Hva er en algoritme? INF HØSTEN 2006 INF1020. Kursansvarlige Ragnar Normann E-post: Dagens tema

Kap.12. Flervegssøketre. Studerer 2-3 og 2-4 trær. Sist oppdatert

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

INF januar 2015 Stein Michael Storleer (michael) Lenkelister

IN Algoritmer og datastrukturer

EKSAMENSOPPGAVE. INF-1101 Datastrukturer og algoritmer. Adm.bygget, rom K1.04 og B154 Ingen

Algoritmer og Datastrukturer

Et eksempel: Åtterspillet

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

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

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

INF Algoritmer og datastrukturer

INF Algoritmer og datastrukturer

Løsningsforslag. Oppgave 1.1. Oppgave 1.2

Algoritmer og Datastrukturer

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

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

EKSAMEN med løsningsforslag

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

Algoritmer og datastrukturer Løsningsforslag

Øvingsforelesning 2 - TDT4120. Grafer og hashing. Benjamin Bjørnseth

Eksempel: Uttrykkstrær I uttrykkstrær inneholder bladnodene operander (konstanter, variable,... ), mens de interne nodene inneholder operatorer.

Binære Søketre. Egenskap. Egenskap : Grafisk. Egenskap : Kjøretid. Egenskap : Kjøretid. Egenskap : Oppsumering. Binære Søketre

INF Algoritmer og datastrukturer

Lars Vidar Magnusson

INF1020 Algoritmer og datastrukturer. Dagens plan

Uke 5 Disjunkte mengder

Algoritmer og Datastrukturer

Generelle trær BINÆRTRÆR. Binærtrær

Algoritmer og datastrukturer Løsningsforslag

EKSAMEN. Algoritmer og datastrukturer

Pensum: fra boken (H-03)+ forelesninger

INF Algoritmer og datastrukturer

... Dagens plan. Prioritetskø ADT

Algoritmer og datastrukturer Eksamen

Dagens plan: INF Algoritmer og datastrukturer. Eksempel. Binære Relasjoner

Pensum: fra boken (H-03)+ forelesninger

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

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

Algoritmer og Datastrukturer

INF2220: Time 4 - Heap, Huffmann

KONTINUASJONSEKSAMEN

INF Algoritmer og datastrukturer

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

E K S A M E N. Algoritmiske metoder I. EKSAMENSDATO: 11. desember HINDA / 00HINDB / 00HINEA ( 2DA / 2DB / 2EA ) TID:

Stack. En enkel, lineær datastruktur

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

INF2220: Time 12 - Sortering

Velkommen til INF1010

Disjunkte mengder ADT

Algoritmer og datastrukturer Eksamen

PG4200 Algoritmer og datastrukturer Forelesning 5 Implementasjon av lister

Transkript:

1 Enkle datastrukturer Lars Greger Nordland Hagen algdat@idi.ntnu.no Introduksjon til øvingsopplegget og gjennomgang av python

2 I dag Stack Kø (queue) Lenkede lister (linked list) Trær Binære søketrær

3 Stack Implementerer Last-In-First-Out (LIFO) Tenk på som en stabel av ting To hovedoperasjoner: push(x) - legge et element x på toppen pop() - ta ut øverste element Kan også lese øverste element

4 Stack i Python Bruk list til å implementere stack. list.append(x) implementerer push(x) list.pop() implementerer pop() list[-1] leser toppen

5 Kø (queue) Implementerer First-In-First-Out (FIFO) Tenk på som en vanlig kø To hovedoperasjoner: enqueue(x) - legge et element bakerst i køen dequeue() - ta ut det første elementet i køen

6 Kø i Python Kan bruke list til å implementere kø. list.append(x) implementerer enqueue(x) list.pop(0) implementerer dequeue() Denne implementasjonen er treg list.pop(0) må flytte alle elementer

7 Kø i Python Bedre å bruke collections.deque Støtter rask innsetting og fjerning i begge ender deque.append(x) implementerer enqueue(x) deque.popleft() implementerer dequeue()

8 Lenket liste (linked list) Består av noder Noder inneholder: Data, kan være hva som helst Peker til neste node

9 Lenket liste i Python Kan implementeres med egen klasse class node: data = None next = None def init (self, data, next = None): self.data = data self.next = next

10 Lenket liste (linked list) Rask innsetting/sletting midt i lista Man må ha en node tilgjengelig for å få til dette Søk etter en node er tregt Traversering av listen går bare en vei Kan bedres ved å lenke begge veier

11 Dobbelt lenket liste i Python Kan implementeres med egen klasse class node: data = None next = None prev = None def init (self, data, next = None, prev = None): self.data = data self.next = next self.prev = prev

12 Trær Består også av noder Noder består av: Data, kan være hva som helst Pekere til barn (Pekere til søsken)

13 Binære Trær Alle noder har maks to barn Enkel representasjon

14 Traversering av trær Postorder traversering Traverser først over alle barna Så gjør noe med noden Preorder traversering Gjør noe med noden Traverser over alle barna Inorder traversering (kun for binære trær) Gjør noe med venstre barn Gjør noe med denne noden Gjør noe med høyre barn

15 Traversering av binære trær class TreeNode: data = None left = None right = None def init (self, data, left = None, right = None): self.data = data self.left = left self.right = right

16 Postorder def print_post(node): if node.left: print_post(node.left) if node.right: print_post(node.right) print node.data,

17 Preorder def print_pre(node): print node.data, if node.left: print_pre(node.left) if node.right: print_pre(node.right)

18 Inorder def print_in(node) if node.left: print_in(node.left) print node.data, if node.right: print_in(node.right)

19 Binære søketrær Binære trær Treet med venstre barn som rot kaller vi venstre subtre Treet med høyre barn som rot kaller vi høyre subtre Binære søketrær har egenskapene: Data hver node kan sammenlignes med hverandre Alle data i venstre subtre er mindre enn data i rotnoden Alle data i høyre subtre er mindre enn data i rotnoden Treet i kodeeksemplet var et binært søketre

20 Søke i søketrær Vil finne element x i søketreet For hver node: Sammenlign node.data med x Hvis x = node.data Ferdig, finnes! Hvis x < node.data Hvis node.left = None Ferdig, finnes ikke! Ellers Let i node.left Tilsvarende hvis x > node.data

21 Sette inn i søketrær Søk etter elementet i søketreet Hvis det ikke finnes Sett det inn der det burde finnes Hvis det finnes Ferdig, med mindre du vil ha duplikater

22 Slette i søketrær Mer avansert enn innsetting Sletting av løvnoder er enkelt Sletting av interne noder mer komplisert Må opprettholde søketre-egenskapene Vil endre på minst mulig Konkret implementasjon tar vi senere

23 Høyde på subtrær Binære søketrær veldig effektive når høyden er logaritmisk Kan bli lineære i verste fall Finnes ting man kan gjøre for å garantere logaritmisk høyde Det tar vi en annen dag.

24 Øving 1 Skal traversere gjennom lenket liste Holde orden på maks-verdi Spørsmål?