Sto cercando di trovare un algoritmo per i grafici con i seguenti contenuti:
- Nodi senza bordi che ne derivano (mostrato qui come un cerchio rosso)
- Tuttiglialtrinodihannoesattamenteduebordichesiaprono(mostratiquicomediamantiverdi)
Ho bisogno di rendere questi grafici in un modo specifico:
- Ogni cerchio ha una posizione nota.
- La posizione di ogni diamante è determinata dalle posizioni dei nodi a cui è collegata .
I dati sono disposti come mostrato, ma per essere chiari
CircleNode : { Position }
DiamondNode : { NodeA, NodeB, Position = Route(NodeA, NodeB) }
Graph : { CircleNodes, DiamondNodes }
La mia soluzione funziona per la maggior parte dei grafici che ho costruito, ma i grafici più complessi che ho overflow lo stack molto prima che convergono. Penso di poter usare la maggior parte del mio codice esistente se fornisco ai nodi in profondità l'ultimo ordine: cerchi, quindi diamanti più vicini, quindi più vicini a quelli e così via. Tuttavia, non sono sicuro di come dimostrare che funzionerà con tutti i grafici di questo tipo.
Che cos'è questo tipo di problema chiamato?
Esiste un algoritmo comprovato che può essere applicato?
Nota : i diagrammi precedenti non riflettono il layout di rendering previsto, ma solo il modo in cui i dati sono rappresentati in memoria.