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

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

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

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

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

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

Kap 9 Tre Sist oppdatert 15.03

PG4200 Algoritmer og datastrukturer Forelesning 5 Implementasjon av lister

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

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.

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

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

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

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

Grunnleggende Datastrukturer

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

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

INF1010 siste begreper før oblig 2

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

Liste som abstrakt konsept/datatype

Definisjon av binært søketre

Algoritmer og Datastrukturer

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

INF Algoritmer og datastrukturer

INF2220: Forelesning 2

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

Lars Vidar Magnusson

Datastrukturer. Algoritmer og datastrukturer. Øvingsforelesning 2

Løsningsforslag. Oppgave 1.1. Oppgave 1.2

INF Algoritmer og datastrukturer

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

INF2220: Forelesning 1

Programmeringsspråket C Del 3

INF1010 Binære søketrær ++

PG4200 Algoritmer og datastrukturer Forelesning 7

Programmeringsspråket C Del 3

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

Forskjeller mellom masselager og hovedminne. Permanent? Allokasjonstabell. Filer. Sekvensielle filer. Operativsystemets rolle

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

INF2220: Forelesning 2

Programmeringsspråket C Del 3

Programmeringsspråket C Del 3

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

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

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

INF Algoritmer og datastrukturer

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

Definisjon: Et sortert tre

INF Algoritmer og datastrukturer

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

En implementasjon av binærtre. Dagens tema. Klassestruktur hovedstruktur abstract class BTnode {}

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

Sist forelesning snakket vi i hovedsak om trær med rot, og om praktisk bruk av slike. rot. barn

INF2220: Forelesning 1

MAT1030 Diskret matematikk

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

Oppsummering. MAT1030 Diskret matematikk. Oppsummering. Oppsummering. Eksempel

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

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

INF Algoritmer og datastrukturer

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

Et eksempel: Åtterspillet

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

EKSAMEN med løsningsforslag

Dagens tema INF1010 INF1010 INF1010 INF1010

EKSAMEN. Algoritmer og datastrukturer

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

Lars Vidar Magnusson

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

SIF8010 ALGORITMER OG DATASTRUKTURER

Et eksempel: Åtterspillet

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

Stack. En enkel, lineær datastruktur

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

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

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.4

INF2220: Time 4 - Heap, Huffmann

INF1010 LISTER. Listeelementer og listeoperasjoner. Foran. Bak

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

INF Algoritmer og datastrukturer

Søkeproblemet. Gitt en datastruktur med n elementer: Finnes et bestemt element (eller en bestemt verdi) x lagret i datastrukturen eller ikke?

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

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

Datatyper og typesjekking

IN Algoritmer og datastrukturer

UNIVERSITETET I OSLO

Inf 1020 Algoritmer og datastrukturer

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

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

Innføring i blokkjedeteknologi. Slobodan Petrović, NTNU Gjøvik 14/

UNIVERSITETET I OSLO

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

Selv-balanserende søketrær

Datatyper og typesjekking

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

Datatyper og typesjekking

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

Versjon (vil bli endret).

Algoritmer og datastrukturer Kapittel 9 - Delkapittel 9.2

Forelesning ISA: IJVM Kap 4.2

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

Transkript:

IT1101 Informatikk basisfag Plan de siste ukene: I dag: siste om datastruktuter (kap. 7) Mandag 17/11: dobbel forelesning om filstrukturer (kap. 8) Torsdag 20/11: øvingsforelesning med Inge Mandag 24/11: dobbel forelesning om datahistorie og IT og lovverket (og etikk) Torsdag 27/11: oppsummering Sist gang (1) atastruktur: hvordan organisere data i et program (fysisk: i hovedminnet) Hovedminnet er lineært pp: dressert fra 00000000 (hex: 00) til 11111111 (hex: FF) atastruktur: Tabell ata ligger i en sammenhengende blokk i minnet (1, 2 eller flere dimensjoner) Fordeler: 1) Kan hoppe direkte inn i tabellen (kan beregne hvor elementer ligger ut fra adressen til det første elementet) nødvendig ved binærsøk 2) nkel å bruke Ulemper: 1) Må flytte elementer ved innsetting og utsetting (dersom vi feks skal holde elementene sortert). 2) Tabellen kan ikke utvides (er statisk). Sist gang (2) Hva menes med konseptuelt og fysisk i forb med datastrukturer? atastruktur: Lenket liste ata ligger hvor som helst i hovedminnet Pekere lenker elementene sammen Hvert element består av 1) verdi og 2) adresse til neste element (pekeren) Fordeler: 1)lite arbeid å sette inn og slette elementer 2)er dynamisk (kan vokse etter behov) Ulempe: 1)Må traversere elementene sekvensielt kan ikke bruke binærsøk Konseptuell datastruktur: hvordan vi kan skissere datastrukturen hvordan vi ser den for oss Men den må lagres binært i et lineært hovedminne (fysisk) flates ut F F Oppgave: lenket liste (konseptuelt) Oppgave: Lenket liste (fysisk) Vi har en lenket liste med elementene,, G og S som vist i figur under. Lista er sortert. ) Ta ut element G (vis i skisse hvordan peker(ne) skal forandres) ) Sett inn element. Lista skal fortsatt være sortert. F S NIL G enne tabellen viser innholdet til hovedminnets minneceller på et gitt tidspunkt. ) Fyll inn adressene til hvert element slik at innholdet i minnet representerer en alfabetisk sortert lenket liste. ) Hva blir head pointer? Hver bokstav representeres vha 8 bit (SII) 1 2 3 4 5 6 7 8 9 J L P

Oppgave: tabell (fysisk) Gitt en 1-dimensjonal tabell med 7 elementer Tabellen skal være sortert Til høyre vises innholdet til hovedminnets minneceller på et gitt tidspunkt. ) Sett inn bokstaven. Hva må skje? ) Slett deretter. Hva bør skje? dresse 0 1 2 3 4 5 6 Innhold J L P - Vi har andre datastrukturer, feks Stakk n stakk er en spesiell form for liste. I en tabell eller lenket liste kan man legge inn og slette elementer hvor som helst i tabellen/lista Hvis man i en slik tabell eller liste kun har lov til å legg inn og slette elementer i den ene enden av tabellen/lista kaller vi dette en stakk! nalogier: Operasjoner på datastrukturen Vi kan utføre operasjoner på datastrukturen: Legg inn element Slette element I forbindelse med stakk så kaller vi operasjonen å legge inn element push (dytte) Og å slette element pop (hente ut) Fysisk representasjon av stakk (implementasjon) Kan lagres vha en sammenhengende blokk (som for tabeller) eller vha pekere (som for lenkede lister) Ved sammenhengende område: stakken har en maks størrelse en ene enden er bunnen base! Har en peker til toppen av stakken stakkpeker! Ved pekere (mindre vanlig): Stakken blir dynamisk (ingen maksstørrelse) Legge inn og ta ut av en stakk (ved sammenhengede område) Når vi legger inn: stakkpeker oppdateres til å peke på det nye elementet som legges inn Når vi fjerner: stakkpeker oppdateres til å peke på elementet under den vi tar av Oppgave: stakk enne tabellen representerer en stakk som 10 er lagret i en sammenhengende blokk i 11 hovedminnet. 12 ersom basen til stakken er 10 og 13 G stakkpekeren har verdi 13, hvordan vil 14 J minnet se ut og hvilken verdi vil 15 K stakkpekeren ha etter at følgende er utført 16 L på stakken: 17 M Pop() 18 Push(L) 19 F Push(K) 20 P Pop() 21

nda en datastruktur: kø For stakk: tar ut og legger inn i samme ende av lista/tabellen Hvordan fungererer en kø?? Legger inn i den ene enden og tar ut i den andre Kaller front for head Og ende for tail n kø kan også lagres fysisk vha en sammenhengende blokk eller pekere Legge inn og ta ut av en kø (ved sammenhengede område) Manipulerer (endrer) head og tail pekerne Køa vil krype innover i minnet Problem: Legger til i samme ende hele tiden Sletter i samme ende hele tiden Køen kryper innover i minnet n sirkulær kø-implementasjon n kø implementes vanligvis på en sirkulær måte vs vi setter av et fast område til køa, og når køa når slutten legges nye elementer inn i starten. Har en makslengde på køa, må passe på atastrukturer i programmeringspråk I høynivå programmeringspråk kan vi definere slike datastrukturer selv, eller de kan være en del av et standardbibliotek som følger programmerinsspråket. Å forstå hvordan datastrukturene implementeres fysisk er viktig fordi: Vite om begrensninger og muligheter Fordeler og ulemper Stack klassen i Java PI Ferdig Stack klasse i Java PI (pplication Programming Interface) public class Stack

n siste datastruktur: tre! egreper i forbindelse med trær Organisere data på en hierarkisk måte! ksempel på data organisert som et tre: organisasjonskart i en bedrift Opp-ned tre Node: et element i treet Rotnode: øverste node i treet Løv/terminalnoder: noder nederst i treet Foreldrenode: en node som peker til en annen node arnenode: en node som blir pekt på Søskennoder: noder med samme foreldrenode Undertrær (sub-trees): er del-trær i et større tre ybde: antall noder i den lengste stien fra rot til en løvnode Fysisk lagring av trær Implementasjon vha pekere forts. Trær kan og lagres fysisk vha sammenhengende område og vha pekere! Vha pekere: Nodene kan ligge hvor som helst Hver node holder på sin verdi pluss to pekere venstrebarn og høyrebarn (evt til NIL) Hver node vil altså bestå av 3 komponenter: Rotpeker: peker til treets rot! lternativ til lenkede binærtrær: sammenhengende blokk inærtre lagret i sammenhengende blokk (2) arna til node n ligger da i posisjon 2n og 2n+1 i denne blokka Organisering i blokka: Rotnoden ligger først eretter følger venstre og høyre barn av rotnoden Så følger venstre og høyre barn av venstre barn av rotnoden etc.

Problem med statisk struktur kontra bruk av pekere ersom treet er skjevt vil man sløse med plass Scenario: vi trenger å lagre data i en datastruktur men vet ikke hvilken Vi ønsker å lage en liste! Krav: Man skal kunne utføre følgende (effektivt): 1. Søke etter elementer i lista 2. Sette inn et nytt element Problemanalyse Vi kan velge å lagre listen i en tabell Problem: lite effektivt å sette inn element (masseforflytning i minnet) Vi kan velge å lagre i en lenket liste Problem: lite effektivt å søke i listen, må traversere sekvensiellt Ønsker å bruke binærsøkealgoritmen! Løsning Løsning: Implementerer listen som et lenket binærtre (dvs bruke pekere) Hvordan? Setter det midterste elementet i lista til å være rotnoden et midterste elementet til den venstre lista blir venstre barnenode til rotnoden et midterste elemenetet til den høyre lista blir høyre barnenode til rotnoden osv. ks. Lagring av liste i binærtre Søking i lista (treet) Listen,,,,, F, G, H, I, J, K, L, M. Søke etter bokstaven J. inærsøk!

Legge inn nytt element M Som ved binærsøk! t lenket binærtre Fordeler i forhold til tabeller og lenkede lister: Raskt å søke etter elementer (må skje sekvensielt i lenket liste) Lett å sette inn nye elementer (masseforflytning i tabell) ksamensoppgave H02 5a