пятнашки, пpовеpка на pешаемость
- From
- Max Alekseyev (2:5015/60)
- To
- Ilya V Bursov
- Date
- 2002-05-07T22:18:54Z
- Area
- RU.ALGORITHMS
████ OS/2 Hi, Ilya !
Replying to a message of Ilya V Bursov to All:
IVB> есть всем известные пятнашки, матpица генеpится слyчайным обpазом,
IVB> поэтомy не всегда pешабельно, можно ли быстpо пpовеpить на
IVB> pешаемость и соответсвенно пеpегенеpить?
================================= Алгоритмы ==================================
From: Max Alekseyev 2:5015/60 13 Aug 1998 23:05:26
To: Denis Tanayev
Subj: Пятнашки
==============================================================================
Hi, Denis !
Replying to a message of Denis Tanayev to All:
DT> А всегда ли сходятся пятнашки ???
Когда-то этот вопрос уже поднимался.
Небольшое вступление
Пусть дана перестановка X=(x_1,x_2,...,x_n).
Инверсией называется пара (x_i,x_j) такая, что i<j и x_i>x_j.
Четность перестановки определяется как четность числа инверсий в ней.
Перестановка X это на самом деле биекция
X: {1,2,...,n} --> {1,2,...,n}, определяемая как X(i)=x_i.
X можно переписать ввиде X=(X(1),X(2),...,X(n)).
Теперь, если есть две перестановки X,Y одного порядка n, то их произведением
называется их композиция (как отображений). Т.е.
XY=(X(Y(1),X(Y(2)),...,X(Y(n))). Эта операция некомутативна, то есть результат
зависит от порядка следования сомножителей. Кроме того, существует единичная
(тождественная) перестановка E=(1,2,...,n), обладающая тем свойством, что
XE=EX=X для любой перестановки X.
Таким образом, множество S_n всех перестановок n-го порядка с такой операцией
умножения превращается в группу.
Четность произведения определяется так же как и для чисел:
чет на чет=чет
чет на нечет=нечет
нечет на чет=нечет
нечет на нечет=чет
Множество A_n всех четных перестановок также образует группу. Множество нечетных
перестановок B_n группы не образует, но выражается как B_n = A_n Y, где Y -
произвольная нечетная перестановка.
Теперь, собственно, к чему все это.
Занумерум поля "Пятнашек" так
0 1 2 3
7 6 5 4
8 9 10 11
15 14 13 12
Порядок следования пятнашек будем теперь рассматривать в соответствии с этой
нумерацией.
Нетрудно видеть, что в любом положении пустышку(пустое поле) можно перетащить на
поле номер 0 без изменения порядка следования 15 пятнашек. Назовем такую
операцию канонизацией, а все положения с пустым полем номер 0 - каноническими.
Таким образом, каждому положению соответствует единственное каноническое
положение, в котором порядок следования пятнашек сохраняется.
Пример.
Положению
┌────┬────┬────┬────┐
│ 5 │ 8 │ 11 │ 7 │
├────┼────┼────┼────┤
│ 14 │ 2 │ 6 │ 13 │
├────┼────┼────┼────┤
│ 12 │ │ 10 │ 3 │
├────┼────┼────┼────┤
│ 1 │ 4 │ 15 │ 9 │
└────┴────┴────┴────┘
соотвествует каноническое
┌────┬────┬────┬────┐
│ │ 5 │ 8 │ 11 │
├────┼────┼────┼────┤
│ 2 │ 6 │ 13 │ 7 │
├────┼────┼────┼────┤
│ 14 │ 12 │ 10 │ 3 │
├────┼────┼────┼────┤
│ 1 │ 4 │ 15 │ 9 │
└────┴────┴────┴────┘
Теперь каждому игровому положению поставим в соотвествие перестановку 15
элементов, которую будем получать по положению 15 пятнашек в соответствующем
каноническом положении.
Так примеру выше будет соответствовать перестановка
(5,8,11,7,13,6,2,14,12,10,3,9,15,4,1),
а целевой позиции (собранному полю) будет соотвествовать перестановка
(1,2,3,7,6,5,4,8,9,10,11,15,14,13,12).
Так вот, позиция разрешима(в смысле из нее можно получить целевую), если
соотвествующая ей перестановка _нечетная_. В частности, вышерассмотренный пример
неразрешим.
Доказательство.
Рассмотрим как всевозможные ходы (в _обычных_ положениях) сказываются на
соответствующем _каноническом_ положении (а точнее на соотвествующей ему
перестановке).
Несложно заметить, что "горизонтальные" перемещения никак на него не влияют.
Теперь "вертикальные":
Ход 0->7 есть на самом деле умножение слева на _четную_ перестановку
(7,1,2,3,4,5,6,8,9,10,11,12,13,14,15)
Ход 1->6 - умножение слева на _четную_ перестановку
(1,6,2,3,4,5,7,8,9,10,11,12,13,14,15)
Ход 2->5 - умножение слева на _четную_ перестановку
(1,2,5,3,4,6,7,8,9,10,11,12,13,14,15)
Ход 3->4 не влияет на каноническое положение (умножение на _четную_ единичную
перестановку E)
Ход 7->0 - умножение слева на _четную_ перестановку
(2,3,4,5,6,7,1,8,9,10,11,12,13,14,15)
и т.д. и т.п.
Замечание. Ходы 0->7 и 7->0 взаимно обратны. Это видно и на соотвествующих
перестановках: их произведение равно единичной перестановке E.
Таким образом, никакие ходы не могут изменить четность позиционной перестановки.
Поэтому если мы хотим прийти к нечетной целевой позиции, то и отталкиваться мы
должны также от нечетной позиции.
То, что из целевой (нечетной) позиции нельзя получить четную я доказал. Осталось
доказать, что можно получить любую нечетную. Но это можно проверить в любом
математическом пакете (например, в Maple) - а именно, что все перестановки
соотвествующие "вертикальным" ходам порождают всю A_{15}.
Число нечетных перестановок 15-го порядка (а, значит, и разрешимых канонических
положений) есть 15!/2. Каждому же каноническому положению соответствуют 16
положений, которые в него переходят при канонизации. Таким образом, общее число
разрешимых положений есть 16*15!/2 = 16!/2
Regards, °°
Max ~
==============================================================================
Regards, °°
Max ~
--- OS/2 Uptime: 0d 6h 2m 8s 257ms
* Origin: Пусто внутри, и поэтому полон стакан. (2:5015/60)