Øvingsforelesning 2 Trær og søking i dem, samt litt diverse emner Kristian Veøy

Slides:



Advertisements
Liknende presentasjoner
Demens - Test.
Advertisements

De dårige følelsene. Veiene ut..
eDialog24 Operator Nyheter og endringer i versjon Sentinel eDialog24 AS Ingvald Ystgaards vei 3A 7047 Trondheim Telefon: Faks:
Truls Fretland - Seminar 29.november 2005 Flervalgsøvinger og tester I diskret matematikk og algoritmer høsten 2005.
@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.
TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Kristian Veøy
En innføring i spillet: Dobbeltkrig – Grønn
Øvingsforelesning 9 Flytnettverk, maksimum flyt og maksimum bipartitt matching Jon Marius Venstad Redigert og forelest av Gleb Sizov.
AP - Arbeidsplan Vi jobber med arbeidsplanen nesten hver dag.
PowerPoint laget av Bendik S. Søvegjarto Konsept, tekst og regler av Skage Hansen.
Gjenfinningssystemer og verktøy II
Forside Korteste sti BFS Modifikasjon Dijkstra Eksempel Korrekthet Analyse Øving Spørsmål Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no.
@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.
@ TDT4120 Algoritmer og datastrukturer Introduksjon til øvingsopplegg og programmering i Python Åsmund Eldhuset asmunde stud.ntnu.no.
Dijkstras algoritme Åsmund Eldhuset asmunde *at* stud.ntnu.no
Teoriøving 4 (1) Strongly connected component: ”det maksimale settet med noder slik at for alle nodepar (u,v) i settet finnes kantene u -> v og v -> u.
Øvingsforelesning 9 Flytnettverk, maksimum flyt og
Eksempel AOA (Activity On Arc)
1 Øvingsforelesning Andreas Knudsen Nils Grimsmo
Øvingsforelesning 3 Grafer, BFS, DFS og hashing
Korrekt dybde først-søk
Åsmund Eldhuset asmunde stud.ntnu.no folk.ntnu.no/asmunde/algdat/
Alg. Dat Øvingsforelesning 3 Grafer, BFS, DFS og hashing Børge Rødsjø
Øvingsforelesning Magnus Haug
Generelt I/O if/else Funksjoner Lists Løkker Dictionaries Annet Listebehandling Klasser Python med noen algdat-anvendelser Åsmund Eldhuset asmunde *at*
INF 295 Forelesning 15 - kap 9 Grafer Hans Fr. Nordhaug (Ola Bø)
Klargjøring fra forrige gang
Algoritmer og Datastrukturer
Kap 07 Stakk I dette kapitlet skal vi se på datastrukturen stakk.
1 Kap 08 Kø. 2 Kø - Definisjon En kø (eng queue) er en lineær struktur hvor elementer kan innsetttes kun i den ene enden av listen, kalt bak, og fjernes.
NEWS Et uvurdelig hjelpemiddel i hverdagen. Hva skal vi gjennom i dag Hva er news? Hva brukes news til? Programmer og grupper Noen ord og uttrykk Noen.
Skåring av SSIS-skjemaene Frode Svartdal UiT / Diakonhjemmet høgskole.
Dynamisk programmering
Mandag 8. November Powerpoint..
PowerPoint laget av Bendik S. Søvegjarto Konsept, tekst og regler av Skage Hansen.
Lage og sende SMS 1a Lage SMS
INF 295 Algoritmer og datastrukturer Forelesning 7 ADT Lister, Stakker og Køer Hans Fr. Nordhaug (Ola Bø)
INF 295 forelesning 14 - kap 8 Disjunkt mengde ADT Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 9a Søketrær Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 8 Trær Hans Fr. Nordhaug (Ola Bø)
INF 295 forelesning 13 - kap 6 Prioritetskø (Heap) Hans Fr. Nordhaug (Ola Bø)
INF 295 Algoritmer og datastrukturer Forelesning 11 Når RAM ikke strekker til - B-trær og Utvidbar hashing Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 20 - Kapittel 7 Boble-, innstikk-, Shell-, Heap-, Quick-, Mergesortering Hans Fr. Nordhaug (Ola Bø)
Hans Fr. Nordhaug (Ola Bø)
INF 295 forelesning 13 - kap 6 Andre prioritetskøer Hans Fr. Nordhaug (Ola Bø)
INF 295 Forelesning 18 - kap 9 Aktivitetsgrafer
INF 295 Algoritmer og datastrukturer Forelesning 9b Balanserte (binære) trær Hans Fr. Nordhaug.
INF 295 Algoritmer og datastrukturer Forelesning 10 Invarianter og Hashing Hans Fr. Nordhaug (Ola Bø)
Dynamiske nettsider PHP Del 2 – Kontrollstrukturer.
Onsdag 13. mars Sam Eyde vgs
Hvordan kan foreldre bruke de vangligste funksjonene i Itslearning.com
INF 4130 Eksamen 2008 Gjennomgang.
Oppgaver til kodegenerering etc. INF-5110, 2013 Oppgave 1: Vi skal se på koden generert av TA-instruksjonene til høyre i figur 9.10 i det utdelte notatet,
Programmering sif8005. Praktisk informasjon  Innleveringsfrist øvinger: mandag kl  Alle øvinger er obligatoriske  Studass tilgjengelig 6 timer.
INF 295 forelesning 12 Repetisjon per 17. februar Hans F. Nordhaug (Ola Bø)
Alg. Dat Øvingsforelesning 11 Dynamisk programmering, grådighet
Ortering Mål: Se på forskjellige måter for sortering.
Sorterings- Algoritmer Algoritmer og Datastrukturer.
Sterke og 2-sammenhengende komponeneter, DFS
Prioritetskøer Binære heaper Venstrevridde heaper (Leftist) Skeive heaper (Skew) Binomialheaper Fibonacciheaper Prioritetskøer er viktige i bla. operativsystemer.
1 INF oktober 2010 Stein Krogdahl Foreløpige foiler Dagens program: –Første time: Kap 23.5: Trær og strategier for spill med to spillere –Andre.
Semantic Overlay Networks for P2P Systems Øyvind Reinsberg.
Finne feil - Debugging Introduksjon til sortering.
Matematikk 1 årskurs 26. oktober 2009
Matematikk LUB Elise Klaveness
Registrering av testresultater fra mobiltelefon
1 Øvingsforelesning 4 Topologisk sortering Minimale spenntrær Håkon Jacobsen
Øvingsforelesning i Python (TDT4110)
INF5110 – 5. og 7. mai 2015 Stein Krogdahl, Ifi, UiO
IN3030 – Effektiv parallellprogrammering Uke 1 2. del, våren 2019
Utskrift av presentasjonen:

Øvingsforelesning 2 Trær og søking i dem, samt litt diverse emner Kristian Veøy

Øvingsgrupper Grupper på studenter møter en undass to timer i uken Vil antageligvis bli satt i gang om halvannen uke Påmelding åpner over helgen

Kø og stack Kø: Førstemann inn er førstemann ut Kassakø Stack: Sistemann inn er førstemann ut Stabel med ark Begge to har operasjonene pop og push Pop henter neste element Push legger på et nytt element

Rekursjon En funksjon som kaller seg selv Må ha et grunntilfelle for ikke å kjøre evig

Trær R A BC D FG H Rot Søskennoder A’s venstre barn B og C’s Foreldre-node Kanter Noder Løvnoder A’s høyre barn

Trær Hver node har 0 eller flere barne-noder Et tre med n noder har n-1 kanter Et tre med maks m barn kalles et m-tre Et spesialtilfelle av dette er 2-treet som kalles et binært tre

Oppbygging Variant 1: Noden har kjennskap til: Foreldrenoden Alle barnenodene Greit når man vet hvor mange barn en node kan ha

Oppbygging Variant 2: Noden har kjennskap til: Foreldrenoden Venstre barnenode Nærmeste søsken Greit når man ikke vet hvor mange barn en node kan ha.

Bredde først søk (bfs) Søk i tre der man besøker noder med økende avstand fra roten Implementeres med kø: Putt rotnoden i kø Så lenge køen ikke er tom: Pop node fra køen Push alle barna på køen

Dybde først søk (dfs) Søk i tre der man rekursivt besøker neste barnenode Om noden ikke har noen barn, returner til forelder

Preorder, inorder og postorder traversering Tre marginalt forskjellige utgaver av DFS Ofte er man interessert i å gjøre en bestemt operasjon på nodene man støter på i løpet av DFS

Preorder, inorder og postorder traversering Pre-, in- og postorder sier noe om hvilken rekkefølge nodene skal behandles i: Preoder: Behandle en node første gang du treffer den Inorder (kun binære trær): Når du treffer en node, sender du først søket videre i venstre barnenode, så behandler du selve noden, så sender du søket videre i høyre barnenode Postorder: Send søket videre i barnenodene først, og behandle selve noden til slutt, rett før du forlater noden

Operatortrær En måte å representere aritmetiske uttrykk på Inorder-traversering vil skrive ut uttrykket slik vi er vant til å lese matematiske uttrykk Postorder-traversering vil skrive ut uttrykket i reverse Polish notation (RPN) RPN ble brukt i kalkulatorer i gamle dager RPN trenger verken parenteser eller presedens Evaluering av et RPN-uttrykk bruker en stack Tall skal pushes på stacken Operatorer popper de to øverste tallene fra stacken og pusher resultatet

Binære søketrær Hver node kan ikke ha flere enn 2 barn. Verdien i en node er større enn alle verdiene i venstre subtre, og mindre enn alle verdiene i høyre subtre. Veldig lett å søke, finne minimum/maksimum, eller foregående/etterfølgende verdi.

AVL-trær Søketær kan fort bli ubalanserte (f.eks. ved innsetting av sorterte data). Da tar søking lang tid En måte å ordne dette på er å bruke et AVL- tre: I et AVL-tre vil forskjellen i høyden av venstre sub-tre og høyre sub-tre være -1, 0 eller 1 Etter innsetting/sletting kalles en metode på treet som gjør det balansert igjen

Rotasjon Sentralt i balansering av trær. Venstre-rotering: La node A bli B sitt venstre barn. La node C bli A sitt høyre barn. Høyre-rotering: Symmetrisk av venstre-rotering. Reglene for når rotasjoner skal gjøres er ikke pensum A B C A B C (Røde kanter er endret)

B-trær Et balansert søketre, men hver node har flere verdier og barn Holder seg balansert ved innsetting og sletting Når man legger til en verdi i en node som ikke har plass, splittes den, og forandringen dyttes oppover i treet

Noen tips til debugging Hva gjør man hvis programmet krasjer, henger eller skriver ut feil svar? Programmer som henger kan avbrytes med Ctrl- C, så får man en stacktrace Kilden til feilen er som regel ikke der det krasjer/henger Hvis krasjen skyldes at en bestemt variabel har gal verdi: prøv å spore bakover og se hvor den verdien kommer fra

Noen tips til debugging Test hver metode for seg Sjekk at metoden får riktige parametre (kan ikke forvente at en metode gir riktig svar hvis den jobber på gale data) Lag egne testsett og test med dem Gå gjennom programmet på papir Sjekk at du faktisk har implementert algoritmen riktig Kan bruke fancy IDE'er med tilhørende debuggere, men en velplassert print er ofte like bra (dessuten går det raskere)

Highscorelista Minner om at det ikke er nødvendig å gjøre det som praksisøvingen foreslår at skal gjøres Skal du høyt opp på lista, må du ofte droppe rammeverket og bruke en annen algoritme Hvis du har sittet og knalloptimalisert python- koden din og fremdeles ikke klarer å klatre på listene, er det et tegn på at du trenger en bedre algoritme

Øvinger Teoriøving På sporet av sprengstoff Redd Ratatosk