14.2. Реализация моделей клеточных автоматов на ЭВМ

Чтобы убедить читателя в том, что, используя возможности электронных таблиц Excel, любой начинающий пользователь может заниматься клеточным моделированием, рассмотрим одну из реализаций игры "Жизнь".

Клетки в исходной таблице Excel слишком велики для нашей задачи. Поэтому придадим им вид небольших квадратов. В качестве примера возьмем игровое поле 5x5, хотя увеличение размера в несколько раз не требует никаких усилий. Отведем для игры клетки В2 : F6.

Если клетка жива, то в ячейку запишем 1, если мертва, то 0. Зададим произвольное начальное состояние. Далее нам понадобятся две вспомогательные таблицы. В ячейках Н2 : L6 будет храниться "потенциал" клеток. Для вычисления потенциала клетки В2 введем в ячейку Н2 следующую формулу:

= СУММ(А1 : СЗ) - В2 (14.1)

В данном случае подсчитывается число живых клеток в окрестности клетки В2 (окрестность по Муру). Закончив ввод этой формулы нажатием клавиши Enter, установим курсор на правый нижний угол клетки Н2 и размножим формулу (14.1) сначала до ячейки L2, а затем вниз, заполнив всю таблицу Н2 : L6. (Обратите внимание

266

на то, как следует учитывать состояние клеток, граничных с таблицей В2 : F6. В данном случае они остаются пустыми, но возможны и более сложные формы задания граничных условий.)

Сложнее всего задать правило поведения клеточного автомата. Запишем в ячейку В10 правило поведения автомата В2, используя логические функции:

= ЕСЛИ (ИЛИ (Н2 >3; Н2 <2); 0; ЕСЛИ (Н2 = 3; 1;
ЕСЛИ (Н2 - 2; В2; -1)))
(14.2)

Первое ЕСЛИ в (14.2) означает, что клетка будет мертва при потенциале Н2 = О, 1, 4, 5, 6, 7; второе ЕСЛИ - что при потенциале 3 клетка будет живой, третье ЕСЛИ - что при потенциале 2 состояние автомата в клетке В2 не меняется. Наконец, выражение (-1) означает, что при невыполнении всех предыдущих условий в ячейку В10 будет записано значение (-1). (Заметим, что в данном случае этот вариант невозможен.)

Запись логической функции требует аккуратности. Однако следует учесть, что для освоения Excel необходимо умение работать с логическими функциями.

Функция (14.2) записывается только в одну ячейку В10, далее она размножается вправо до ячейки F10, а затем вниз, заполняя всю таблицу B10:F14. Таким образом, если в таблице B2:F6 мы имеем состояние системы в момент t, то в таблице B10:F14 вычисляется состояние системы в следующий момент t + 1. Теперь необходимо скопировать таблицу B10:F14 в таблицу B2:F6. Делается это следующим образом.

  • Шаг 1. Выделяем таблицу BIO: F14.
  • Шаг 2. В меню "Правка" выбираем команду "Копировать".
  • Шаг 3. Устанавливаем курсор в ячейку В2.
  • Шаг 4. В меню "Правка" выбираем команду "Специальная вставка". В раскрывшейся дополнительной вкладке следует из первого столбца "Вставить" выбрать строку "Значения" и нажать кнопку ОК. В итоге в таблице B2:F6 появится картинка нового состояния системы.

Процедуру копирования можно существенно ускорить, если подготовить соответствующий макрос. Делается это очень просто. В Excel 2000 в меню "Сервис" выбираем "Макрос", а затем команду "Начать запись". В раскрывшейся вкладке можно дать имя макросу либо оставить предлагаемый вариант "Макрос 1". Назначаем макросу клавишу быстрого вызова, например Ctrl + e. Нажимаем ОК. Появится таблица Excel, и на экране возникнет

267

кнопка "Остановить макрос". Выполним указанные выше операции (шаги 1-4) и нажмем кнопку "Остановить". Запись макроса будет закончена.

Теперь переход к следующему временному такту будет происходить после каждого нажатия комбинации клавиш Ctrl + е и можно спокойно наблюдать за эволюцией системы.

Столь подробное описание процесса построения модели дано лишь с той целью, чтобы читатель немного освоил электронные таблицы и понял, насколько легко могут быть построены: значительно более сложные и реалистичные модели.

Ясно, что легко усложнить формулу расчета потенциала, изменить окрестность, ввести в расчет случайные факторы. Учет географических особенностей региона может заставить вас отказаться от простой квадратной решетки. В ней могут появиться дырки, а граница вполне может быть извилистой. Совершенно необязательна унификация правил поведения автоматов. Например, вы можете для центральных плеток задать одни правила, а для периферийных - другие.

268



Яндекс цитирования
Tikva.Ru © 2006. All Rights Reserved