Написал этот текст, чтобы зафиксировать объяснение возможности случайной генерации организмов в процессе эволюции.
Я согласен с утверждением, что если случайно генерировать последовательность из букв, то литературного произведения мы не получим и за миллиарды лет. Подробно о Теореме о бесконечных обезьянах. Но к эволюции это утверждение не имеет отношения, хотя и выглядит таковым. Почему? Если кидать случайно атомы, то мы не получим ДНК или клетку - слишком уж большую комбинацию мы ждём на выходе. Если же мы ограничим ожидаемую последовательность, например несколькими атомами, то вполне может выпасть небольшая молекула. Из них в случайном порядке мы складываем ещё большие молекулы. Что мы сделали? Мы увеличили вероятность выпадения чего-то осмысленного, задав ограничения. То же самое мы сделаем с текстом: ограничим орфографией конкретного языка допустимые комбинации букв и длины слов.
Код на Python:
from random import choice, randint
letters = 'абвгдеёжзийклмнопрстуфхцчшщъыьэюя,'
real_syllables = {'пус', 'ть', 'он', 'зна', 'ет', ',', 'что', 'ес', 'ли', 'по', 'доб' ,'но', 'мне', 'стре', 'ми', 'тся'}
real_words = {'пусть', 'он', 'знает', ',', 'что', 'если', 'подобно', 'мне', 'стремится'}
real_word_combinations = {'пусть', 'он знает', ',', 'что если', 'подобно мне', 'он стремится'}
real_sentences = {'пусть он знает , что если , подобно мне , он стремится'}
def rand_entity(min_length, max_length, alphabet, glue):
rand_letters = []
for _ in range(randint(min_length, max_length)):
rand_letters.append(choice(alphabet))
return glue.join(rand_letters)
def guess_entities(max_iterations, min_length, max_length, subentities, real_entities, glue=''):
guessed_entities = set()
for index_iteration in range(max_iterations):
entity = rand_entity(min_length, max_length, subentities, glue)
if entity in real_entities:
guessed_entities.add(entity)
if len(guessed_entities) == len(real_entities):
return True, index_iteration
return False, index_iteration
args_list = [
(10000000, 1, 5, letters, real_syllables),
(100000, 1, 3, list(real_syllables), real_words),
(1000, 1, 2, list(real_words), real_word_combinations, ' '),
(10000000, 7, 8, list(real_word_combinations), real_sentences, ' '),
]
for args in args_list:
is_ready, index = guess_entities(*args)
print(is_ready, index)
if not is_ready:
break
Программа генерирует случайные последовательности букв и проверяет их на возможность существования (наличие в списке), затем из полученных слогов генерирует слова, затем "словосочетания" и "предложения". Отображает 2 значения для каждого из 4 шагов: достигнута ли генерация всех шагов, на какой по счёту итерации были сгенерированы все комбинации. Например:
True 8054959
True 21551
True 342
True 5602084
На роль генерируемого текста взял фрагмент цитаты из перевода книги "Эгоистичный ген":
Пусть он знает, что если, подобно мне, он стремится к созданию общества, члены которого великодушно и самоотверженно сотрудничают во имя общего блага, ему нечего рассчитывать на помощь со стороны биологической природы человека. Давайте попробуем учить щедрости и альтруизму, ибо мы рождаемся эгоистами. Осознаем, к чему стремятся наши собственные эгоистичные гены, и тогда у нас по крайней мере будет шанс нарушить их намерения
Длину слогов ограничил 4 буквами, т. к. при большей длине вероятность выпадения слога снижается настолько, насколько снижается значимость её ожидания.
Вместо переменных real_*
было бы лучше описать правила (алгоритм), по которым допустимо складывать буквы в слоги, а слоги в слова и т. д. И обучить искусственный интеллект на роль критика-читателя для тестирования генерируемого текста. Но это займёт много времени и, на мой взгляд, не требуется для понимания возможности случайной генерации организмов. В природе же нет эталонных организмов для тестирования, а только законы, задающие возможность комбинирования атомов и выживаемости организмов.
Скачать исходный код: https://github.com/syeysk/random-masterpiece-generator
Мир как контейнер для порождения сущностей
Подытожу описание системы мира, построение которой могло бы порождать сущности по некоему сценарию.
Абстрактная система:
Сущность; составные части сущности, комбинации сущностей
На выходе остаются те сущности, комбинации составных частей которых удовлетворяют неким правилам.
Правила комбинирования составных частей
Тестирование сущности на право существования
Причина генерирования псевдослучайных комбинаций
Конкретизируем абстракцию для природы:
Организм; клеточные культура, молекула, атом, элементарная частица и переносчик взаимодействия; популяция, сообщество, цивилизация.
Остаются существовать копии гена тех организмов, оказавшиеся способными выжить и осуществить репликацию.
Законы квантовой механики, физики, химии, биологии.
Выживание и размножение в условиях окружающей среды.
Флуктуация (блуждание) положения частиц, атомов. Радиация, влияющая на последовательность ДНК. Прочее.
Конкретизируем абстракцию для литературы:
Слова; слоги, буквы; словосочетания, произведения, сборники
Остаются существовать копии тех произведений, оказавшиеся интересными читателям, способных к их цитированию и распространению, признанию.
Орфография, синтаксис, восприятие человека (иногда автор может нарушать орфографию и синтаксис, чтобы лучше донести эмоции или смысл)
Одобрение массовыми читателями, литературными критиками и так далее
Человек, имеющий должное воображение, глубину мышления и подобное. Генеративный искусственный интеллект, обученный на большом объёме текста.
Итого
Грубо говоря, атомы оказываются псевдослучайно в том или ином месте, но их комбинации складываются по законам. Или мутации в ДНК происходят псевдослучайно, но жизнеспособность получаемых организмов определена законом.
Что дальше?
Пока ничего, потому что у меня нет времени на создание программы, которая принимает описание мира и запускает генерацию сущностей. Оставлю это на будущее.
Для дополнительного чтения:
Программа Weasel, написанная Ричардом Доккинзом для демонстрации случайной генерации организма (последовательности ДНК) на примере фразы из произведения Шекспира. Моя программа демонстрирует генерацию молекул из атомов, т. е. обе программы как бы дополняют друг друга.
Комментарии (3)
SolidSnack
02.10.2025 01:16У нас ведь углеродная жизнь
Моя программа демонстрирует генерацию молекул из атомов
С достоверностью в 0 процентов, у вас не одного физического закона.
lambdaLab
02.10.2025 01:16Читал Докинза и не знал про Weasel, отличная концепция, прям вот спасибо за эту тему, она не так проста как кажется. И ваше замечание, что можно идею продолжить на физику (по некоторым смелым гипотезам она тоже могла эволюционировать а может и сейчас эволюционирует где то в лямбда членах) вполне жизнеспособна и очень удачна аналогия с биологией.
А про обезьян кстати вспомнил анекдот. Сидит обезьяна в клетке - ей вешают банан, как только она его пытается схватить - ее обливают холодной водой, она перестает пытаться, дальше к ней сажают вторую, та сразу за банан, первая, зная что будет дает ей по шее, вторая успокаивается, сажают третью, как только та за бананом - ей дают по шее и первая и вторая за компанию, дальше первую обезьяну убирают, сажают уже четвертую, она за банан но ей вторая и третья выучено по шее, дальше можно по индукции. Лаборант уже давно ушел и выключил кран, сидят обезьяны, никого из них водой не обливали, но банан никто не трогает. Называется «так тут у нас заведено».
x4x7
О, Господи.. это что?
открываете ссылку и читаете:
Так вы что объясняете? Зарождение жизни? Так причем тут эволюция? Вы же сами сказали (и надеюсь понимаете) что они не связаны.
Эволюция это очень просто: дети похожи на родителей, но есть отличия. Не надо это доказывать, мы это каждый день видим. Но это никак не связано с самозарождением жизни
Ну сгенерируете молекулы, а самозарождение ЖИЗНИ причем?