Клеточный автомат на микросхемах мелкой логики. Часть 1 — Изобретаем велосипед

Я давно хотел реализовать клеточный автомат «в железе» — то есть без программ, процессоров, микроконтроллеров, — на жёсткой логике. Например, широко известную игру «Жизнь». Однако каждый раз, когда я пытался представить себе реализацию, получалось нечто ужасное: сотни и сотни логических элементов ради того, чтобы собрать крошечное поле, на которое не влезет ничего, кроме одного глайдера. Поэтому я решил начать с чего-то более простого, — например, взять не двумерный клеточный автомат, а одномерный. Скажем, «Правило 110». В этой серии статей я расскажу, как мне удалось решить эту задачу.

  • Часть 1 — Изобретаем велосипед (Вы здесь)

  • Часть 2 — «Заработало!» (ссылка появится позже)

  • Часть 3 — Щупаем «Правило 110» (ссылка появится позже)

Что такое клеточные автоматы?

Клеточный автомат — это математическая конструкция, представляющая собой поле в клеточку, где каждая клетка может находиться в одном из нескольких состояний. Клеточный автомат развивается во времени, и делает это дискретно — по шагам. На каждом шаге все клетки одновременно определяют своё новое состояние по заранее заданным правилам, основываясь на собственном текущем состоянии и состоянии своих соседей. Обычно правила одинаковы для всех клеток.

Совсем простые правила могут порождать удивительно сложное поведение клеточного автомата в целом. В частности, игра «Жизнь» [1] — наиболее известный клеточный автомат — является полным по Тьюрингу: на достаточно большом (в пределе бесконечном) поле из специально организованных клеточных структур можно реализовать выполнение любого алгоритма. Есть, например, проекты калькуляторов, машины Тьюринга и даже реализация «Жизни» в «Жизни».

Источник: habr.com

0 0 голоса
Рейтинг новости
1
0
Подписаться
Уведомить о
0 комментариев