Есть ли в Java тип данных Directed Acyclic Graph (DAG) и следует ли его использовать?

Я моделирую подсистему питания на Java. Простая база данных SQLite содержит набор модулей, заменяемых строкой (LRU), и соединений между ними. Я пишу API модели мощности, чтобы упростить запросы к хранилищу данных, используя шаблоны и репозитории DDD.

Я ищу подходящую коллекцию Java для моделирования результатов запроса. В потоке соединений LRU есть несколько особых случаев, которые необходимо смоделировать:

  1. Изначально существует блок распределения питания (PDU) с несколькими портами (
  2. Типичные соединения в Поток мощности включает в себя LRU с одним источником, где исходит питание, и с одним LRU приемника, где мощность истощается.
  3. Однако в нисходящем направлении может быть один LRU источника, подключенный к нескольким LRU приемника.
  4. В потоке мощности нет циклов.

Включение пункта 3 выше заставило меня задуматься о возврате результатов запроса из API в виде дерева. Но единственное дерево, которое я нашел в java.util, - это парное красно-черное дерево TreeMap , которое не кажется подходящим (или я не могу придумать подходящую абстракцию для моделирования мощности. потоки с ним.) Я также рассматривал LinkedHashSet , но я не уверен, что он уместен. Мне не ясно, как узел в этой структуре будет указывать на нисходящие узлы.

На данный момент меня не беспокоит эффективность во времени или пространстве. Мой API просто должен работать, предоставляя информацию о подключении питания внешним клиентам (т. Е. Уровень представления Java-приложения Power Monitoring & Control). Также нет ограничений на использование типов / библиотек данных с открытым исходным кодом.

Говоря языком информатики, я действительно ищу направленный ациклический граф (DAG).

Есть ли реализация этого для Java? Правильно ли я считаю, что группа DAG подходит для моего сценария?

6
задан retrodrone 6 June 2011 в 16:10
поделиться