Cours 2 - Algorithmes Probabilistes
Coupe Minimum
Semestre Automne 2021-2022 - Universit´e Claude Bernard Lyon 1 Christophe Crespelle
*Merci a A. Parreau et E. Duchene pour le materiel pedagogique ayant servi de base a ces slides.
• Algos probabilistes :
� font des choix de maniere aleatoire
Rq : algo deterministes font aussi des choix !
2/23
• Algos probabilistes :
� font des choix de maniere aleatoire
Rq : algo deterministes font aussi des choix !
� Aleatoire�= quelconque ! ! !
• Algos probabilistes :
� font des choix de maniere aleatoire
Rq : algo deterministes font aussi des choix !
� Aleatoire�= quelconque ! ! !
� souvent : aleatoirementuniformement
� pas toujours, par ex. : choix aleatoire d’un sommet proportionnellement au degre
2/23
• Algos probabilistes :
� font des choix de maniere aleatoire
Rq : algo deterministes font aussi des choix !
� Aleatoire�= quelconque ! ! !
� souvent : aleatoirementuniformement
� pas toujours, par ex. : choix aleatoire d’un sommet proportionnellement au degre
• Qu’est-ce qu’on perd ?
→ on obtient pas toujours l’optimum
• Algos probabilistes :
� font des choix de maniere aleatoire
Rq : algo deterministes font aussi des choix !
� Aleatoire�= quelconque ! ! !
� souvent : aleatoirementuniformement
� pas toujours, par ex. : choix aleatoire d’un sommet proportionnellement au degre
• Qu’est-ce qu’on perd ?
→ on obtient pas toujours l’optimum
• Qu’est-ce qu’on gagne ?
→ la complexite de l’algo baisse
� par exemple : exponentiel→polynomial
� ici :O(n3m2)→O(n4logn)
2/23
• Algos probabilistes :
� font des choix de maniere aleatoire
Rq : algo deterministes font aussi des choix !
� Aleatoire�= quelconque ! ! !
� souvent : aleatoirementuniformement
� pas toujours, par ex. : choix aleatoire d’un sommet proportionnellement au degre
• Qu’est-ce qu’on perd ?
→ on obtient pas toujours l’optimum
• Qu’est-ce qu’on gagne ?
→ la complexite de l’algo baisse
� par exemple : exponentiel→polynomial
� ici :O(n3m2)→O(n4logn)
• Pourquoi ca marche ?
tout depend de la probabilite d’obtenir l’optimum → pas trop faible
• Entr´ee :un multigraphe non oriente (aretes multiples possibles pour un couple de sommet)
3/23
• Entr´ee :un multigraphe non oriente (aretes multiples possibles pour un couple de sommet)
• Sortie :une coupe (U,U�) deG (=bipartition de V(G)) ayant le nombre minimum d’aretes qui traversent
• Entr´ee :un multigraphe non oriente (aretes multiples possibles pour un couple de sommet)
• Sortie :une coupe (U,U�) deG (=bipartition de V(G)) ayant le nombre minimum d’aretes qui traversent
Ex. 1 :
a
b c
d
e
3/23
• Entr´ee :un multigraphe non oriente (aretes multiples possibles pour un couple de sommet)
• Sortie :une coupe (U,U�) deG (=bipartition de V(G)) ayant le nombre minimum d’aretes qui traversent
Differences avec precedemment :
• ni puits ni source
• graphe non oriente (cas particulier de graphe oriente)
• aretes multiples (equiv. capacites entieres)
• Entr´ee :un multigraphe non oriente (aretes multiples possibles pour un couple de sommet)
• Sortie :une coupe (U,U�) deG (=bipartition de V(G)) ayant le nombre minimum d’aretes qui traversent
Ex. 2 :
5/23
• Entr´ee :un multigraphe non oriente (aretes multiples possibles pour un couple de sommet)
• Sortie :une coupe (U,U�) deG (=bipartition de V(G)) ayant le nombre minimum d’aretes qui traversent
Ex. 3 :
a
b
c
d e
f g
h i
• Solution ?
7/23
• Solution ?
n(n−1)/2 fois l’algo d’EK, avec toutes les paires {source,puits} possibles
• Solution ?
n(n−1)/2 fois l’algo d’EK, avec toutes les paires {source,puits} possibles
• Complexite ?
7/23
• Solution ?
n(n−1)/2 fois l’algo d’EK, avec toutes les paires {source,puits} possibles
• Complexite ? O(n3m2)
(O(n3m) avec le meilleur algo connu pour le flot max, qui est en O(nm))
• Solution ?
n(n−1)/2 fois l’algo d’EK, avec toutes les paires {source,puits} possibles
• Complexite ? O(n3m2)
(O(n3m) avec le meilleur algo connu pour le flot max, qui est en O(nm))
• Algo probabiliste :
� On va faire un algo probabiliste enO(n4logn) (le meilleur algo proba est enO(n2log3n))
7/23
• Solution ?
n(n−1)/2 fois l’algo d’EK, avec toutes les paires {source,puits} possibles
• Complexite ? O(n3m2)
(O(n3m) avec le meilleur algo connu pour le flot max, qui est en O(nm))
• Algo probabiliste :
� On va faire un algo probabiliste enO(n4logn) (le meilleur algo proba est enO(n2log3n))
� et en plus d’une simplicite deconcertante !
• Algo probabiliste ⇒ deux executions ne donnent pas le meme resultat !
• On l’execute plusieurs (= beaucoup de) fois et on garde la meilleure solution
8/23
• Algo probabiliste ⇒ deux executions ne donnent pas le meme resultat !
• On l’execute plusieurs (= beaucoup de) fois et on garde la meilleure solution
• Deux questions :
� Quelle est la proba d’obtenir une solution optimale ?
� Il faut faire combien d’essais ?
• Algo probabiliste ⇒ deux executions ne donnent pas le meme resultat !
• On l’execute plusieurs (= beaucoup de) fois et on garde la meilleure solution
• Deux questions :
� Quelle est la proba d’obtenir une solution optimale ?
� Il faut faire combien d’essais ?
� On veut proba→1 lorsque la taille de l’entree→+∞ (Waouh !)
8/23
• Algo probabiliste ⇒ deux executions ne donnent pas le meme resultat !
• On l’execute plusieurs (= beaucoup de) fois et on garde la meilleure solution
• Deux questions :
� Quelle est la proba d’obtenir une solution optimale ?
� Il faut faire combien d’essais ?
� On veut proba→1 lorsque la taille de l’entree→+∞ (Waouh !)
� ... en fait, ca suffit que la proba soit une constante.
9/23
D´efinition (contraction d’arete)
SoitG = (V,E) un multigraphe sans boucle etuv une arete deG. Le raphe contracte deG selon l’arete uv, noteG/uv, est defini par G/uv = (V\ {u},E\ {{ux |x ∈N(u)}}∪{{vx |ux ∈E et x�=v}}).
Algorithme 1 :Algorithme Contraction Aleatoire
1 pourtout v ∈V faire
2 S(v)←{v}
3 fin
4 tant que|V|>2 faire
5 choisir une areteuv de G uniformement aleatoirement;
6 G ←G/uv;
7 S(v)←S(v)∪S(u);
8 fin
9 retournerla coupe (S(x),S(y)) ; (ou{x,y}=V)
11/23
a
b
c
d
e f
• l’algo fait toujoursn−2 contractions, pour finir avec un graphe a 2 sommets
• on note k la taille d’une coupe minimum deG
• onfixe une coupe minimum C = (X,Y) deG et on calcule la proba que l’algo retourne la coupeC
• Rq. : l’algo retourneC ssi il ne contracte aucune arete traversant C
13/23
a
b c
d
e
f
g
h
C
• A la premiere contraction, la proba p de choisir une arete ne traversant pas C est p= 1−mk.
• on note Ej l’evenement suivant : ”a la jeme iteration de la boucle principale, l’arete uv selectionnee ne traverse pas C”
• on calcule la proba pj =Pr[Ej|j−1�
i=1
Ei]
• Gj le graphe avant l’iteration j, dans l’evenement
j�−1 i=1
Ei
15/23
• Gj a exactementn−j + 1 sommets et la coupe minimum de Gj a taillek
a
b c
d
e
f
g
h
C
• Gj a exactementn−j + 1 sommets et la coupe minimum de Gj a taillek
• ainsi, le degre minimum dans Gj est au moins k, et donc Gj a au moinsk(n−j+ 1)/2 aretes.
17/23
• Gj a exactementn−j + 1 sommets et la coupe minimum de Gj a taillek
• ainsi, le degre minimum dans Gj est au moins k, et donc Gj a au moinsk(n−j+ 1)/2 aretes.
• on obtient 1−pj =Pr[Ej|
j�−1 i=1
Ei]≤k/(k(n−j+ 1)/2) = 2/(n−j + 1)
• Gj a exactementn−j + 1 sommets et la coupe minimum de Gj a taillek
• ainsi, le degre minimum dans Gj est au moins k, et donc Gj a au moinsk(n−j+ 1)/2 aretes.
• on obtient 1−pj =Pr[Ej|
j�−1 i=1
Ei]≤k/(k(n−j+ 1)/2) = 2/(n−j + 1)
• d’oupj ≥1−2/(n−j + 1) = (n−j−1)/(n−j+ 1)
17/23
• commePr[A∩B] =Pr[A|B]×Pr[B], on obtient p =Pr[n−2�
j=1
Ej] =n−2�
j=1
pj
• commePr[A∩B] =Pr[A|B]×Pr[B], on obtient p =Pr[n−2�
j=1
Ej] =n−2�
j=1
pj
• ainsi la proba d’obtenir la coupe minimum C par l’algo est p ≥ n−2
n ×n−3
n−1 ×n−4
n−2× · · · ×3 5 ×2
4 ×1
3 = 2
n(n−1)
18/23
• commePr[A∩B] =Pr[A|B]×Pr[B], on obtient p =Pr[n−2�
j=1
Ej] =n−2�
j=1
pj
• ainsi la proba d’obtenir la coupe minimum C par l’algo est p ≥ n−2
n ×n−3
n−1 ×n−4
n−2× · · · ×3 5 ×2
4 ×1
3 = 2
n(n−1)
• on fait maintenant t iterations de l’algo de contraction, chacune ayant une proba de succes p
• commePr[A∩B] =Pr[A|B]×Pr[B], on obtient p =Pr[n−2�
j=1
Ej] =n−2�
j=1
pj
• ainsi la proba d’obtenir la coupe minimum C par l’algo est p ≥ n−2
n ×n−3
n−1 ×n−4
n−2× · · · ×3 5 ×2
4 ×1
3 = 2
n(n−1)
• on fait maintenant t iterations de l’algo de contraction, chacune ayant une proba de succes p
• Comment choisir t pour avoir une proba constante de trouver la coupe C dans au moins une des t iterations ?
18/23
• la proba de ne trouverC dans aucune dest executions est pechec = (1−p)t
• la proba de ne trouverC dans aucune dest executions est pechec = (1−p)t
• maths ⇒ (1−p)1p ≤1/e
19/23
• la proba de ne trouverC dans aucune dest executions est pechec = (1−p)t
• maths ⇒ (1−p)1p ≤1/e
• en faisant t = 1p executions de l’algo, on obtient pechec ≤1/e =cte
• la proba de ne trouverC dans aucune dest executions est pechec = (1−p)t
• maths ⇒ (1−p)1p ≤1/e
• en faisant t = 1p executions de l’algo, on obtient pechec ≤1/e =cte
• pour avoirpechec →0, on peut faire par exemple t= logpn executions de l’algo et on obtient pechec ≤(1/e)logn= 1/n
19/23
• la proba de ne trouverC dans aucune dest executions est pechec = (1−p)t
• maths ⇒ (1−p)1p ≤1/e
• en faisant t = 1p executions de l’algo, on obtient pechec ≤1/e =cte
• pour avoirpechec →0, on peut faire par exemple t= logpn executions de l’algo et on obtient pechec ≤(1/e)logn= 1/n
• c’est a dire que la proba de trouver une coupe minimum C fixee apres n(n−1) log2 n executions de l’algo contraction est au moins 1−n1 →1 quandn →+∞
• soit f(n) la complexite de l’algo de contraction, la complexite totale de l’algo proba pour coupe minimum est
O(f(n)·n2logn)
• Complexite de Contraction ?
� boucle principale :O(n) fois
� ligne 5 :O(1)
� ligne 6 :O(n)
� ligne 7 :O(n)
complexite totale : O(n2)
20/23
• Algo avec proba de succesp ≥1−1n et complexiteO(n4logn)
• rien n’empeche de :
� ne faire quet = n(n−1)2 executions :p≥1−1e et complexite O(n4)
� fairet = log 1000n(n−1)2 executions :p≥1−10001 et complexiteO(n4) (la cte=log 1000 est cachee dans leO(.))
� fairet=n·n(n−1)2 executions :p≥1−e1n et complexiteO(n5)
Questions subsidiaires :
• Mq il y a au plusO(n2) coupe minimum dans un graphe
• Mq il peut y avoirΩ(2n) s,t-coupe minimum dans un graphe
22/23
⇒C’est celle qu’on adoptera pour le TP.