Характерную цикличность в случайном на первый взгляд процессе я наблюдал, принимая участие в игре «Лила» (рис. 6.14). Это разновидность игры «Лестницы и змеи», у которой, как говорят, древние индийские корни. Участники перемещают свои фишки (амулеты) согласно выпадающим числам на кубике, следуя переходам — «лестницам» или «стрелам», ведущим вперед, и «змеям», возвращающим игрока назад. Основной смысл заключается в философских и эзотерических толкованиях траектории, которую проходит игрок. В нашей компании были опытные люди, они делились впечатлениями от прошлых игр и восхищались «явно неслучайными» совпадениями траекторий игры и реальной жизни, точному их повторению от партии к партии — как у одного и того же, так и у разных участников.
Рис. 6.14.
Доска для игры «Лила»В игре 72 состояния, и правила бросания кубика нетривиальны: они делают более вероятными близкие переходы, но допускают и далекие скачки; кроме того, «лестницы» и «змеи» добавляют путаницы. Действительно, в игре много элементов случайности, но она все равно остается марковской, поскольку ближайшее будущее игрока определяется только текущим его состоянием. А значит, сам процесс можно анализировать на предмет наличия в нем повторяющихся последовательностей или наиболее вероятных состояний.
Несложно написать программу, которая могла бы играть в «Лилу», не задумываясь о сокровенном смысле состояний и переходов, и которую можно было бы использовать в анализе методом Монте-Карло. Приведу для тех, кому, как и мне, любопытно поэкспериментировать, алгоритм для одного шага.
Переходы по лестницам и змеям могут быть описаны ассоциативным массивом
Jumps = { 10:23, 16:4, 61:3, 20:32, 22:60, 24:7, 27:41, 28:50, 29:6, 37:66, 45:67, 46:62, 52:35, 54:68, 55:2, 61:3, 63:13, 72:51, 68:1 }
Вход: текущее состояние (номер клетки) s
если (jumps содержит состояние s), вернуть jumps[s]
m:= случайное целое число от 1 до 6
если (m = 6), m:= m + случайное число от 1 до 6
если (s > 60), m:= min(m,72-s)
вернуть s + m
Вот что можно сказать после сотни тысяч партий. Средняя продолжительность игры (то есть достижения 68-й клетки) составляет 41,5 шага, при этом в половине партий игра закончится после 31 шагов. Это довольно много: учитывая, что шаги совершаются по очереди четырьмя-пятью участниками, игра может длиться несколько дней. Клетки посещаются неравновероятно, и разброс вероятностей достаточно велик.
Но любому математику интереснее не получить ответ из эксперимента, а вывести из свойств исследуемой системы. Мы рассмотрим
Рис. 6.15.
Графическое представление матрицы переходов для «Лилы». Ненулевые элементы показаны кружками, размеры отражают их величинуЭта квадратная матрица имеет столько строк, сколько существует состояний (клеток) игры. Насыщенность цвета каждой клеточки показывает вероятность перехода с позиции, указанной по вертикали, на позицию по горизонтали. Стрелки приводят пример, соответствующий вероятности перехода с 40-й клетки на 50-ю. Широкая полоса вокруг диагонали соответствует переходам с помощью кубика, прочие отмеченные точки — прыжкам, диктуемым «стрелами» и «змеями». Игра имеет одно
Точные параметры можно получить не прибегая к методу Монте-Карло, а используя только матрицу переходов. Квадратные матрицы образуют
Рис. 6.16.
Матрицы переходов, возведенные в степени 2, 4, 10 и ∞