Добавил:
ivanov666
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз:
Предмет:
Файл:Компьютерное моделирование физических явлений. Учебное пособие
.pdf
aqaq
Q
(,) '
VА
(, )
qa v
Рис. 7.1. Модель автомата
Клеточные автоматы (КА) являются частным случаем конечных
автоматов, используемых для моделирования динамического поведения
однородных сред. При этом пространство и время считаются дискретными, а физические величины в каждой точке моделируемой среды могут принимать конечное множество дискретных значений. Для КА существует достаточно развитая теория. В ее основу легли работы
Дж. фон Ней
мана, который в 1948 г. ввел в науку само понятие «клеточный автомат» при разработке первой компьютерной модели биологического самовоспроизводства.
Клеточный автомат можно представить как регулярную решетку
(или «таблицу») ячеек («клеток»), каждая из которых может находиться
в конечном числе возможных состояний, например 0 или 1. Состояние
системы полностью определяется значениями переменных в каждой
клет
ке. Важными особенностями клеточных автоматов являются сле-
дующие:
состояние каждой ячейки обновляется в результате выполнения
последовательности дискретных постоянных шагов во времени (или
тактов);
переменные в каждой ячейке изменяются одновременно («син-
хронно»), исходя из значений переменных на предыдущем шаге;
правило определения нового состояния ячейки зависит только от
локальных значений ячеек из некоторой окрестности данной ячейки.
Как правило, при анализе используются автоматы для моделирования динамического поведения двумерных сред. Каждой частице такой
среды, занимающей некоторое пространство, ставится в соответствие
элементарный автомат, имеющий форму квадрата (реже – треугольника
или шестиугольника) и именуемый клеткой. Совокупность кле
ток образует клеточное пространство, в котором функционирует КА. Как отмечалось выше, отдельная клетка имеет конечный набор состояний Q, а
выходные сигналы клеток есть номера их состояний. Функция перехо-
дов
определяется текущим состоянием q клетки, а также состоянием
ее окружения. В зависимости от свойств моделируемого объекта выбирают различные типы окрестностей. В простейших случаях в качестве
окрестности принимают четыре или восемь ближайших клеток. Однако
возможны ситуации, когда состояние клетки зависит от состояния более
121

удаленных клеток. Чтобы исключить особый вид окрестности для клеток, лежащих в крайних рядах, область замыкают, то есть для клеток
крайнего левого столбца соседями слева считают клетки крайнего правого столбца, и наоборот. Аналогичное замыкание выполняют для клеток верхнего и нижнего ряда области. В результате можно считать, что
рассматриваемая совокупность клеток лежит на поверхности тора. Подобный пр
ием в практике моделирования называется заданием гранич-
ных условий циклического типа.
Наиболее практичным приложением теории клеточных автоматов
является, по-видимому, разработка электронных цепей, способных к
самовосстановлению, а также проектирование различных специальных
типов электронного оборудования. Правда, сегодня нам трудно говорить о том, насколько существенной в итоге может оказаться эта теория
для разви
тия физики и биологии. Возможно, она играет важную роль в
процессах роста зародышевых клеток, при создании идентичных копий
молекул ДНК, в работе нервных сетей, в генетических изменениях развивающихся популяций и т. д. Наконец, нетрудно проследить глубокую
аналогию между этой теорией и процессами развития жизни. Если
«первичный бульон», состоя
щий из различных аминокислот, имеет достаточно большую протяженность и, кроме того, если мы располагаем
определенным запасом времени, то в результате действия сложных правил перехода, присущих самой структуре материи и законам природы, в
этой среде может развиться популяция самовоспроизводящихся подвижных автоматов. Можно даже допустить, что наше пространствовремя имеет гранулярную структуру, состоя
щую из отдельных дискретных модулей, а Вселенная является огромнейшим клеточным автоматом, управляемым громадным «компьютером». Если это предположение справедливо, то привычное для нас понятие движения окажется
всего лишь некоторой моделью более сложного явления. Точно так же
движение космического корабля, рассматриваемое на элементарном
микроуровне, вполне может уподобит
ься движению конфигураций типа
«космических кораблей», перемещающихся на макроуровне, – ведь
здесь фактически существует лишь некоторое изменение состояний основных клеток пространственно-временного континуума, подчиняющееся правилам перехода, пока еще нам неизвестным.
В области прикладной физики имеются попытки использования
клеточных автоматов для решения задач теплопроводности и мезомеханики, когда моделируется реальный процесс деформации и разрушения
твердых тел.
122

7.2.Игра«Жизнь»
Самым известным двумерным клеточным автоматом является игра
«Жизнь», которую придумал в 1970 г. Джон Конуэй. Эта игра просла-
вилась своими многочисленными очаровательными узорами и способностью заставлять людей тратить уйму машинного времени на поиски
более интересных узоров.
Игру проводят на плоской поверхности, разбитой на квадратные
клетки. Каждая клетка может либо оставаться пустой, либо может быть
занята фи
седними считаются восемь клеток, непосредственно примыкающих к
данной. Игра складывается из последовательности дискретных шагов,
или ходов. Этим имитируется схема смены поколений. Переход от данного поколения к следующему происходит по определенным правилам,
которые применяются одновременно ко всем клеткам доски.
Правила:
1. В качестве ок
2. Выживание. Фишка выживает в следующем поколении, если за-
няты две или три соседних клетки.
3. Гибель. Фишка удаляется с доски, если занято более трех или
менее двух соседних клеток. В первом случае система слишком перенаселена, во втором – индивидуумы слишком изолированы.
4. Рождение. Пуст
только три, соседних с ней клетки.
Эти правила относятся всегда к состоянию, которое существует к
началу «хода». Начальное расположение занятых клеток задается самим
игроком (здесь заключается единственная возможность для игрока влиять на ход игры). Игра великолепным образом демонстрирует кооперативные изменения в популяции под действием отдельных ее составляющих.
Типичными конечными ситуациями являются гибель, неограниченный рост или стационарное поведение, представленн
ми или осциллирующими конфигурациями. Некоторые примеры начальных конфигураций даны на рис. 7.2. Конуэй сначала предполагал,
что из-за «правила перенаселения» неограниченный рост невозможен.
Однако это предположение было опровергнуто открытием таких конфигураций, как «планерное ружье» – это незатухающий, пространственн
фиксированный осциллятор («ружье»), который за каждый период испускает фигуру, двигающуюся по доске («планер»). Такие конфигурации, которые производят новые двигающиеся фигуры или уничтожают
их, придают игре стратегический характер и делают ее одной из самых
шкой. Состояние зависит от занятости соседних клеток. Со-
рестности рассматриваются восемь соседних клеток.
ая клетка занимается фишкой, если занято три, и
ое устойчивы-
о
123

интересных. Несложный набор правил игры приводит к нетривиальному
поведению конфигураций фишек. Проиллюстрируем это на нескольких
примерах.
Рис. 7.2. Игра «Жизнь»: а – «локальная» окрестность клетки определяется
суммой ее восьми соседей; б – примеры начальных конфигураций; некоторые
из них дают интересные узоры в эволюциях
Первый пример представлен серией из девяти кадров (рис. 7.3), на
которых изображена эволюция тетрамино (конфигурация из четырех
клеток), После девятого хода популяция распадается на четыре отдельные «мигалки». Вся конфигурация носит название «навигационные огни», или «светофоры». «Светофоры» относятся к разряду флип-флопов
и возникают в игре довольно часто.
Рис. 7.3. Эволюция тетрамино
Следует обратить внимание на два важных аспекта. Во-первых, из
очень простого «зародыша» могут возникать достаточно сложные геометрические структуры; при этом ни предварительного «проекта» такой
структуры, ни тем более заранее поставленной цели ее построения
практически не было. Легкая и непринужденная, но закономерная игра
простоты приводит к расцвету и закреплению едва намет
ившейся сложности. Во-вторых, возникшая структура обладает устойчивостью. После
того, как действие правил игры привело к появлению светофоров из зародыша, дальнейших изменений, кроме «миганий» светофора, уже не
происходит. Таким образом, простые правила по отношению к сложным
структурам играют роль не только «повивальной бабки», но и вечной
«няньки» на вс
е последующие времена. Иначе говоря, эти правила не
только порождают устойчивые структуры, но и сами обеспечивают их
устойчивость.
Во втором примере рассмотрим «чеширского кота» – конфигура-
цию, которая вначале состоит из большого количества ячеек, а затем
«деградирует» в неизменяемую статичную популяцию (рис. 7.4). На
124

шестом ходе (ж) от кота остается лишь «улыбка», а «морда» совершенно исчезает. Следующим ходом «улыбка» тоже уничтожается, и лишь
неизменный «блок» (з) («отпечаток кошачьей лапы») напоминает о том,
что некогда на этом месте находился кот.
Рис. 7.4. Исчезновение «чеширского кота» (а), от которого остается
лишь улыбка (ж), которая в свою очередь также пропадает,
превращаясь в отпечаток кошачьей лапы (з)
В качестве следующего примера рассмотрим структуру, изображенную на рис 7.2, б (пятая фигура). Это так называемый «планер».
В ходе игры «планер», находящийся изначально в верхнем левом углу,
пробирается через все игровое поле; при этом после смены каждых четырех поколений «планер» восстанавливает свою исходную форму и
движется к краю поля. Кажущаяся целенаправленность поведения «планера» не более чем иллюзия: он прост
о следует своей природе, опреде-
ленной «правилами игры».
В четвертом примере (рис. 7.5) используется более сложный «зародыш», т. е. начальная конфигурация. По-видимому, практически невозможно заранее определить и предсказать, какие искажения и деформации произойдут с этим «зародышем» в ходе игры под названием
«Жизнь» – для это
го необходимо сыграть в нее. Оказывается, что «зародыш» вырастает в структуру, которая воспроизводится вновь всякий
раз после смены 30 поколений; примечательно, что в ходе этого процесса рождается «планер».
Рис. 7.5. Изображенная сложная структура по мере своего развития
превращается в «пушку», которая всегда будет выстреливать «планеры»
125

По мере того как проходят 30 поколений, необходимых для создания следующего «планера», первый «планер» в своем бесцельном блуждании достигает края поля и исчезает там (если не установлены граничные циклические условия). Таким образом, исходная структура способна
до бесконечности порождать «планеры», которые затем неизбежно стремятся к своему роковому концу. Итак, в нашем четвер
том примере исходная простота обернулась сложностью (в виде геометрических структур), устойчивостью (в виде периодического самоповторения),
целенаправленностью (в виде стремления к уничтожению, воспринимаемого как заранее предопределенное свойство) и, наконец, потенцией (в
виде неисчерпаемой способности к воспроизводству новых структур).
Рис. 7.6. «Пентадекатлон» (в правом нижнем углу) «пожирает» «планеры»,
выстреливаемые из
«ружья»
Следующий пример (рис. 7.6) еще более сложен – начальная конфигурация состоит из «планерного ружья» и «пожирателя». Ружье – это
пространственно фиксированный осциллятор, который через каждые
30 поколений возвращается в исходное состояние и в течение каждого
126

периода выпускает один «планер», который, в свою очередь, передвигается по полю и сталкивается с «пентадекатлоном» (это осциллятор с периодом 15 поколений). Последний «проглатывает» «планер», но сам
при этом не изменяется.
Видно, что эволюция в этой игре с примитивными правилами и с
локальными связями, включающими только ближайших соседей, может
быть довольно сложной. Но этого мало. Математики доказали, что эт
а
эволюция может быть сколь угодно сложной. Эта игра эквивалентна
универсальной вычислительной машине.
Главной тенденцией в современной электронике стала миниатюризация. Вероятно, в будущем элементы компьютеров станут сравнимы с
размерами молекул, и связи в них будут возможны только самые простые, локальные. Впрочем, тогда бы пр
ишлось подумать о радиационных повреждениях, которые бы могли выводить их из строя. Ведь в отличие от живых организмов, электронные схемы не умеют
корректировать, «лечить
умеют. Возможно, тогда такие игры, как «Жизнь
» тонкие повреждения на микроуровне. Пока не
», станут полезными
для микроэлектроники. Сейчас они полезны, например, при создании
новых физических теорий. Вот только два примера, связанных с игрой
«Жизнь
».
Работа компьютера характеризуется тем, что мы не можем предсказать результат действия ряда программ, не выполнив их полностью.
Такие алгоритмы называют вычислительно неприводимыми. Любая величина в нашем мире может быть измерена с конечной точностью, с конечным числом десятичных цифр. Существуют законы природы, определяющие программы, алгоритмы, по которым производятся действия с
этими чи
слами. Поэтому американский исследователь С. Уолфрем
предлагает взглянуть на наш мир как на гигантский компьютер. По его
мнению, те процессы, в моделировании которых успехи невелики (а это
хаотические турбулентные течения, вихри в атмосфере, экономические
системы, биологическая эволюция), описываются неприводимыми алгоритмами. Не правда ли, рискованный полет – от игры «Жизнь
» до
прогнозов погоды?
Другая теория, называемая теорией самоорганизованной критично-
сти, обязанная своим появлением анализу игры «Жизнь
» и другим иг-
рам такого типа, сейчас завоевывает все больше приверженцев. Ее результаты используют сегодня в космологии, гидродинамике, в
геофизике для прогноза землетрясений, при анализе химических реакций на поверхности и во многих других областях.
127

■Программа«Игра”Жизнь”»
Игра происходит на двумернойрешетке с периодическими граничнымиусло‐
виями.Клеткирешеткиимеютзначениялибо0,либо1.Клетка,имеющаязначение1,
считается«живой».Еслитакая клетка«умирает»,тоеезначениестановится0.Раз‐
витиесистемы происходитпутем одновременногообновлениявсехклетокза еди‐
ницу (шаг)временидотехпор, пока две следующиедруг за другом во времени
конфигурации решетки не станут идентичными или пока не закончится заданное
числовременныхшагов.
▪Правилаигры
Правилаосновываютсяназначенииклетки(0–мертваяили1–живая)исум‐
мезначенийсоседнихклеток(втомчислеиподиагонали).
–Живаяклетка,имеющаядветакиежеживыеклеткивкачествесоседей,ос‐
таетсяживой.
–Клетка,имеющаятрехживыхсоседей,остаетсяживойилирождается.
–Всеостальныеклеткилибоостаютсямертвыми,либопогибают.
▪Алгоритмипостроениепрограммы
1.Игра совершаетсяна квадратнойрешетке со сторонами,равными s,спер‐
воначальнойконфигурацией,которуюзададимследующимобразом:
initconfig=Table[Random[Integer],{s},{s}]
2.Запишемматрицу,чьиэлементыучитываютчисложивыхсоседейвучастках
решеткиmat.
livingNghbrs[mat_]:=
Apply[Plus, Map[RotateRight[mat, #]&,
{{-1,-1},{-1,0},{-1,1},{0,-1},
{0,1},{1,-1},{1,0},{1,1}}]]
Использование функции livingNghbrs можно продемонстрировать на простом примере:
TableForm[board=Table[Random[Integer],{3},{3}]]
0 0 0 0
1 1 0 1
0 1 0 0
0 1 1 1
TableForm[livingNghbrs[board]]
5 4 5 4
3 2 3 1
6 4 6 4
3 2 3 1
128

Элементвматрице livingNghbrs[board] представляетсобойчисло живущих
соседейсоответствующегоэлементаматрицыboardсучетомграниц.
bc = Join[{Last[#]}, #, {First[#]}]&;
TableForm[Partition[bc[Map[bc, board]],
{3,3}, {1,1}] ]
1 0 1 0 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 0 1 0 1 0 1 1
0 0 0 0 0 0 0 0 0 0 0 0
1 1 1 1 1 0 1 0 1 0 1 1
0 0 1 0 1 0 1 0 0 0 0 0
1 1 1 1 1 0 1 0 1 0 1 1
0 0 1 0 1 0 1 0 0 0 0 0
1 0 1 0 1 1 1 1 1 1 1 0
0 0 1 0 1 0 1 0 0 0 0 0
1 0 1 0 1 1 1 1 1 1 1 0
0 0 0 0 0 0 0 0 0 0 0 0
3.Правилпреобразованийдляопределениярождения исмертиклеткинеобхо‐
димо задатьстолько,сколько необходимо – не больше некоторого оптимального их
количества.Например,мыможемопределитьдлякаждоговозможногососеда
update[{{0,1,0}, {0,1,0}, {0,1,0}, {0,0,0}}] := 0, нотакойподход
привелбык9^2=512условиям,т.к.каждаяиздевятиклетокможетиметьдвазна‐
чения.Ввеститакое количествоправилв текстпрограммызатруднительно.Вместо
этогоусловиярожденияисмертиможновыразитьминимальнымколичествомпра‐
вилспомощьюследующихфункций:
update[1, 2] := 1;
update[_, 3] := 1;
update[_, _] := 0;
Attributes[update] = Listable;
Первый аргумент update – это значение центральной клетки окрестности
(издевятиклеток),авторой–это число ближайшихживых соседей.Функция up-
date являетсяатрибутом(свойством) Listable. Икогда update применяетсяк
матрице значений клеток (board) и к матрице количества живущих соседей этих
клеток (livingNghbrs[board]), тоонасоздаетматрицусэлементамиввиде
update‐функций,аргументами которыхявляются соответствующиеэлементыэтих
двухматриц.
Attributes[g] = Listable;
TableForm[g[board, livingNghbrs[board]]]
g[1, 4] g[1, 3] g[0, 4] g[1, 4]
g[1, 5] g[0, 6] g[1, 3] g[0, 5]
g[1, 3] g[1, 3] g[0, 3] g[0, 4]
g[0, 6] g[0, 4] g[0, 4] g[1, 3]
129

Используя правила update с матрицами board и livingNghbrs, увидим, что каждая
клетка в board обновляется в соответствии с условиями жизни и смерти:
update[1, 2] := 1;
update[_, 3] := 1;
update[_, _] := 0;
Attributes[update] = Listable;
TableForm[update[board, livingNghbrs[board]]]
0 0 0 0
1 1 1 0
0 0 0 0
1 1 1 0
Несмотрянаточтотриправилаобновленияперекрываютсядругдругом,ни‐
какихконфликтоввпроцессеработыневозникает.Переддействиемправилобще‐
гохарактераMathematicaсначалаиспользуетправиласопределеннымизначения‐
ми.Например, несмотря на то что живая клетка с двумя живыми соседями будет
удовлетворятьипервому,итретьемуправилам update, будетпримененопервое
правило,потомучтоонодляэтогослучаяболееприемлемо.Похожимобразом,не‐
смотрянаточтолюбаяклетка, имеющая трехсоседей,удовлетворяетвторомуи
третьему правилам, будет использовано второе. Третье правило является более
общим,чемдвапервых,ипоэтомуиспользуетсятолькотогда,когданедействуют
остальные.
4.Решеткаизменяется до тех пор, пока популяция клеток нестановитсяста‐
тичнойили покане пройденозаданных временныхшаговt.Дляэтогоиспользуем
анонимнуюфункциюupdate[#, livingNghbrs[#]]&вFixedPointList.Здесь#
представляетконфигурациюрешетки.
evolution = FixedPointList[update[#,livingNghbrs[#]]&,
initconfig, t]]
▪Запускиполучениерезультатов
Из вышеприведенных фрагментов кода составляется программный модуль
LifeGame c аргументами s и t. Для этого применяется функция Module c локальными пе-
ременными initconfig, livingNghbrs и update.
Дляпросмотравтабличнойформедляs=4иt=3:
LifeGame[4,3] //TableForm
Длявыводаграфическихрезультатовприменимнижеследующийкод:
ShowLife[list_,opts___Rule]:=Map[
(Show[
Graphics[
RasterArray[
Reverse[list[[#]]/.{1->RGBColor[0,0,0],0>RGBColor[0,1,1]}]],opts]])&,
Range[Length[list]]]
130
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]
