Perfekter minimaler Hash für mathematische Kombinationen

Definieren Sie zunächst zwei GanzzahlenN undK, woherN >= K, beide zum Zeitpunkt der Kompilierung bekannt. Zum Beispiel:N = 8 undK = 3.

Definieren Sie als Nächstes eine Reihe von Ganzzahlen[0, N) (oder[1, N] wenn das die Antwort einfacher macht) und nenne esS. Zum Beispiel:{0, 1, 2, 3, 4, 5, 6, 7}

Die Anzahl der Teilmengen vonS mitK Elemente wird durch die Formel gegebenC(N, K). Beispiel

Mein Problem ist folgendes: Erstellen Sie einen perfekten minimalen Hash für diese Teilmengen. Die Größe der Beispiel-Hash-Tabelle beträgtC(8, 3) oder56.

Ich kümmere mich nicht um die Bestellung, nur dass die Hash-Tabelle 56 Einträge enthält und ich den Hash schnell aus einer Reihe von ermitteln kannK ganze Zahlen. Reversibilität ist mir auch egal.

Beispiel Hash:hash({5, 2, 3}) = 42. (Die Nummer 42 ist nicht wichtig, zumindest nicht hier)

Gibt es einen generischen Algorithmus, der mit allen Werten vonN undK? Ich konnte keine finden, indem ich Google durchsuchte, oder meine eigenen naiven Bemühungen.

Antworten auf die Frage(2)

Ihre Antwort auf die Frage