Salta al contenuto
Note per Studenti Esercizio - Accoppiamento perfetto con la matrice di Edmonds e Schwartz-Zippel

Esercizio - Accoppiamento perfetto con la matrice di Edmonds e Schwartz-Zippel

Testo. Un grafo bipartito ha vertici a sinistra 1,2,31,2,3 e a destra a,b,ca,b,c. Si associa a ogni arco i-ji\text{-}j una variabile xijx_{ij} e si costruisce la matrice MM con Mij=xijM_{ij}=x_{ij} se l'arco esiste e 00 altrimenti (matrice di Edmonds); un accoppiamento perfetto esiste se e solo se det⁡M≢0\det M\not\equiv0.

  1. Grafo G1G_1 con archi 1a,1b,2b,2c,3a,3c1a,1b,2b,2c,3a,3c. Scrivere MM, det⁡M\det M (come polinomio) ed elencare gli accoppiamenti perfetti.
  2. Grafo G2G_2 con archi 1a,1b,2b,2c,3a1a,1b,2b,2c,3a (senza 3c3c): det⁡M\det M e accoppiamenti.
  3. Grafo G3G_3 con archi 1a,2a,3b,3c1a,2a,3b,3c: det⁡M\det M e perché non c'è accoppiamento.
  4. Algoritmo randomizzato: i valori xijx_{ij} sono scelti in F101\mathbb F_{101}. Valutare det⁡M\det M nel punto x1a=5x_{1a}=5, x1b=7x_{1b}=7, x2b=3x_{2b}=3, x2c=9x_{2c}=9, x3a=2x_{3a}=2, x3c=4x_{3c}=4 per G1G_1 e G2G_2. Qual è la probabilità di errore, con il bound di Schwartz-Zippel e in modo esatto per G1G_1?

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 ∏iMiσ(i)\prod_iM_{i\sigma(i)} sulle permutazioni σ\sigma. Un prodotto è non nullo se e solo se tutti gli archi i σ(i)i\,\sigma(i) esistono, cioè σ\sigma è un accoppiamento perfetto; monomi di accoppiamenti diversi sono diversi, quindi non si cancellano.

Punto 1. Con colonne a,b,ca,b,c: M=(x1ax1b00x2bx2cx3a0x3c).M=\begin{pmatrix}x_{1a}&x_{1b}&0\\0&x_{2b}&x_{2c}\\x_{3a}&0&x_{3c}\end{pmatrix}. Sviluppando secondo la prima riga: det⁡M=x1a(x2bx3c−0)−x1b(0⋅x3c−x2cx3a)=x1ax2bx3c+x1bx2cx3a\det M=x_{1a}(x_{2b}x_{3c}-0)-x_{1b}(0\cdot x_{3c}-x_{2c}x_{3a})=x_{1a}x_{2b}x_{3c}+x_{1b}x_{2c}x_{3a}. Due monomi, due accoppiamenti perfetti: {1a,2b,3c}\{1a,2b,3c\} e {1b,2c,3a}\{1b,2c,3a\}. Grado 33.

Punto 2. Senza 3c3c: M=(x1ax1b00x2bx2cx3a00)M=\begin{pmatrix}x_{1a}&x_{1b}&0\\0&x_{2b}&x_{2c}\\x_{3a}&0&0\end{pmatrix}, e sviluppando secondo la terza riga det⁡M=x3a(x1bx2c−0)=x1bx2cx3a\det M=x_{3a}(x_{1b}x_{2c}-0)=x_{1b}x_{2c}x_{3a}: un solo accoppiamento {1b,2c,3a}\{1b,2c,3a\}.

Punto 3. M=(x1a00x2a000x3bx3c)M=\begin{pmatrix}x_{1a}&0&0\\x_{2a}&0&0\\0&x_{3b}&x_{3c}\end{pmatrix} ha due righe nelle quali l'unica colonna non nulla è la prima (le righe 11 e 22 sono proporzionali): det⁡M≡0\det M\equiv0. Non c'è accoppiamento perfetto: 11 e 22 hanno entrambi come unico vicino aa (condizione di Hall violata).

Punto 4.

  • G1G_1: det⁡=5⋅3⋅4+7⋅9⋅2=60+126=186≡85(mod101)\det=5\cdot3\cdot4+7\cdot9\cdot2=60+126=186\equiv85\pmod{101}, diverso da zero: risposta «esiste un accoppiamento» (certa).
  • G2G_2: det⁡=7⋅9⋅2=126≡25(mod101)\det=7\cdot9\cdot2=126\equiv25\pmod{101}, diverso da zero: «esiste» (certa).
  • G3G_3: il determinante è nullo in ogni punto: risposta «non esiste», sempre giusta.

L'errore è unilaterale: si sbaglia solo se un grafo con accoppiamento dà det⁡=0\det=0 nel punto scelto. Per Schwartz-Zippel (grado 33, ∣S∣=101|S|=101) la probabilità è ≤3/101=0,0297\le3/101=0{,}0297 per G1G_1 e G2G_2. Per G1G_1 il valore esatto: si annulla u+vu+v con u=x1ax2bx3cu=x_{1a}x_{2b}x_{3c} e v=x1bx2cx3av=x_{1b}x_{2c}x_{3a} indipendenti e con la stessa distribuzione (prodotto di tre uniformi). Sommando Pr⁡[u=t]Pr⁡[v=−t]\Pr[u=t]\Pr[v=-t] su tutti i tt si trova Pr⁡[det⁡=0]=0,01029\Pr[\det=0]=0{,}01029, minore del bound. Per G2G_2 (un monomio): Pr⁡[x1bx2cx3a=0]=1−(100/101)3=0,02940\Pr[x_{1b}x_{2c}x_{3a}=0]=1-(100/101)^3=0{,}02940, quasi uguale a 3/101=0,02973/101=0{,}0297.

Risultati: det⁡G1=x1ax2bx3c+x1bx2cx3a\det_{G_1}=x_{1a}x_{2b}x_{3c}+x_{1b}x_{2c}x_{3a}; det⁡G2=x1bx2cx3a\det_{G_2}=x_{1b}x_{2c}x_{3a}; det⁡G3≡0\det_{G_3}\equiv0; valori 8585 e 2525; errore 0,01030{,}0103 (G1G_1), 0,02940{,}0294 (G2G_2), bound 0,02970{,}0297.

python
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  25

Versione ripasso

Teoria collegata