Укладка дерева — различия между версиями
м |
|||
Строка 1: | Строка 1: | ||
− | [[Дерево, эквивалентные определения |Дерево]] — планарный граф. | + | [[Дерево, эквивалентные определения |Дерево]] — планарный граф. Его планарность можно подтвердить, предъявив способ укладки для произвольного дерева или же, воспользовавшись [[Теорема_Понтрягина-Куратовского|теоремой Понтрягина-Куратовского]], заметить, что раз этот граф по определению не содержит циклов, значит и подграфов, гомеоморфных <tex>K_{5}</tex> или <tex>K_{3, 3}</tex> содержать не может, а значит он планарен. По формуле Эйлера <tex>V - E + F = 2, V - (V - 1) + F = 2 \Leftrightarrow F = 1 </tex>. |
== Укладка дерева == | == Укладка дерева == | ||
− | [[Файл:Layer-graph.jpg|250px|right|thumb|Пример поуровневой укладки дерева]] | + | [[Файл:Layer-graph.jpg|250px|right|thumb|Рисунок 1. Пример поуровневой укладки дерева.]] |
Существуют несколько способов укладки дерева на плоскости. | Существуют несколько способов укладки дерева на плоскости. | ||
=== Поуровневая укладка === | === Поуровневая укладка === | ||
− | Простой способ построения нисходящего плоского изображения дерева заключается в использовании его поуровневого расположения, при котором вершины глубины <tex>a</tex> имеют координату <tex>y = – a</tex>, а координаты по горизонтальной оси распределяются так, чтобы никакие левые поддеревья не пересекались с правыми. Возможна реализация за линейное время, позволяющая получить оптимальное по ширине плоское дерево в области размера <tex>O(N^2)</tex> (где <tex>N</tex> — число вершин дерева). | + | Простой способ построения нисходящего плоского изображения дерева заключается в использовании его поуровневого расположения (''layered drawing''), при котором вершины глубины <tex>a</tex> имеют координату <tex>y = – a</tex>, а координаты по горизонтальной оси распределяются так, чтобы никакие левые поддеревья не пересекались с правыми. Возможна реализация за линейное время, позволяющая получить оптимальное по ширине плоское дерево в области размера <tex>O(N^2)</tex> (где <tex>N</tex> — число вершин дерева). |
=== Радиальная поуровневая укладка === | === Радиальная поуровневая укладка === | ||
− | [[Файл:Circle_layered_tree.jpg|250px|right|thumb| | + | [[Файл:Circle_layered_tree.jpg|250px|right|thumb|Рисунок 2. Граф из рисунка 1, но уложенный радиально.]] |
− | Радиальная поуровневая укладка дерева отличается тем, что его уровни имеют вид концентрических окружностей, поддеревья занимают секторные сегменты. | + | Радиальная поуровневая укладка(''radial drawing'') дерева отличается тем, что его уровни имеют вид концентрических окружностей, поддеревья занимают секторные сегменты. |
Выбор угла <tex>\beta_p</tex> секторного сегмента для поддерева с корнем <tex>p</tex> и количеством вершин <tex>l(p)</tex> определяется следующим образом: пусть вершина <tex>p</tex> лежит на уровне <tex>C_i</tex>, тогда для каждого ее сына <tex>q</tex> имеем: <tex>\beta_q = \min(\frac{l(q)\beta_p}{l(p)}, \tau)</tex>, где <tex>\tau</tex> — это угол области <tex>F_p</tex>, определяемой пересечением касательной к точке <tex>p</tex> уровня <tex>C_i</tex> и окружностью уровня <tex>C_{i+1}</tex>. | Выбор угла <tex>\beta_p</tex> секторного сегмента для поддерева с корнем <tex>p</tex> и количеством вершин <tex>l(p)</tex> определяется следующим образом: пусть вершина <tex>p</tex> лежит на уровне <tex>C_i</tex>, тогда для каждого ее сына <tex>q</tex> имеем: <tex>\beta_q = \min(\frac{l(q)\beta_p}{l(p)}, \tau)</tex>, где <tex>\tau</tex> — это угол области <tex>F_p</tex>, определяемой пересечением касательной к точке <tex>p</tex> уровня <tex>C_i</tex> и окружностью уровня <tex>C_{i+1}</tex>. | ||
Радиальное изображение дерева часто используют для представления свободных деревьев, причем в качестве вершины, размещаемой в центре, берется одна из его центральных вершин. | Радиальное изображение дерева часто используют для представления свободных деревьев, причем в качестве вершины, размещаемой в центре, берется одна из его центральных вершин. | ||
− | [[Файл:Hv_tree.jpg|250px|left|thumb|Пример укладки двоичного дереве в виде hv-изображения]] | + | [[Файл:Hv_tree.jpg|250px|left|thumb|Рисунок 3. Пример укладки двоичного дереве в виде hv-изображения.]] |
=== hv-изображения === | === hv-изображения === | ||
− | + | Бинарные деревья можно изобразить при помощи hv-изображений (''horizontal-vertical drawing''). При этом для каждой вершины <tex>p</tex> выполняются следующие свойства: | |
− | * сын вершины <tex>p</tex> ставится в ряд за <tex>p</tex> либо по горизонтали справа, либо по вертикали вниз | + | * сын вершины <tex>p</tex> ставится в ряд за <tex>p</tex> либо по горизонтали справа, либо по вертикали вниз |
− | * | + | * два прямоугольника, ограничивающие левое и правое поддерево вершины <tex>p</tex> не пересекаются |
+ | <br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | <br/> | ||
+ | |||
+ | <br/> | ||
+ | ==Ссылки== | ||
+ | * [http://sydney.edu.au/engineering/it/~shhong/comp5048-lec2.pdf Tree Drawing Algorithms and Tree Visualisation Methods (PDF)] | ||
[[Категория: Алгоритмы и структуры данных]] | [[Категория: Алгоритмы и структуры данных]] | ||
[[Категория: Укладки графов ]] | [[Категория: Укладки графов ]] |
Версия 00:14, 25 декабря 2011
Дерево — планарный граф. Его планарность можно подтвердить, предъявив способ укладки для произвольного дерева или же, воспользовавшись теоремой Понтрягина-Куратовского, заметить, что раз этот граф по определению не содержит циклов, значит и подграфов, гомеоморфных или содержать не может, а значит он планарен. По формуле Эйлера .
Содержание
Укладка дерева
Существуют несколько способов укладки дерева на плоскости.
Поуровневая укладка
Простой способ построения нисходящего плоского изображения дерева заключается в использовании его поуровневого расположения (layered drawing), при котором вершины глубины
имеют координату , а координаты по горизонтальной оси распределяются так, чтобы никакие левые поддеревья не пересекались с правыми. Возможна реализация за линейное время, позволяющая получить оптимальное по ширине плоское дерево в области размера (где — число вершин дерева).Радиальная поуровневая укладка
Радиальная поуровневая укладка(radial drawing) дерева отличается тем, что его уровни имеют вид концентрических окружностей, поддеревья занимают секторные сегменты.
Выбор угла
секторного сегмента для поддерева с корнем и количеством вершин определяется следующим образом: пусть вершина лежит на уровне , тогда для каждого ее сына имеем: , где — это угол области , определяемой пересечением касательной к точке уровня и окружностью уровня .Радиальное изображение дерева часто используют для представления свободных деревьев, причем в качестве вершины, размещаемой в центре, берется одна из его центральных вершин.
hv-изображения
Бинарные деревья можно изобразить при помощи hv-изображений (horizontal-vertical drawing). При этом для каждой вершины
выполняются следующие свойства:- сын вершины ставится в ряд за либо по горизонтали справа, либо по вертикали вниз
- два прямоугольника, ограничивающие левое и правое поддерево вершины не пересекаются