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 вы можете посетить мой репозиторий.

Долганов Ян Львович
Долганов Ян Львович
Студент по направлению “Прикладная информатика”

Мои научные интересы относятся к области администрирования ОС и различных языков программирования.