Denimo, da se omejimo na množice, ki vsebujejo kvečjemu cela števila med 0 in vključno Z − 1, pri čemer je Z neko ne preveliko celo število. Takšno množico lahko predstavimo s tabelo z Z elementi logičnega tipa. Če število i pripada množici, ima element tabele na indeksu i vrednost True
, sicer pa False
. Na primer če vzamemo Z = 10, potem množico {0, 2, 3, 7} predstavimo s to tabelo:
[True, False, True, True, False, False, False, True, False, False]
Kako bi z drugimi besedami opisal množico, ki jo predstavlja spodnja tabela z 2k elementi?
[True, False, True, False, True, False, ..., True, False]
Tovrstna predstavitev množice je časovno izjemno učinkovita. Prisotnost števila x ∈ {0, 1, ... , Z − 1} preverimo tako, da preverimo vrednost elementa v tabeli na indeksu x. Število x v množico dodamo tako, da element tabele na indeksu x postavimo na True
, pri odstranjevanju pa pripadajoči element tabele postavimo na False
. Časovna zahtevnost vseh treh operacij znaša O(1), saj je čas, ki ga potrebujejo operacije, povsem neodvisen od števila elementov v množici, pa tudi od velikosti tabele. Oglejmo si modul mnozicaTabelaLogicnih.py
(glej kodo).
Kaj se zgodi, če s funkcijo Dodaj
v množico dodamo celo število izven intervala med 0 in Z − 1 ali pa vrednost nekega drugega tipa?