Gegeben:
Kuckucks-Hashing.
Die Hashtabellen sollen im Falle eines Zyklus nicht erweitert werden.
Alle verwendeten Schlüssel sind paarweise unterschiedlich. (keine Zahl kommt also doppelt vor)
Alle Einträge der Hashtabellen wurden mit −1 vorinitialisiert.
Alle Schlüssel sind natürliche Zahlen.
Der Algorithmus gibt true zurück, wenn der Schlüssel eingefügt werden konnte und false falls es zu einem Zyklus kommt.
Da alle verwendeten Schlüssel paarweise unterschiedlich sind lässt sich ein Zyklus feststellen, wenn beim Verfahren der eingefügte Schlüssel k erneut auftaucht.
Pseudocode:
cuckoo_insert(T_0, T_1, h_0, h_1, k)
// überprüfen ob k bereits in T_0 gespeichert werden kann
if (T_0[h_0(k)] == -1) then
T_0[h_0(k)] = k
return true
end
// überprüfen ob k bereits in T_1 gespeichert werden kann
if (T_1[h_1(k)] == -1) then
T_1[h_1(k)] = k
return true
end
k' = k; // k' um auf Zyklus prüfen zu können
while (true) do
k <-> T_0[h_0(k)] // <-> = tausche
if (k == -1) then // k konnte eingefügt werden
return true
end
if (k == k') then // k konnte nicht eingefügt werden, Zyklus
return false
end
k <-> T_1[h_1(k)]
if (k == -1) then
return true
end
if (k == k') then
return false
end
end