Closed marminthibaut closed 12 years ago
Je fini mes tests de mémoire épisodique et je ferais une pseudo méthode qui génère l'id automatiquement lors de la création de l'objet en attendant de trouver une solution
Faut voir avec Nam, mais je pense que c'est possible d'obtenir une sérialisation qui soit identique ssi les deux Boards sont identiques sans prendre en compte les rotations.
Je suis d'accord avec Clément. d'ailleurs c'est bien ça qu'on a discuté midi! identifier les Boards identiques par rotations nécessite que le CBS soit décrit en variables (qui n'est pas le cas).
Mais tu peux toujours générer tes id comme t'as décrit : dans ce cas, j'aurais besoin de ces id lors de la création des CBS à partir des BoardMatrix.
Bon alors pour la génération de l'ID il faudrait que tu définisses un ordre total sur les faits.
Prenons par exemple prenons l'ordre suivant : isWhite(x) > isBlack(x) > isEmpty(x) (suivit de l'ordre alphabétique des constantes en cas de prédicat égal)
Si tu as une BF avec :
isBlack(C2) ^ is Black(C1) ^ isEmpty(C0) ^ isWhite(C4)
Tu génères une chaine comme ça :
"isWhite(C4)isBlack(C1)isBlack(C2)isEmpty(C0)"
Qu'en penses-tu ? (Qu'en pensez-vous ?) Est-ce que deux plateaux exactement égaux (sans prendre en compte la rotation) auront la même chaine générée ?
Après si on veut un id en int ou long on peu faire le hash de la chaine résultante.
Pour les CBS :
Si on ne prend pas les rotations en compte, on peut utiliser la méthode equals pour évaluer deux plateaux. Elle peut déterminer les plateaux identiques grâce au fait que la liste d'atomes dans la BF prend toujours l'ordre des cases : C0, C1 ... C64 (pour un plateau 8 x 8).
Pour les RPBS : Ici, comme on a que des variables, on pourrait les ordonner comme tu proposes, mais tu devras voir avec Clément.
Une manière simple pour moi d'éviter les doublons des CBS et RPBS dans la mémoire serait de disposer d'une méthode de génération d'ID (sous la forme d'une string ou d'un numérique).
J'ai déjà souligné le problème ce midi, si vous avez des idées exprimez vous ici :)