[Hashovací tabulky mají] O (1) vložení a vyhledávání
Myslím, že je to špatně.
Za prvé, pokud si omezit keyspace být konečný, mohl ukládat prvky v poli a provést O (1) lineární skenování. Nebo byste mohli shufflesort pole a proveďte lineární prohledávání v O (1) předpokládané doby. Když věci jsou konečné, materiál je snadno O (1).
Takže řekněme, že vaše hash tabulky bude ukládat libovolný bitový řetězec; to není moc záležitost, jak dlouho jak tam je nekonečný svazek klíčů, z nichž každá je konečný. Pak budete muset přečíst všechny kousky jakéhokoliv dotazu a vkládání vstup, jinak bych vložit Y0 do prázdné hash a dotazu na y1, kde y0 a y1 se liší v jedné poloze bitu, které nechcete podívat.
Ale řekněme, že klíčové délky nejsou parametr. Pokud váš vkládání a hledání trvat O (1), zejména na hash trvá O (1) čas, což znamená, že se díváte pouze na konečné množství výstupu z hashovací funkce (z nichž je pravděpodobné, aby se jen konečný výstup, udělil ).
To znamená, že se konečně mnoha kbelíky, musí být nekonečná množina řetězců, které všechny mají stejnou hodnotu hash. Dejme tomu, že vložíte hodně, tj ω (1), z těch, a začít dotazování. To znamená, že hash tabulky se musí opřít o nějaké jiné O (1) mechanizmu vkládání / vyhledávání se odpovědět na mé dotazy. Který z nich, a proč ne jen používat, která přímo?