Ho modellato un problema come un grafico composto da molti alberi. Alcuni dei nodi nel grafico possono appartenere a più di un albero. Sto cercando di descrivere un sottoinsieme di percorsi nel grafico con il minor numero possibile di nodi per archiviarli in modo efficiente. Tutti i percorsi partono da una radice e terminano in un nodo foglia.
Di seguito sono riportati alcuni esempi:
-
Supponiamo che il sottoinsieme di percorsi scelti tutto inizi dal nodo radice R. Quindi, posso descrivere tutti questi percorsi con "tutti i percorsi che iniziano da R". Determina in modo univoco i percorsi selezionati. Quindi ho solo bisogno di memorizzare R e un flag che specifica che questo nodo è una radice.
-
Uno scenario simile, ma nel caso in cui tutti i percorsi terminino in un nodo foglia specifico L. Possono essere descritti con "tutti i percorsi che terminano a L". Quindi ho solo bisogno di memorizzare L e un flag che specifica che questo nodo è una foglia.
-
Uno scenario simile, ma nel caso in cui tutti i percorsi attraversino uno specifico nodo intermedio I. Possono essere descritti con "tutti i percorsi che attraversano I". Quindi ho solo bisogno di memorizzare I e un flag che specifica che questo nodo è un nodo intermedio.
Il problema potrebbe diventare più complicato se i percorsi devono essere descritti con qualcosa di più di un semplice root / foglia / nodo intermedio. Ad esempio, potrei dover specificare molte radici, foglie e nodi intermedi. Tuttavia, voglio che la descrizione contenga il minor numero possibile di nodi.
C'è qualche algoritmo / euristica noto che posso applicare al mio problema?
Grazie mille.