Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no.

Liknende presentasjoner


Presentasjon om: "@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no."— Utskrift av presentasjonen:

1 @ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no

2 Øvingsgrupper  For dem som føler at de trenger hjelp med faget  Grupper på 10-15 studenter møter en undass to timer i uken  Vil antageligvis bli satt i gang om halvannen uke  Påmelding åpner over helgen (Magnus annonserer fremgangsmåten)

3 Exchange students  English translations of the practical assignments are available  If needed, we will provide a student assistant to translate the theoretical assignments  Please contact me (asmunde@) if you would like such assistance

4 Red-black trees  Les gjennom rotasjon, innsetting og sletting slik at det er "kjent stoff", men ikke legg vekt på å huske det (åpen bok på eksamen!)  Prøv dog å få en forståelse for hvordan de fem fargereglene sørger for et "noenlunde balansert" tre

5 Preorder, inorder og postorder traversal / tree walk  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  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

6 Preorder, inorder og postorder traversal / tree walk  Hvordan implementerer vi dette?  Søk som startes i en bestemt node utføres ved å starte nye søk på barnenodene – dette er en såkalt rekursiv struktur, så da kan vi benytte rekursjon (du utfører en oppgave ved å utføre den samme oppgaven på en mindre mengde data)  Merk: alle traverseringsmetodene implementeres med DFS (og man vil uunngåelig oppdage nodene i prefix-rekkefølge – men man kan velge å behandle nodene i en annen rekkefølge)

7 Dybde først-søk med stack  Her er det lett å gå i fellen ved å prøve å ta koden for bredde først-søk og bare bytte ut køen med en stack  Det fungerer i og for seg i trær, men gir gale resultater i en graf  Vi må etterligne virkemåten til rekursjonen

8 Operatortrær  En måte å representere aritmetiske uttrykk på  Infix-traversering vil skrive ut uttrykket i infix- notasjon (måten vi er vant med å lese matematiske uttrykk)  Postfix-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

9 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

10 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 datasett 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)

11 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


Laste ned ppt "@ TDT4120 Algoritmer og datastrukturer Trær og søking i dem, samt litt diverse emner Åsmund Eldhuset asmunde idi.ntnu.no."

Liknende presentasjoner


Annonser fra Google