Tema
/
Algoritmai ir duomenų struktūros GO
Pamoka 1 / 15 Įvadas ir sudėtingumas — Big-O ~55 min
Namų darbas

Namų darbas

Ką atiduoti

Veikiantį algo projektą su gen ir find komandomis, praeinantį go test ./..., ir vieno puslapio matavimų ataskaitą.

1. Pasirink temą ir pritaikyk Item

Muzika, filmai, žaidimai ar knygos. Pervadink Artist į tai, kas tinka tavo temai (Director, Studio, Author), ir pritaikyk generatorių.

Year ir Rating palik su rėžiais. Rėžius gali pakeisti (žaidimams 1970–2030 prasmingiau), bet jie turi likti.

2. Išmatuok augimo kreivę

Sugeneruok bibliotekas po 1 000, 10 000, 100 000 ir 1 000 000 įrašų su tuo pačiu -seed. Kiekvienai išmatuok blogiausio atvejo paiešką (ieškok pavadinimo, kurio nėra) ir surašyk į lentelę:

n palyginimai palyginimai ÷ n
1 000
10 000
100 000
1 000 000

Paskutinis stulpelis turi būti pastovus. Paaiškink vienu sakiniu, kodėl.

3. Kur laikrodis nustoja meluoti

Tą patį pamatuok laikrodžiu (time.Since). Rask mažiausią n, kuriam tavo kompiuteris parodo ne nulį.

Užsirašyk tą n ir savo procesorių. Palygink su bendraklausiu — skaičiai skirsis, o palyginimų skaičius bus toks pat. Tai ir yra visa šios pamokos mintis viename sakinyje.

4. Prognozė

Neatlikdamas matavimo, užsirašyk, kiek palyginimų kainuos blogiausio atvejo paieška, kai n = 5 000 000. Tada pamatuok.

Jei nepataikei — klydai ne skaičiuodamas, o kažko nesupratai apie O(n). Parašyk, ką.

5. Kam O(n) pakanka

Vienas pastraipos atsakymas: kada tiesinė paieška yra teisingas pasirinkimas, nepaisant to, kad kitos struktūros greitesnės? Duok konkretų pavyzdį su skaičiais.

(Užuomina: 6 pamokoje pamatysi, kad tiesinė paieška kartais laimi prieš dvejetainę — ir ne dėl to, kad kas nors suklydo.)