Складність · Обчислення · Дискретна математика
📅 Квітень 2026 ⏱ ≈ 13 хв читання 🎯 Початковий–середній · Останнє оновлення: 28 травня 2026 р.

Клітинні автомати Вольфрама та складність із простих правил

Клітинний автомат оновлює стан кожної клітини виключно на основі її сусідів — проте з кількох бітів локального правила виникають глобальні структури, що варіюються від статичних кристалів і простого повторення до хаотичної випадковості й універсальних обчислень. Систематичний огляд усіх 256 елементарних правил Стівеном Вольфрамом показав, що складність усюди, а не є винятком. Ця стаття вибудовує теорію від двійкових клітин до повних за Тюрінгом автоматів та гри «Життя».

1. Елементарні клітинні автомати — 256 правил

Елементарний клітинний автомат (ECA) складається з одновимірного ряду клітин, кожна з яких має двійковий стан (0 або 1). На кожному кроці часу всі клітини оновлюються одночасно за тим самим правилом, застосованим до клітини та двох її сусідів. Оскільки існує 2³ = 8 можливих конфігурацій околу та 2 можливі виходи на конфігурацію, існує рівно 2⁸ = 256 різних правил.

окіл: (лівий, центр, правий) ∈ {0,1}³ — 8 комбінацій: 111 110 101 100 011 010 001 000 ↓ ↓ ↓ ↓ ↓ ↓ ↓ ↓ вихід bit7 … bit0 → кодує номер правила у двійковому вигляді

Правило 30: 30 = 00011110₂ 111→0 110→0 101→0 100→1 011→1 010→1 001→1 000→0

Ця схема нумерації код Вольфрама (1983) надає кожному правилу унікальне ціле число 0–255. Правила малюють, еволюціонуючи від зародка з однієї клітини й відкладаючи кожне покоління окремим рядком. Час тече вниз; отриманий візерунок є «просторово-часовою діаграмою» автомата.

2. Чотири класи складності Вольфрама

Вольфрам класифікував усі 256 елементарних правил (та КА загалом) на чотири якісні класи на основі їхньої довгострокової поведінки:

Клас I — однорідність

Усі клітини еволюціонують до єдиного фіксованого стану. Будь-яка початкова умова згортається до однорідного фону. Приклад: правила 0, 8, 32, 40.

Клас II — періодичні / стабільні

Клітини осідають у простих періодичних або стабільних візерунках. Локалізовані структури зберігаються незмінними або циклять. Приклад: правила 4, 19, 50.

Клас III — хаотичні

Аперіодичні, на вигляд випадкові візерунки. Як завгодно малі зміни початкових умов призводять до цілком інших візерунків. Приклад: правила 30, 45, 73.

Клас IV — складні

Довговічні, неперіодичні, локалізовані структури, що складно взаємодіють. Пов'язані з обчисленнями та універсальністю. Приклад: правила 54, 106, 110.

Поведінка класу IV — на межі між порядком і хаосом — пов'язана з обчислювальною універсальністю. Гіпотеза «краю хаосу» припускає, що життя та пізнання так само діють на цій межі.

3. Визначні правила: 30, 90, 110

Правило 30 — хаос і генерація випадкових чисел

Починаючи з однієї живої клітини, правило 30 породжує хаотичний нерегулярний візерунок. Вихід центрального стовпця є статистично випадковим (проходить більшість стандартних статистичних тестів). Вольфрам використовував правило 30 як вбудований псевдовипадковий генератор у Mathematica та Wolfram Language. Природа реалізує щось подібне: візерунок мушлі конуса Conus textile є майже досконалою візуальною реалізацією правила 30.

Правило 90 — трикутник Паскаля за модулем 2

Правило 90 (XOR лівого та правого сусідів, ігноруючи центр) породжує візерунок трикутника Серпінського. Починаючи з однієї клітини, візерунок у рядку n — це точно трикутник Паскаля за модулем 2: рядок n має 1 там, де біноміальний коефіцієнт C(n, k) непарний.

Правило 110 — універсальні обчислення

У 2004 році Метью Кук довів, що правило 110 є повним за Тюрінгом: воно може симулювати будь-яку машину Тюрінга. Це вимагає нескінченної початкової умови, що кодує програму, але результат глибокий — правило, описане єдиним байтом, може виконувати довільні обчислення. Правило 110 — найпростіша відома повна за Тюрінгом система.

4. Двовимірні та тоталістичні автомати

У 2D-КА клітини розміщені на сітці (зазвичай квадратній або шестикутній). Правило оновлення залежить від власного стану клітини та певного околу. Дві класичні форми околу:

Тоталістичне правило залежить лише від суми станів сусідів, а не від їхнього розташування. Це зменшує простір правил з 2^(2^9) до набагато меншого набору, індексованого кількістю народжень/виживань, що робить систематичне дослідження здійсненним.

5. Гра «Життя» Конвея

Представлена Джоном Конвеєм у 1970 році, гра «Життя» — це 2D двійковий тоталістичний КА з околом Мура й такими правилами народження/виживання:

B3/S23: Мертва клітина оживає, якщо має рівно 3 живих сусіди (народження) Жива клітина виживає, якщо має 2 або 3 живих сусіди (виживання) Усі інші клітини помирають або лишаються мертвими (недонаселеність / перенаселеність)

З цих трьох правил виникає надзвичайний звіринець структур:

6. JavaScript: ECA та гра «Життя»

Елементарний клітинний автомат

// Намалювати просторово-часову діаграму ECA на canvas (ruleNum 0-255, ширина W, висота H)
function drawECA(canvas, ruleNum, W = canvas.width, H = canvas.height) {
  const ctx = canvas.getContext('2d');
  ctx.fillStyle = '#000';
  ctx.fillRect(0, 0, W, H);

  const rule = ruleNum.toString(2).padStart(8, '0');   // '00011110' для правила 30
  const lookup = [...rule].reverse();  // lookup[ціле_околу] → вихідний біт

  let row = new Uint8Array(W);
  row[Math.floor(W / 2)] = 1;   // зародок з однієї клітини в центрі

  ctx.fillStyle = '#fff';
  for (let y = 0; y < H; y++) {
    for (let x = 0; x < W; x++)
      if (row[x]) ctx.fillRect(x, y, 1, 1);

    const next = new Uint8Array(W);
    for (let x = 0; x < W; x++) {
      const L = row[(x - 1 + W) % W];
      const C = row[x];
      const R = row[(x + 1) % W];
      next[x] = +lookup[(L << 2) | (C << 1) | R];  // упакувати 3 біти → індекс
    }
    row = next;
  }
}

Гра «Життя» (тороїдальна сітка)

class GameOfLife {
  constructor(W, H) {
    this.W = W; this.H = H;
    this.grid = new Uint8Array(W * H);
  }

  set(x, y, v) { this.grid[y * this.W + x] = v; }
  get(x, y) { return this.grid[y * this.W + x]; }

  step() {
    const { W, H } = this;
    const next = new Uint8Array(W * H);
    for (let y = 0; y < H; y++) {
      for (let x = 0; x < W; x++) {
        let n = 0;
        for (let dy = -1; dy <= 1; dy++)
          for (let dx = -1; dx <= 1; dx++)
            if (dx || dy)
              n += this.get((x + dx + W) % W, (y + dy + H) % H);
        const alive = this.get(x, y);
        next[y * W + x] = (alive && (n === 2 || n === 3)) || (!alive && n === 3) ? 1 : 0;
      }
    }
    this.grid = next;
  }
}

Спробуйте наживо

Запустіть гру «Життя» на інтерактивному полотні — малюйте візерунки, спостерігайте за планерами та досліджуйте осцилятори в реальному часі.

Відкрити симуляцію →

7. Клітинні автомати як комп'ютери

Клітинні автомати можна розглядати як масово-паралельні комп'ютери: кожна клітина виконує ту саму інструкцію одночасно. Ця паралельна природа робить їх природними кандидатами для:

NKS — A New Kind of Science (Вольфрам, 2002) стверджує, що обчислювальна універсальність, знайдена в правилі 110 та подібних системах, означає, що природу загалом найпростіше моделювати КА-подібними локальними правилами оновлення, а не диференціальними рівняннями — вказуючи на дискретні, а не неперервні, основи фізики.

8. Застосування в науці та мистецтві

Біологія та формування візерунків

Модель реакції-дифузії Алана Тюрінга 1952 року породжує візерунки забарвлення тварин (плями леопарда, смуги зебри) через КА-подібний механізм: хімічні речовини активатора та інгібітора дифундують і реагують локально. Ґраткові моделі з неперервним часом точно відтворюють справжнє біологічне формування візерунків.

Симуляція дорожнього руху

Модель Нагеля-Шрекенберга — це одновимірний КА, що відтворює затори без жодного центрального керування: утворення хвилі затору виникає з локальних правил прискорення, гальмування та випадкового зволікання. Розширені 2D-версії лежать в основі мікроскопічних симуляторів руху масштабу міста.

Процедурна генерація текстур

Художники та розробники ігор використовують КА для генерації органічних текстур: правило 30 для випадковості, 2D-генерація печер/підземель через згладжування «народження 3 / виживання 2–3» та симуляції росту кристалів через DLA (дифузійно-обмежена агрегація).