Grafo n colorabile

One2
In un esercizio mi viene chiesto di trovare un algoritmo che determini il minimo numero di colori richiesti per colorare i nodi adiacenti di un grafo non orientato con colori distinti .Inoltre devo studiare la complessità dell'algoritmo e dire per quale dimensione dei dati ha senso utilizzarlo.

Non sò bene da dove iniziare a risolverlo,sopratutto non sò come determinare la complessità.
Per l'algoritmo ho provato a basarmi sul fatto che "Se G è un grafo il cui grado massimo di un nodo è d, allora G è (d+1)-colorabile",ma non sò se è giusta come base iniziale per svilupparlo

Risposte
hamming_burst
Ciao,
a parte che questo starebbe meglio nella sezione Infomatica...

questo è il problema della k-colorazione di grafi versione ottimizzazione, come è ben noto non si trovano soluzioni ottime con algoritmi in tempo polinomiale ed il problema appartiene alla classe NP (o ad un suo pari insieme, non lo ricordo). vedi http://en.wikipedia.org/wiki/Graph_coloring

Ci sono varie tecniche che approssimano una soluzione, dalla ricerca locale ad algoritmi p-approssimati (anche se questi ultimi sono parecchio complicati).
Devi vedere quale è lo scopo di scrivere un algoritmo di risoluzione, se è solo uno pseudo-codice anche superesponenziale esaustivo o limitare con tecniche specifiche il tempo operazionale. :-)

One2
Ecco,anche ame pareva fosse un problema $NP$,mi pareva strano solo che fosse nel testo di un esercizio....

hamming_burst
"One":
Ecco,anche ame pareva fosse un problema $NP$,mi pareva strano solo che fosse nel testo di un esercizio....

ok :-)
ora che sai questo, cosa vuoi fare?

One2
Ho letto più volte il testo della pagina di Wikipedia postata prima e mi pare che,se non ho capito male,non c'è un modo relativamente semplice di risolvere questo problema.Tralasciando l'algoritmo e la parte di programmazione,stò cercando di capire per quale dimensione dei dati ha senso utilizzarlo;anche in questo caso non sò cosa rispondere di preciso...

Deckard1
L'esercizio probabilmente ti chiede un algoritmo per risolvere il problema. Nessuno si aspetta che questo algoritmo sia efficiente. Prova a buttar giù un semplice algoritmo e studiane la complessità (che sarà molto probabilmente esponenziale). Dopodiché puoi ragionare su che dimensione dell'input il tuo algoritmo può risolvere il problema in tempi "umani".
NOTA: dire che un problema è in NP non vuol dire che questo problema è difficile o non è risolvibile in tempo polinomiale*. La somma tra due numeri è un problema in NP eppure è un problema risolvibile efficientemente. È l'essere NP-hard che rende un problema intrattabile.

*(un problema di decisione è in NP, informalmente, se data una possibile soluzione è possibile verificare se tale soluzione è accettabile o meno efficientemente; il problema è che non è detto che trovare una soluzione accettabile sia possibile efficientemente; es.: data una 3-colorazione possiamo facilmente stabilire se sia colorabile o meno, dato un grafo trovare una 3-colorazione accettabile, o affermare che non esiste, è invece intrattabile).

Rispondi
Per rispondere a questa discussione devi prima effettuare il login.