In matematica , specialmente nella teoria dei grafi , il teorema di Brooks dà una relazione tra il grado massimo di un grafo connesso non orientato e il numero cromatico .
Secondo questo teorema, in un grafo in cui ogni vertice ha al massimo Δ vicini , i vertici possono essere colorati con al massimo Δ colori, senza che due vertici adiacenti abbiano lo stesso colore, tranne in due casi, i grafi completi e i grafi dispari- cicli di lunghezza, che richiedono Δ + 1 colori.
Teorema - In qualsiasi grafo connesso non orientato G di massimo grado Δ, il numero cromatico χ (G) soddisfa χ (G) ≤ Δ, a meno che G non sia un grafo completo o un ciclo di lunghezza dispari, nel qual caso χ (G) = Δ + 1.
Il teorema prende il nome da R. Leonard Brooks , che ne pubblicò una prova nel 1941. La colorazione con il numero di colori descritto dal teorema di Brooks è talvolta chiamata colorazione di Brooks o colorazione . László Lovász ha fornito una dimostrazione più semplice del teorema nel 1975.
Non è molto difficile mostrare che, per ogni grafo, χ (G) ≤ Δ + 1. Infatti, ogni vertice v ha al massimo Δ vertici vicini, che nel peggiore dei casi sono tutti colorati in modo diverso. Anche in questo caso, possiamo sempre prendere il (Δ + 1) esimo colore al colore v . Il merito di Brooks è stato quello di ridurre questo aumento di 1 unità nella maggior parte dei casi.
Ci sono diverse dimostrazioni del teorema di Brooks. Possiamo ad esempio ragionare per induzione sul numero di vertici del grafo. La seguente dimostrazione procede diversamente, si basa sull'algoritmo greedy per colorare i grafici e quindi ha il merito di fornire algoritmi per colorare il grafico (è una dimostrazione costruttiva ).
Questa dimostrazione è stata presentata da Ross Churchley nel 2010 sulla base del lavoro di John Adrian Bondy nel 2003. Il finale sostituisce il ragionamento di Bondy con altri lavori in modo da non dover fare appello prima ai risultati riguardanti gli alberi di alta gamma .
In quanto segue, esaminiamo successivamente quattro casi:
Il principio, nel caso di grafi non regolari , è quello di ordinare i vertici in un certo modo, per poi colorarli uno dopo l'altro utilizzando l' algoritmo greedy .
Sia G un grafo non regolare con n vertici e grado massimo . Poiché G non è regolare, esiste almeno un vertice x di grado s strettamente minore di . Mettiamo questo vertice alla fine della schedulazione, cioè v n = x (figura 1) . I vertici adiacenti a x sono posti appena prima in questo ordinamento, cioè in v n-s , v n-s-1 ,…, v n-1 (figura 2) .
Consideriamo poi i vertici adiacenti a v n-1 che non sono già stati ordinati (figura 3) , poi quelli adiacenti a v n-2 e che non sono ancora stati ordinati, e così via fino ad ordinarli tutti, che è possibile poiché G è connesso (figura 4) .
In questo ordinamento (v 1 , v 2 ,…, v n ) , tutti i vertici hanno almeno un vertice adiacente posteriore (di indice maggiore), eccetto il vertice x . Di conseguenza, hanno tutti, eccetto il vertice x , un numero di vertici adiacenti precedenti (di indice inferiore) strettamente minore di . Anche l'ultimo vertice x ha, per sua scelta iniziale, un numero di precedenti vertici adiacenti strettamente minore di .
Abbiamo poi il colore dei vertici v i uno dopo l'altro, per i che varia da 1 a n . Ad ogni passo, il vertice v i non è stato ancora colorato. I suoi precedenti vertici adiacenti, che sono già stati colorati, hanno un numero massimo di - 1, e quindi usano a fortiori un massimo di Δ - 1 colori. Possiamo quindi prendere per il nuovo vertice, nel peggiore dei casi, il colore rimanente tra (figure da 5 a 8) .
In un grafo non biconnesso esiste almeno un punto di articolazione , cioè un vertice che, se rimosso, rende il grafo non connesso.
Consideriamo un tale grafo regolare G di grado non biconnesso e sia x un punto di articolazione di G (in rosso in figura 1).
Scomponiamo G moltiplicando il punto di articolazione come in Fig. 2. Otteniamo almeno due grafi non regolari collegati di massimo grado : infatti, i vertici ottenuti moltiplicando x sono ciascuno di grado strettamente minore di .
Si ritorna così al caso precedente e si può colorare ogni componente connesso non regolare utilizzando il metodo esposto in precedenza. Possiamo fare in modo che i vertici ottenuti moltiplicando x abbiano lo stesso colore: per questo, se necessario, scambiamo i colori all'interno dei componenti collegati.
Non resta che rimontare le parti del grafico per ottenere un grafico colorato con colori.
L'unico grafo regolare connesso di grado 0 è il grafo 0-regolare composto da un singolo vertice. Può essere colorato con 1 colore (figura 1) . Poiché rientra nella categoria dei grafi completi, soddisfa l'affermazione del teorema di Brooks.
L'unico grafo regolare di 1 grado connesso è il grafo regolare di 1 grado costituito da soli due vertici, con un bordo tra questi due vertici (figura 2) . Può essere colorato con 2 colori e anche qui siamo nel caso di un grafo completo: soddisfa l'affermazione del teorema di Brooks.
Gli unici grafici regolari collegati di grado 2 sono i cicli. I cicli con un numero pari di vertici possono essere colorati con 2 colori (figura 4) e sono necessari 3 colori per i cicli con un numero dispari di vertici (figure 3 e 5) . In entrambi i casi vale l'enunciato del teorema di Brooks.
Se il grafo G è completo e di grado , ha Δ + 1 vertici che possiamo colorare con un colore diverso. Anche in questo caso vale l'enunciato del teorema di Brooks.
Se il grafico non è completo, ordineremo di nuovo un certo numero di vertici, quindi li coloreremo usando l'algoritmo greedy. Tuttavia, non è così semplice come nel caso del grafo non regolare, perché nulla garantisce a priori di avere un colore libero quando si arriva all'ultimo vertice. Faremo quindi in modo che l'ultimo vertice colorato v abbia due vicini u e w già colorati dello stesso colore, il che garantisce che avremo almeno un altro colore libero quando si tratta di colorare v .
Sia G un grafo biconnesso e incompleto di grado Δ ≥ 3. Ci sono tre vertici u , v e w tali che
Poiché G non è completo, ci sono due vertici a e b che non sono direttamente collegati da un arco. Poiché il grafo è connesso, esiste un percorso ( a , v 1 , v 2 ,…, v p , b ) che collega a a b . Sia io il valore più grande tale che v i sia correlato a a . Considera u = a , v = v io e w = v io + 1 . Questi tre vertici verificano che u e w sono collegati a v senza essere collegati tra loro.
Poiché il grafo è biconnesso, possiamo rimuovere u o w da esso senza cessare di essere connesso: G - { u } e G - { w } sono connessi. Possiamo anche riuscire a prendere u , v e w tali che G - { u , w } sia ancora connesso.
Dimostrazione Lemma 2 In un grafo biconnesso G, di grado minimo 3 o superiore e non completo, possiamo trovare vertici u e w vicini allo stesso vertice v , ma non tra loro, in modo che G - { u , w } sia ancora connesso .Poiché il grafo non è completo, esiste almeno un vertice a che non è adiacente a tutti gli altri.
Se G - { a } è biconnesso, prendiamo, come nella dimostrazione del Lemma 1, u = a e w uguale a qualsiasi vertice a distanza 2 da a . Poiché G - { a } è biconnesso, possiamo rimuovere w da esso senza perdere connettività e G - { u , w } è connesso.
Consideriamo ora il caso in cui G - { a } è connesso, ma non biconnesso. Ha quindi dei punti di articolazione (in rosso nella figura) . Sia z uno di questi punti di articolazione. G - { a , z } non è connesso, è addirittura suddiviso in almeno due componenti connesse disgiunte. Ognuna di queste componenti connesse V 1 , V 2 ,… V n può a sua volta essere tagliata in componenti biconnesse collegate dai punti di articolazione. Questi componenti biconnessi formano un albero con radice z .
In G, a ha un vicino in ciascuna delle foglie alla fine di questo albero. Infatti, se togliamo il punto di articolazione z i a cui è collegata la foglia, se non fosse stato collegato ad una all'altra estremità, G - { z i } sarebbe estranea, che è impossibile, poiché G è biconnected.
Prendiamo u in una delle foglie alla fine di V 1 e w in una delle foglie alla fine di V 2 e sia v = a . I vertici u e w sono molto vicini a v . Non sono adiacenti, poiché sono presi da diversi componenti collegati.
I vertici u e w essendo presi in componenti biconnesse di G - { a } pur essendo diversi dai punti di articolazione di G - { a }, G - { a , u , w } rimane connesso. Poiché, inoltre, il grado di a è maggiore o uguale a 3, esiste un terzo vertice che consente di connettere a a G - { a , u , w }. Il grafo G - { u , w } è quindi connesso.
Poiché G - { u , w } è connesso, possiamo ordinarlo come nei casi precedenti assegnando a v il numero più forte. Quindi coloriamo G come segue:
Quando arriviamo a colorare l'ultimo vertice v , abbiamo la garanzia che rimanga un colore libero, poiché i suoi due vicini u e w hanno lo stesso colore (figura 2) .
Una generalizzazione del teorema di Brooks si applica alla colorazione delle liste : dato un grafo non orientato e connesso di massimo grado che non è né un grafo completo né un ciclo di lunghezza dispari, e una lista di Δ colori per ogni vertice, è possibile scegliere un colore per ogni vertice preso nella sua lista in modo che due vertici adiacenti non abbiano mai lo stesso colore. In altre parole, il numero cromatico di lista di un grafo connesso non orientato non è mai maggiore di , tranne nel caso di un grafo completo o di un ciclo di lunghezza dispari. Questo è stato dimostrato da Vadim Vizing nel 1976.
Con alcuni grafici, abbiamo anche bisogno di meno Δ colori. Bruce Reed mostra che Δ - 1 colori sono sufficienti se e solo se il grafico non ha Δ- clic quando è sufficientemente grande. Per grafi senza triangolo (senza un insieme di tre vertici adiacenti in coppia), o più in generale per grafi in cui l' intorno di ciascun vertice è sufficientemente vuoto , sono sufficienti i colori O (Δ / log Δ).
Il grado di un grafico compare anche nei limiti superiori del numero di colori richiesti per altri tipi di colorazione:
Una colorazione con Δ colori, o anche una colorazione per lista con Δ colori, di un grafo di massimo grado Δ può essere ottenuta in un tempo lineare (proporzionale al numero di vertici e spigoli). Sono noti anche algoritmi efficienti che consentono di trovare le macchie di Brooks utilizzando l'elaborazione parallela o distribuita.
(it) Eric W. Weisstein , " Brooks' Theorem " , su MathWorld