Добавил:
Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

Компьютерное моделирование физических явлений. Учебное пособие

.pdf
Скачиваний:
0
Добавлен:
07.09.2026
Размер:
2 Мб
Скачать
☆
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
Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]