Eh bien, pour obtenir une garantie de unique valeur, vous aura effectivement d'enregistrer le contenu complet de la matrice. Vous pouvez utiliser un hachage qui vous dira si un tableau est probablement le même que l'autre, mais vous ne pouvez pas obtenir l'unicité sans avoir une transformation sans perte.
À titre d'exemple d'une simple fonction de hachage:
int hash = 17;
for (int i = 0; i < 3; i++) {
for (int j = 0; j < 3; j++) {
hash = hash * 31 + array[i, j];
}
}
return hash;
Maintenant, deux tableaux différents seront très probablement un hachage différent - mais ils ne pourraient pas.
Combien d'espace êtes-vous prêt à dépenser pour l'ID, et quelle est la taille de chaque valeur dans le tableau? Plus vous aurez d'informations à mettre dans l'ID, moins vous aurez de faux positifs ... jusqu'à ce que vous arriviez à l'étape où l'ID est aussi grand que le tableau, à quel point vous pouvez vous assurer que Bien sûr, il n'y aura pas de faux positifs.
Avez-vous besoin de générer un hachage unique ou tout simplement une façon de dire des réseaux à part? Votre titre et le texte de la question suggèrent des questions différentes ... – Oded
La position des entiers est-elle importante? –
@Oded: J'ai besoin d'un hash unique. – Homam