En relation avec le puzzle Slither Link , je me suis demandé: supposons que j'ai une grille de cellules carrées et que je souhaite trouver un cycle simple de bords de grille, uniformément au hasard parmi tous les cycles simples possibles.
Une façon de le faire serait d'utiliser une chaîne de Markov dont les états sont des ensembles de carrés dont les frontières sont des cycles simples et dont les transitions consistent à choisir un carré aléatoire à retourner et à conserver le retournement lorsque l'ensemble de carrés modifié a toujours un cycle simple comme sa frontière. On peut passer de n'importe quel cycle simple à n'importe quel autre de cette manière (en utilisant des résultats standard sur l'existence de shellings) donc cela finit par converger vers une distribution uniforme, mais à quelle vitesse?
Sinon, existe-t-il une meilleure chaîne de Markov ou une méthode directe pour sélectionner des cycles simples?
ETA: Voir ce billet de blog pour le code pour calculer le nombre de cycles que je recherche, et des pointeurs vers OEIS pour certains de ces nombres. Comme nous le savons, le comptage est presque la même chose que la génération aléatoire, et je déduis de l'absence de tout schéma évident dans les factorisations de ces nombres et de l'absence d'une formule dans l'entrée OEIS qu'il est peu probable qu'il existe une méthode directe simple connue . Mais cela laisse toujours la question de la rapidité avec laquelle cette chaîne converge et s'il existe une meilleure chaîne grande ouverte.