Изменения

Перейти к: навигация, поиск

Коды Грея

52 байта добавлено, 21:16, 14 января 2015
Задача о Ханойских башнях
Поставим в соответствие каждому <tex>i</tex>-ому биту текущего кода Грея <tex>i</tex>-ый диск (причём самому младшему биту соответствует наименьший по размеру диск, а самому старшему биту — наибольший). Поскольку на каждом шаге изменяется ровно один бит, то мы можем понимать изменение бита <tex>i</tex> как перемещение <tex>i</tex>-го диска. То есть, будем понимать переход от последовательности <tex>101</tex> к <tex>100</tex> как перемещение <tex>0</tex>-го диска на свободное место, а от <tex>010</tex> к <tex>110</tex> {{---}} как перемещение <tex>2</tex>-го диска на свободное место.
Заметим, что для всех дисков, кроме наименьшего, на каждом шаге имеется ровно один вариант хода (за исключением стартовой и финальной позиций), т.к. два варианта хода означаютДля самого маленького диска всегда есть две свободные позиции, потому что либо свободны два оставшихся стержня, а это значитон самый маленький, что его можно положить сверху на самом верху исходного лежит наименьший(по условию), взятый за исключение, либо на одном (или двух) стержне лежит любой диск. Если дискне самый маленький, больше данногото для него может быть не более одной свободной позиции. Допустим, что только для него свободные две позиции. Это означает, что на одномдвух других стержнях расположены диски размером больше, тогда тчем рассматриваемый.к. диски расположены по размеру, на исходном стержне может быть только А так как рассматриваемый диск не самый маленький, который в противном случае займет один из других стержнейто где-то расположен наименьший. Либо он расположен на рассматриваемом диске, а по предположению один пусттогда мы не можем переместить рассматриваемый, а либо на каком-то другом больший диск. Аналогично для двух: если на обоих стержнях большие данного диски, то он - наименьшийно тогда у нашего диска остаётся не более одной свободной позиции. Для наименьшего диска всегда имеется два варианта хода, однако имеется стратегия выбора хода, всегда приводящая к ответу: если <tex>n</tex> нечётно, то последовательность перемещений наименьшего диска имеет вид <tex>r_{1} \rightarrow r_{3} \rightarrow r_{2} \rightarrow r_{1} \rightarrow r_{3} \rightarrow r_{2} \rightarrow \ldots .</tex>(где <tex>r_{1}</tex> — стартовый стержень, <tex>r_{3}</tex> — финальный стержень, <tex>r_{2}</tex> — оставшийся стержень), а если <tex>n</tex> чётно, то <tex>r_{1} \rightarrow r_{2} \rightarrow r_{3} \rightarrow r_{1} \rightarrow r_{2} \rightarrow r_{3} \rightarrow \ldots.</tex>
Выбор обусловлен тем, на каком стержне окажется в конце пирамидка, решение с помощью кода Грея является следствием классического нерекурсивного решения<ref>[https://en.wikipedia.org/wiki/Tower_of_Hanoi#Non-recursive_solution Wikipedia {{---}} Tower of Hanoi Non-recursive solution]</ref>  (с помощью кода Грея мы знаем индекс диска, которых необходимо переместить
==См. Также==
317
правок

Навигация