Esercizio - Accoppiamento perfetto con la matrice di Edmonds e Schwartz-Zippel
Testo. Un grafo bipartito ha vertici a sinistra e a destra . Si associa a ogni arco una variabile e si costruisce la matrice con se l'arco esiste e altrimenti (matrice di Edmonds); un accoppiamento perfetto esiste se e solo se .
- Grafo con archi . Scrivere , (come polinomio) ed elencare gli accoppiamenti perfetti.
- Grafo con archi (senza ): e accoppiamenti.
- Grafo con archi : e perché non c'è accoppiamento.
- Algoritmo randomizzato: i valori sono scelti in . Valutare nel punto , , , , , per e . Qual è la probabilità di errore, con il bound di Schwartz-Zippel e in modo esatto per ?
Teoria: Union bound e verifica randomizzata - identità polinomiali e prodotti di matriciSpazi discreti richiamati; inclusione-esclusione (con le troncate di Bonferroni) e union bound Pr[unione] ≤ somma, valido senza indipendenza e stretto quando gli eventi sono rari (collisioni: C(n,2)/m). Principio delle decisioni differite: si fissa tutto tranne una scelta casuale e si limita la probabilità su quella. Lemma di Schwartz-Zippel: un polinomio non nullo di grado totale d, valutato in un punto di S^n scelto uniformemente, si annulla con prob ≤ d/|S| (induzione sul numero di variabili); test di identità polinomiale con errore unilaterale, ripetuto (d/|S|)^k. Freivalds: per verificare AB=C si controlla A(Br)=Cr con r in {0,1}^n in tempo O(n^2), errore ≤ 1/2 (stretto), 2^-k con k prove. Fingerprint: due stringhe di n bit si confrontano con a mod p per un primo casuale p ≤ M, errore ≤ n/π(M).Union bound e verifica randomizzata - identità polinomiali e prodotti di matrici → (accoppiamento perfetto); Permutazioni e definizione di determinanteIl determinante di una matrice quadrata è la somma, su tutte le n! permutazioni, dei prodotti di n elementi presi uno per riga e uno per colonna, con segno + o − secondo la parità della permutazione; per 2×2 è ad − bc, per 3×3 c'è la regola di Sarrus, per le triangolari è il prodotto della diagonale.Permutazioni e definizione di determinante →, 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à →.
Soluzione
Il determinante è la somma, con segno, dei prodotti sulle permutazioni . Un prodotto è non nullo se e solo se tutti gli archi esistono, cioè è un accoppiamento perfetto; monomi di accoppiamenti diversi sono diversi, quindi non si cancellano.
Punto 1. Con colonne : Sviluppando secondo la prima riga: . Due monomi, due accoppiamenti perfetti: e . Grado .
Punto 2. Senza : , e sviluppando secondo la terza riga : un solo accoppiamento .
Punto 3. ha due righe nelle quali l'unica colonna non nulla è la prima (le righe e sono proporzionali): . Non c'è accoppiamento perfetto: e hanno entrambi come unico vicino (condizione di Hall violata).
Punto 4.
- : , diverso da zero: risposta «esiste un accoppiamento» (certa).
- : , diverso da zero: «esiste» (certa).
- : il determinante è nullo in ogni punto: risposta «non esiste», sempre giusta.
L'errore è unilaterale: si sbaglia solo se un grafo con accoppiamento dà nel punto scelto. Per Schwartz-Zippel (grado , ) la probabilità è per e . Per il valore esatto: si annulla con e indipendenti e con la stessa distribuzione (prodotto di tre uniformi). Sommando su tutti i si trova , minore del bound. Per (un monomio): , quasi uguale a .
Risultati: ; ; ; valori e ; errore (), (), bound .
from collections import Counter
P = 101
d1 = Counter(range(P))
def mul(d, e):
r = Counter()
for a, ca in d.items():
for b, cb in e.items(): r[a * b % P] += ca * cb
return r
d3 = mul(mul(d1, d1), d1)
z = sum(d3[u] * d3[-u % P] for u in d3)
print(z / P**6, 1 - (100 / 101)**3, 3 / P) # 0.01029 0.02940 0.0297
print((5 * 3 * 4 + 7 * 9 * 2) % P, (7 * 9 * 2) % P) # 85 25Versione ripasso
- Edmonds: se l'arco esiste, altrimenti; esiste un accoppiamento perfetto (ogni accoppiamento è un monomio diverso, nessuna cancellazione). Grado (Permutazioni e definizione di determinanteIl determinante di una matrice quadrata è la somma, su tutte le n! permutazioni, dei prodotti di n elementi presi uno per riga e uno per colonna, con segno + o − secondo la parità della permutazione; per 2×2 è ad − bc, per 3×3 c'è la regola di Sarrus, per le triangolari è il prodotto della diagonale.Permutazioni e definizione di determinante →).
- (archi ): , due accoppiamenti. (senza ): . (archi ): , Hall violata.
- Valutazione in : : ; : ; entrambi diversi da zero, risposta «esiste» (certa).
- Errore: unilaterale (solo con accoppiamento esistente), (Union bound e verifica randomizzata - identità polinomiali e prodotti di matriciSpazi discreti richiamati; inclusione-esclusione (con le troncate di Bonferroni) e union bound Pr[unione] ≤ somma, valido senza indipendenza e stretto quando gli eventi sono rari (collisioni: C(n,2)/m). Principio delle decisioni differite: si fissa tutto tranne una scelta casuale e si limita la probabilità su quella. Lemma di Schwartz-Zippel: un polinomio non nullo di grado totale d, valutato in un punto di S^n scelto uniformemente, si annulla con prob ≤ d/|S| (induzione sul numero di variabili); test di identità polinomiale con errore unilaterale, ripetuto (d/|S|)^k. Freivalds: per verificare AB=C si controlla A(Br)=Cr con r in {0,1}^n in tempo O(n^2), errore ≤ 1/2 (stretto), 2^-k con k prove. Fingerprint: due stringhe di n bit si confrontano con a mod p per un primo casuale p ≤ M, errore ≤ n/π(M).Union bound e verifica randomizzata - identità polinomiali e prodotti di matrici →). Esatto : ; : .
- Errori tipici: valutare con interi (senza modulo) e avere numeri enormi; dire «non esiste» da un solo zero (non è certo); dimenticare che dà sempre zero.