1131

Программируем жизнь

Представьте себе двумерную вселенную, состоящую из клеток (как в школьной тетради). Некоторые клетки закрашены — тогда мы говорим, что в них есть жизнь. У каждой клетки есть 8 клеток-соседей

Введём некоторые правила для нашей жизни:

1. Если у живой клетки меньше 2 соседей, она умирает от одиночества

2. Если у живой клетки 2 или 3 соседа, она продолжает жить

3. Если у клетки более 3 соседей, она умирает от перенаселения

4. Если у неживой клетки ровно 3 соседа, происходит размножение и клетка становится живой

Может ли в такой простой системе возникнуть что-то похожее на столь сложный процесс, как жизнь? Оказывается, может

Cистема поражает своей непредсказуемостью. Клетки постоянно рождаются и умирают, количество живых клеток то возрастает, то убывает. Иногда через какое-то количество шагов поле остаётся пустым, иногда на нём остаются стабильные структуры, а порой нечто «живое» остаётся в игре очень долго или навсегда

Примеры «существ»

Представьте, квадрат из 4 клеток на поле

У каждой клетки квадрата ровно 3 соседа. У клеток по краям — максимум по 2. Это значит, что каждая клетка квадрата будет продолжать жить, а рядом не будут рождаться новые. Такая структура будет существовать на поле вечно!


Но это совсем неинтересно, жизнь ведёт себя не так. У нас получилось что-то вроде окаменелости. Интереснее себя ведёт палка 1 на 3

У её центрального элемента 2 соседа, поэтому он остаётся живым. Элементы на краях погибают от одиночества, соседствуя лишь с центром. Зато с другой стороны от центра у мёртвых клеток имеется 3 соседа, поэтому они становятся живыми! Так это существо продолжает жить, переворачиваясь с боку на бок каждый ход

Существуют ещё более крутые конструкции, например, пульсар:

Но больше всего впечатляют движущиеся элементы! Они повторяют себя, но уже не на том же месте, а немного смещаясь. Например, планер:

Или даже космический корабль:

Если вас это ещё недостаточно впечатляет, то посмотрите на планерное ружьё Госпера:

Это стабильная структура, которая постоянно порождает новые двигающиеся планеры! И это уже действительно напоминает что-то живое. Построить ружьё Госпера можно так:

Зачем?

Эта модель называется Игра «Жизнь» Конвея. Её изобрёл британский математик Джон Конвей в 1970 году. До этого известнейший физик Джон фон Нейман предложил нечто похожее. Во времена космической гонки он думал, как колонизировать Марс. Поверхность красной планеты состоит из оксида железа — соединения кислорода и металла!

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

Взгляните на такую ситуацию сверху: робот занимает какую-то площадь и производит свои копии, распространяющиеся по бокам. Очень напоминает двумерную Вселенную из нашей модели! Но модель фон Неймана была гораздо сложнее: каждый робот там имел до 20 состояний. Предсказать поведение такой системы невероятно сложно

Конвей упростил модель фон Неймана до той, что описана в начале поста. Тем не менее, из таких простых правил всё равно рождаются очень сложные, непредсказуемые структуры. Почти никогда нельзя предсказать, вымрет ли система или стабилизируется и за сколько шагов это произойдёт. Эта простая модель очень помогла развитию таких наук, как математика и программирование, и даже биология с химией

Но что будет если всё же добавить сложности в эту модель? Может быть, сделать клеткам возраст, чтобы они умирали, если долго не изменяются, или сделать клетки шестиугольными, а не квадратными? Пишите свои идеи в комментариях, а я попробую их реализовать :)

Также можете поиграть с моделью самостоятельно. Можно заполнить поле случайным образом, изменить масштаб или нарисовать какую-либо фигуру самостоятельно. Пишите, что интересного у вас получилось!

Моя группа ВК

Лига образования

7.3K поста23K подписчиков

Правила сообщества

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


ДЛЯ АВТОРОВ:


Приветствуются:

-уважение к читателю и открытость

-желание учиться

Не рекомендуются:

-публикация недостоверной информации


ДЛЯ ЧИТАТЕЛЕЙ:


Приветствуются:

-конструктивные дискуссии на тему постов

Не рекомендуются:

-личные оскорбления и провокации

-неподкрепленные фактами утверждения


В этом сообществе мы все союзники - мы все хотим учиться! :)

Вы смотрите срез комментариев. Показать все
0
Автор поста оценил этот комментарий

У нас есть четко зарезервированная система правил на плоскости, значит перед нами варианты Тьюрмитов. Если позволить клеткам "размножаться" бесконечное количество итераций, могут появиться фрактальные структуры.


И это не жизнь, а программа. Потому что жизнь НЕ ДЕТЕРМИНИРОВАНА. Кто-нибудь строил клеточные автоматы с долей псевдорандома? Было бы интересно посмотреть на таймлапс

раскрыть ветку (4)
0
Автор поста оценил этот комментарий

Добавлю рандом, тоже интересно

раскрыть ветку (3)
1
Автор поста оценил этот комментарий

Будет время, я на python попробую, а если тормозить будет на кресты перепишу. Чего добавлять в генетику? Есть такие мысли:


1) ограничить клеткам срок жизни. Наследуется от одного из трех родителей случайным образом

2) назначить клеткам цвет. Наследуется аналогично


Можно попробовать еще что-то вроде хематтракции, как в природе. Чтобы клетки могли уходить к соседям.


На полученном автомате можно будет следить какой из цветов выживет среди всех. Можно потом попробовать сцепленное наследование, типа голубые живут 20 итераций, желтые 30, красные 60, черные 5

раскрыть ветку (2)
1
Автор поста оценил этот комментарий

Собственно, возраст я добавил. Если интересно, вот :) https://pikabu.ru/story/modeliruem_zhizn_6406318

1
Автор поста оценил этот комментарий

Я думал добавить возраст клеткам

1. Клетка, которая выживает 10 поколений подряд, погибает. Можно красиво визуализировать, повышая прозрачность на 10% с каждым шагом

2. Клетка, возраст которой больше 7 не может помочь в воспроизведении потомства. То есть, она не считается соседом мёртвых клеток, но считается соседом живых и тратит ресурсы — может привести к гибели от перенаселения. Снизу тоже можно ограничить :)


Сюда же, кстати, можно добавить эволюцию через варьирование репродуктивного возраста у клеток. Только надо какие-то ещё ограничения придумать, иначе ясно, что победят те клетки, которые все 10 лет размножаются


Ещё интересно добавить случайным образом возникающие живые клетки и наоборот случайные вымирания. Приближаем к реальной жизни :)

Вы смотрите срез комментариев. Чтобы написать комментарий, перейдите к общему списку

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества

Недвижимость и ремонт

Теги

Популярные авторы

Сообщества