Hash mínimo perfeito para combinações matemáticas

Primeiro, defina dois inteirosN eK, OndeN >= K, ambos conhecidos em tempo de compilação. Por exemplo:N = 8 eK = 3.

Em seguida, defina um conjunto de inteiros[0, N) (ou[1, N] se isso torna a resposta mais simples) e chamá-loS. Por exemplo:{0, 1, 2, 3, 4, 5, 6, 7}

O número de subconjuntos deS comK elementos é dado pela fórmulaC(N, K). Exemplo

Meu problema é o seguinte: Crie um hash mínimo perfeito para esses subconjuntos. O tamanho da tabela de hash de exemplo seráC(8, 3) ou56.

Eu não me importo com pedidos, apenas que haja 56 entradas na tabela de hash, e que eu possa determinar o hash rapidamente a partir de um conjunto deK inteiros. Eu também não me importo com a reversibilidade.

Exemplo de hash:hash({5, 2, 3}) = 42. (O número 42 não é importante, pelo menos não aqui)

Existe um algoritmo genérico para isso que funcionará com quaisquer valores deN eK? Não consegui encontrar um pesquisando o Google ou meus próprios esforços ingênuos.

questionAnswers(2)

yourAnswerToTheQuestion