Cuckoo hashing
| Est artícul o secció necessita ser wikificat en un format adequat a les convencions d'estil de L'Enciclopèdia en valencià . Per favor, edita-lo per a complir en elles. No elimines est avís fins que ho hages fet. ¡Colabora ! També pots ajudar canviant este avís per u més específic. |

Cuckoo Hashing (hash del cuco) és un estructura de senyes usada en la programació informàtica per a la resolució de colisions hash dels valors de la funció de hash en una Taula, en case pijor constant en temps de busca. El nom deriva del comportament d'algunes espècies de cuculidae, a on la cría del cuco espenta els atres ous o crío del niu quan incuba; análogamente, l'inserció d'una nova clau en una taula cuckoo hashing pot espentar una clau més per a una ubicació diferent en la taula.
Història
[editar | editar còdic]Cuckoo hashing va ser descrita per primera volta per Rasmus Pagh i Flemming Friche Rodler en 2001.[1]
Teoria
[editar | editar còdic]L'idea bàsica és usar dos funcions hash en lloc de només una. Açò proporciona dos possibles ubicacions en la taula hash per a cada clau única. En una de les variants d'us comú de l'algoritme, la taula hash es dividix en dos taules més chicotetes d'igual tamany, i cada funció hash proporciona un índex en una d'estes dos taules.
Quan s'inserta una nova clau, un algoritme voraç és usat per a insertar el duplicat de la clau en una de les seues dos possibles ubicacions, "patear", és dir, desplaçar, qualsevol clau que podria residir en esta ubicació. Després s'inserta esta clau desplaçada en el seu lloc alternatiu, de nou expulsar a qualsevol clau que podria residir en eixe lloc, fins que es trobe un lloc disponible, o el procediment podria caure en un cicle infinit. En este últim cas, la taula hash es reconstruïx en el lloc en una nova funció hash:
Les operacions de busca requerixen l'inspecció de només dos llocs en la taula hash, que pren temps constant en el pijor dels casos (vore Cota superior asintòtica). Açò està en contrast en molts atres algoritmes de taula de hash, que poden no tindre una constant pijor dels casos, en destí en el temps per a fer una busca.
També pot demostrar-se que les insercions poden tindre èxit en la constant de temps esperat,[1] inclús tenint en conte la possibilitat de tindre que reconstruir la taula, sempre i quan es manté el número de claus per baix de la mitat de la capacitat de la taula hash, és dir, el factor de càrrega és inferior a 50%. Un método per a provar açò utilisa la teoria de grafos aleatoris: un pot formar un grafo no dirigit cridat el "grafo cuckoo" que té un vèrtiç per a cada ubicació en la taula hash, i una aresta per a cada valor hash, en els extrems de l'aresta sent les dos possibles ubicacions del valor. Llavors, l'algoritme d'inserció per adició d'un conjunt de valors d'una taula hash cuckoo té èxit si i només si el grafo cuckoo per a este conjunt de valors és un pseudoforest, un grafo en a lo manco un cicle per cada una dels seus components conexas, com qualsevol subgrafo induït en més arestes que vèrtiços corresponent a un joc de claus per als que hi ha un número insuficient de llocs en la taula hash. Esta propietat es complix en alta provabilitat per a un grafo aleatori en el que el número d'arestes és menor que la mitat del número de vèrtiços.
Vore també
[editar | editar còdic]Referències
[editar | editar còdic]- ↑ 1,0 1,1 1,2 (2001) «Cuckoo Hashing», Algorithms — ESA 2001, pp. 121–133. doi:10.1007/3-540-44676-1_10. ISBN 978-3-540-42493-2.
Referències
[editar | editar còdic]
- Este artícul conté una traducció derivada de «Cuckoo hashing» de Wikipedia en castellà publicada baix la Llicència de documentació lliure de GNU i la Llicència Creative Commons Reconeiximent-CompartirIgual 4.0 Internacional.