Sono interessato all'auto-riducibilità del problema del grafico 3-Coloralibity.
Definizione del problema grafico a 3 coloralità.
Dato un grafico non orientato esiste un modo per colorare i nodi rosso, verde e blu in modo che nessun nodo adiacente abbia lo stesso colore?
Definizione di auto-riducibilità.
Una lingua è auto-riducibile se esiste una macchina per turing Oracle tale che e per qualsiasi input di lunghezza , richiede l'oracolo per parole di lunghezza al massimo .
Vorrei dimostrare in modo molto rigoroso e formale che la colorabilità di Graph 3 è auto-riducibile.
La prova di auto-riducibilità di SAT può essere usata come esempio ( auto-riducibilità di SAT ).
A mio avviso, l'idea generale di prova di auto-riducibilità della colorabilità di Graph 3 è diversa dalla prova di auto-riduzione di SAT in alcuni aspetti.
- SAT ha due scelte per ogni letterale (vero o falso) e la colorabilità di Graph 3 ha tre scelte (vale a dire, rosso verde blu).
- Le scelte di SAT letterale sono indipendenti l'una dall'altra e le scelte di colori della colorabilità di Graph 3 sono strettamente dipendenti, qualsiasi nodo adiacente deve avere un colore diverso, questa proprietà potenzialmente potrebbe aiutare a rendere meno iterazione tra tutti i colori.
L'idea generale di prova .
Indichiamo con il colore del vertice , che può assumere uno dei seguenti valori (rosso, verde, blu). Definisci il grafico da un dato grafico colorando il vertice arbitrario , assegna a' rosso 'e metti il grafico con il vertice colorato all'ingresso dell'oracolo. Se l'oracolo risponde 1, il che significa che il grafico modificato è ancora a 3 colori, salva le assegnazioni correnti e inizia una nuova iterazione, con il diverso vertice scelto arbitrariamente, vertice di coloresecondo i colori dei vertici adiacenti. se l'oracolo risponde a 0, il che significa che l'assegnazione precedente ha rotto 3 colorabilità, scegli un colore diverso dall'insieme di tre colori, ma sempre in base ai colori dei vertici adiacenti.
La precedente dimostrazione non è solida dal punto di vista matematico, la domanda è come migliorarla e renderla più formale e matematica rigorosa. Sembra che sia necessario distinguere più attentamente i casi in cui il nuovo vertice non ha bordi con vertici già colorati e quando il nuovo vertice è adiacente a vertici già colorati.
Inoltre, vorrei dimostrare che la colorabilità di Graph 3 è auto-riducibile verso il basso.
Definizione di linguaggio auto-riducente verso il basso.
dice che il linguaggio sia auto-riducibile verso il basso se è possibile determinare in tempo polinomiale se usando i risultati delle query più brevi.
L'idea sembra essere semplice e intuitiva: inizia con la colorazione di un vertice arbitrario e ad ogni iterazione aggiungi un altro vertice colorato e controlla per oracolo se il grafico è ancora tricolore, se non inverti la colorazione precedente e controlla un altro colore.
Ma come scrivere la prova in modo rigoroso e ancora più importante come trovare una codifica appropriata di un grafico.
In breve, vorrei dimostrare che la colorabilità di Graph 3 è auto-riducibile e auto-riducibile verso il basso in modo rigoroso e formale.
Apprezzerò la condivisione dei tuoi pensieri con noi.
Aggiornare:
auto-riducibilità verso il basso
L'auto-riducibilità verso il basso viene applicata al problema decisionale ed è l'oracolo che risponde allo stesso problema decisionale con input più brevi, al termine del processo di auto-riduzione verso il basso dovremmo avere le giuste assegnazioni di colore.
Ogni grafico a 3 colori con più di tre vertici, ha due vertici con lo stesso colore. Apparentemente, ci sono solo tre colori e più di tre vertici, quindi un certo numero di vertici non adiacenti potrebbe avere lo stesso colore. Se si fondono ed con lo stesso colore del risultato abbiamo ancora 3 - grafico colorabile, proprio perché, se grafo è 3 - colorabile, poi vi sono esiste destra assegnazione di tutti i vertici adiacenti a ed secondo la stesso colore di , quindi unendonon abbiamo bisogno di cambiare alcun colore di alcun vertice, dobbiamo solo aggiungere più spigoli tra vertici già correttamente colorati (so che non è la migliore spiegazione, apprezzerò se qualcuno potesse spiegarlo meglio). Ad ogni iterazione prendiamo due vertici non adiacenti del grafico , uniamo e e ottieni un grafico che è il nostro input più breve per l'oracolo. Oracle risponde se è a 3 colori o no. Ora il problema è prima dell'impostazione sull'input dell'oracolo dovrei colorare il vertice unito e testare la colorabilità di , se non è modificabile in 3 colori il colore, ma come implementarlo correttamente, ho bisogno della codifica corretta per questo.
auto-riducibilità
Innanzitutto, dovremmo verificare se un dato grafico è a 3 colori, quindi impostalo sull'input di Oracle, e Oracle risponderà se è a 3 colori, in caso affermativo, quindi avvia il processo. Qualsiasi due vertici non adiacenti può avere lo stesso colore nel grafico a 3 colori. Il processo di auto-riduzione dovrebbe essere eseguito in iterazioni, penso che possiamo iniziare da un piccolo sottografo di un dato grafico e su ogni iterazione aggiungere un altro vertice da per . In parallelo, dovremmo mantenere l'assegnazione di vertici già colorati. Sfortunatamente, non ho ancora capito completamente l'idea. Gradirei aiuto e suggerimenti.