NK-автоматы С. Кауффмана
Содержание
1. Что такое автомат Кауффмана и как он работает?
NK-автомат является сетью из N булевых логических элементов. Каждый логический элемент имеет K входов и один выход. Сигналы на входах и выходах элементов бинарны (принимают значения 0 либо 1). Выходы одних элементов поступают на входы других, эти связи абсолютно случайны, но число входов K каждого элемента статично. Логические же элементы также выбираются случайно.
Автоматы автономны (внешние входы отсутствуют). Число логических элементов, входящих в автомат, предполагается большим, N>1. Автомат функционирует в дискретном времени: t = 1,2,3,… Состояние автомата в каждый момент времени t определяется вектором X(t) – совокупностью выходных сигналов всех логических элементов.
В процессе функционирования последовательность состояний сходится к аттрактору – предельному циклу. Последовательность состояний X(t) в этом аттракторе может рассматриваться как “программа” функционирования автомата.
Число аттракторов M и типичная длина аттрактора L – важные характеристики NK-автоматов.
2. Формулировка задачи
Входные данные:
- задать n=4, к=2
- задать начальный вектор (напр. int v0[] = {1, 1, 0, 1, 0, 0})
- задать матрицу связей, например:
int n[1] = {0, 1, 0, 1, 0, 0};
int n[2] = {1, 0, 1, 0, 0, 0};
int n[3] = {0, 1, 0, 1, 0, 0};
int n[4] = {1, 0, 0, 0, 0, 1};
int n[5] = {0, 0, 0, 0, 1, 1};
int n[6] = {0, 0, 1, 0, 1, 0};
- Также необходимо описать логические элементы.
Выходные данные:
- количество различных аттракторов.
3. Решение
Для просмотра решения на языке Python вы можете посетить мой репозиторий.