Химия и жизнь клеточных автоматов

"Чтобы приготовить эликсир мудрецов, или философский камень, возьми, сын мой, философской ртути и накаливай, пока она не превратится в зеленого льва. После этого прокаливай сильнее, и она превратится в красного льва... Киммерийские тени покроют реторту своим темным покрывалом, и ты найдешь внутри нее истинного дракона, потому что он пожирает свой хвост... Он загорится и, приняв вскоре великолепный лимонный цвет, вновь воспроизведет зеленого льва... Наконец, мой сын, тщательно ректифицируй, и ты увидишь появление горючей воды и человеческой крови" (цит. по Рабинович В.Л. Алхимический миф и химера собора Парижской богоматери//в книге Заблуждающийся разум?: Многообразие вненаучного знания/Отв. ред. и сост. И.Т. Касавин.-М.: Политиздат, 1990.-464 с., стр. 100)

Примерно так представляли себе средневековые алхимики процесс приготовления философского камня - средства для превращения или "трансмутации" металлов в золото. Кроме философского камня, у алхимиков был еще один знаменитый проект - создание химическим путем искусственного человечка - гомункулуса. Своих целей они так и не добились, хотя существенно обогатили арсенал технических средств, заложив тем самым фундамент современной экспериментальной химии.

К таинствам превращения веществ в живых системах наука подобралась только в XX столетии. Причем даже современная биохимия пока не может в полной мере искусственно воссоздавать процессы, лежащие в основе феномена жизни. Тем не менее, определенные успехи в области моделирования необыкновенных "жизнеподобных" химических реакций в современной науке все же достигнуты. Огромный шаг в этом направлении совершил сразу после войны советский ученый Белоусов. История его открытия весьма драматична. Работы Белоусова долго отказывались признавать. Слава пришла к ученому уже после смерти. Открытая реакция была названа его именем и вошла во все классические труды по неравновесной термодинамике и теории самоорганизации.

Причина длительного непризнания открытия состояла в том, что оно не вписывалось в догмы традиционной термодинамики. В этом смысле реакция Белоусова представляет собой глубокую и общую метафору биохимических процессов. Химию живых систем невозможно понять в рамках традиционной термодинамики. Химические процессы в живых системах идут в совсем ином направлении, чем указывает классическая физическая химия, а именно - в сторону роста упорядоченности и усложнения итоговых структур. Из химического хаоса возникает химический порядок.

В процессе реакции, открытой Белоусовым, из первичного хаоса смеси реагентов рождаются макроскопические упорядоченные структуры в форме кольцевых волн. Это, конечно, пока еще не гомункулус, но существенный шаг вперед по пути моделирования химических процессов нового типа - самоорганизационных процессов. А именно они и лежат в основе возникновения и эволюции живых систем.

В еще большей степени проблема создания гомункулуса, т.е. некоего подобия искусственного существа, нашла свое выражение в компьютерных науках. На заре компьютерной революции, так же, как и в эпоху расцвета алхимических исканий, казалось, что нужно еще немного наворотить электроники, чуть-чуть подработать программное обеспечение и… электронный гомункулус начнет вещать бесстрастным металлическим голосом из чрева железных шкафов, набитых проводами и обрамленных мигающими лампочками. По своей наивности эти мечты были вполне сравнимы с фантазиями алхимиков, только-только начавших постигать таинства химических превращений веществ. Им так же, как и пионерам компьютерной эры, представлялось, что их новая всемогущая наука наук перевернет все человеческие знания, позволит варить золото из ртути и, смешивая химические ингредиенты, взращивать в ретортах искусственных человечков. Несмотря на всю наивность и беспочвенность этих мечтаний, те и другие, несомненно, продвигали познание вперед, и, кто знает, может, когда-нибудь мечта человечества об искусственном создании чего-то, хотя бы отдаленно напоминающего живые системы, все-таки сбудется.

Ниже мы рассмотрим одну игру, принадлежащую к семейству игр клеточных автоматов, в которой удивительным образом соединились химия, компьютерные науки и современная теория самоорганизации. Речь пойдет о так называемой перемешивающей машине. Перемешивающая машина - это своеобразное развитие знаменитой клеточной модели жизни Дж. Конвэя. Как и все клеточные автоматы, перемешивающая машина представляет собой матрицу, состоящую из множества параллельно взаимодействующих друг с другом ячеек. Именно таким образом организованные параллельные вычислительные устройства, по мнению многих теоретиков искусственного интеллекта, позволят приблизиться к решению проблемы моделирования настоящих мыслительных процессов. Правила взаимодействия ячеек в перемешивающей машине таковы, что дают возможность моделировать волновые структуры, точь в точь напоминающие те, которые можно наблюдать в уже упоминавшейся химической реакции, открытой Белоусовым.

Клеточный автомат "Перемешивающая машина" был предложен М. Герхардом и Х. Шустером из Билефельдского университета ФРГ (см. статью А.К. Дьюдни "Перемешивающая машина"-клеточный автомат, моделирующий химические реакции//В мире науки, 1988 - №10, с.82-86). Правила взаимодействия ячеек автомата Герхарда и Шустера удобно излагать, используя эпидемическую терминологию. Отдельная клетка может находиться в некотором множестве состояний. Обозначим их целыми числами от 0 до n. Клетки, находящиеся в состоянии 0, будем называть здоровыми, а клетки, находящиеся в состоянии n, - больными. Все остальные промежуточные состояния интерпретируются как зараженность различной степени. Иными словами, клетка в рассматриваемой модели может быть либо здорова, либо заражена, либо больна. В зависимости от того, к какому из этих трех типов клетка относится в данный момент времени t, ее судьба в момент времени t+1 складывается по-разному. Если клетка здорова (то есть ее состояние x(i,j)=0), то ее состояние в момент времени t+1 будет определяться формулой:

Y(i,j)=Round(A/k1,0)+Round(B/k2,0),

Здесь A - это количество зараженных, а B - количество больных клеток в окрестности. Константы k1 и k2 представляют собой некие изначально задаваемые управляющие параметры. Функция Round возвращает округленное до указанного количества знаков значение выражения.

Если в момент времени t клетка заражена (то есть x(i,j) имеет любое значение, большее 0, но меньшее n), то в момент времени t+1 ее состояние будет определяться формулой:

Y(i,j)=Round(S/A,0)+G,

Здесь, как и прежде, А - количество зараженных соседей в окрестности клетки, а S - это сумма состояний всех соседних клеток, включая саму X(i,j). Константа G также представляет собой некий изначально задаваемый управляющий параметр. Следует помнить, что Y(i,j) ни при каких условиях не может превышать максимального значения n. Поэтому, если в процессе вычислений значение выходит за эти рамки, его следует приравнять к n.

Наконец, если клетка в момент времени t больна (то есть, ее состояние равно n), то в следующий момент времени t+1 она всегда переходит в состояние 0, то есть выздоравливает.

Программный код, моделирующий поведение перемешивающей машины, приведен на врезке. Для того, чтобы не изменять общие правила на границах поля, я "свернул" клеточную матрицу в тор. Процедура сворачивания лишает поверхность ее границ, а значит, и "пограничных" проблем. Для хранения состояний ячеек в предыдущем и последующем поколении используются два двухмерных массива - X(i,j) и Y(i,j). Результат выводится на форму в виде мозаики квадратиков, раскрашенных в градации серого цвета в соответствии с состояниями ячеек в момент времени t. При моделировании перемешивающей машины я категорически рекомендую читателям использовать анимационные технологии, поскольку динамика образования и движения волновых фронтов производит совершенно неповторимое впечатление именно в движении.

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

В описанной игре воспроизводится удивительное явление самоорганизации, которому, по существу, обязан своим существованием и окружающий нас мир, и мы сами. Из хаотической смеси находящихся в случайных состояниях клеточек постепенно сами собой возникают некие макроскопические образования. Массивы клеток согласованно циклически меняют свои состояния, кооперируясь в связные коллективные структуры. Не правда ли, картина, достойная быть первым кадром научно-популярного фильма под названием "Сотворение мира". Если когда-либо в будущем удастся создать машины, способные действительно думать, а не просто считать, то они, несомненно, будут основываться на принципах самоорганизации. В первой главе известной монографии семидесятых годов "Искусственный интеллект", ее автор Э. Хант писал: "Можно ли сказать что-нибудь содержательное о самоорганизации самой по себе? Некоторые думают, что можно, но я не из их числа… Это предубеждение и послужило причиной того, что самоорганизующиеся системы в книге не обсуждаются". Сейчас феномен самоорганизации стал намного более понятен современной науке. И именно в этом направлении следует искать решение проблемы искусственного моделирования мышления. С древнейших времен лучшие умы человечества пытаются постичь тайну развития. Как, почему хаотическая первосубстанция, самоструктурируясь, породила и продолжает порождать столь сложные и высокоупорядоченные структуры? Уже очень давно было замечено, что основа механизма саморазвития материи состоит в вечном стремлении различных противоначал слиться в недостижимой гармонии. В играх клеточных автоматов эта диалектика предстает в овеществленном, наблюдаемом виде, демонстрируя феномен развития в очень ярких и завораживающе красивых формах.

А. КОЛЕСНИКОВ,
andr61@mail.ru

Dim x(210, 210) As Integer
Dim y(210, 210) As Integer
Dim c As Byte
Dim n As Byte
Dim m As Byte
Dim k1 As Single
Dim k2 As Single
Dim g As Byte
Private Sub Form_Click()
For f = 1 To 150
 x(0, 0) = x(n, n): x(0, n + 1) = x(n, 1): x(n + 1, 0) = x(1, n): x(n + 1, n + 1) = x(1, 1)
 For k = 1 To n
  x(0, k) = x(n, k): x(k, 0) = x(k, n): x(n + 1, k) = x(1, k): x(k, n + 1) = x(k, 1)
 Next k
 For i = 1 To n
  For j = 1 To n
   Select Case x(i, j)
    Case Is = 0
    a = 0: b = 0
    For k = i - 1 To i + 1
     For l = j - 1 To j + 1
      Select Case x(k, l)
       Case 1 To m - 1
       a = a + 1
       Case Is = m
       b = b + 1
      End Select
     Next l
    Next k
    y(i, j) = Round((a / k1), 0) + Round((b / k2), 0)
    blue = 0: red = 0: green = 0
    Case 1 To m - 1
    a = 0: s = 0
    For k = i - 1 To i + 1
     For l = j - 1 To j + 1
      If x(k, l) > 0 And x(k, l) < m Then a = a + 1
      s = s + x(k, l)
     Next l
    Next k
    y(i, j) = Round((s / a), 0) + g
    If y(i, j) > m Then y(i, j) = m
    Case Is = m
    y(i, j) = 0
   End Select
   c = (x(i, j) / m) * 255
   Line (4 * (i - 1), 4 * (j - 1))-(4 * i - 1, 4 * j - 1), RGB(c, c, c), BF
  Next j
 Next i
 For i = 1 To n
  For j = 1 To n
   x(i, j) = y(i, j)
  Next j
 Next i
Next f
End Sub
Private Sub Form_Load()
Randomize
n = 25
m = 100
k1 = 5
k2 = 4
g = 28
For i = 1 To n
 For j = 1 To n
  x(i, j) = m * Rnd
 Next j
Next i
End Sub
Версия для печатиВерсия для печати

Номер: 

22 за 2001 год

Рубрика: 

Компьютер и жизнь
Заметили ошибку? Выделите ее мышкой и нажмите Ctrl+Enter!