Изучение сложных систем с помощью Python

МЕНЮ


Искусственный интеллект
Поиск
Регистрация на сайте
Помощь проекту

ТЕМЫ


Новости ИИРазработка ИИВнедрение ИИРабота разума и сознаниеМодель мозгаРобототехника, БПЛАТрансгуманизмОбработка текстаТеория эволюцииДополненная реальностьЖелезоКиберугрозыНаучный мирИТ индустрияРазработка ПОТеория информацииМатематикаЦифровая экономика

Авторизация



RSS


RSS новости


2019-06-02 02:49

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

В издательстве ДМК Пресс готовится к выходу книга «Изучение сложных систем с помощью Python». Независимо от того, являетесь ли вы программистом на Python или изучаете компьютерное моделирование в университете, вы углубитесь в изучение сложных систем с помощью серии проработанных примеров, упражнений, случаев из практики и простых для понимания объяснений. К дополнительной главе, опубликованной к этой книге, публикуем отрывок из 5 главы о клеточных автоматах:

«Клеточный автомат (КА) – это модель мира с очень простой физикой. «Клеточный» означает, что мир разделен на отдельные куски, называемые ячейками. «Автомат» – это машина, которая выполняет вычисления, – это может быть реальная машина, но чаще всего «машина» – это математическая абстракция или компьютерное моделирование. В этой главе представлены эксперименты, выполненные Стивеном Вольфрамом (Stephen Wolfram) в 80-х гг., демонстрирующие, что некоторые клеточные автоматы демонстрируют удивительно сложное поведение, в том числе способность выполнять произвольные вычисления.

Клеточные автоматы регулируются правилами, которые определяют, как состояние ячеек изменяется со временем. В качестве тривиального примера рассмотрим клеточный автомат с одной ячейкой. Состояние ячейки во время временного шага i является целым числом, xi. В качестве начального условия предположим, что x0 = 0.

Теперь все, что нам нужно, – это правило. Произвольно я выберу xi + 1 = xi + 1, что говорит о том, что на каждом временном шаге состояние клеточного автомата увеличивается на 1. Так что этот автомат выполняет простое вычисление: он считает.

Но данный автомат нетипичен; обычно число возможных состояний ограничено. Например, предположим, что ячейка может иметь только одно из двух состояний: 0 или 1. Для клеточного автомата с двумя состояниями мы можем написать правило, например, xi + 1 = (xi + 1) % 2, где % – оператор деления по модулю.

Поведение этого клеточного автомата простое: он мигает. То есть состояние ячейки переключается между 0 и 1 в течение каждого временного шага.

Многие клеточные автоматы являются детерминированными, это означает, что в правилах нет случайных элементов; при одинаковом начальном состоянии они всегда дают одинаковый результат. Но некоторые автоматы являются недетерминированными; мы увидим примеры далее.

У клеточного автомата в этом разделе есть только одна ячейка, поэтому мы можем рассматривать его как нульмерный. В оставшейся части этой главы мы исследуем одномерные клеточные автоматы (1D), а в следующей главе рассмотрим двумерные автоматы.

Эксперимент Вольфрама:

В начале 80-х гг. Стивен Вольфрам опубликовал серию работ, в которых систематически изучались одномерные клеточные автоматы. Он выделил четыре категории поведения, каждая из которых интереснее предыдущей. Вы можете прочитать одну из этих статей, «Статистическая механика клеточных автоматов», на странице https://thinkcomplex.com/ca

В экспериментах Вольфрама ячейки расположены в решетке (которую вы, возможно, помните из раздела «Ваттс и Строгац» на стр. 24), где каждая ячейка связана с двумя соседями. Решетка может быть ограниченной, бесконечной или располагаться в кольце.

Правила, которые определяют, как система развивается во времени, основаны на понятии «окрестности», которое представляет собой набор ячеек, определяющих последующее состояние данной ячейки.

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

prev 111 110 101 100 011 010 001 000

next 0 0 1 1 0 0 1 0

Первая строка показывает восемь состояний, в которых может находиться окрестность. Вторая строка показывает состояние центральной ячейки во время следующего временного шага. В качестве краткой кодировки этой таблицы Вольфрам предложил читать нижнюю строку как двоичное число; поскольку 00110010 в двоичном коде – это 50 в десятичном виде, Вольфрам назвал этот клеточный автомат «Правило 50».

На рисунке к посту показано влияние Правила 50 на 10 временных шагов. Первая строка показывает состояние системы в течение первого временного шага; он начинается с одной ячейки «вкл», а остальные «выкл». Во второй строке показано состояние системы во время следующего временного шага и т. д.

Треугольная форма, изображенная на рисунке, типична для этих клеточных автоматов; это следствие формы окрестности. За один временной шаг каждая ячейка влияет на состояние одного соседа в любом направлении. В течение следующего временного шага это влияние может распространяться на еще одну ячейку в каждом направлении. Таким образом, каждая ячейка в прошлом имеет «треугольник влияния», который включает в себя все ячейки, на которые она может воздействовать".

Комментарии: