Розділ 7. Клітинні автомати
Поодинці ми одна крапля. Разом ми океан.
— Рюноске Сатору

Тканина кенте походить від народу Акан із Гани — це тканина, яка славиться своїми яскравими кольорами та заплутаними візерунками. Кожний дизайн, витканий у вигляді вузьких смужок, унікальний, а коли смужки з’єднуються, вони утворюють гобелен зі складних і емерджентних візерунків, які розповідають історію або несуть повідомлення. На зображенні показано три типові смужки кенте, що підкреслюють різноманітні ткацькі традиції, які відображають багату культуру гобеленів Гани.
У Розділі 5 я визначив складну систему як мережу елементів із короткочасними зв’язками, що працюють паралельно та демонструють емерджентну поведінку. Я створив симуляцію зграї, щоб продемонструвати, що складна система проявляє себе дещо більше, ніж проста сума її складових. У цьому розділі я збираюся розробити інші складні системи, відомі як клітинні автомати.
У деяких аспектах ці приклади можуть здатися кроком назад. Окремі елементи моїх систем більше не будуть членами фізичного світу, керуватися силами й векторами чи рухатися по полотну. Натомість я створюватиму системи з найпростішої можливої цифрової одиниці: одного біта. Цей біт називається клітиною, а його значення (0 або 1) називається його станом. Робота з такими простими елементами допоможе зрозуміти, як працюють складні системи й дасть можливість детальніше розібратися в деяких техніках програмування, які застосовуються до проєктів, заснованих на коді. Побудова клітинних автоматів також стане основою для решти книги, де я все більше зосереджуватимусь на системах і алгоритмах, а не на векторах і русі, хоча ці системи й алгоритми я можу і буду застосовувати до рухомих тіл.
Що таке клітинний автомат?
Клітинний автомат або скорочено КА — це модель системи клітинних об’єктів із наступними характеристиками:
- Клітини живуть у сітці. (У цьому розділі я наведу приклади з одномірною та двомірною сітками, хоча КА може існувати у будь-якій вимірності.)
- Кожна клітина має стан, який може змінюватися з часом. Кількість можливих станів, як правило, обмежена. У найпростішому прикладі їх два: 1 і 0 (інакше їх називають увімкнений і вимкнений, або живий та неживий).
- Кожна клітинка має околицю. Вона може визначатися різними способами, але зазвичай маються на увазі усі клітини, суміжні з поточною.
Важливо підкреслити, що клітини в КА не належать до біологічних клітин (хоча ви побачите, як КА може імітувати реалістичну поведінку та мати застосування в біології). Натомість вони просто представляють окремі одиниці у сітці, подібно до клітинок в електронній таблиці (як у Microsoft Excel). На малюнку 7.1 показано КА та його різні характеристики.
Друга особливість КА, яку я назвав — це важлива ідея про те, що стан комірки може змінюватися з часом. Досі в цій книзі об’єкти (блукачі, частинки, боїди, тіла тощо) загалом існували лише в одному стані. Можливо, вони рухалися зі склад ною поведінкою та фізикою, але зрештою вони залишалися тим самим типом об’єктів протягом свого цифрового життя. Я натякав на можливість того, що ці сутності можуть змінюватися з часом (наприклад, вага певних поведінок може змінюватись), але я не повністю застосував це на практиці. Тепер за допомогою КА ви побачите, як стан об’єкта може змінюватися на основі системи правил.
