user9671079

Любитель рассуждать. Читаете на свой страх и риск . На комментарии в целом не отвечаю, но ознакамливаюсь с конструктивными
На Пикабу
Дата рождения: 5 января
104 рейтинг 2 подписчика 0 подписок 60 постов 0 в горячем
Награды:
В 2026 год с Пикабу!

Рассуждения о графах и играх

В целом обычно игру на одного из теории игр можно приравнять к решению задачи теории оптимального управления. Обычно с такой игрой на одного есть два связанных с ней графа. Первый граф — орграф состояний игры. Его ноды — это состояния игры (например, для кубика Рубика одно состояние — это текущая раскраска сторон на кубике). Направленные рёбра этого орграфа — это просто состояния, из которых можно перейти из этого состояния (для кубика Рубика это то, как мы можем его повернуть на каждом шаге). Тогда среди нод будет целевая нода, которая говорит о том, что мы выиграли (для кубика Рубика — это когда каждая сторона окрашена своим цветом), и начальная нода (для кубика Рубика это текущее состояние кубика, которое у нас есть).

Второй граф — это дерево ходов. В разных состояниях игры у меня есть набор возможных действий. Я могу выбрать сначала одно действие, затем второе, третье и т. д. В таком случае я приду в конце концов к листу дерева, который обозначает выигрыш или проигрыш, либо просто зациклюсь и ни к чему никогда не приду, а значит, не выиграю (для кубика Рубика это как если бы я сначала повернул одну его сторону, потом повернул её обратно и так продолжал делать бесконечно, оставаясь на месте).

Если анализировать первый граф (орграф), то задача поиска наибыстрейшего выигрыша в игре сводится к задаче нахождения минимального пути на этом орграфе от начальной ноды A до выигрышной ноды Y. Этот минимальный путь способен находить алгоритм BFS, причём он это делает за O(V+E) (количество вершин + количество рёбер).

Также мы понимаем, что можем найти компоненты сильной связности на этом орграфе, и если компонента — сток и в ней нет выигрышной ноды Y, то все другие ноды этой компоненты тоже не выигрышные.

С точки зрения динамического программирования ускорить поиск BFS можно, если мы знаем, что у ноды Y (поиск от обратного), как и у следующих перед ней нод, количество рёбер, входящих в неё, не особо велико; тогда часть нод можно явно отсечь.

Очевидно, что алгоритм BFS на орграфе — это в каком-то смысле перебор вариантов, и проблемы начинаются, когда рёбер и нод становится слишком много (как в кубике Рубика или пятнашках). BFS найдёт путь и выигрыш для них, но будет делать это очень долго. Нужен способ отсечения ненужных путей (выходных рёбер) из ноды состояний игры. И тогда возникает действительно важный вопрос: а есть ли какая-то надструктура, которая порождает этот орграф игры, и можно ли этот орграф как-то сжать или получить через конечные правила?

Важная особенность орграфа игры в том, что из него в принципе не всегда можно установить наличие выигрышной стратегии даже через BFS. Для примера можно привести такую игру. Пусть есть лягушка, которая прыгает по числовой прямой на +2 и −2 шага от нулевой ноды. Выигрыш — если лягушка попадёт на ноду 13. Если мы построим орграф игры и попытаемся через BFS найти, можно ли попасть на ноду 13, то мы уйдём в бесконечный поиск выигрышной ноды 13. Причём мы даже не сможем сказать, что в ноду 13 невозможно попасть в принципе, хотя бы потому, что в неё можно попасть из нод 11 и 15 и т. д. Важно, что эта задача решается элементарно через описание правил игры и использование на этих правилах квантора всеобщности, логики предикатов и двух видов доказательств по индукции. То есть мы можем доказать конечным доказательством, что лягушка никогда не попадёт в ноду 13, а значит, выигрыш невозможен. Соответственно, можем ли мы утверждать, что математическая теория и логика предикатов важнее в игре на одного в целом, чем собственно анализ орграфа игры?

Показать полностью
1

Рассуждения о том зачем нужна параллельность в программировании

В программировании функцию без побочных эффектов можно представить так

function функция(аргументы) {

// вычисления из аргументов результата

return результат

}

Если для любого аргумента функция выполняется за конечное количество шагов можно построить таблицу вида:

аргумент1 -> результат1

аргумент2 -> результат2

...

Эту таблицу можно назвать кэш-функцией. Она позволяет ускорить вычисления через хэш-фукнцию или через прямую адресацию к памяти. Причем время обращения 0(константа).

Эта кэш-функция не требует многопоточности для своего выполнения , даже если вычисление из аргументов результата использовало активно многопоточность (хоть и требует много памяти).

Соответствеенно , если мы пока исключаем требование для кеш-функции большого количества памяти а смотрим только на скорость выполнения функции , то параллельность бы использовалсь только для добычи новой информации и изучении новых алгоритмов - именно ее параллельность могла бы ускорить.

Показать полностью
2

Продолжение рассуждений об ограничении сознания. Вопросы для рассуждений и математика

На основе предыдущих постов я выдвинул предположение о том, как устроено сознание и чем оно ограничено с точки зрения теории алгоритмов. Возможно, это предположение слабое, а может, и сильное — я пока не знаю. Давайте попробуем построить примеры и вопросы к ним.

В математике существует теория, над которой бьются много учёных, — она называется гипотезой Римана. С точки зрения сегодняшних представлений (с которыми я не совсем согласен) математика — это набор кубиков с буквами и правила составления из этих кубиков слов. Из букв можно составлять начальные слова (аксиомы), из аксиом по простым не меняющимся правилам можно составлять новые, более сложные слова (теоремы), и так далее — из теорем можно создавать новые теоремы. Среди этих теорем есть, возможно, сложное слово, которое и есть гипотеза Римана. Проблема в том, что получится ли это слово или нет, мы не знаем — слишком много теорем и аксиом. Начальные слова по сегодняшним представлениям — это аксиомы теории множеств в прочтении Цермело — Френкеля (ZFC). Так как пространство поиска очень большое, усилия сообщества математиков, занимающихся гипотезой Римана (в каком-то, даже не совсем верном, смысле), можно представить как попытки достраивать в разных местах этого дерева (графа) ZFC ветки из новых теорем, способные доказать гипотезу Римана.

В научном сообществе есть исследователи (те, которые строят доказательства) и есть рецензенты научных журналов (те, которые проверяют доказательства). То есть в каком-то смысле научное сообщество можно было бы считать над-агентом в смысле ИИ — сообществом агентов, выполняющих одну задачу (доказательство гипотезы Римана). Если мы проанализируем сходство этого над-агента с моделью ИИ, о которой я писал, то роль сознания в нём выполняют учёные-исследователи: они ищут доказательства и общаются между собой, обмениваются промежуточными леммами (или не общаются) для того, чтобы его найти. Рецензенту же не обязательно в этом смысле обладать сознанием — его может заменить алгоритм проверки доказательства (к примеру, Lean), хотя это немного спорный вопрос. В этом смысле, если у рецензента, как мы считаем, есть сознание и у учёного-исследователя есть сознание, то вроде бы есть асимметрия: рецензент может выполнять задачу, не требующую сознания , которая вроде бы должна выполняться задачей, требующей над-агента (над-сознания).

Ещё интереснее вот что. Теоретически роль научного сообщества может выполнить только один математик в своём сознании — просто это будет очень долго. Он может как придумывать доказательства гипотезы Римана, так и сам их рецензировать (если внутренний рецензент достаточно честный). То есть это над-сознание может поместиться в сознание одного человека (если он этим будет заниматься тысячу лет). Соответственно, граница между над-сознанием и сознанием этого человека должна быть какая-то другая, чем просто иерархическая вложенность.

Показать полностью
2

Связь победителя который получает все и экономики

Предположим, у нас есть сеть гипермаркетов Metro. У каждого из этих гипермаркетов может быть отдел рекламы, а связь директора и других отделов гипермаркета с этим отделом может быть устроена через email. Если во всех гипермаркетах Metro все директора пишут одинаковые письма в отдел рекламы и в ответ получают одинаковые письма от отдела рекламы, то получается, что сети гипермаркетов Metro не нужен отдел рекламы в каждом отдельном гипермаркете — потому что функцию этих отделов можно объединить в один отдел для всей сети. Если гипермаркет Metro это сделает, то сможет немного снизить цены на товары и остаться на плаву или выиграть конкурентную гонку.

В программировании выяснение того, сколько нужно параллельных потоков для выполнения какой-то программы, связано с золотым правилом параллелизуемости: если в программе постоянно результат следующей операции зависит от результата предыдущей операции, то такую программу невозможно распараллелить для увеличения скорости её выполнения. Её в некоторых случаях можно оптимизировать через закрытые формы рекурсивных математических функций — например, for(i = 0; i < n; i++) { sum += 2; } эквивалентно sum = 2 * n — но не распараллелить.

В нашей обычной жизни то, сколько человек будет населять какую-то территорию, было связано (до урбанизации) обычно с тем, сколько земли нужно для того, чтобы этого человека прокормить. Например, охотник-собиратель в Сибири прокормится с 10 квадратных километров. А для крестьянина в Китае нужно всего лишь 10 соток, чтобы прокормиться. Разница по площади — в 10 000 раз.

Соответственно, мы понимаем, что количество рабочих мест в экономике определяется двумя соотношениями. Первое соотношение — это то, что невозможно объединить в одну функцию по физическим причинам: один медведь не может контролировать всю Сибирь, потому что у него не хватит скорости движения для этого контроля (пока он бегает, малина растёт). Второе соотношение — это то, что невозможно объединить алгоритмически: отдел рекламы Metro в Барнауле может иметь разную входящую и исходящую информацию с отделом рекламы Metro в Чите, потому что есть некая информация, которая в этих местах отличается, — местная специфика.

Тут мы приходим к мысли из предыдущего поста. По сути, именно то, что в математике существуют NP-задачи, решение которых можно получить только перебором, и заставляет системы — будь то интеллект или эволюция — создавать множество параллельных потоков для поиска решений. Например, генетическое разнообразие в природе или тот факт, что в R&D-отделах компаний постоянно создаются и закрываются направления: за каждым обычно стоит гипотеза, которую нужно проверить параллельно с другими. Соответственно, разнообразие мира — это следствие вычислительной сложности поиска оптимальных решений. И довольно интересно, что если бы P = NP и оптимальные решения можно было находить быстро на практике, то потребность в параллельном поиске — а значит, и в разнообразии — резко бы сократилась.

Показать полностью
1

Когда победитель не получает все

В прошлых постах я приводил примеры, которые связаны с концепцией «победитель получает всё». Эта концепция глубока и многогранна — она сильно определяет эволюцию генов, идей, алгоритмов и решений мозга. Но сегодня хотелось бы поговорить об обратной ситуации — когда победителя определить трудно с точки зрения математики.

Например, мы знаем, что в логике высказываний есть таблицы истинности. Определить минимальную формулу, описывающую таблицу истинности, — это в общем NP-трудная задача. Такие задачи можно решать перебором, а значит, решать это дело параллельным вычислением во множестве разных потоков. Эта задача сходна с задачей нахождения самого эффективного архиватора или самого лучшего алгоритма для какой-либо другой задачи. То есть как бы строение самой математики подталкивает нас к тому, чтобы искать решение во множестве параллельных структур (если мы хотим сделать это быстро).

Предположим, в мире появился самый крутой искусственный интеллект — он один, и он победил все другие искусственные интеллекты. Он записывает информацию вокруг и внутри себя и старается построить модель будущего нашей Вселенной. Из-за того что информации конечное количество, а разных возможных теорий бесконечное количество, у него всегда есть список всех моделей работы нашего мира (например, теория струн, петлевая квантовая гравитация и т. д.), у каждой из которых есть свой авторитет (вес) — то, насколько каждая модель подтверждается данными: новыми поступающими и хранящимися в истории. Если этот искусственный интеллект хочет точнее предсказывать будущее, он обязан хранить все эти модели внутри себя, потому что модель-аутсайдер может вдруг начать выигрывать, или наоборот — прошлый победитель начнёт сдавать. Если стабильно на протяжении долгого времени выигрывают чаще только определённые модели, он бы захотел удалить постоянно проигрывающие модели полностью. Но именно тот факт, что найти оптимальный алгоритм или идеальный архиватор — задачи более сложные, чем NP-трудная задача (они неразрешимы для большого класса задач), мог бы останавливать его от этого удаления.

Показать полностью

Продолжение рассуждений об ограничении сознания

Вообще концепция искусственного интеллекта, которую я написал в одном из прошлых постов, довольно простая (сходная с соломоновой индукцией). Агент следит за средой вокруг себя и записывает всё это, как видеорегистратор, в файл истории своих входов. Затем ищет программы, которые могут воспроизвести эту историю, и проверяет их через кросс-валидацию. Для самых коротких программ (регуляризация в стиле бритвы Оккама) он даёт более высокие веса в будущем предсказании, для очень длинных программ — пониже. Потом он использует это объединённое предсказание, чтобы генерировать будущее в зависимости от своих действий, и находит то будущее, которое исполняет его цель/цели, и реализует эту последовательность действий. Также он время от времени делает последовательности случайных действий — чтобы выполнять exploration вместо exploitation.

В одном из прошлых постов я указывал на то, что наш мозг через логику и авторитет определяет ценность вещей вокруг нас (например, ценность перцового баллончика или огнетушителя в машине). В том посте был довольно интересный комментатор, который указывал, что ценность определяется ещё сложностью достижения цели. Это тоже хорошая мысль, и надо будет подумать о её объединении с ценностью через логику и авторитет. Тем не менее сознание не может так, как ему хочется, поменять ценность перцового баллончика или огнетушителя без логического обоснования.

В этом смысле искусственный интеллект, который я описал, тоже ограничивает изменение своей модели мира требованием того, чтобы программа, которая описывает эту самую модель, генерировала максимально подробно файл истории входов. С одной стороны, ясно, что в этом ИИ есть явный запрет на изменение определённых областей памяти программы (нельзя переписать логику модуля предсказаний), и это явное ограничение «сознания» через права на запись в память (не каждый нейрон имеет право на связи с любым другим нейроном). С другой стороны, ясно, что это внутреннее ограничение на произвольное изменение логической картины мира без участия логики — это программное ограничение другого вида. Оно сходно с парольным ограничением (чтобы зайти на аккаунты сайтов, нужно использовать пароль, например) или задачным ограничением — чтобы сдать экзамен, нужно найти правильный ответ. Так же и с логической картиной мира — чтобы её поменять, нужно найти новую логическую картину мира, объясняющую больше, чем старая. И в этом смысле интересно: может ли сознание (если это действительно так) как-то взломать эту логическую систему мира и что вообще заставило бы систему поиска модели мира захотеть что-то взломать?

Показать полностью
1

Рассуждение о связи игр, эволюции и математики

В предыдущих постах я рассуждал о том, как юмор может рождаться в математике, в этом хотелось бы заострить своё внимание на играх.

Мы понимаем, что одна из основных задач живого существа в ходе эволюции — это выжить и добыть ресурсы для выживания. Древний человек занимался этим посредством охоты и собирательства (до того как появилось целенаправленное сельское хозяйство). Что интересно, тема многих компьютерных игр завязана на этой самой охоте и собирательстве. Например, серия The Elder Scrolls, KCD1/2, Rust, Minecraft, Far Cry. Так как главная тема — выживание, то в играх часто используются темы, связанные с необходимостью выживания: зомби-апокалипсис (Last of Us), мор (Dishonored), постапокалипсис (Metro, Atomic Heart), утопии (BioShock).

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

Желание новизны заставляет нас ходить на премьеры фильмов в кинотеатрах и покупать новые игры. И внутри игр разработчики всё время должны проектировать уровни и игры так, чтобы эта новая информация поступала к игрокам, а так как во времени эта новая информация должна быть новой относительно старой информации, то разработчикам всё время приходится усложнять задачи в играх, но делать это так, чтобы это было и не слишком сложно, и не слишком просто. Очевидно, структура того, что мы называем новой информацией, имеет прямое отношение к математике. В математике существует много разных видов получения новой информации, но вот четыре основных: 1) случайность, 2) длинные последовательности, 3) комбинаторика, 4) алгоритмы, которые эмулируют хаотичные системы.

Примеры того, как случайность постоянно даёт новую информацию игроку, можно найти даже в самых простейших увлекательных играх. К примеру, игры тетрис, змейка или пинг-понг. В тетрисе случайность — это то, какая фигура появится следующей; по сути, эта случайность постоянно кормит игрока неожиданностью, которая и обращает внимание его любопытства и желания новой информации. К таким же играм можно отнести рыбалку (любительскую), рулетки и казино. Игроки строят теории того, как действует случайность, и пытаются найти закономерности (хотя их там нет), но игра всё время очевидно их удивляет — потому что сложно построить модель случайности.

Примерами длинных последовательностей в играх может выступать проектирование таких уровней игры, как в Марио, или карты в таких играх, как Skyrim. По сути, то, как расположены объекты на этих картах или уровнях, постоянно удивляет игрока новыми открытиями и архитектурными решениями. Длинная последовательность может быть сгенерирована и случайной, и не случайной процедурной генерацией — но бывает, игроки это любят (Minecraft), а бывает, не любят (The Elder Scrolls II: Daggerfall). Интересно также, что и запоминание этих длинных последовательностей дарит игроку удовольствие. А также интересна связь этих последовательностей с музыкой — основная теория музыки в том, что музыка, чтобы быть хорошей, должна удивлять слушателя каждый новый момент времени, но при этом повторять часть старого мотива, чтобы слушатель не запутался.

Новая информация из комбинаторики связана с такими играми, как шахматы, пятнашки, кубик Рубика. Их существование связано с математической теорией групп и игр. Они дают в целом много удовольствия, но только если есть предрасположенность к играм с длинными последовательностями действий до выигрыша или есть сопутствующие источники удовольствия при их изучении. Например, игра Dota 2. Начальное удовольствие от игры всё-таки связано со скоростью реакции в поединках между героями, но если двигаться ближе к среднему уровню понимания игры, нужно запоминать и находить хорошие комбинации героев, предметов и спеллов в огромном комбинаторном пространстве (больше ста героев, больше ста предметов и по 30–40 способностей у героя). То есть новую информацию игрок тут получает потому, что в таких играх есть огромные математические структуры и есть мотивация их изучения (чем больше её знаешь, тем больше выигрываешь).

Из всех этих рассуждений появляется два интересных вопроса с точки зрения связи математики и эволюции. Первый вопрос — почему в играх часто не используется (я не могу быстро вспомнить такие примеры) четвёртый тип новой информации — алгоритмы, которые эмулируют хаотичные системы (понятно, что они используются в генераторах псевдослучайных чисел, но их свойство связи между прошлым и будущим обычно не используется). Примерами таких алгоритмов может быть алгоритм вычисления числа пи или некоторые случаи клеточных автоматов.

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

Показать полностью
1

Рассуждение о дискретных динамических системах и алгоритмах

Дискретные динамические системы бывают разные — бывают со статичными правилами эволюции, например правило +1 создаёт систему для начального нуля такую: 0, 1, 2, 3, 4...

А бывают и с динамическими правилами эволюции, например правило x(t+1) = x(t) + 1 + g, g(t+1) = g(t) * 2. Но в общем случае g(t) тоже можно считать частью динамической системы и добавить её в качестве новой переменной к динамической системе. Тогда динамическая система с любыми динамическими правилами эволюции преобразуется в динамическую систему со статичными правилами эволюции. В общем случае это означает, что не существует динамических систем с нестатичными правилами эволюции (если мы не берём внешнее управление в расчёт и недетерминистичные функции — такие как случайность). А значит, любая динамическая система обладает марковским свойством — её будущее зависит только от её текущего состояния и правил перехода, но не от истории того, как она в это состояние пришла.

Итак, у нас есть дискретные динамические системы со статичными правилами эволюции, и очевидно, что внутри них можно создавать машины Тьюринга и алгоритмы (к примеру, клеточный автомат с правилом 110, если количество переменных в динамической системе не ограничено). Мы понимаем, что раз правила статичны и внутри них нет внутренней памяти, то по сути функция перехода во времени для дискретной динамической системы выражается в виде конечных таблиц перехода из состояния t в состояние t+1. Часть этих таблиц можно представить как матрицы, умножающиеся на вектор текущего состояния (для линейных случаев эволюции), с результатом в виде вектора для t+1.

Дискретная динамическая система состоит из переменных. Для каждого значения каждой из этих переменных возможен свой направленный граф влияния во времени на состояния других переменных во времени вперёд, а также наоборот — граф значений переменных в прошлом, которые повлияли на то, что значение переменной стало таким, каким оно стало сейчас, во времени назад. То есть возможна ситуация в теории динамических систем, когда значение переменной может быть привилегированным, а значит значение другой переменной сильно зависит от значения привилегированной, а может быть ситуация, когда управление будущим состоянием равномерно распределено по переменным.

В этом смысле довольно интересно, что так как задание динамической системы (как мы уже выяснили) невозможно без статических правил, получается, статические правила являются привилегированными переменными по отношению к переменным состояния динамической системы. Состояние динамической системы не способно поменять правила эволюции. Значит, концепция управления (и победителя, который получает всё) зашита в определение любой динамической системы.

Входные (из прошлого) и выходные (в будущее) графы влияния значения одной переменной можно очевидно объединить в общий граф потенциального влияния переменной на другие переменные в прошлом и будущем. Для этого случая возможны две возможности — граф влияния для одной и той же переменной не меняется со временем, граф влияния переменной меняется со временем. Мы можем задать такой математический вопрос: как связана форма таблицы функции эволюции со строением графов влияния?

Очевидно, раз в динамическую систему можно добавлять машины Тьюринга, значит можно добавлять игры и игроков. Игры возможны такие, что состояние переменной выигрыша в игре определяется обширным статичным графом влияния, так и узким статичным графом влияния, так и неопределённым графом влияния (меняющимся со временем). Для случая обширного статичного графа влияния это означает, что состояние переменной выигрыша определяется большим числом переменных в прошлом в этой игре, а значит для алгоритма, который будет моделировать эту зависимость, нужно будет, вероятно, много памяти для этого самого моделирования. Для игры, в которой граф влияния не обширен, количество вычислений для его моделирования должно в общем случае уменьшаться (при равной временной сложности). Для случая же, когда граф влияния не определён, сложность выигрыша в игре зависит от того, насколько легко вычислить этот граф влияния для будущего. То есть как бы граф влияния в прошлом и будущем определяет, насколько много памяти нужно агенту для выигрыша в игре, и в части случаев (когда граф влияния отсечен) он связан с тем сколько временных итераций нужно сделать, чтобы получить выигрыш (но не полностью).

Показать полностью
Отличная работа, все прочитано!

Темы

Политика

Теги

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

Сообщества

18+

Теги

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

Сообщества

Игры

Теги

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

Сообщества

Юмор

Теги

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

Сообщества

Отношения

Теги

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

Сообщества

Здоровье

Теги

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

Сообщества

Путешествия

Теги

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

Сообщества

Спорт

Теги

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

Сообщества

Хобби

Теги

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

Сообщества

Сервис

Теги

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

Сообщества

Природа

Теги

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

Сообщества

Бизнес

Теги

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

Сообщества

Транспорт

Теги

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

Сообщества

Общение

Теги

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

Сообщества

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

Теги

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

Сообщества

Наука

Теги

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

Сообщества

IT

Теги

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

Сообщества

Животные

Теги

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

Сообщества

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

Теги

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

Сообщества

Экономика

Теги

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

Сообщества

Кулинария

Теги

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

Сообщества

История

Теги

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

Сообщества