Kurssiaihe 8 ja 9

Puut

Mitkä seuraavista juurellisia puita koskevista väitteistä ovat totta? (Videossa puu on sama kuin juurellinen puu.)
Oletetaan, että juurellisessa puussa olevalla solmulla \(x\) on useita lapsia. Mikä seuraavista väitteistä solmun \(x\) alipuista pitää paikkansa? (Videossa puu on sama kuin juurellinen puu.)
Tarkastellaan juurellista puuta, jonka korkeus on neljä. Mikä seuraavista väitteistä on aina totta? (Videossa puu on sama kuin juurellinen puu.)
Olkoon \(x\) solmu juurellisessa puussa. Solmun \(x\) jälkeläinen on mikä tahansa solmu missä tahansa solmun \(x\) alipuissa. Mikä seuraavista väitteistä on aina totta? (Videossa puu on sama kuin juurellinen puu.)

Puu-tietorakenteet ja puiden läpikäynti

On olemassa binääripuu, jossa jokainen solmu tallennetaan kahdella lasten osoittimella nimeltä left_child ja right_child. Jos koko binääripuussa on neljä solmua, kuinka monta näistä osoittimista lapsille on yhtä suuri kuin nullptr?
Mikä seuraavista kuvaa parhaiten eroa sen välillä, miten solmu tallennetaan yleiseen juurelliseen puuhun ja miten solmu tallennetaan binääripuuhun? (Videossa puu on sama kuin juurellinen puu.)
Oletetaan, että suoritetaan sekä preorder-läpikäynti (esijärjestys) että postorder-läpikäynti (jälkijärjestys) koko juurelliselle puulle, jossa on vähintään kaksi solmua. Mikä seuraavista on totta? (Videossa puu on sama kuin juurellinen puu.)
Esitellyt läpikäyntitekniikat ovat preorder, postorder ja inorder (esijärjestys, jälkijärjestys ja välijärjestys). Millä tavalla inorder eroaa kahdesta muusta läpikäynnistä?

Mitätöityminen

Seuraavassa annetaan väitteitä mitätöinnistä ja erilaisista STL-säiliöista. Mitkä niistä ovat totta?
Mitä voidaan sanoa yleisesti mitätöinnistä ja iteraattoreista, osoittimista ja indekseistä?
Mitä mitätöinti aiheuttaa STL:n säiliötä käytettäessä?

Lisäinformaatiota aiheesta:

Viikko07 - Sanasto

Kurssiaiheiden palautettavat kotitehtävät

Tällä viikolla palautettavat tehtävät

Kurssiaihe 8

Itseopiskelu

Aiheet: (i) Amortisoitu tehokkuus,(ii) Tehokkuuden testaaminen ja parantaminen, (iii) Satunnaistaminen

Aiheiden opetusvideot ja kalvot:

Amortisoitu tehokkuus ja STL:n vectorin muistinhallinta

Asymptoottisen tehokkuuden testaaminen

Amortisoitu tehokkuus ja STL:n vectorin muistinhallinta

Amortisoitu tehokkuus on
Oletetaan, että STL-vektoria \(v\) käytetään ja alkioiden lisääminen vektorin \(v\) loppuun on ainoa operaatio mitä tehdään. Oletetaan myös, että vectorin \(v\) koko kaksinkertaistuu tilanteissa, joissa \(v\):n muisti loppuu. Mikä seuraavista pätee yhden alkion lisäämisen tehokkuudesta?

Asymptoottisen tehokkuuden testaaminen

Mitkä seuraavista väitteistä tehokkuuden testaamisesta ovat totta?
Oletetaan, että algoritmille \(X\) meillä on suuri kokoelma syötetapauksia, joissa tapausten koot kattavat useita suuruusluokkia. Oletetaan, että suoritamme \(X\) kaikille syöteille ja mittaamme suoritusajat (esimerkiksi sekunneissa). Jos haluamme sanoa jotain algoritmin \(X\) asymptoottisesta tehokkuudesta, miksi meidän pitäisi tehdä jonkinlainen tilastollinen analyysi mittauksista?

Vinkkejä todellisen tehokkuuden parantamiseen

Valitse menetelmät, joita voidaan käyttää parantamaan jonkin ohjelman todellista tehokkuutta.
Oletetaan, että C++:ssa vektoriin \(v\) on tallennettu \(n\) lukua ja \(n\) on hyvin suuri. Missä seuraavista tilanteista on järkevää lajitella vektorin \(v\) alkiot etukäteen?
Oletetaan, että C++:ssa meillä lajittelematon vektori \(vMax\), jossa on suuri määrä lukuja. Oletetaan myös, että lisäämme usein uusia lukuja vektoriin \(v\), mutta emme koskaan poista lukuja siitä. Oletetaan, että tarvitsemme lisäksi vektorin \(v\) suurimman luvun. Mikä seuraavista on vähiten tehokas tapa laskea suurin luku?

Satunnaistaminen

Mikä on pätevä syy käyttää satunnaistamista joissakin algoritmissa?
Kun satunnaistaminen lisätään pikalajitteluun pahimpien tapausten välttämiseksi, miten se yleensä lisätään?
Oletetaan, että on olemassa vektori \(v\), jossa on \(n\) alkiota ja kaikki vektorin \(v\) alkiot sekoitetaan satunnaisesti. Mitä voidaan sanoa tästä sekoitusoperaatiosta?
Muotoile kurssin kannalta keskeinen kysymys, johon tämän aihealueen videot antavat vastauksen.
Minkä videon aiheesta pitäisi erityisesti keskustella keskustelutilaisuudessa?
Oliko videoiden sisällössä jotain erityisen vaikeaa? Entä mielenkiintoista? Jotain josta haluaisit oppia lisää?

Lisäinformaatiota aiheesta:

On erilaisia mielipiteitä siitä, miten C++-koodin tehokkuutta kannattaisi parantaa. Seuraavasta linkistä löytyy keskustelua aiheesta. Varoitus: keskustelu on melko teknistä. -Keskustelu stackoverflow:ssa:

Viikko08 - Sanasto

Kurssiaiheiden palautettavat kotitehtävät

Palautettavat tehtävät

Kurssiaihe 9

Itseopiskelu

Aiheet: (i) Keko ja keon operaatiot, (ii) Keko taulukkona

Aiheiden opetusvideot ja kalvot:

Keon operaatioiden tehokkuus

Suunnitteluperiaate Muunna-ja-hallitse, kekolajittelu

Keko ja keon operaatiot

Kun käytetään max-kekoa, jossa on vähintään kaksi solmua,
Keko on binääripuu. Mitkä seuraavista väittämistä ovat totta?
Mitä tapahtuu lisättäessä uusi solmu max-kekoon?
Missä tilanteessa max-keon heapify()-algoritmia käytetään?
Mitkä seuraavista väiteistä pätevät Build-Heap-algoritmille?
Mitä Heap-Extract-Max-algoritmi laskee?
Tarkastellaan seuraavaa neljää algoritmia: Build-Heap, Heap-Extract-Max, Heapify ja Heap-Insert. Oletetaan, että kunkin algoritmin syötteenä käytetyssä max-keossa solmujen lukumäärä on \(n\). Millä näistä neljästä algoritmista on tehokkuus, joka riippuu logaritmisesti koosta \(n\)?

Keko taulukkona

Oletetaan, että binääripuun max-keko on tallennettu taulukkona \(A\). Oletetaan, että \(A[i]\) vastaa solmua \(x\). Mitkä seuraavista ovat totta?
Mitkä ovat Heapsort-algoritmin edut lukujen lajittelualgoritmina?
Muotoile kurssin kannalta keskeinen kysymys, johon tämän aihealueen videot antavat vastauksen.
Minkä videon aiheesta pitäisi erityisesti keskustella keskustelutilaisuudessa?
Oliko videoiden sisällössä jotain erityisen vaikeaa? Entä mielenkiintoista? Jotain josta haluaisit oppia lisää?

Lisäinformaatiota aiheesta:

Tyypillisesti prioriteettijono toteutetaan binääripuukekona. Vaihtoehtoinen tietorakenne, jota voidaan käyttää prioriteettijonona, on binomipuukeko

Viikko09 - Sanasto

Palautettavat kotitehtävät

Palautettavat tehtävät