Sobes.tech
Junior — Middle

Kokios metodikos egzistuoja siekiant sumažinti susidūrimo tikimybę naudojant žemėlapių lenteles?

sobes.tech AI

Atsakymas iš AI

Siekiant sumažinti susidūrimo tikimybę žemėlapiuose naudojami šie metodai:

  • Pasirinkti gerą maišos funkciją — funkcija turi tolygiai paskirstyti raktus lentelėje.
  • Naudoti kolizijų sprendimo metodus:
    • Atvira adresacija (linijinis ieškojimas, kvadratinis ieškojimas, dvigubas maišymas) — ieškoti kitos laisvos langelio.
    • Grandinimas — saugoti visus elementus su tuo pačiu maišos reikšme susietame sąraše ar kitame konteineryje.
  • Padidinti lentelės dydį — pasiekus tam tikrą apkrovos lygį, atliekamas permaišymas su didesne dydžio reikšme.

C++ pavyzdys su grandinimu:

std::unordered_map<int, std::string> map;
map[1] = "one";
map[2] = "two";
// Viduje naudojamas grandinimas kolizijoms valdyti