Я бы порекомендовал любую библиотеку, над которой работал Джефф Хир:
Я считаю, что все три проекта с открытым исходным кодом. Джефф Хир довольно хорошо ссылается на статьи в своем коде, по крайней мере, в библиотеке Prefuse. Глядя на источник Prefuse:
BalloonTreeLayout : Используется алгоритм Дж. Мелансона и И. Хермана из их исследовательской работы "Круговые рисунки корней деревьев", отчеты Центра математики и компьютерных наук, номер отчета INS – 9817, 1998.
ForceDirectedLayout.java : нет упоминаний, но есть много комментариев, описывающих, как это работает.
FruchtermanReingoldLayout.java : ссылки Юнг . На их сайте я нашел статью, в которой есть ссылки на различные алгоритмы
NodeLinkTreeLayout.java : использовался алгоритм Кристофа Буххайма, Михаэля Юнгера и Себастьяна Лейперта из их исследовательской работы Улучшение алгоритма Уокера для работы в линейное время , График, рисунок 2002 Этот алгоритм исправляет проблемы производительности в алгоритме Уокера, который обобщает метод Рейнгольда и Тилфорда для аккуратного рисования деревьев для поддержки деревьев с произвольным числом дочерних элементов в любом данном узле.
RadialTreeLayout.java : алгоритм, использованный Ка-Пинг Йи, Даниэлем Фишером, Рачной Дамия и Марти Херст в их исследовательской работе Анимированное исследование динамических графиков с радиальной компоновкой , InfoVis 2001. Этот алгоритм вычисляет радиальную компоновку, которая учитывает возможные вариации размеров, и поддерживает ограничения как на ориентацию, так и на упорядочение для облегчения плавных и понятных переходов между конфигурациями компоновки.
SquarifiedTreeMapLayout : этот конкретный алгоритм взят из работы Bruls, D.M., C. Huizing и J.J. van Wijk, "Squarified Treemaps" In Data Visualization 2000, Материалы Объединенного Еврографического и IEEE TCVG Sumposium по Визуализации , 2000, стр. 33-42. Доступно онлайн на http://www.win.tue.nl/~vanwijk/stm.pdf. Для получения дополнительной информации о TreeMaps в целом см. http://www.cs.umd.edu/hcil/treemap-history