Игра «Жизнь» — различия между версиями
Mariashka (обсуждение | вклад) |
Mariashka (обсуждение | вклад) |
||
Строка 4: | Строка 4: | ||
* Действие происходит на бесконечной плоскости, разделенной на клетки | * Действие происходит на бесконечной плоскости, разделенной на клетки | ||
* Каждая клетка может находиться в двух состояниях: быть живой или быть мёртвой | * Каждая клетка может находиться в двух состояниях: быть живой или быть мёртвой | ||
− | * У каждой клетки 8 соседей | + | * У каждой клетки <tex>8</tex> соседей |
− | * Если клетка жива и у нее 2-3 живых соседа, то она остается живой, иначе умирает | + | * Если клетка жива и у нее <tex>2-3</tex> живых соседа, то она остается живой, иначе умирает |
− | * Если клетка мертва и у нее 3 живых соседа, то она становится живой, иначе остается мертвой | + | * Если клетка мертва и у нее <tex>3</tex> живых соседа, то она становится живой, иначе остается мертвой |
* Игра прекращается, если на поле не останется ни одной живой клетки | * Игра прекращается, если на поле не останется ни одной живой клетки | ||
* Игра прекращается, если при очередном шаге ни одна из клеток не меняет своего состояния | * Игра прекращается, если при очередном шаге ни одна из клеток не меняет своего состояния | ||
Строка 28: | Строка 28: | ||
Рассмотрим базовые конструкции необходимые для построения этих элементов МТ. | Рассмотрим базовые конструкции необходимые для построения этих элементов МТ. | ||
[[Файл:Types.png|250px|thumb|right]] | [[Файл:Types.png|250px|thumb|right]] | ||
− | [[Файл:Glidergun.png| | + | [[Файл:Glidergun.png|200px|thumb|right| Glider gun]] |
− | [[Файл:Eater.png| | + | [[Файл:Eater.png|200px|thumb|right| Glider eater]] |
− | В игры "Жизнь" можно построить различные конструкции: | + | В игры "Жизнь" можно построить различные конструкции (см. рис.): |
− | * стабильные - не меняются с течением времени(первые два ряда | + | * стабильные {{---}} не меняются с течением времени(первые два ряда) |
− | * циклические - принимают исходное положение каждые n итераций (третий ряд | + | * циклические {{---}} принимают исходное положение каждые <tex>n</tex> итераций (третий ряд) |
− | * планер(glider) - фигура, которая смещается на одну клетку вниз и в право каждые 4 итерации(4 ряд | + | * планер(glider) {{---}} фигура, которая смещается на одну клетку вниз и в право каждые <tex>4</tex> итерации (<tex>4</tex> ряд) |
− | * космический корабль - фигура, которая смещается ортогонально на 1 клетку каждые 4 итерации | + | * космический корабль {{---}} фигура, которая смещается ортогонально на <tex>1</tex> клетку каждые <tex>4</tex> итерации |
− | * glider gun - фигура, бесконечно производящая планер каждые 30 итераций | + | * glider gun {{---}} фигура, бесконечно производящая планер каждые <tex>30</tex> итераций |
− | * glider eater - фигура, поглощающая планеры | + | * glider eater {{---}} фигура, поглощающая планеры |
<br><br><br> | <br><br><br> | ||
<br><br> | <br><br> | ||
===Память=== | ===Память=== | ||
Ячейки памяти можно построить с помощью стабильныx конструкций. [[Файл:Memory.png|150px]]<br> | Ячейки памяти можно построить с помощью стабильныx конструкций. [[Файл:Memory.png|150px]]<br> | ||
− | Можно также построить c помощью планеров: наличие планера - 1, отсутствие - 0. [[Файл:Datatransmission.png|150px]] | + | Можно также построить c помощью планеров: наличие планера {{---}} <tex>1</tex>, отсутствие {{---}} <tex>0</tex>. [[Файл:Datatransmission.png|150px]] |
<br> | <br> | ||
===Часы=== | ===Часы=== | ||
Строка 55: | Строка 55: | ||
<br> | <br> | ||
Если показать, что мы можем построить в игре "Жизнь" любую булеву функцию, то мы сможем построить булеву функцию УМТ. | Если показать, что мы можем построить в игре "Жизнь" любую булеву функцию, то мы сможем построить булеву функцию УМТ. | ||
− | Из курса дискретной математики [[Полные системы функций. Теорема Поста о полной системе функций |известно]], что NAND - полная система, т.е. с его помощью можно построить любую. Следовательно, чтобы построить любую булеву функцию, нам нужно просто построить NAND, то есть NOT и AND в игре "Жизнь". | + | Из курса дискретной математики [[Полные системы функций. Теорема Поста о полной системе функций |известно]], что <tex>NAND</tex> - полная система, т.е. с его помощью можно построить любую. Следовательно, чтобы построить любую булеву функцию, нам нужно просто построить <tex>NAND</tex>, то есть <tex>NOT</tex> и <tex>AND</tex> в игре "Жизнь". |
<br> | <br> | ||
===Построение NOT=== | ===Построение NOT=== | ||
− | [[Файл:Not.png|250px|thumb | + | [[Файл:Not.png|250px|thumb]] |
− | Рассмотрим поток данных, состоящий из планеров. Наличие планера - 1, отсутствие - 0. Добавим поток планеров, состоящий только из 1. При столкновении планеры исчезают, следовательно на месте | + | Рассмотрим поток данных, состоящий из планеров. Наличие планера {{---}} <tex>1</tex>, отсутствие {{---}} <tex>0</tex>. Добавим поток планеров, состоящий только из <tex>1</tex>. При столкновении планеры исчезают, следовательно на месте <tex>1</tex> образуется <tex>0</tex> и наоборот. |
− | < | + | |
===Построение AND=== | ===Построение AND=== | ||
− | [[Файл:And.png|250px|thumb | + | [[Файл:And.png|250px|thumb]] |
− | См. рисунок. Пусть x | + | См. рисунок. Пусть <tex>AND(x, y)</tex>, тогда y соударяется с <tex>NOT(x)</tex>. Если <tex>NOT(x) = 1</tex>, то на выходе ничего не попадет, если <tex>NOT( x) = 0</tex>, то просто пройдет <tex>y</tex>. |
}} | }} |
Версия 12:06, 13 января 2016
Игра «Жизнь» (англ. Conway's Game of Life) — клеточный автомат, придуманный английским математиком Джоном Конвеем в 1970.
Содержание
Правила
- Действие происходит на бесконечной плоскости, разделенной на клетки
- Каждая клетка может находиться в двух состояниях: быть живой или быть мёртвой
- У каждой клетки соседей
- Если клетка жива и у нее живых соседа, то она остается живой, иначе умирает
- Если клетка мертва и у нее живых соседа, то она становится живой, иначе остается мертвой
- Игра прекращается, если на поле не останется ни одной живой клетки
- Игра прекращается, если при очередном шаге ни одна из клеток не меняет своего состояния
- Игра прекращается, если конфигурация на очередном шаге в точности повторит себя же на одном из более ранних шагов
Универсальность
Теорема: |
Игра "Жизнь" вычисляет то же множество функций, что и МТ. |
Доказательство: |
Для того, чтобы доказать этот факт, докажем возможность построения всех возможных машин Тьюринга. В состав МТ входит:
Базовые конструкцииРассмотрим базовые конструкции необходимые для построения этих элементов МТ. В игры "Жизнь" можно построить различные конструкции (см. рис.):
ПамятьЯчейки памяти можно построить с помощью стабильныx конструкций. ЧасыВ клеточных автоматах изначально есть часы, так как время увеличивается. Но в МТ необходимо, например, через определенное время передвигать головку записи, передавать информацию и пр. Для этой цели можно использовать планеры или космические корабли, так как они двигаются с известной скоростью. Следовательно, в качестве часов используем glider gun. Булевы функцииЗаметим, что управляющая часть МТ считывает с ленты входную строчку и завершается, записав на ленту выходную строчку. Без ограничения общности, будем рассматривать бинарные строки. Следовательно, управляющая часть МТ есть булева функция.
Построение NOTРассмотрим поток данных, состоящий из планеров. Наличие планера — , отсутствие — . Добавим поток планеров, состоящий только из . При столкновении планеры исчезают, следовательно на месте образуется и наоборот.Построение ANDСм. рисунок. Пусть , тогда y соударяется с . Если , то на выходе ничего не попадет, если , то просто пройдет . |
Построение
Подробное описание построения МТ можно найти здесь: Rendell, P. (2014) Turing machine universality of the game of life. PhD, University of the West of England. Available from: http://eprints.uwe.ac.uk/22323