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 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

3 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)

4 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

5 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

6 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 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

7 Noen tips til debugging Kan bruke fancy IDE'er med tilhørende debuggere, men en velplassert print er ofte like bra (dessuten går det raskere)

8 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 gjøre noe helt annet 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

9 Øvingsgrupper For dem som føler at de trenger hjelp med faget 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 (Magnus annonserer fremgangsmåten)

10 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 if you would like such assistance

11 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


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