Jump to content

Розовое дерево

(Перенаправлено из многостороннего дерева )

В вычислительной технике розовое дерево — это термин, обозначающий значение древовидной структуры данных с переменной и неограниченным количеством ветвей на узел. [ 1 ] Этот термин чаще всего используется в сообществе функционального программирования , например, в контексте формализма Бёрда-Меертенса . [ 2 ] Помимо свойства разветвленности, наиболее важной характеристикой розовых деревьев является совпадение сходства с идентичностью : два разных розовых дерева никогда не бывают двуподобными.

Название «розовое дерево» было придумано Ламбертом Мертенсом, с таким же названием и аналогичной структурой чтобы напомнить о рододендроне обыкновенном . [ 3 ]

Такие деревья мы будем называть розовыми , что является буквальным переводом рододендрона (греч. ῥόδον = роза, δένδρον = дерево), из-за сходства с габитусом этого кустарника, за исключением того, что последний в Северном полушарии не растет вверх тормашками.

Рекурсивное определение

[ редактировать ]

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

  1. Базовый объект — это элемент предопределенного основного набора значений V («верхние» значения). [ 3 ] ).
  2. ( Разветвляющийся объект альтернативно разветвляющийся объект или объект леса ) относится к одному из следующих подтипов:
    1. Набор сущностей .
    2. Последовательность . сущностей
    3. Частичное отображение заранее определенного набора имен сущностей .

    Любой из (a)(b)(c) может быть пустым. Обратите внимание, что (б) можно рассматривать как частный случай (в) — последовательность — это просто отображение начального сегмента множества. натуральных чисел.

  3. Сопряженный объект — это упорядоченная пара ( F , x ), такая что F является ветвящимся объектом, а x является элементом предопределенного набора L значений «метки». Поскольку спаривающийся объект может содержать в качестве своего компонента только ветвящийся объект, происходит индуцированное разделение на подтипы (3a), (3b) или (3c), соответствующие подтипам ветвящихся объектов.

Обычно для построения используются лишь некоторые комбинации типов сущностей. Оригинальная бумага [ 3 ] учитываются только 1+2b («разветвляющиеся последовательности» розовые деревья) и 1+2a («разветвляющиеся множества» розовые деревья). В более поздней литературе вариант 1+2b обычно представлен следующим определением:

data Tree a = Leaf a | Node [Tree a]

Розовое дерево [...] — это либо лист, содержащий значение, или узел, который может иметь произвольный список поддеревьев . [ 4 ]

Наиболее распространенное определение, используемое в функциональном программировании (особенно в Haskell ), объединяет 3+2b:

data Rose α = Node α [Rose α]

Элемент Rose α состоит из помеченного узла вместе со списком поддеревьев . [ 1 ] То есть розовое дерево представляет собой парный объект (тип 3), чей ветвящийся объект представляет собой последовательность (таким образом, типа 2b) розовых деревьев.

Иногда рассматривается даже комбинация 1+3b. [ 5 ] [ 6 ] В следующей таблице представлена ​​сводка наиболее распространенных комбинаций объектов.

Терминология Используемые сущности
Хорошо обоснованный набор (2а)
Обоснованное вложенного списка значение (2б)(1)
Хорошо обоснованное вложенного словаря значение (2в)(1)
Обоснованное вложенных данных значение (2б)(2в)(1)
L , - имя известное по принуждению (2а)(3) [ в 1 ]
Хорошо обоснованное розовое дерево в самом здравом смысле. (3)(2б) [ в 1 ]

Примечания:

  1. ^ Перейти обратно: а б Для комбинаций (2a)(3) и (3)(2b) второй заявленный тип объекта является только промежуточным - он просто используется для определения «конечного» объекта, который относится к первому указанному типу. При этом типы строго чередуются, т.е. ветвящаяся сущность может содержать в качестве своего члена только парную сущность.

Общее определение

[ редактировать ]

Общие розовые деревья можно определить через биподобие доступных заостренных мультиграфов с соответствующей маркировкой узлов и стрелок. Эти структуры являются обобщением понятия доступного точечного графа (сокращенно apg ) из необоснованной теории множеств . Мы будем использовать аббревиатуру apq для описанных ниже структур мультидиграфа. Это сокращение от «доступный заостренный колчан», где колчан является устоявшимся синонимом «мультидиграфа».

В соответствии с типами объектов, используемых в рекурсивном определении, каждому узлу apq присваивается тип (1), (2a), (2b), (2c) или (3). На apqs распространяются условия, имитирующие свойства рекурсивно созданных сущностей.

    1. Узел типа (1) является элементом заданного множества V основных значений.
    2. Узел типа (1) не является источником стрелки.
    1. Узел типа (3) выступает источником ровно одной стрелки.
    2. Целью стрелки, упомянутой в (а), является узел типа (2).
  1. Две разные стрелки с одним и тем же исходным узлом типа (2a) имеют разные цели.
  2. Узел помечен тогда и только тогда, когда он имеет тип (3). Метка принадлежит предопределённому L. множеству
    1. Стрелка помечена индексом от если его исходный узел имеет тип (2b).
    2. Стрелка помечается именем из предопределенного множества Σ , если ее исходный узел имеет тип (2c).
    3. В противном случае стрелка не имеет метки.
  3. Метки стрелок с одним и тем же исходным узлом различны.
  4. Метки стрелок с одинаковым исходным узлом типа (2б) образуют начальный сегмент .

Бисходство между apqs 𝒳 = ( X , ...) и 𝒴 = ( Y , ...) — это отношение R X × Y между узлами такое, что корни 𝒳 и 𝒴 -родственны R и для каждой пары ( x , y ) узлов , связанных с R , выполняются следующие условия:

  1. Узлы x и y имеют один и тот же тип.
  2. Если x и y имеют тип (1), то они идентичны.
  3. Если x и y относятся к типу (3), то они имеют одинаковую метку.
  4. Для каждой стрелки a из 𝒳 , исходным узлом которой является x, существует стрелка b из 𝒴 , источником которой является y и
    1. целевые узлы a и b связаны с R ,
    2. метки a и b , если они определены, идентичны.

    Условие симметрии выполняется при перестановке 𝒳 и 𝒴 .

Два apq 𝒳 и 𝒴 называются биподобными существует отношение биподобия R. , если для них Это устанавливает отношение эквивалентности на классе всех apq.

Тогда розовое дерево — это некоторое фиксированное представление класса 𝒞 apq, которое биподобно некоторому заданному apq 𝒳 . Если корневой узел 𝒳 имеет тип (1), то 𝒞 = {𝒳 }, таким образом, 𝒞 может быть представлен этим корневым узлом. В противном случае 𝒞 является правильным классом представление может - в этом случае с помощью трюка Скотта быть множеством тех элементов 𝒞 , которые имеют наименьший ранг.

В результате приведенной выше теоретико-множественной конструкции класс всех розовых деревьев определяется в зависимости от множеств V (основные значения), Σ (имена стрелок) и L (метки узлов) в качестве определяющих составляющих. Впоследствии структура apqs может быть перенесена в структуру помеченного мультиорграфа над . То есть элементы сами по себе могут рассматриваться как «узлы» с индуцированным присвоением типа, маркировкой узлов и стрелками. Класс 𝒜 ​ стрелки являются подклассом (ℛ × ℛ) ∪ (ℛ × ( Σ ) × ℛ) , то есть стрелки представляют собой либо пары источник-цель, либо тройки источник-метка-цель в зависимости от типа источника.

Для каждого элемента r из существует индуцированный apq 𝒳 = ( X , A , r , ...) такой, что r является корневым узлом 𝒳 , а соответствующие множества X и A узлов и стрелок 𝒳 образованы теми элементы и 𝒜 , доступные по пути стрелок, начинающемуся с r . Индуцированный apq 𝒳 биподобен apqs, используемому для построения r .

Карты имен путей

[ редактировать ]

Розовые деревья, которые не содержат узлов ветвления множества (тип 2а), могут быть представлены картами имен путей. Путь это просто конечная последовательность меток стрелок. Для пути стрелки a = [ a 1 , ..., an n ] (конечная последовательность последовательных стрелок) имя пути p — это соответствующая последовательность σ ( а ) знак равно [ σ ( а 1 ), ..., σ ( а п )] меток со стрелками. Здесь предполагается, что каждая стрелка помечена ( σ обозначает функцию маркировки). В общем, каждый путь стрелки необходимо сначала уменьшить, удалив все его стрелки, исходящие из узлов спаривания (тип 3).

Путь p разрешим тогда и только тогда, когда существует корневой путь стрелки a →, имя пути которого равно p . Такой . однозначно присваивается возможной немаркированной последней стрелке (полученной из узла спаривания) Целевым узлом непустого разрешимого пути является целевой узел последней стрелки соответствующего пути стрелки, исходящего из корня, который не заканчивается немаркированной стрелкой. Целью пустого пути является корневой узел.

Учитывая розовое дерево r , которое не содержит узлов ветвления множества, пути карта r представляет собой карту t , которая присваивает каждому разрешимому имени пути p его значение t ( p ) в соответствии со следующей общей схемой:

( С ) ⊇ dom( т ) т ——— ( V ∪ {⊥} ∪ L ) × Т

Напомним, что Σ — множество стрелочных меток ( — набор натуральных чисел, а Σ — набор названий стрелок) L — набор меток узлов, и V — набор основных значений. Дополнительные символы и T соответственно означают индикатор разрешаемого пути и набора тегов типа T = {'1', '2b', '2c', '3b', '3c' }. Карта t определяется следующим предписанием ( x обозначает цель p ):

т ( п ) знак равно   ( х , '1') если x имеет тип (1),
(⊥, '2b') или (⊥, '2c')   если x имеет соответствующий тип (2b) или (2c),
( , '3b') или ( , '3c') если x имеет соответствующий тип (3b) или (3c) и L — метка x .

Можно показать, что разные деревья роз имеют разные карты путей. Для «однородных» розовых деревьев нет необходимости в маркировке типов, и их карту пути t можно определить, как показано ниже:

Терминология Схема
Значение вложенного списка
⊇ dom( т ) т ——— V ∪ {⊥ }
Вложенное значение словаря С ⊇ dom( т ) т ——— V ∪ {⊥ }
Розовое дерево от Haskell, дерево над буквой L [ 7 ] [ 8 ] ⊇ dom( т ) т ——— L [ стр 1 ]
L -значное дерево, [ 9 ] дерево с надписью L [ 10 ] С ⊇ dom( т ) т ——— L [ стр 1 ]

В каждом случае существует простая аксиоматизация имен путей:

  1. dom( t ) — непустое закрытое префиксом подмножество или Σ . В случае , dom( t ) также должен быть «закрытым по левому брату», чтобы сформировать древовидный домен , см. Кодирование последовательностями .
  2. В случае вложенного списка или значения вложенного словаря, если p — это путь, который не является максимальным в dom( t ) , то t ( p ) = ⊥ . [ стр 2 ]

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

Примечания:

  1. ^ Перейти обратно: а б Если dom( t ) = M для подмножества или Σ , то карта пути t представляет собой отображение последовательностей входных символов в выходные символы машины Мура . В частности, каждая машина Мура, у которой множество входных символов M является начальным сегментом и со всеми достижимыми состояниями он похож на розовое дерево в смысле Haskell, см. пример необоснованного розового дерева. Аналогичные отношения можно наблюдать между вложенными словарями (или списками) и машинами Мили , см. Вложенный словарь .
  2. ^ Чтобы гарантировать, что вложенный список или вложенный словарь в первую очередь являются списком или словарем соответственно, условие t ( p ) = ⊥ должно быть явно обязательно выполнено для пустого пути p . Это утверждает, что такие случаи, как x = 5 не считаются «деревовидными значениями».

На диаграммах ниже показаны два примера розовых деревьев вместе с соответствующим кодом Haskell. В обоих случаях модуль Data.Tree [ 11 ] используется так, как предусмотрено пакетом контейнеров Haskell. [ 12 ] Модуль представляет розовые деревья как парные объекты по следующему определению:

data Tree a = Node {
        rootLabel :: a,         -- ^ label value
        subForest :: [Tree a]   -- ^ zero or more child trees
    }

Оба примера придуманы, чтобы продемонстрировать концепцию «совместного использования подструктур». [ 13 ] что является отличительной чертой розовых деревьев. В обоих случаях функция разметки инъективна. (чтобы метки 'a', 'b', 'c' или 'd' однозначно идентифицировать поддерево/узел), что в целом не обязательно должно выполняться. Натуральные числа (0,1,2 или 3) вдоль стрелок обозначают позицию с отсчетом от нуля, в которой дерево появляется в subForest последовательность определенного «супердерева». Вследствие возможных повторений в subForest, между узлами может быть несколько стрелок. В каждом из примеров рассматриваемое розовое дерево помечено 'a' и равен значению a переменная в коде. На обеих диаграммах дерево указано стрелкой без источника.

Хорошо построенное розовое дерево

Хорошо построенное розовое дерево
import Data.Tree
main :: IO ()
main = do
let d = Node { rootLabel = 'd', subForest = [] }
let c = Node { rootLabel = 'c', subForest = [d] }
let b = Node { rootLabel = 'b', subForest = [d,c] }
let a = Node { rootLabel = 'a', subForest = [b,c,c,c] }
print a

Неосновательное розовое дерево

Неосновательное розовое дерево
import Data.Tree
main :: IO ()
main = do
let root x = case x of
     'a' -> (x,[x,'b'])
     'b' -> (x,[x,'c'])
     'c' -> (x,[x,'a'])
let a = unfoldTree root 'a'
putStrLn (take 900 (show a)
  ++ " ... (and so on)")

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

Во втором примере представлено некрепкое розовое дерево. a построенный конструктором в ширину unfoldTree. Розовое дерево — это машина Мура, см. примечания выше. Его карта пути т : {0,1} → {'a','b','c' } определяется как t ( p ) и соответственно равно 'a' или 'b' или 'c' в соответствии с n mod 3, где n - количество вхождений 1 в p .

Связь с древовидными структурами данных

[ редактировать ]

Общее определение обеспечивает подключение к древовидным структурам данных:

Розы представляют собой древовидные структуры по модулю биподобия.

Значения древовидных структур данных

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

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

На диаграмме справа показан пример такого сопоставления структуры со значением. В верхней части диаграммы упорядоченное дерево T отображается с обозначением узлов, содержащее 23 узла. В нижней части показано розовое дерево R которое соответствует значению T. , (И в T , и в R родственные стрелки неявно упорядочены слева направо.) Существует индуцированное сопоставление поддерева с подзначениями, которое частично показано синими стрелками.

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

Тип данных дерева

[ редактировать ]

Описанное выше сопоставление значений можно использовать для пояснения разницы между терминами «деревовидная структура данных» и «деревовидный тип данных»:

Тип данных дерева — это набор значений древовидных структур данных . [ дт 1 ]

Обратите внимание, что между терминами существует 2 степени расхождения. Это становится очевидным, если сравнивать один тип данных дерева с одной древовидной структурой данных. Один тип данных дерева содержит (бесконечно) множество значений, каждое из которых представлено (бесконечно) множеством древовидных структур данных.

Например, для набора L = {'a','b','c','d' } меток набор розовых деревьев в смысле Haskell (3b) с метками, взятыми из L, представляет собой данные одного дерева. тип. Все приведенные выше примеры розовых деревьев относятся к этому типу данных.

Примечания:

  1. ^ Однако не каждый набор значений древовидных структур данных является древовидным типом данных.

Терминологические разногласия

[ редактировать ]

Как видно из приведенного выше текста и диаграмм, термин «розовое дерево» является спорным. Есть две взаимосвязанные проблемы:

  1. Неясное значение слова «узел».
  2. Несоответствие между «деревом» и «совместным использованием подструктур».

Интересно, что термин «узел» не встречается в оригинальной статье. [ 3 ] за исключением одного появления «узлов» в неофициальном абзаце на странице 20. В более поздней литературе это слово широко используется. Это можно наблюдать уже в цитируемых комментариях к определениям:

  • Розовое дерево [...] — это либо лист [...], либо узел [...] . [ 4 ]
  • Элемент Rose α состоит из помеченного узла [...] . [ 1 ]

В частности, определение розового дерева в наиболее распространенном смысле Haskell предполагает, что (в контексте дискурса) «узел» и «дерево» являются синонимами. Означает ли это, что каждое розовое дерево совпадает со своим корневым узлом? Если да, то считается ли такое свойство свойственным только розам или оно применимо и к другим деревьям? Такие вопросы остаются без ответа.

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

Различные виды структур данных, называемые в информатике деревьями, имеют в основе графы, которые в теории графов являются деревьями [...]

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

Байесовское розовое дерево

[ редактировать ]

Существует по крайней мере один вариант использования термина «розовое дерево» в информатике, при котором «совместное использование подструктур» исключено. Концепция байесовского розового дерева основана на следующем определении розового дерева:

T является розовым деревом, если либо T = {x } для некоторой точки данных x, либо T = { T 1 , ... , T n T }, где T i - это розовые деревья над непересекающимися наборами точек данных. [ 14 ]

  1. ^ Перейти обратно: а б с Берд, Ричард (1998). Введение в функциональное программирование с использованием Haskell . Хемел Хемпстед, Хартфордшир, Великобритания: Prentice Hall Europe. п. 195. ИСБН  0-13-484346-0 .
  2. ^ Малькольм, Грант (1990). «Структуры данных и трансформация программ» . Наука компьютерного программирования . 14 (2): 255–279. дои : 10.1016/0167-6423(90)90023-7 .
  3. ^ Перейти обратно: а б с д Меертенс, Ламберт (январь 1988 г.). «Первые шаги к теории розовых деревьев» (PDF) . {{cite journal}}: Для цитирования журнала требуется |journal= ( помощь )
  4. ^ Перейти обратно: а б Берд, Ричард; Гиббонс, Джереми (2020). Проектирование алгоритмов на Haskell . Издательство Кембриджского университета. ISBN  9781108491617 .
  5. ^ Скиликорн, Дэвид Б. (1996). «Параллельная реализация скелетов деревьев» (PDF) . Журнал параллельных и распределенных вычислений . 39 (2): 115–125. дои : 10.1006/jpdc.1996.0160 .
  6. ^ Зееманн, Марк. «Церковное розовое дерево» .
  7. ^ Моравец, Франк (2008). Двухэтапные подходы к формализму естественного языка . Вальтер де Грюйтер. ISBN  9783110197259 .
  8. ^ Коски, Энтони (1995). Преобразование баз данных с помощью рекурсивных структур данных (Диссертация).
  9. ^ Нивинский, Дамиан (1997). «Характеристика фиксированной точки бесконечного поведения систем с конечным состоянием» (PDF) . Теоретическая информатика . 189 (1–2): 1–69. дои : 10.1016/S0304-3975(97)00039-X .
  10. ^ Дагнино, Франческо (2020). «Коаксиомы: гибкие коиндуктивные определения с помощью систем вывода» . Логические методы в информатике . 15 . arXiv : 1808.02943 . дои : 10.23638/LMCS-15(1:26)2019 . S2CID   51955443 .
  11. ^ «Данные.Дерево» .
  12. ^ «контейнеры: различные типы бетонных контейнеров» .
  13. ^ Гиббонс, Джереми (1991). Алгебры для древовидных алгоритмов (PDF) (доктор философии). Оксфордский университет.
  14. ^ Бланделл, Чарльз; Почему, да; Хеллер, Кэтрин А. (2010). Байесовские розы (PDF) . 26-я конференция по неопределенности в искусственном интеллекте.
Arc.Ask3.Ru: конец переведенного документа.
Arc.Ask3.Ru
Номер скриншота №: 21aa5058380228ac045862a49eb681a8__1692493020
URL1:https://arc.ask3.ru/arc/aa/21/a8/21aa5058380228ac045862a49eb681a8.html
Заголовок, (Title) документа по адресу, URL1:
Rose tree - Wikipedia
Данный printscreen веб страницы (снимок веб страницы, скриншот веб страницы), визуально-программная копия документа расположенного по адресу URL1 и сохраненная в файл, имеет: квалифицированную, усовершенствованную (подтверждены: метки времени, валидность сертификата), открепленную ЭЦП (приложена к данному файлу), что может быть использовано для подтверждения содержания и факта существования документа в этот момент времени. Права на данный скриншот принадлежат администрации Ask3.ru, использование в качестве доказательства только с письменного разрешения правообладателя скриншота. Администрация Ask3.ru не несет ответственности за информацию размещенную на данном скриншоте. Права на прочие зарегистрированные элементы любого права, изображенные на снимках принадлежат их владельцам. Качество перевода предоставляется как есть. Любые претензии, иски не могут быть предъявлены. Если вы не согласны с любым пунктом перечисленным выше, вы не можете использовать данный сайт и информация размещенную на нем (сайте/странице), немедленно покиньте данный сайт. В случае нарушения любого пункта перечисленного выше, штраф 55! (Пятьдесят пять факториал, Денежную единицу (имеющую самостоятельную стоимость) можете выбрать самостоятельно, выплаичвается товарами в течение 7 дней с момента нарушения.)