41130

Il a certainement lu Manu, il y a des moments où il paraphrase presque.

Sinon ouais il a été très bien!
Les droits inaliénables du troll :
1) le droit d'avoir raison
2) le droit d'être péremptoire
3) le droit de ne pas lire
4) le droit de ne pas répondre
5) le droit d'être de mauvaise foi
6) Autant pour moi / Faignant / Vivent Tintin et Milou

41131

podcast ?
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.

41132

41133

Les droits inaliénables du troll :
1) le droit d'avoir raison
2) le droit d'être péremptoire
3) le droit de ne pas lire
4) le droit de ne pas répondre
5) le droit d'être de mauvaise foi
6) Autant pour moi / Faignant / Vivent Tintin et Milou

41134

thx
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.

41135

Every country has its own Canada. For example:

Sweden is the Canada of Norway
Korea is the Canada of China
Austria is the Canada of Germany
Belgium is the Canada of France
England is the Canada of Scotland
New Zealand is the Canada of Australia
Canada is the Canada of America


Help me compile a big list of Canadas.
Les droits inaliénables du troll :
1) le droit d'avoir raison
2) le droit d'être péremptoire
3) le droit de ne pas lire
4) le droit de ne pas répondre
5) le droit d'être de mauvaise foi
6) Autant pour moi / Faignant / Vivent Tintin et Milou

41136

avatar
I'm on a boat motherfucker, don't you ever forget

41137

./41136> WIN
Les droits inaliénables du troll :
1) le droit d'avoir raison
2) le droit d'être péremptoire
3) le droit de ne pas lire
4) le droit de ne pas répondre
5) le droit d'être de mauvaise foi
6) Autant pour moi / Faignant / Vivent Tintin et Milou

41138

(20:50) Souane - Posté : 15-07-2004 | oué chui pas d'accord moi : y a qu'une seule perverse ici c'est moi ! Muahaha!!! #trivil#
(08:35) Nil - Posté : 03-03-2008 | OMG I think I'm gay
www.brumeries.info
SH33P OWNZ!!!
Haruhi Suzumiya is the only true God.
"Jesus was eaten by worms ~2000 years ago" ©un illustre inconnu

41139

ce serait pas un peu biaisé comme comparatif ?
avatar
I'm on a boat motherfucker, don't you ever forget

41140

bon maintenant, trouver des chaines A et B telles que hugeurl/A => tinyurl/B => hugeurl/A
Les droits inaliénables du troll :
1) le droit d'avoir raison
2) le droit d'être péremptoire
3) le droit de ne pas lire
4) le droit de ne pas répondre
5) le droit d'être de mauvaise foi
6) Autant pour moi / Faignant / Vivent Tintin et Milou

41141

ouais j'y ai pensé aussi mais en fait ça va pas diviser par zéro malheureusement
avatar
I'm on a boat motherfucker, don't you ever forget

41142

damnvoid (./41139) :
ce serait pas un peu biaisé comme comparatif ?

en effet, à peine orienté le truc... roll
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca

41143

Hey les informaticiens..

J'ai un ensemble E de quelques centaines d'éléments.

J'ai besoin de représenter les parties de E.

Plus précisément, je veux pouvoir calculer la réunion de deux parties, et tester l'inclusion de l'une dans l'autre. Rapidement, et en utilisant peu de mémoire (ha ha, sérieusement?)

J'ai le droit d'utiliser des hash ou quelque chose comme ça, plutôt qu'une représentation exhaustive de la partie (C'est pas grave s'il n'y a qu'un nombre faible d'erreurs/collisions).


Est ce qu'il y a une structure de donnée et des algorithmes pour faire ça bien?
Les droits inaliénables du troll :
1) le droit d'avoir raison
2) le droit d'être péremptoire
3) le droit de ne pas lire
4) le droit de ne pas répondre
5) le droit d'être de mauvaise foi
6) Autant pour moi / Faignant / Vivent Tintin et Milou

41144

Je ne suis pas informaticien, désolé.
avatar
Mind the gap ?

41145

ben il faudrait réfléchir aux classes d'équivalences que tu veux : avec un hash classique tu auras des classes toutes moisies qui mettent ensemble des parties radicalement différentes, ça n'aurait pas de sens de parler d'inclusion d'une classe dans une autre* ; peut-être que ton problème peut être résolu avec certaines classes d'équivalence bien choisies (genre je sais pas, tu agglomères des paires d'éléments en un seul élément), mais sinon je pense pas que tu pourras couper au bon vieux champ de bits...

ou en d'autres termes : le hash favorise l'égalité au détriment de l'ordre, donc ce que tu veux n'est pas un hash mais une forme de "compression".


(* : à moins que la majorité de tes parties soient dans un petit sous-ensemble des parties, dans ce cas-là s'il y a une unique telle partie dans ta classe ça marche)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

41146

41147

En fait ça a à voir avec le go, ce problème.

Mon ensemble E, c'est l'ensemble des intersections du goban, et la partie de E, c'est une chaîne de pierres.

J'aimerais décider si une chaîne, dans une position tardive de la partie, a été obtenue par concaténation de pierres avec une chaîne du début de la partie. Le but étant de calculer des corrélations, faire de l'inférence bayésienne, ou ce genre de choses, pour qu'une IA puisse dire "telle chaîne doit vivre pour espérer gagner" ou "telle chaîne doit être connectée pour espérer vivre", etc..

Au go on utilise classiquement le hash de Zobrist : On se fixe au début du programme une fonction aléatoire f : E -> { les entiers de 64 bits } (par exemple), sous la forme d'un tableau rempli de nombres aléatoires. Le hash d'une chaîne, c'est juste le XOR des f(i) pour tout élément i de la chaîne.
C'est simple et ça a plein de qualités, notamment la réunion de deux chaînes est très rapide (un XOR). Par contre ça ne permet de savoir si une chaîne est un sous ensemble d'une chaîne plus grosse.

Bon mais en fait je crois que j'ai trouvé ce que je cherchais : cheeky
http://en.wikipedia.org/wiki/Bloom_filter

Pas sûr que ça ait des performances radicalement meilleures qu'un champ de bits, par contre, faut voir...
Les droits inaliénables du troll :
1) le droit d'avoir raison
2) le droit d'être péremptoire
3) le droit de ne pas lire
4) le droit de ne pas répondre
5) le droit d'être de mauvaise foi
6) Autant pour moi / Faignant / Vivent Tintin et Milou

41148

oui c'est à ce genre de choses que je pensais en parlant d'"agglomérer des paires d'éléments en un seul élément" ^^

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

41149

Donc en fait ça voudrait dire fabriquer une fonction g aléatoire de E dans l'ensemble des entiers à m bits, telle que g(i) a toujours k bits à 1.
Alors le hash d'une chaîne est le OR des g(i) pour tout élément i de la chaîne.
Réunir deux chaînes se résume à faire un OR, et tester l'inclusion est facile aussi.

Ah, c'est splendide. Clair, élégant et rapide.
Ne reste qu'à trouver m et k pour qu'il n'y ait pas trop de collisions et pas trop de faux positifs.
Comme le go ajoute plein de contraintes pratiques (les éléments d'une chaîne sont assez "localisés" puisqu'adjacents, une chaîne a dans la plupart des cas moins de 10-15 éléments, et dans le pire des cas moins de 50), ça doit être possible d'avoir une solution bien.

Joie.
Les droits inaliénables du troll :
1) le droit d'avoir raison
2) le droit d'être péremptoire
3) le droit de ne pas lire
4) le droit de ne pas répondre
5) le droit d'être de mauvaise foi
6) Autant pour moi / Faignant / Vivent Tintin et Milou

41150

Donc l'idée est très proche de l'algorithme de Zobrist, on remplace juste XOR par OR et on met pas trop de bits pour que ça puisse marcher.

Bon par contre une différence c'est que Zobrist permet de hacher non seulement les chaînes, mais aussi la position globale du plateau.
Il suffit d'avoir deux fonctions f_noir et f_blanc et de faire le XOR des f_noir(i) pour toute pierre noire i et f_blanc(j) pour toute pierre blanche j.

On pourrait faire ça aussi avec Bloom, mais ça parait moins crédible, j'ai l'intuition qu'il faut vraiment augmenter m pour éviter les collisions/faux positifs. Ca vaut quand même le coup de lire l'étude théorique de wikipedo, ça serait grassouille de n'avoir à calculer qu'un hash au lieu de deux.

Un truc emmerdant, quand même, c'est de ne pas pouvoir simplement enlever d'élément. Ca interdit la mise à jour incrémentale du hash lors d'une capture de pierres (évènement rare, mais tout de même...)
Les droits inaliénables du troll :
1) le droit d'avoir raison
2) le droit d'être péremptoire
3) le droit de ne pas lire
4) le droit de ne pas répondre
5) le droit d'être de mauvaise foi
6) Autant pour moi / Faignant / Vivent Tintin et Milou

41151

en fait j'ai pas bien compris à quoi te servira l'inclusion ? ni ce que tu entends exactement par chaîne ? c'est pas ordonné j'imagine, donc quelle est la différence avec le plateau à part pour les captures ?

(et 368 bits c'est vraiment prohibitif ?)

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

41152

et pour le recalcul du filtre c'est pas forcément compliqué, rien qu'un truc du style filter = bitfield | bitfield>>42 | bitfield>>123 | ... pourrait suffire même si c'est moins robuste théoriquement qu'un vrai filtre de Bloom ^^

« The biggest civil liberty of all is not to be killed by a terrorist. » (Geoff Hoon, ministre des transports anglais)

41153

Une chaîne c'est un ensemble maximal de pierres d'une même couleur, connectées verticalement et horizontalement.

L'inclusion j'en aurai besoin dans mon analyseur (du moins tel que je me représente mon moteur actuellement) pour comparer des positions proches de la racine et proches des feuilles dans l'arbre de recherche. (C'est à dire savoir si telle chaîne de fin de partie a été obtenue à partir d'une chaîne de début de partie en rajoutant des pierres)

Avoir un hash court et rapide (et qui, idéalement, soit un entier) c'est vraiment sympa, parce qu'il y a vraiment du gros stockage de positions et du gros travail de comparaisons de hashs. 64 bits (voire 32?), ça parait un vœu raisonnable pour du go 9*9, avec 81 intersections. Ça serait bien que 64 ou 128 bits marchent aussi pour du 19*19.

D'ailleurs, maintenant que j'y pense, ça serait amusant et encore plus grassouille de ne pas représenter du tout le plateau, de se contenter de hashs de bloom.cheeky En plus ça doit (presque) être faisable, il faut surtout s'assurer d'un taux vraiment faible de collisions.
Rôh ça serait puissant, ça, un moteur d'intelligence artificielle qui ne retient même pas la position des pierres cheeky

Pour ça va falloir voir comment bloom et zobrist se comportent vis à vis du pattern matching et du décompte des libertés, etc..
Les droits inaliénables du troll :
1) le droit d'avoir raison
2) le droit d'être péremptoire
3) le droit de ne pas lire
4) le droit de ne pas répondre
5) le droit d'être de mauvaise foi
6) Autant pour moi / Faignant / Vivent Tintin et Milou

41154

Pollux (./41152) :
et pour le recalcul du filtre c'est pas forcément compliqué, rien qu'un truc du style filter = bitfield | bitfield>>42 | bitfield>>123 | ... pourrait suffire même si c'est moins robuste théoriquement qu'un vrai filtre de Bloom ^^

Pff ça sera programmé en caml mon cher tripo
(bon yaura un peu de C pour gérer les manips de bits de bas niveau, ok ^^)
Les droits inaliénables du troll :
1) le droit d'avoir raison
2) le droit d'être péremptoire
3) le droit de ne pas lire
4) le droit de ne pas répondre
5) le droit d'être de mauvaise foi
6) Autant pour moi / Faignant / Vivent Tintin et Milou

41155

je serai curieux de voir les résultats de tes algos

41156

Rôh il me vient en tête une structure de donnée de la mort qui tue, pour représenter une position sans mémoriser les pierres, et incrémenter rapidement tripo
Les droits inaliénables du troll :
1) le droit d'avoir raison
2) le droit d'être péremptoire
3) le droit de ne pas lire
4) le droit de ne pas répondre
5) le droit d'être de mauvaise foi
6) Autant pour moi / Faignant / Vivent Tintin et Milou

41157

Cherche quand même si une lib pour faire des opérations bitwise sur plus de 64 bits n'existe pas déjà avant de la coder ^^
avatar
« Le bonheur, c'est une carte de bibliothèque ! » — The gostak distims the doshes.
Membrane fondatrice de la confrérie des artistes flous.
L'univers est-il un dodécaèdre de Poincaré ?
(``·\ powaaaaaaaaa ! #love#

41158

c'est chiant ces gens qui cassent le layout des pages
avatar
I'm on a boat motherfucker, don't you ever forget

41159

²
«Les gens exigent la liberté d’expression pour compenser la liberté de pensée qu’ils préfèrent éviter.» - Sören Kierkegaard

La République, c’est comme la syphilis : quand on l’a attrapée, soit on se fait sauter le caisson, soit on essaie de vivre avec.

41160

à qui la faute ?
avatar
Webmaster du site Ti-FRv3 (et aussi de DevLynx)
Si moins de monde enculait le système, alors celui ci aurait plus de mal à nous sortir de si grosses merdes !
"L'erreur humaine est humaine"©Nil (2006) // topics/6238-moved-jamais-jaurais-pense-faire-ca