Tema
/
Algoritmai ir duomenų struktūros GO
Pamoka 6 / 15 Dvejetainė paieška ~55 min
Namų darbas

Namų darbas

Ką atiduoti

algo su sweep ir std, praeinantį go test ./..., ir savo lūžio taško ataskaitą.

1. Tavo lūžio taškas

Paleisk algo sweep visomis trimis konfigūracijomis ir užpildyk:

konfigūracija tavo lūžio taškas
-ints gretimai
-ints -scattered
eilutės, gretimai

Palygink su pamokoje pateiktais (≈6, ≈6, ≈3) ir su transit (≈50 ir >127).

Jei tavo skaičiai kitokie — tai rezultatas, ne klaida. Paaiškink, kuris iš trijų mechanizmų labiausiai paaiškina skirtumą tavo atveju.

2. Procesorius

Nurodyk savo procesoriaus modelį ir L1 atmintinės dydį.

Suskaičiuok, kiek int32 telpa į tavo L1. Susiek šį skaičių su tuo n, ties kuriuo tavo lentelėje dvejetainė pradeda ryškiai laimėti.

3. Kur riba nustoja galioti

Prie kokio n tiesinė paieška tampa nepriimtina tavo bibliotekai, jei paieška turi tilpti į 16 ms (vienas kadras 60 Hz ekrane)?

Skaičiuok su savo lin ns/op reikšmėmis. Nurodyk n.

4. Prielaidos kaina

Dvejetainei paieškai reikia surikiuotų duomenų. Rikiavimo dar nerašei — bet sort.Slice jau turi.

Pamatuok: kiek kainuoja vienas rikiavimas 100 000 įrašų, ir kiek dvejetainių paieškų reikia atlikti, kad tas rikiavimas atsipirktų prieš tiesinę paiešką?

Šis skaičius yra 7 pamokos motyvas.

5. Sprendimas

Vienas pastraipos atsakymas: tavo bibliotekos paieškai pagal pavadinimą — tiesinė, ranka rašyta dvejetainė ar sort.Search?

Nurodyk savo n, savo lūžio tašką ir kaip dažnai biblioteka keičiasi. Jei keičiasi po kiekvienos paieškos, atsakymas gali būti „tiesinė" — ir tai bus teisinga.