Деревья/графы, как представить нескольких родителей и детей?

Надеюсь, вы поможете мне с некоторыми техническими вопросами по графикам/деревьям.

Я пытаюсь отобразить создание объектов в системах. Это действительно древовидная структура.


Есть интересные требования.

а) У одного узла может быть много потомков. Скажем 20. Может больше. т.е. одна библиотека может использоваться многими объектами.

б) Дочерний узел может иметь много родителей. Скажем до 20. т.е. многие библиотеки используются одной процедурой или объектом

c) Конкретный узел может появляться более чем в одном месте. т.е. общая функция печати или ведения журнала вызывается во многих процедурах

Примечание. Это всего лишь пример в технических терминах, я надеюсь, вы поймете. Это НЕ проблема, которую мне нужно моделировать. Нет нужды это обсуждать.


Поразмыслив над этим, я понял, что это не простое двоичное дерево или связанный список.

1) В какой структуре данных я могу сохранить все данные?

2) Как я могу создать график этого в java?

3) Какое бесплатное графическое программное обеспечение с открытым исходным кодом может построить такое дерево? Такие как Neo4j

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

4) Какие-нибудь хорошие веб-сайты или учебные пособия по этому вопросу?

Большое спасибо!


person Condor    schedule 27.12.2011    source источник


Ответы (3)


Ознакомьтесь с prefuse. Это старо, но это работает. Однако вам придется потратить немного времени, чтобы научиться его использовать. Как только вы туда доберетесь, вам останется только создать объект prefuse.data.Graph и заполнить его узлами и их соседями, а затем создать визуализацию.

Если вы открыты для другого решения, проверьте d3.js — нарисуйте график с помощью javascript на элементе SVG в ваш браузер.

person holygeek    schedule 27.12.2011

Если речь действительно идет об объектах, то может помочь UML. Он предназначен для создания графиков отношений объектов. Существует множество бесплатных инструментов UML. Я бы скачал один и посмотрел, сможете ли вы втиснуть в него свое приложение.

person ccleve    schedule 27.12.2011

JGraphT может представлять структуру вашего графа и может использовать JGraph для визуализации.

Пример визуализации см. на этом.

person hypermush    schedule 27.12.2011