Cycle de réseau aléatoire auto-évitant dans une zone de délimitation donnée


25

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.n×n

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.


1
Les limites des ensembles comptés par la séquence OEIS ne sont pas nécessairement des cycles simples, par exemple pour 3x3, l'un des 218 a tous les carrés sauf le milieu, et quatre autres sont donnés en supprimant encore un coin.
Colin McQuillan

1
Pour les grilles 2xn, les nombres sont ceux indiqués dans oeis.org/A059020 . Pour 3xn, je suis pratiquement sûr qu'ils sont 6,40,213,1049,5034,23984,114069,542295,2577870,12253948,58249011,276885683,1316170990,6256394122,29739651711,141366874247, ... (pas dans OEIS). J'ai configuré la matrice de transfert pour la calculer à la main, mais je l'ai comparée à une matrice générée par la machine et la seule entrée qui différait était celle de la main correcte et celle de la machine était erronée. (Cela devrait apparaître dans le cas 3x3 - la matrice de la machine aurait permis à un octomino avec un trou au centre.)
David Eppstein

1
Vous devriez envoyer cette séquence à Neil Sloane afin qu'il puisse la mettre dans l'OEIS.
Peter Shor

1
@David: Merci. Il est probablement temps pour moi d'apprendre plus à fond la méthode de la matrice de transfert.
Yoshio Okamoto

2
@David: Vous venez de perdre deux heures de ma vie avec ce lien vers le puzzle .. Thx!
domotorp

Réponses:


1

Il semble que parce que vous utilisez uniquement les nombres pour le nombre de cycles dans un graphique pour choisir un cycle au hasard, que si vous aviez une approximation aléatoire pour ce nombre, alors vous pouvez toujours choisir un cycle à peu près uniformément.

Notez que le nombre de cycles dans un graphique , qui contient le bord ( u , v ) , est égal au nombre de cycles dans G - ( u , v ) plus le nombre de chemins simples de u à v dans G - ( u , v ) . Ainsi, avec une approximation polynomiale du temps pour le nombre de trajets u - v , l'approximation polynomiale du temps peut être obtenue en construisant progressivement jusqu'à G un bord à la fois, en se rapprochant au fur et à mesure. G(u,v)G(u,v)uvG(u,v)uvG

Gn×n(u,v)uvG(u,v)

CvsveNveCuNuvsG[V(C{vs,ve})]uve(ve,u)

De cette façon, un nombre polynomial d'arêtes est choisi, chacune nécessitant un petit nombre de calculs d'un algorithme d'approximation polynomiale temporelle. Ainsi, un cycle peut être uniformément choisi.

J'ai actuellement une question stackexchange demandant des références pour des algorithmes d'approximation de comptage de chemin rapide. J'ai lu à quelques endroits que ces algorithmes existent mais je ne les ai pas encore trouvés.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.