структура данных для рекомбинирования дерева: родители - это перестановки - PullRequest
0 голосов
/ 14 мая 2019

Я пытаюсь создать структуру данных, которая будет описывать определенный тип рекомбинирующего дерева «комбинаций» (аналогично здесь ).

Сначала рассмотрим дерево, в котором каждый узел имеет определенный идентификатор, который описывается последовательностью, необходимой для достижения узла.В качестве примера возьмем фиксированный список Q = [1,2,3] и скомпоноваем возможные перестановки Q в дерево T на основе диаграммы последовательности S:

S =
        _0_
      /  |  \
     1   2   3
    /|  / \  |\
   2 3 1   3 1 2
   | | |   | | |
   3 2 3   1 2 1

Затем даем каждому узлу букву, A, B, C,... дерево T может быть представлено как:

T = 
        _0_
      /  |  \
     A   B   C
    /|  / \  |\
   D E F   G H I
   | | |   | | |
   J K L   M N O    

где

A = {1}
B = {2}
C = {3}

D = {1,2}
E = {1,3}
F = {2,1}
G = {2,3}
H = {3,1}
I = {3,2}

J = {1,2,3}
K = {1,3,2}
L = {2,1,3}
M = {2,3,1}
N = {3,1,2}
O = {3,2,1}

Теперь моя цель состоит в том, чтобы создать такую ​​структуру данных, чтобы дерево, котороерекомбинирует таким образом, что узлы J и L являются одним и тем же объектом (т.е. рекомбинируют), и аналогично K и N рекомбинируют, и, наконец, M и O рекомбинируют.Правило рекомбинации состоит в том, что их родители D и F, E и H, а также G и I содержат одинаковые элементы, а следующий элемент в последовательности идентичен.Более подробно, правило, приводящее к эквивалентности между J и L, состоит в том, что их "родители" D и F устанавливаются эквивалентными (= {1,2}).Я не уверен, как это выглядело бы для больших списков Q ...

У деревьев, подобных этому, есть определенное имя?Существуют ли какие-либо ресурсы, на которые я должен обратить внимание, или какие-либо места, с которых я должен начать?Спасибо!

Ответы [ 2 ]

1 голос
/ 15 мая 2019

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

Как математический объект, я бы назвал его "решеткой набора мощности" Q, и любой, кто знает словабудет знать, что я имею в виду, поскольку это полная решетка над набором мощности.

Изображение, подобное тому, которое вы рисуете, является "диаграммой Хассе" набора питания: https://demonstrations.wolfram.com/HasseDiagramOfPowerSets/

Вы также можете назвать это «минимальным детерминированным конечным автоматом» для множества перестановок, но это приводит к алгоритмам, которые намного сложнее, чем все, что вам понадобится.

0 голосов
/ 15 мая 2019

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

  • уровень 0: | Q | выберите 0 узлов
  • уровень 1: | Q | выберите 1 узел
  • уровень 2: | Q | выберите 2 узла
  • уровень 3: | Q | выберите 3 узла

и различные взаимосвязи между ними, так что 2^(N-1) * N такие ребра.

...