У зв'язку з головоломкою Slither Link мені було цікаво: припустимо, у мене є сітка квадратних осередків , і я хочу знайти простий цикл країв сітки, рівномірно навмання серед усіх можливих простих циклів.
Одним із способів зробити це було б використання ланцюга Маркова, стани якого є наборами квадратів, межі яких є простими циклами і переходи яких полягають у виборі випадкового квадрата, який слід перевернути, і збереження фліп, коли модифікований набір квадратів все ще має простий цикл, як її межа. Таким способом можна дістатись із будь-якого простого циклу до будь-якого іншого (використовуючи стандартні результати про існування оболонок), так що це врешті-решт переходить до рівномірного розподілу, але як швидко?
Як варіант, чи є кращий ланцюг Маркова або прямий метод вибору простих циклів?
ETA: Дивіться цю публікацію в блозі для коду, щоб обчислити кількість циклів, які я шукаю, і покажчики на OEIS на деякі з цих чисел. Як ми знаємо, підрахунок - це майже те саме, що і випадкове покоління, і я випливаю з відсутності будь-якої очевидної закономірності в факторизації цих чисел та відсутності формули у записі OEIS, що навряд чи знайдеться простий простий прямий метод . Але це все ще залишає питання про те, наскільки швидко ця ланцюг сходить і чи є краща ланцюг широко відкритою.