|
1 | 1 | # TDT4120 Algoritmer og datastrukturer
|
2 | 2 |
|
3 |
| -Dette er et selvskrevet kompendium i [TDT4120 H20 ved NTNU](https://www.ntnu.no/studier/emner/TDT4120/2020). Faget inneholder en del notasjon som er løst ved bruk av LaTeX formatering, som leses ved bruk av en [utvidelse i nettleseren](https://chrome.google.com/webstore/detail/mathjax-plugin-for-github/ioemnmodlmafdkllaclgeombjnmnbima). Kompendiet er sortert etter [læremålene i pensumheftet](Ressurser/pensumhefte2020.pdf). |
| 3 | +Dette er et selvskrevet kompendium i [TDT4120 ved NTNU](https://www.ntnu.no/studier/emner/TDT4120/2020). Kompendiet er strukturert etter [læremålene i pensumheftet 2020](Ressurser/pensumhefte2020.pdf). |
4 | 4 |
|
5 |
| -For å bidra, les [contributing.md](contributing.md) ❤ |
| 5 | +Kompendiet er ikke komplett og definitivt ikke perfekt, så gjerne [bidra](contributing.md)! |
6 | 6 |
|
7 | 7 | ## Overordnede læringsmål i faget
|
8 | 8 |
|
@@ -84,7 +84,7 @@ Den **gjennomsnittlige kjøretiden** til en algoritme er kjøretiden man i gjenn
|
84 | 84 | <!-- ![A4] Kunne definere asymptotisk notasjon, O, Ω, Θ, o og ω. -->
|
85 | 85 | Asymptotiske notasjon beskriver hvordan en funksjon oppfører seg når inputstørrelsen blir veldig stor (tenk grenseverdier og summer). I algoritmesammenheng er funksjonen ofte tidsbruk gitt en inputstørrelse.
|
86 | 86 |
|
87 |
| -Sjekk ut [denne gode kilden](https://www.bigocheatsheet.com/) for å visuelt forsterke din forståelse av asymptotisk notasjon. |
| 87 | +[Big-O Cheat Sheet](https://www.bigocheatsheet.com/) er bra for å visualisere asymptotisk notasjon. |
88 | 88 |
|
89 | 89 | Asymptotisk notiasjon gir oss ikke en presis beskrivelse av veksten til en funksjon, men den gir oss øvre og nedre grenser. Det gjør det enklere å beskrive og sammenligne ulike algoritmer.
|
90 | 90 |
|
@@ -440,7 +440,7 @@ $$a \ge 1,\ b > 1$$
|
440 | 440 |
|
441 | 441 | 1. Identifiser $a, b, f(n)$
|
442 | 442 | 2. Regn ut $\log_b(a) = d$ og finn graden av $f(n) = c$
|
443 |
| -3. Vurder forholdet mellom $c$ og $d$. Hvis $d>c$ gjelder tilfelle 1 med $O$. Hvis $c=d$ gjelder tilfelle 2 med $\Theta$. Hvis $d<c$ gjelder tilfelle 3 med $\Omega$. |
| 443 | +3. Vurder forholdet mellom $c$ og $d$. Hvis $d>c$ gjelder tilfelle 1 med $O$. Hvis $c=d$ gjelder tilfelle 2 med $\Theta$. Hvis $d < c$ gjelder tilfelle 3 med $\Omega$. |
444 | 444 | 4. Konsulter tabellen under med tilfeller
|
445 | 445 |
|
446 | 446 | Tilfelle | Krav | Løsning
|
@@ -622,25 +622,25 @@ En haug (heap) er en sortert tre-struktur. Elementer som legges til en heap blir
|
622 | 622 | #### Operasjoner på Heaps
|
623 | 623 |
|
624 | 624 | **Insert = $O(\log n)$**
|
625 |
| -*Fordi man må søke gjennom treet. Ettersom treet er $\log n$-høyt, må dette nødvendigvis bli kjøretiden.* |
| 625 | +Fordi man må søke gjennom treet. Ettersom treet er $\log n$-høyt, må dette nødvendigvis bli kjøretiden.* |
626 | 626 | En forenklet versjon i en tre-struktur heter TREE-INSERT med kjøretid $O(h)$.
|
627 | 627 |
|
628 | 628 | **Delete = $O(\log n)$**
|
629 |
| -*Av samme grunn som **insert**.* |
| 629 | +Av samme grunn som **insert**. |
630 | 630 | En forenklet versjon i en tre-struktur heter TREE-DELETE med kjøretid $O(h)$.
|
631 | 631 |
|
632 | 632 | **Build = $O(n)$**
|
633 |
| -*Build bygger en heap uten å ta hensyn til sortering. Det vil si at den bare legger til legger til elementer i en trestruktur. Derfor er kjøretiden lineær.* |
| 633 | +Build bygger en heap uten å ta hensyn til sortering. Det vil si at den bare legger til legger til elementer i en trestruktur. Derfor er kjøretiden lineær. |
634 | 634 |
|
635 | 635 | **Max-heapify = $O(\log n)$**
|
636 |
| -*Max-heapify tar input-elementene og konstruerer en Max-heap. Den sorterer nodene fra bunn til topp. Dermed er den bundet av høyden til heapen som er $\log n$*. |
| 636 | +Max-heapify tar input-elementene og konstruerer en Max-heap. Den sorterer nodene fra bunn til topp. Dermed er den bundet av høyden til heapen som er $\log n$. |
637 | 637 |
|
638 | 638 | **Build-max-heap = Linear time**
|
639 |
| -*Build-max-heap bygger en heap ved å kjøre max-heapify på hver node den legger til. Max-heapify tar $O(\log n)$ tid, men ettersom Build tar lineær tid, overskirver denne Max-heapify. Altså får vi lineær tid.* |
| 639 | +Build-max-heap bygger en heap ved å kjøre max-heapify på hver node den legger til. Max-heapify tar $O(\log n)$ tid, men ettersom Build tar lineær tid, overskirver denne Max-heapify. Altså får vi lineær tid. |
640 | 640 |
|
641 | 641 | **Heapsort = $O(n \log (n))$**
|
642 |
| -*Heapsort bygger først en max-heap ved hjelp av Build-max-heap. Nå er det største elementet på toppen. Dette elementet hentes ut fra heapen. Den flytter så en av de minste elementene helt til toppen før den kjører Max-heapify igjen. Max-heapify garanterer at det største elementet i heapen nok en gang kommer til toppen. Denne prosessen gjør det mulig å hente ut det største elementet i heapen hver gang.* |
643 |
| -*$O(n \log (n))$ kommer av at det kjøres Max-heapify for hvert element.* |
| 642 | +Heapsort bygger først en max-heap ved hjelp av Build-max-heap. Nå er det største elementet på toppen. Dette elementet hentes ut fra heapen. Den flytter så en av de minste elementene helt til toppen før den kjører Max-heapify igjen. Max-heapify garanterer at det største elementet i heapen nok en gang kommer til toppen. Denne prosessen gjør det mulig å hente ut det største elementet i heapen hver gang.* |
| 643 | +$O(n \log (n))$ kommer av at det kjøres Max-heapify for hvert element. |
644 | 644 |
|
645 | 645 | **Max-heap-insert, heap-extract-max, Heap-increase-key, Heap-maximum = $O(\log (n))$**
|
646 | 646 |
|
|
0 commit comments