Skip to content

Instantly share code, notes, and snippets.

Show Gist options
  • Save igorevichnikitos5/2311d63f649f8bc662ecb99128a4ddbc to your computer and use it in GitHub Desktop.
Save igorevichnikitos5/2311d63f649f8bc662ecb99128a4ddbc to your computer and use it in GitHub Desktop.

Как мы подобрались к определению “всего”

Вступление

Бодрого тебе утра, Хабр! Новый день - новая тема для размышлений и обсуждений! Прокачаем как следует мозг? Сегодня на повестке дня -
дискретная математическая модель “Ассоциативная сеть дуплетов”. Скажу сразу: я не строю из себя гения, я из той категории людей, кто “воодушевлённо заинтересован”, поэтому не собираюсь заставлять вас блуждать по словесным лабиринтам. Для меня главное - донести мысль, просто и понятно, местами даже весело. Итак, что же из себя представляет “Ассоциативная сеть дуплетов”, почему эта модель настолько хороша, что вполне вероятно сможет захватить мир?

Описание

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

Иллюстрация дуплетов

Технические тонкости

Определения терминов, которые будут довольно часто нам попадаться: Идентификатор: это уникальные метки или элементы в наборе данных, представленные набором «L». Дуплет: упорядоченная пара идентификаторов, представленная набором «T₂». Функция net²: L → T₂: это механизм, который управляет нашей сетью, связывая идентификатор из «L» с дуплетом из «T₂».

Определение и использование дуплетов:

Исходя из терминологии, дуплет представляет собой упорядоченную пару идентификаторов, например (x, y). Функция net²: L → T₂ отображает идентификатор «L» и связанный с ним дуплет «T₂». Это позволяет каждому идентификатору соответствовать паре других идентификаторов, образуя основу нашей ассоциативной сети. Например, представим, что у нас есть набор “Знакомые”. И есть пара идентификаторов: (Алиса, Боб). Соответственно, дуплетом будет являться (Алиса, Боб). Это означает, что Алиса связана с Бобом в этой структуре данных.

Вариации дуплетов и их особенности

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

Иллюстрация замкнутого дуплета

Этот вид дуплетов может инкапсулировать рекурсивные процессы и хранить данные, которые по сути являются самостоятельными. Пример самосвязанного дуплета: (Атом→(Ядро, Электроны)). При дальнейшем разложении этой сети дуплетов можно получить следующие два дуплета: 1.(Электроны→(Электроны, Электроны)) 2. (Ядро→(Протоны, Нейтроны)) Электроны в данном примере выступают в роли самосвязанных частиц, так как являются неделимыми (Квази-частицы не учитываются).

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

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

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

  • (Рука →(Маркер, Рука)) - Ваша рука взаимодействует с маркером и с собой (поскольку ощущает обратное действие).
  • (Маркер →(Рука, Маркер)) - Маркер взаимодействует с вашей рукой и с собой (поскольку на него действует сила). Мы наблюдаем здесь циклическую связь, иллюстрирующую взаимное взаимодействие между вашей рукой и маркером. Это отношение может быть эффективно моделировано с помощью ассоциативной сети дублетов.

Определение и использование триплетов:

Триплет расширяет концепцию дуплетов на более высокие измерения. Его можно рассматривать как (x →((y →(a, b)), z)). Триплет представляет собой двойку дуплетов, которые выглядят следующим образом: 1.(a, b) - имеет идентификатор “y” 2.(y, z) - имеет идентификатор “x” и представляет собой сокращённый триплет Если дуплет - это “начало” и “конец”, то триплет - “начало” и “конец” и их отношение друг к другу. Прелагаю рассмотреть использование триплета в следующей ситуации. Для начала определяем «a» как Фобос , «b» как Деймос и «c» как «гравитация» . В данном случае, этот триплет в системе ассоциативной сети дуплетов ((a, b), c) или ((Фобос, Деймос), оказывает гравитационное воздействие) делится на два разных дуплета :

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

Однако третий элемент в триплетах может представлять собой не только отношения остальных двух, но и например следующий тип: Оставив «а» как Фобос, а «b» как Деймос , давайте изменим букву «с», чтобы обозначить их классификацию как «марсианские спутники».

Тогда тройку ((a, b), c), или ((Фобос, Деймос), Марсианские спутники) можно распаковать в два дуплета : Первый дуплет (a, b) — (Фобос, Деймос) обозначает взаимодействие лун. Также представим его в виде цифры 1. Второй дуплет (1), c) - ((Фобос, Деймос), Марсианские луны) классифицирует оба объекта как «марсианские луны».

А сейчас начнётся самое интересное: Имея индикатор Фобоса и Деймоса, мы можем в дальнейшем придать ему любое возможное значение. Ещё раз, значением “с” может быть что угодно. Таким образом, бесконечное количество кортежей можно бесконечное количество раз связать с другим бесконечным количеством кортежей.

Многоликие сложные структуры

Еще одно свойство дуплетов - способность описывать сложные структуры (по своей сложности превосходящие сами дуплеты) различными вариациями. Предлагаю рассмотреть кортеж длины три или тройку (a, b, c).

В Ассоциативной сети дуплетов мы можем представить этот триплет двумя разными способами: 1.((a, b), c): Здесь первый дуплет (a, b) связан с «c» . 2.(a, (b, c)): Здесь «a» связана с дуплетом (b, c).

Как уже было замечено ранее, количество уникальных способов упорядочить n идентификаторов во вложенные дуплеты значительно возрастает с увеличением n. Таким образом, при увеличении кортежа до четырёх элементов, мы можем представить данную структуру в виде вложенных дуплетов пятью уникальными способами: 1.(((a, b), c), d) 2.((a, b), (c, d)) 3.((a, (b, c)), d) 4.(a, ((b, c), d)) 5.(a, (b, (c, d)))

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

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

Неограниченная расширяемость:

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

https://en.wikipedia.org/wiki/Tuple#Tuples_as_nested_ordered_pairs

Основа основ

Хотя ассоциативная сеть кортежей определённой длины «N» обеспечивает основу для моделирования отношений, её практические последствия действительно становятся важными, когда мы рассматриваем кортежи произвольной длины. Реальные данные и отношения сложны и часто непредсказуемы, с множеством связей разной длины и глубины.

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

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

Таким образом, кортеж, состоящий из восьми элементов (a, b, c, d, e, f, g, h), имеет вид: ((a, b), (c, d), (e, f), (g, h)), квадруплет (ab, cd, ef, gh) - ((ab, cd), (ef, gh)) и дуплет (abcd, efgh).

Разве это не обычная Ассоциативная модель?

Ассоциативная модель данных, предложенная Саймоном Уильямсом, основана на системе тройных связей, известных как модель "Субъект-Глагол-Объект". Эта система позволяла связям ссылаться на другие связи, облегчая тем самым построение сложной структуры предложений и обеспечивая эффективную работу с данными на "семантическом уровне". Однако, эта модель использует "точки" ("элементы"), к которым привязывались текстовые описания или соответствующие значения этих элементов.

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

Например, мы хотим создать базу данных о книгах и отношениях между авторами. В Ассоциативной модели, нам нужно было бы создать комплексные структуры, чтобы выразить связи такого рода, как "Толстой написал “Войну и мир”, это бы выглядело как (Толстой - написал - (“Война и мир”)).

В Ассоциативной сети дуплетов, мы можем просто создать связь, которая выглядит так: (написал: (Толстой, “Война и мир”)). Здесь глагол "написал" выступает в качестве внешнего связующего звена вне внутреннего дуплета (Толстой, 'Война и мир’), и сам дуплет явно указывает на связь между Толстым и его трудом.

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

Разве это не обычная Ассоциативная модель?

Ассоциативная модель данных, предложенная Саймоном Уильямсом, основана на системе тройных связей, известных как модель "Субъект-Глагол-Объект". Эта система позволяла связям ссылаться на другие связи, облегчая тем самым построение сложной структуры предложений и обеспечивая эффективную работу с данными на "семантическом уровне". Однако, эта модель использует "точки" ("элементы"), к которым привязывались текстовые описания или соответствующие значения этих элементов. В нашем же случае, Ассоциативная сеть дублетов использует "связи", которые могут ссылаться на самих себя и на другие связи. Это упрощает модель, так как исключает необходимость в "точках" или "элементах". Эта модель обеспечивает ещё более гибкую и универсальную схему связей, позволяя эффективно представлять и обрабатывать усложненные структуры данных. Как показали эксперименты, текстовые последовательности могут храниться внутри "связей", что увеличивает функциональность сети. Например, мы хотим создать базу данных о книгах и отношениях между авторами. В Ассоциативной модели, нам нужно было бы создать комплексные структуры, чтобы выразить связи такого рода, как "Толстой написал “Войну и мир”, это бы выглядело как (Толстой - написал - (“Война и мир”)). В Ассоциативной сети дуплетов, мы можем просто создать связь, которая выглядит так: (написал: (Толстой, “Война и мир”)). Здесь глагол "написал" выступает в качестве внешнего связующего звена вне внутреннего дуплета (Толстой, 'Война и мир’), и сам дуплет явно указывает на связь между Толстым и его трудом. Таким образом, Ассоциативная сеть дуплетов упрощает и делает гораздо более непосредственным выражение подобных сложных отношений, при этом сохраняя ёмкость и гибкость для представления дополнительных связей и сложных структур.

Сравнение с другими моделями

Предлагаю проанализировать Ассоциативную сеть дуплетов, сравнив ее с другими известными дискретными моделями данных:

Реляционные базы данных.

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

иллюстрация

Базы данных графов.

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

иллюстрация

Древовидные структуры

— это иерархические структуры данных, которые организовывают информацию в виде дерева с корнем, узлами и ветвями. Примерами могут служить файловые системы, иерархические базы данных или HTML-структуры веб-страниц. Хотя они идеально подходят для представления однозначных, “верхних и нижних” отношений, древовидные структуры обычно не могут эффективно работать со сложными отношениями, проходящими через различные уровни иерархии. Здесь на сцену выходит Ассоциативная сеть дуплетов с её способностью поддерживать сложные отношения на основе пар ассоциаций. Сеть дуплетов способна отображать множество взаимосвязей между узлами разного уровня, преодолевая ограничения древовидных структур в представлении сложных и разветвлённых отношений.

иллюстрация

RDF (Resource Description Framework)

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

иллюстрация

Примеры реального использования Ассоциативной сети дуплетов

Deep

Самый популярный пример реализации Ассоциативной модели, которую я смог найти. Deep - универсальная no-code, low-code платформа, использующая PostgreSQL через Hasura. Deep позволяет программировать любыми языками программирования и описывать любую возможную концепцию. Такие возможности он имеет благодаря тому, что его ядро основано на Ассоциативной сети триплетов (Модель Отношений). Каждый объект в Deep - это идентификатор, который может ссылаться на себя или другие идентификаторы. Система из идентификатора, что ссылается на другой идентификатор называется связью. Фактически это триплет, расширяемый n-ое количество раз и позволяющий создавать пакеты из которых уже можно создавать те же бизнес-решения.

Вывод

Ассоциативная Сеть Дуплетов расширяет границы представления и обработки данных, руководствуясь принципами "все со всем можно связать/сгруппировать/представить как угодно". Эта модель позволяет нам гибко определять и переопределять отношения в сложных системах, делая их доступными для обработки машины. Ключевым аспектом Ассоциативной Сети Дуплетов является её способность описывать любую другую математическую дискретную модель. Это означает, что мы можем воспроизвести структуру и преимущества любой другой модели. Например, если другая модель хорошо описывает определённый тип данных или отношений, мы можем использовать эти же силы внутри ассоциативной сети дуплетов. Перед нами - уникальный инструмент для работы со сложными данными. С теоретической точки зрения, Ассоциативная Сеть Дуплетов может также служить универсальным языком для любых дискретным математических моделей и не только.

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

Если вы почувствовали энтузиазм присоединится к разработке или хотите задать вопросы, то ждём вас на нашем сервере в дискорд! Также я буду рад любым вашим заметкам по данной статье, оставляйте пожелания в комментариях!

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment