Esercizio - Taglio grande e derandomizzazione sul grafo di Petersen
Teoria: Metodo probabilistico - valore atteso, alterazioni e derandomizzazioneMetodo probabilistico: se un oggetto casuale ha una proprietà con probabilità positiva (o una variabile ha media mu, quindi qualche esito la raggiunge) allora l'oggetto esiste; taglio di almeno |E|/2, MAX-SAT con 7/8, limite inferiore di Ramsey R(k,k) > 2^(k/2), alterazioni (insiemi indipendenti, Ramsey), derandomizzazione con le aspettative condizionate, lemma locale di Lovász solo enunciato.Metodo probabilistico - valore atteso, alterazioni e derandomizzazione → (taglio grande, aspettative condizionate), Grafi - definizioni e proprietàGrafo G=(V,E) diretto e non diretto, grafo semplice e pesato; incidenza, adiacenza, grado; cammini, cicli, sottografi, grafi connessi e componenti connesse; alberi liberi, foreste, spanning tree e spanning forest; proprietà con dimostrazioni (somma dei gradi = 2m, m <= n(n-1)/2, alberi m = n-1, connessi m >= n-1, foreste m <= n-1).Grafi - definizioni e proprietà →.
Testo. Il grafo di Petersen ha vertici e archi: il ciclo esterno per , i raggi e il pentagramma interno . Le liste di adiacenza sono , , , , , , , , , .
- Assegnando ogni vertice a caso a una delle due parti, calcolare il numero atteso di archi tagliati e dedurne un taglio di almeno archi. Con quale probabilità un'assegnazione casuale taglia almeno archi?
- Derandomizzare: nell'ordine piazzare ogni vertice dalla parte che taglia più archi verso i vicini già piazzati (a parità, parte ). Riportare le attese condizionali dopo ogni passo e il taglio finale.
- Il taglio massimo vale . Quanti dei assegnamenti lo raggiungono?
- Mostrare con che il fattore del teorema non si può migliorare in generale.
Soluzione
1. Valore atteso. Per ogni arco la probabilità che e cadano da parti opposte è . Per la linearità e, essendo il taglio un intero, esiste un'assegnazione con taglio . La distribuzione esatta sui assegnamenti (confronto con il metodo) è
| archi tagliati | |||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
| assegnamenti |
con media . La probabilità di un taglio è .
2. Derandomizzazione. L'attesa condizionale con i primi vertici piazzati è Ogni passo sceglie la parte che massimizza gli archi tagliati verso i vicini già piazzati; con (archi tagliati se il vertice va in ) e (se va in ) l'attesa cresce di .
| vertice | vicini già piazzati | parte | attesa dopo | ||
|---|---|---|---|---|---|
| (inizio) | |||||
| nessuno | |||||
Qui conta i vicini già piazzati nella parte e quelli nella parte . Per esempio al vertice i vicini piazzati sono (parte ), (parte ), (parte ): in parte si tagliano e , cioè ; in parte solo , cioè ; si sceglie la parte con guadagno . Parti finali: parte ; parte . Taglio finale: , cioè il massimo: l'attesa non è mai scesa e il taglio è con grande margine.
3. Quanti raggiungono il massimo. Dalla tabella: assegnamenti su (cioè tagli distinti, ognuno contato con il suo complementare). Un'assegnazione casuale raggiunge con probabilità : l'algoritmo deterministico trova in un passaggio quello che a caso richiederebbe in media circa tentativi.
4. Il fattore è ottimo in generale. In ci sono archi e il taglio massimo ha una parte da vertici: archi. Rapporto taglio massimo / numero di archi: : ; : ; : ; : . Il rapporto tende a : non esiste una costante tale che ogni grafo abbia un taglio di almeno archi.
Codice di verifica
from collections import Counter
arc = [(i, (i + 1) % 5) for i in range(5)] + [(i, i + 5) for i in range(5)] \
+ [(5 + i, 5 + (i + 2) % 5) for i in range(5)]
taglio = lambda side: sum(side[u] != side[v] for u, v in arc)
dist = Counter(taglio([(m >> v) & 1 for v in range(10)]) for m in range(1 << 10))
print(sorted(dist.items()), sum(k * c for k, c in dist.items()) / 1024)
side = {}
for v in range(10): # derandomizzazione nell'ordine 0..9
vic = [u for a, b in arc for u in ((b,) if a == v else (a,) if b == v else ()) if u in side]
c0 = sum(side[u] == 1 for u in vic) # tagliati se v va in 0
c1 = sum(side[u] == 0 for u in vic)
side[v] = 0 if c0 >= c1 else 1
print(side, taglio(side))
for n in (4, 5, 10, 100):
print(n, (n * n // 4) / (n * (n - 1) // 2))Risultato: la distribuzione della tabella con media 7.5, poi {0: 0, 1: 1, 2: 0, 3: 1, 4: 0, 5: 1, 6: 0, 7: 0, 8: 0, 9: 1} 12 e i rapporti 0.667, 0.6, 0.556, 0.505.
Versione ripasso
- Valore atteso. Ogni arco tagliato con probabilità , linearità: , esiste un taglio . Esatto su assegnamenti: media , , massimo in assegnamenti () (Metodo probabilistico - valore atteso, alterazioni e derandomizzazioneMetodo probabilistico: se un oggetto casuale ha una proprietà con probabilità positiva (o una variabile ha media mu, quindi qualche esito la raggiunge) allora l'oggetto esiste; taglio di almeno |E|/2, MAX-SAT con 7/8, limite inferiore di Ramsey R(k,k) > 2^(k/2), alterazioni (insiemi indipendenti, Ramsey), derandomizzazione con le aspettative condizionate, lemma locale di Lovász solo enunciato.Metodo probabilistico - valore atteso, alterazioni e derandomizzazione →).
- Derandomizzazione (ordine ): ; ogni vertice dalla parte con più archi verso i vicini piazzati, guadagno . Attese ; parti , , , , , , , , , ; taglio (il massimo).
- Ottimalità del . : taglio massimo su archi: per , tende a (Grafi - definizioni e proprietàGrafo G=(V,E) diretto e non diretto, grafo semplice e pesato; incidenza, adiacenza, grado; cammini, cicli, sottografi, grafi connessi e componenti connesse; alberi liberi, foreste, spanning tree e spanning forest; proprietà con dimostrazioni (somma dei gradi = 2m, m <= n(n-1)/2, alberi m = n-1, connessi m >= n-1, foreste m <= n-1).Grafi - definizioni e proprietà →).
- Errori tipici. Confondere e (contano i vicini nella parte opposta); dimenticare ; credere che il metodo dia sempre il massimo (qui capita, in generale garantisce solo ).