Estoy modelando un subsistema de energía en Java. Una base de datos SQLite simple contiene un conjunto de unidades reemplazables por línea (LRU) y las conexiones entre ellas. Estoy escribiendo una API de Power Model para simplificar las consultas del almacén de datos, usando patrones y repositorios de DDD.¿Hay algún tipo de datos de Gráfico Acíclico Dirigido (DAG) en Java, y debería usarlo?
Buscando a una colección Java adecuada para modelar los resultados de la consulta. Hay algunos casos especiales en una corriente de conexión LRU que tienen que ser modelada:
- Inicialmente, hay una unidad de distribución de energía (PDU) con múltiples puertos (< = 16) que alimenta de energía a aguas abajo LRU.
- conexiones típicas en una corriente de energía implican un único LRU fuente donde se origina de potencia y un solo Sink LRU donde se drena de energía.
- Sin embargo, en sentido descendente podría haber una única fuente LRU conectada a múltiples LRU de receptor.
- No hay ciclos en un flujo de potencia.
La inclusión del n. ° 3 anterior me ha llevado a pensar en devolver los resultados de la consulta de la API como un árbol. Pero el único árbol que he encontrado en java.util es un árbol rojo-negro emparejado con valor-clave TreeMap, que no parece apropiado (o no puedo pensar en una abstracción apropiada para modelar flujos de energía con él). También he estado considerando un LinkedHashSet, pero no estoy seguro de que sea apropiado tampoco. No tengo claro cómo un nodo en esta estructura apuntaría a los nodos descendentes.
no estoy preocupado por la eficiencia en el tiempo o en el espacio en este punto. Mi API solo tiene que funcionar al suministrar información de conexión de alimentación a clientes externos (es decir, el Nivel de presentación de una aplicación de control & Control de energía basada en Java). Tampoco hay restricciones en el uso de tipos de datos/bibliotecas de código abierto.
En el lenguaje de la informática en general, lo que realmente estoy buscando es una Dirigida-acíclica-Graph (DAG).
¿Hay una aplicación de esa para Java? ¿Estoy en lo correcto si un DAG es apropiado para mi caso?
¿Para cada nodo un mapa o un mapa para todo el gráfico? –