Unire grafici simili basati esclusivamente sulla struttura del grafico?

5

Sto cercando (o sto tentando di progettare) una tecnica per la corrispondenza di nodi con grafici molto simili basati sulla struttura del grafico *. Negli esempi seguenti, il grafico in alto ha 5 nodi e il grafico in basso ha 6 nodi. Vorrei abbinare i nodi dal grafico superiore ai nodi nel grafico in basso, in modo che i nodi "0" corrispondano, e i nodi "1" corrispondano, ecc. Questo sembra logicamente possibile, perché posso farlo nel mio testa per questi semplici esempi. Ora ho solo bisogno di esprimere la mia intuizione nel codice. Esistono algoritmi o schemi stabiliti che potrei prendere in considerazione?

(* Quando dico in base alla struttura del grafico, voglio dire che la soluzione non dovrebbe dipendere dalle etichette del nodo, le etichette numeriche sui nodi sono solo per dimostrazione.)

AGGIORNAMENTO: è stato correttamente sottolineato che usando solo la struttura, la maggior parte di questi grafici non può essere risolta con una precisione del 100%. Ho aggiunto alcune considerazioni su ciascun grafico.

Sono anche interessato alle prestazioni di qualsiasi potenziale soluzione. Quanto bene saranno in scala? Posso unire grafici con milioni di nodi?

In casi più complessi, riconosco che la soluzione migliore può essere soggetta a interpretazione. Comunque, spero in un "buon" modo di unire grafici complessi.

(Questi sono i grafici diretti, la porzione più spessa di un bordo rappresenta la testa.)

Questograficoèunciclocon1nodo"collegato all'esterno". Dopo aver collegato un secondo nodo all'esterno, non è possibile determinare se il nuovo nodo (nodo 5) è collegato al nodo 1 o 3. I 4 nodi che compongono il ciclo non possono essere perfettamente uguagliati. Inodi1e5possonoesserescambiatinelgraficoinbassosenzamodificarelastruttura.Pertanto,puoisoloindovinareconunaprecisione50/50cheèilnuovonodo. Questo grafico ha simmetria in 2 dimensioni e può essere specchiato senza modificare la struttura. Significa che è possibile scambiare più nodi senza modificare la struttura. Questo ultimo grafico è l'unico per il quale è possibile identificare il nuovo nodo con una precisione del 100%.

Grazie Kirk Broadhurst, per averlo indicato.

    
posta Buttons840 12.04.2012 - 06:11
fonte

1 risposta

8

Come altri hanno sottolineato, un sito come il cstheory potrebbe essere più utile. Da quello che posso capire del tuo problema, questo suona esattamente come il problema di isomorfismo del sottografo :

Given two graphs G and H find a subgraph of H that is isomorphic to G.

Quello che hai provato ad esprimere con "matching" 0 e 1, e così via, viene definito come isomorfismo in un'impostazione teorica del grafico. Questo è il tipico concetto matematico di isomorfismi e l'isomorfismo grafico generale è un problema interessante, per il quale non è ancora chiaro se è NP-completo.

La buona notizia è che questo problema è ben noto, ben studiato e esiste un algoritmo ricorsivo che lo risolve (la carta è collegata all'articolo wp).

La cattiva notizia è che l'algoritmo è esponenziale (ad eccezione di alcuni casi speciali, che sembrano non essere applicabili al tuo problema), e infatti, lo stesso problema è NP-completo. Sì, sfortunatamente, a mio parere, per il problema dell'isomorfismo grafico non è noto se sia NP-completo, ma il problema dell'isomorfismo di sub -graph è sicuramente NP-completo.

    
risposta data 12.04.2012 - 10:07
fonte

Leggi altre domande sui tag