Cтатические изображения деревьев, некоторые оценки Апанович З.В. apanovich@iis.nsk.su Тел:3309344 К. 217 Существующие оценки Тип дерева Тип Площадь изображения Корневые, произвольной степени Поуровневое, Строго восходящее Прямолинейное Сохраняющее порядок Коэффици Источник ент формы O(n2) O(n) Reingold Tilford(1981) Существующие оценки Произвол Восходящ O(nlogn) O(logn/ ьные ее (не n) бинарные строго), прямолин ейное, утяжелен ное вправо(вл ево) P.Crescenzi, G.Di Battista, A.Piperno, 1992 Существующие оценки Полные бинарные ,Фиббона ччи, AVL Восходя O(n) щее (не строго), прямолин ейное O(1) P.Crescenzi, G.Di Battista, A.Piperno, 1992 Методы Чана изображения бинарных деревьев(оценки) Плоские, строго восходящие, строго сохраняющие порядок, прямолинейные, сетчатые: «Жадный» : Высота изображения H(n) = O(n), Площадь A = O(n 1.695) «Споловинивающий» Высота H(n) = O(n), Ширина W(n) = O(n), Площадь A(n) = O(nn) = O(n3/2) «Улучшенный» Высота H(n) = O(n), W(n) = O(21/n), Самый лучший вариант при А = n/22logn. В этом случае, ширина W(n)= O(22logn)logn). Существующие оценки Бинарные Плоские, строго восходящие , строго сохраняющ ие порядок, прямолиней ные, сетчатые O(n1+) O(n1-) Chan, 2002 Рисование на основе разделителей Определение. Говорят, что граф G имеет S(n)– разделитель или является S(n)-разделимым, если он содержит только одну вершину, или же справедливы следующие два утверждения: 1. Пусть n0 - это число вершин графа G; тогда можно найти множество, содержащее не более S(n0) ребер, удаление которых разделяет граф G на два подграфа G1 и G2 с n1 и n2 вершинами так, что n1 n0/3 и n2 n0/3. Таким образом, ни один из подграфов не содержит более удвоенного числа вершин другого. 2. Как граф G1 так и граф G2 являются S(n)разделимыми. Рисование на основе разделителей Утверждение. Семейство двоичных деревьев является 1разделимым. (L. Valiant. Universality considerations in VLSI circuits, 1981) То есть, в бинарном дереве Т можно найти в точности одно ребро (разделитель e), которое разбивает дерево на два частичных дерева Т1 и Т2 такие, что n1 n0/3 и n2 n0/3 Такой разделитель e может быть найден за время O(n(T)). Рисование на основе разделителей • • • • Доказательство: выберем произвольное дерево, и пусть n – количество вершин этого дерева. Будем мысленно спускаться от корня по некоторому пути, подыскивая вершину, которая будет корневой для группы, имеющей от n/3 до 2n/3 вершин. Тогда ребро из этой вершины к ее отцу разбивает дерево на две части, каждая из которых содержит, по крайней мере, 1/3 вершин. Чтобы найти требуемую вершину, начнем с корня. Если одна из дочерних вершин корня доминирует над группой, имеющей от n/3 до 2n/3 вершин, то цель достигнута, выбираем эту вершину. Если же такой вершины нет, то должна быть дочерняя вершина, доминирующая более чем над 2n/3 вершинами. Мы переходим к этой вершине и рекурсивно повторяем построение. Иначе говоря, если мы находимся в вершине с m > 2n/3 вершин, то либо одна из дочерних вершин доминирует над группой от n/3 до 2n/3 вершин, и тогда цель достигнута, либо одна из двух вершин доминирует над более, чем 2n/3 вершинами и тогда рассмотрение повторяется для этой дочерней вершины. n = 20, n/3 = 6, 2n/3 = 13. Поиск разделителей • n = 8, • 1/3n = 8/3 = 2, • 2/3n = 2*8/3 = 5 Поиск разделителей • n = 5, • 1/3n = 1 • 2/3n = 3 Дерево разбиений • Семейство графов является S(n)-разделимым, если каждый член семейства S(n)-разделимый. • Для доказательства различных утверждений строят семейства S(n)-разделимых графов. • Часто графы семейства разбиваются на несколько подграфов, которые принадлежат этому же семейству. • Рекурсивное разбиение графа принято изображать при помощи дерева разбиений. Дерево разбиений Дерево разбиений Дерево разбиений • Дерево разбиений S имеет 2n-1 вершин, • высота (S) ≤ log3/2n • оно может быть построено за время O(n) (Guibas, Hershberger et al. Linear time algorithms for visibility and shortest path problems inside simple polygons – 1986.) Построение изображений деревьев при помощи разделителей • [A. Garg, M.T. Goodrich and R. Tamassia Planar upward drawings with optimal area,1996] • Утверждение Дано Т – бинарное дерево, имеющее N вершин. Его планарное ортогональное (не строго)восходящее неупорядоченное сеточное изображение, имеющее O(N) сгибов, площадь O(N loglogN), ширину O(logN), высоту O(N loglogN/ logN) может быть построено за время O(N). Рисование на основе разделителей Пример построения изображения дерева при помощи разделителей • • • • • • Алгоритм построения планарного ортогонального восходящего сеточного изображения бинарного дерева: Построить дерево разбиений S для Т. Удалить из S вершины, соответствующие частичным деревьям, имеющим менее, чем logN вершин, и пусть S - это результирующее дерево разбиений, имеющее O(N/logN) вершин и высоту O(log(N/logN)) = O(logN). Для каждого листа дерева S построить изображение соответствующего частичного дерева Т, называемое блоком, при помощи алгоритма Утяжеленное _влево hv-изображение. Поскольку Т имеет (logN) вершин, его изображение имеет ширину O(logN) и высоту O(loglogN). Разместить изображения блоков вертикально один над другим, отсортировав изображения снизу вверх в соответствии с внутренним порядком соответствующих вершин в S. Для каждой внутренней вершины дерева S изобразить реброразделитель s = (u,v), добавляя сгибы и дополнительные треки (столбцы или ряды сетки) по мере необходимости. Построение изображений деревьев при помощи разделителей N = 55, log2 N = 5, размер блока log2 N ≤ B ≤ 2log2 N Имеется 8 блоков, один блок имеет размер 6, а все остальные блоки – размер 7. Построение изображений деревьев при помощи разделителей • Каждый блок имеет О(logN) вершин • Изображение каждого блока имеет ширину O(logN), высоту O(loglogN), • А всего таких блоков будет O(N/ logN) • Объединение всех блоков будет иметь ширину O(logN), и высоту O(N loglogN/ logN) Построение изображений деревьев при помощи разделителей Говорят, что разделитель обходит блок Т, если его концы находятся один снизу, а другой сверху изображения дерева Т, Разделитель s трассируется при помощи одного вертикального трека либо справа, либо слева от изображения Т, в зависимости от того, справа или слева от пути, ведущего от s к корню находится Т в Т. Для каждого базового блока Т, только разделители, связанные с предками в S, могут стягивать (перекрывать) Т , так что O(logN) добавочных вертикальных треков достаточно для трассировки всех разделителей. Построение изображений деревьев при помощи разделителей Переключение происходит когда s меняет сторону между двумя блоками или же выходит из одного блока и входит в другой блок. Количество переключателей при трассировке разделителя s ограничено высотой поддерева с корнем в S. Если соответствует частичному дереву размера k, высота поддерева с корнем в S’ равна O(log(k/log N)). Значит, общее количество переключений s(n) является решением рекуррентного соотношения s(k) = s(k/c) + s(k(1-1/c)) + O(log(k/log N)); s(log N) = 0; где c лежит в диапазоне между 2 и 3. Легко видеть, что s(k) меньше или равно c1k/logN-c2log(k/logN)-c3 для подходящих констант c1,c2 c3. Поэтому общее количество переключений имеет порядок O(N/logN). Построение изображений деревьев при помощи разделителей • Объединение всех блоков будет иметь ширину O(logN), и высоту O(N loglogN/ logN) • Все разделители занимают дополнительно не более O(logN) вертикальных треков и не более, чем O(N/ logN) горизонтальных треков. Построение изображений деревьев при помощи разделителей • [A. Garg, M.T. Goodrich and R. Tamassia Planar upward drawings with optimal area,1996] • Утверждение Дано Т – бинарное дерево, имеющее N вершин. Его планарное ортогональное (не строго)восходящее неупорядоченное сеточное изображение, имеющее O(N) сгибов, площадь O(N loglogN), ширину O(logN), высоту O(N loglogN/ logN) может быть построено за время O(N). Построение изображений деревьев при помощи разделителей • [A. Garg, M.T. Goodrich and R. Tamassia Planar upward drawings with optimal area,1996] • Так же было установлено, что существует класс бинарных деревьев, которые требуют в точности площади • (N log logN) и стало быть, полученная оценка является точной • A. Garg and A. Rusu. Straight-line drawings of binary trees with linear area and arbitrary aspect ratio. Journal of Graph algorithms ad applications, 8(2):135-160, 2004. Построение изображений деревьев при помощи разделителей (u,v) не лежит на самом левом пути (u,v) лежит на самом левом пути Построение изображений деревьев при помощи разделителей • Теорема (Garg, Rusu, 2004) Дано бинарное дерево Т, имеющее n вершин. Задано два числа А и , где -это константа в диапазоне 0 < < 1, а число А удовлетворяет соотношению: n- ≤ А ≤ n . Плоское, прямолинейное сетчатое изображение площади O(n) и коэффициентом формы А может быть построено за время O(nlogn). Изображение также обладает свойством разделимости поддеревьев. • (Изображение не является ни упорядоченным, ни восходящим) Построение изображений деревьев при помощи разделителей • Алгоритм состоит из следующих шагов: • Разбить дерево: Разбивает Т не более чем на 5 частичных деревьев удалением не более двух вершин и инцидентных им ребер Каждое частичное дерево имеет не более 2/3 вершин. В зависимости от расположения разделителя (на самом левом пути или нет) получаются 2 основных случая. • Присвоить коэффициенты формы Каждому из частичных деревьев присваиваются коэффициенты формы Ak, в зависимости от выбранного коэффициента формы А и количества вершин в частичных поддеревьях Tk. Построение изображений деревьев при помощи разделителей • Нарисовать частичные поддеревья Рекурсивно конструируются допустимые изображения каждого частичного дерева Tk в соответствии с желательным для него коэффициентом формы Ak. • Объединить изображения Изображения частичных поддеревьев собираются с добавлением удаленных ранее вершин и ребер. Если А < 1 то изображения ставятся сверху вниз, а если А > 1, они ставятся слева направо. Пример изображения с линейной оценкой площади и управляемым коэффициентом формы Изображение полного бинарного дерева с 63 вершинами А=1, = 0.5. Дерево из 63 вершин,представляющее собой путь. А=1, = 0.5. Пример изображения с линейной оценкой площади и управляемым коэффициентом формы [A. Garg, M.T. Goodrich and R. Tamassia Planar upward drawings with optimal area,1996 Утверждение Дано корневое дерево ограниченной степени Т, имеющее N вершин и константа , такая что 0 < < 1. Плоское, полилинейное, восходящее, сетчатое изображение дерева Т , имеющее площадь O(N), высоту H = O(N1 -) и ширину O(N/H) может быть построено за время O(N). Пример построения полилинейного не строго восходящего изображения для дерева, имеющего 63 вершины, = 1/2 Существующие оценки Бинарн Плоское,о O(nlog (log2n/ Garg,Go ртогональн logn) ое (nloglog odrich,Ta ое,восходя n) massia, щее, 1996 неупорядо ченное, сеточное Существующие оценки Неупорядоч Невосходящие, O(n) [n- , n] A. Garg, енные прямолинейные A. Rusu, бинарные 2004 Существующие оценки Корневые Полилинейное O(n) [1/n1- , Garg ограниченно восходящее Goodrich n1-] й степени (не строго) Tamassia 1996 Радиальное изображение дерева Eades P. Drawing Free Trees. Bulletin of the Institute of Combinatorics and its Applications P. 1—36, 1992. Радиальное изображение дерева • Является вариантом поуровневого изображения • В радиальных изображениях корневая вершина (или вершина, выбранная в качестве корня) размещается в центре изображения, а все ее потомки на концентрических окружностях Ci, имеющих общий центр, по одной окружности на каждый уровень дерева. • Радиусы всех колец одинаковы( в классической постановке). Радиальное изображение дерева • Простейший алгоритм радиального размещения работает в 2 прохода: • для каждой вершины v вычисляется l(v) - количество листьев в поддереве, корнем которого является вершина v. • Корневая вершина R размещается в центре изображения и для ее размещения выделяется сектор, угол которого равен 360 градусам (1(root) = 360). Всем остальным вершинам v выделяется сектор, размер которого пропорционален количеству листьев l(v) в поддереве с корнем в вершине v по формуле: • 1(v) = [l(v) * 1(parent(v)] / l(parent (v)). Радиальное изображение дерева • l(R) = 20, (R) = 360º • S = son( R ) • l(S)=10, (S) = (36010)/20 = 180º • l(S1)= l(S2)= 5. • (S1) = (S2) = 90º • • • • L(T)=5, l(U)=2 , l(V) = 3 180º : 10 = 18º (V) = 54º , (U) = 36º (Т) = 90º. Радиальное изображение дерева Требование выпуклости секторного сегмента. Peter Eades в 1992 году заметил, что если угол секторного сегмента превышает определенный лимит, то возможна ситуация, в которой ребра с концами внутри слишком широкого сектора могут вылезти за границы сектора и пересечь кольца, соответствующие более высоким уровням. Требование выпуклости секторного сегмента • Для того, чтобы гарантировать плоскость изображения, для размещения сыновей вершины было предложено использовать выпуклое подмножество F секторного сегмента. • Касательная к окружности ci в точке v пересекает ci+1 в точках a и b • Неограниченная область F, образованная сегментом линии ab и лучами, выходящими из начала координат в точки a и b,является выпуклой. Радиальное изображение дерева • Угол 2, образуемый выпуклой областью Fv вычисляется следующим образом: • Ri и Ri+1 – радиусы окружностей Ci и Ci+1, • cos(2 /2) = Ri/Ri+1 , • 2 = 2arccos(Ri/Ri+1). final (v) = min{1(v), 2(v)}. В реальных приложениях угол 2 не используется! GnutellaVision (University of California, Berkeley MoireGraphs University of California, Berkeley Размеры вершин sin(3 /2) = r/R , 3 =2arcsin(r/R). Поуровневое и радиальное изображение Пример визуализации иерархии наследования классов в виде поуровневого дерева Поуровневое и радиальное изображение Радиальное изображение дерева(оценки) • dM – это максимальное количество сыновей любой вершины дерева T(степень дерева), • h - высота T. • В этом случае для размещения dM вершин на окружности первого уровня требуется длина окружности, равная dM, ее радиус можно оценить как O(dM), радиус последней окружности Ch равен O(h*dM) и значит, площадь Ch будет порядка O(h2dM2). • Время вычислений O(n). Радиальный алгоритм для свободных деревьев • Первоначально этот метод был предложен для свободных деревьев (деревьев без выделенного корня). • В этом случае возникает задача поиска такого корня, который минимизирует высоту дерева (и, следовательно, площадь изображения) Радиальный алгоритм для свободных деревьев • Вход Дерево Т • Выход Корень (центр) дерева: h(Т)минимальна. • Шаг 1 Если |Т| ≤ 2, то при |T| = 1 центр уже найден, а при |Т| = 2 центр находится на прямой, соединяющей две вершины • Шаг 2 Если |Т| > 2, то удалить все листья и на Шаг 1 Радиальное изображение дерева(примеры приложений) (DiskTrees, Xerox 2002) На рисунке показаны данные использования за неделю 7588 документов с сайта www.xerox.com. Центром диска является корневая страница сайта. Желтые линии показывают связь (ссылку) на удаленный контент, а красные линии изображают ссылку на добавленный контент. Яркость и ширина зеленых линий соответствует тому, насколько часто осуществлялся переход по данной ссылке. Важными компонентами данного приложения визуализаций являются: -Визуализация информации о преобладающих путях просмотра сайта на основе пользовательских переходов по гиперссылкам; - визуализация временной эволюции сайта при помощи временных срезов и методов визуального вычитания; - идентификация и визуализация существенных маршрутов. Радиальный алгоритм для изображения графов Радиальное изображение дерева(примеры приложений) Изображение динамических графов Gnutella [K.-P. Yee, D. Fisher, R. Dhamija, M. Hearst Animated exploration of Dynamic Graphs with Radial Layout, 2002) Деловые связи между семействами Флоренции Брачные связи между семействами Радиальное изображение дерева(GnutellaVision) Специфика: интерактивный просмотр графа при помощи выбора интересующей вершины и изображения ее окрестности. Переход от одного изображения к другому при помощи анимации в полярных координатах. Сохранение ориентации ребра при анимации Сохранение порядка соседей вершины при анимации 2009: http://www.spicynodes.org/index.html MoireGraphs • MoireGraphs T.J.Jankun-Kelly, K-L Ma, 2003. MoireGraphs Для всех вершин уровня i >0 соответствующий радиус rni вычисляется: rni = (1 - f)rd/2i , где i – это уровень вершины в остовном дереве, rd – радиус дисплея, f - сила фокуса (значение в диапазоне между 0 и 1).