Algoritmo di canonizzazione grafico semplice


8

Sto cercando un algoritmo che fornisca una stringa canonica per un dato grafico colorato. Vale a dire. un algoritmo che restituisce una stringa per un grafico, in modo tale che due grafici ottengano la stessa stringa se e solo se sono isomorfi.

In particolare, sto cercando un algoritmo semplice che sia facile da implementare con prestazioni ragionevoli sulla maggior parte dei grafici (caso peggiore super-polinomiale, ovviamente). Mi aspetto grafici piccoli, quindi le prestazioni non devono essere stellari, ma abbastanza buone.

Sfortunatamente, la maggior parte delle cose che ho trovato sono molto complesse e più interessate ad esprimere profonde connessioni matematiche che non semplicemente descrivere l'algoritmo. Temo di non avere il tempo di immergermi così in profondità. Qualcuno può darmi una scorciatoia?

Spero in qualcosa di simile all'algoritmo di Floyd-Warshall. Non ottimale, ma abbastanza buono e facile da implementare.


I grafici sono etichettati in modo coerente? Se sì, basta scrivere tutti i bordi e ordinare l'elenco.
adrianN,

Mi dispiace. I vertici e i bordi sono etichettati, ma non in modo univoco. Ogni etichetta può verificarsi tempi multipli. Immagino che la frase matematica sia "colorata" anziché etichettata. Modificherò la domanda.
Peter,

"caso peggiore NP, ovviamente" - solo per essere chiari: esiste un algoritmo del tempo polinomiale (deterministico) noto per l'isomorfismo grafico, quindi il meglio che ci si possa aspettare è una soluzione super-polinomiale. E sì, il problema è in NP. Vedi qui per i dettagli su queste nozioni.
Raffaello

@Raphael Hai ragione, terminologia più inesatta. Il caso peggiore è super polinomiale. Esistono tuttavia algoritmi polinomiali di medio caso, quindi almeno dovrebbero essere realizzabili.
Peter,

@Raphael Il meglio che puoi aspettarti è un algoritmo veloce che funziona per la maggior parte dei grafici.
Yuval Filmus,

Risposte:


3

Brendan McKay e Adolfo Piperno hanno scritto un documento di indagine su questa domanda nel 2013. Presentano diversi programmi per computer efficienti che possono canonizzare molti grafici più velocemente di quanto si possa immaginare. Non è necessario (e inutile) implementare questi algoritmi da soli: sono disponibili online, anche come codice sorgente.


C'è una riduzione tra GI colorato e GI (con costante aumento moltiplicativo dato un numero costante di colori), o forse gli algoritmi stessi potrebbero essere modificati.
Yuval Filmus,

Puoi descriverne uno qui come dare una risposta completa?
Raffaello

3
Per ogni colore, aggiungi un vertice extra. Collega ciascun vertice originale al vertice che rappresenta il suo colore aggiungendo un bordo. Assicurati che i gradi dei vertici di "colore" siano unici - in caso contrario, aggiungi anelli o altri bordi falsi. A proposito, sono meno che contento del documento del sondaggio McKay / Piperno: è un sondaggio sulla loro stessa ricerca e i confronti che fanno con altri strumenti sono sui parametri che considerano interessanti. Omettono importanti sviluppi recenti e quasi tutti i parametri di riferimento derivati ​​da applicazioni non teoriche, che influiscono sui risultati empirici.
Igor Markov,

2

Ho finito per implementare l'algoritmo Nauty, ma nel farlo, ho trovato una risposta alla mia domanda. Nauty estende questo algoritmo di base con molte euristiche complicate:

Dato un piccolo grafico G di lunghezza n:

  1. Ripassa tuttopermutazioni dei suoi vertici.n!
  2. Genera una rappresentazione in formato stringa di ciascuno (uno a uno).
  3. Definisci alcuni ordinamenti canonici delle stringhe e ricorda la stringa più piccola trovata.

Questo algoritmo è , Ma per i piccoli grafici dovrebbe funzionare bene.O(n!)

Nauty estende questo algoritmo principalmente potando lo spazio di ricerca dei grafici da considerare, quando si cerca quello con la rappresentazione di stringa più piccola.


1
I grafici devono essere veramente piccoli se questo approccio a forza bruta è plausibile. Ancheè maggiore di . 15!1012
David Richerby,

1
@DavidRicherby Assolutamente. Tuttavia, ci sono casi d'uso, come l'analisi del motivo, in cui questa operazione viene eseguita solo su grafici di dimensione 3 o 4. In realtà, non so se trovare un sottografo isomorfo canonico possa essere raggiunto in tempi ragionevoli per i grafici oltre 15 nodi (anche se lo stesso isomorfismo del sottografo è ormai noto per essere molto vicino al polinomio)
Peter,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.