[las tablas hash tienen] O (1) inserción y búsqueda
Creo que esto está mal.
En primer lugar, si limita el espacio de teclas para que sea finito, puede almacenar los elementos en una matriz y hacer una exploración lineal O (1). O puede ordenar aleatoriamente la matriz y luego hacer una exploración lineal en O (1) tiempo esperado. Cuando las cosas son finitas, las cosas son fácilmente O (1).
Entonces digamos que su tabla hash almacenará cualquier cadena de bits arbitraria; no importa mucho, siempre y cuando haya un conjunto infinito de claves, cada una de las cuales es finita. Luego debe leer todos los bits de cualquier consulta e inserción, de lo contrario inserto y0 en un hash vacío y consulta en y1, donde y0 e y1 difieren en una posición de bit único que no mira.
Pero digamos que las longitudes de las claves no son un parámetro. Si su inserción y búsqueda toman O (1), en particular el hash toma O (1) vez, lo que significa que solo mira una cantidad finita de salida de la función hash (de la cual es probable que haya solo un resultado finito, concedido )
Esto significa que con un número finito de cubos, debe haber un conjunto infinito de cadenas que tienen el mismo valor hash. Supongamos que inserto mucho, es decir, ω (1), y empiezo a consultar. Esto significa que su tabla hash tiene que recurrir a algún otro mecanismo de inserción / búsqueda O (1) para responder mis consultas. ¿Cuál, y por qué no solo usar eso directamente?