NP-полнота игры Тетрис — различия между версиями
Heatwave (обсуждение | вклад) (Добавлены игровые действия.) |
Heatwave (обсуждение | вклад) м |
||
Строка 4: | Строка 4: | ||
: '''Игровое поле''' — расчерченный на клетки прямоугольник размером <tex>m</tex> горизонтальных рядов (строк) на <tex>n</tex> вертикальных (столбцов). Примем следующую индексацию: снизу вверх и слева направо. <math>\langle i, j \rangle</math>-я клетка либо ''свободна'', либо ''занята''. В допустимом состоянии поля ни один горизонтальный ряд не заполнен целиком и нет ни одной полностью пустой строки, которая бы лежала ниже занятой клетки. При оценке допустимости некоторых действий будем считать, что все клетки вне игрового поля всегда заняты и тем самым ограничивают поле. | : '''Игровое поле''' — расчерченный на клетки прямоугольник размером <tex>m</tex> горизонтальных рядов (строк) на <tex>n</tex> вертикальных (столбцов). Примем следующую индексацию: снизу вверх и слева направо. <math>\langle i, j \rangle</math>-я клетка либо ''свободна'', либо ''занята''. В допустимом состоянии поля ни один горизонтальный ряд не заполнен целиком и нет ни одной полностью пустой строки, которая бы лежала ниже занятой клетки. При оценке допустимости некоторых действий будем считать, что все клетки вне игрового поля всегда заняты и тем самым ограничивают поле. | ||
− | + | {| cellpadding="3" style="margin-left: auto; margin-right: auto;" | |
+ | | [[Файл:SQ.png|50px|thumb|right| SQ]] | ||
+ | | [[Файл:LG.png|50px|thumb|right| SQ]] | ||
+ | | [[Файл:RG.png|50px|thumb|right| SQ]] | ||
+ | | [[Файл:LS.png|50px|thumb|right| SQ]] | ||
+ | | [[Файл:RS.png|50px|thumb|right| SQ]] | ||
+ | | [[Файл:I.png|50px|thumb|right| SQ]] | ||
+ | | [[Файл:T.png|50px|thumb|right| SQ]] | ||
+ | |} | ||
+ | |||
: '''Игровые фигуры''' — семь различных фигур, получаемых соединением четырех единичных клеток по каким-либо из сторон. Каждая фигура имеет ''центр'' (на илл. 2). ''Состояние фигуры'' <math>P</math> — кортеж из четырех элементов, а именно: | : '''Игровые фигуры''' — семь различных фигур, получаемых соединением четырех единичных клеток по каким-либо из сторон. Каждая фигура имеет ''центр'' (на илл. 2). ''Состояние фигуры'' <math>P</math> — кортеж из четырех элементов, а именно: | ||
− | # ''тип фигуры'' — SQ, LG, RG, LS, RS, I или T. | + | # ''тип фигуры'' — SQ (''square''), LG (''left gun''), RG (''right gun''), LS (''left snake''), RS (''right snake''), I или T. |
# ''ориентация'' — поворот на 0°, 90°, 180° или 270° по часовой стрелке относительно ''базовой ориентации'' фигуры (на илл. 1). | # ''ориентация'' — поворот на 0°, 90°, 180° или 270° по часовой стрелке относительно ''базовой ориентации'' фигуры (на илл. 1). | ||
# ''позиция'' центра фигуры на поле, выбираемая из <tex>\{1,\dots,m\} \times \{1,\dots,n\}</tex>. Позицией SQ считается местоположение ее левой верхней клетки, так как ее центр лежит на границе четырех клеток, а не внутри одной. | # ''позиция'' центра фигуры на поле, выбираемая из <tex>\{1,\dots,m\} \times \{1,\dots,n\}</tex>. Позицией SQ считается местоположение ее левой верхней клетки, так как ее центр лежит на границе четырех клеток, а не внутри одной. |
Версия 01:56, 25 марта 2016
Тетрис — популярная игра, созданная в середине 1980-х математиком Алексеем Пажитновым.
Формальные правила
- Игровое поле — расчерченный на клетки прямоугольник размером горизонтальных рядов (строк) на вертикальных (столбцов). Примем следующую индексацию: снизу вверх и слева направо. -я клетка либо свободна, либо занята. В допустимом состоянии поля ни один горизонтальный ряд не заполнен целиком и нет ни одной полностью пустой строки, которая бы лежала ниже занятой клетки. При оценке допустимости некоторых действий будем считать, что все клетки вне игрового поля всегда заняты и тем самым ограничивают поле.
- Игровые фигуры — семь различных фигур, получаемых соединением четырех единичных клеток по каким-либо из сторон. Каждая фигура имеет центр (на илл. 2). Состояние фигуры — кортеж из четырех элементов, а именно:
- тип фигуры — SQ (square), LG (left gun), RG (right gun), LS (left snake), RS (right snake), I или T.
- ориентация — поворот на 0°, 90°, 180° или 270° по часовой стрелке относительно базовой ориентации фигуры (на илл. 1).
- позиция центра фигуры на поле, выбираемая из . Позицией SQ считается местоположение ее левой верхней клетки, так как ее центр лежит на границе четырех клеток, а не внутри одной.
- значение зафиксирована (англ. fixed) или не зафиксирована (англ. unfixed), определяющее, может ли фигура продолжать двигаться.
В исходном состоянии фигуры она имеет базовую ориентацию, ее позиция такова, что верхний ряд ее клеток содержится в ряду
, а центр в столбце , и она не зафиксирована.- Поворот фигуры. Модель поворота — функция , где и — состояния фигуры, — угол поворота, а — игровое поле. На налагаются следующие условия:
- Если и поворот допустим, то для некоторых и . Если поворот недопустим, то .
- При определении допустимости поворота, рассматривает окрестность констатного размера у фигуры — то есть, только клетки на заданном расстоянии от позиции влияют на , а положение фигуры на игровом поле значения не имеет.
- Если все клетки в окрестности свободны, то поворот допустим.
- Если поворот допустим, то не занимает ни одной клетки, уже занятой в .
- Игровые действия.
Для фигуры
допустимых действий нет. Для фигуры на данном игровом поле допустимы следующие действия:- Поворот по часовой стрелке. Новым состоянием фигуры будет .
- Поворот против часовой стрелки. Новым состоянием фигуры будет .
- Сдвиг влево. Если клетки слева от фигуры свободны в , фигура может быть сдвинута влево на один столбец. Новым состоянием фигуры будет
- Сдвиг вправо. Аналогично сдвигу влево; новым состоянием будет
- Снижение на один ряд, если все клетки под фигурой свободны в . Новое состояние —
- Фиксация, если хотя бы одна клетка под фигурой занята в . Новое состояние —
Траекторией
фигуры называется последовательность допустимых действий, начинающихся в исходном состоянии и заканчивающихся действием-фиксацией. Результатом траектории фигуры на игровом поле является новое поле , определяемое следующим образом:- Новое поле — это поле с заполненными клетками фигуры .
- Если фигура зафиксирована таким образом, что для некоторого горизонтального ряда каждая клетка в поле заполнена, то ряд освобождается. Для всех следует заменить ряд в рядом в . Ряд в становится пустым. Фиксация одной фигуры может привести к освобождению более чем одного ряда.
- Если исходное состояние следующей фигуры в заблокировано, игра заканчивается (игрок проигрывает).
Для игры
, последовательностью траекторий является такая последовательность , что для любого траектория фигуры на поле приводит к полю . Однако, если существует действие при некотором , приводящее к проигрышу, то последовательность завершается на , а не на .