Upload
frank-nielsen
View
80
Download
1
Embed Size (px)
Citation preview
INF442 : Traitement des Données Massives
A8 : Algorithmique parallèle sur les graphes
Frank Nielsen
nielsen�lix.polyte hnique.fr
X2013
3 juin 2015
Frank Nielsen 1
Plan
◮programme pour le ontr�le é rit (CC) :
10 juin 2015, 9h-12h
◮les graphes :
◮les grands graphes : déte tion de sous-graphes denses
◮les petits graphes : déte tion de (sous-)isomorphismes
◮exposé invité : le �HPC Cloud�
par M. Patri e Calégari (PhD, Atos/Bull)
Frank Nielsen 2
Révisions pour le ontr�le é rit
◮loi d'a élération (Amdahl) pour les programmes parallèles
◮regroupement : les k-moyennes et la manipulation de sa fon tion de oût
Varian e/ entroïde d'un groupe
oût = somme des varian es des groupes ...
◮les algorithmes parallèles seront é rit en pseudo- ode MPI
(opérations redu e, s atter, gather).
◮Pseudo-syntaxe MPI et pas de syntaxe C++.
Programme = 20 lignes au maximum
◮topologie de l'hyper ube, ode de Gray, distan e de Hamming et routage.
Il n'a aura pas de C++, ni de lassi� ation, ni d'algorithmes sur les
matri es, ni de MapRedu e, et ni de sous-ensembles ÷urs.
Frank Nielsen 3
Révisions : le ode de Gray
Frank Nielsen 4
Constru tion ré ursive du ode de Gray
Constru tion ré ursive :
◮ ode de Gray à 1 bit ( as terminal) : G (1) = (0, 1)
◮ ode de Gray à d bits :
G (d) = (0G (d − 1), 1G r (d − 1))
ave G r (·) le ode de Gray dans l'ordre inverse ( = ode ré�e hi)
Par exemple,
◮ G (2) = (0G (1), 1G r (1)) = (00, 01, 11, 10)
◮ G (3) = (0G (2), 1G r (2)) = (000, 001, 011, 010, 110, 111, 101, 100)
◮ G(4) = (0G(3), 1G r (3)) =
(0000, 0001, 0011, 0010, 0110, 0111, 0101, 0100, 1100, 1101, 1111, 1110, 1010, 1011, 1001, 1000)
◮et .
Frank Nielsen 1. ode de Gray 5
Illustration de la onstru tion ré ursive du ode de Gray
0
1
0
1
1
0
00
01
11
10
00
01
11
10
10
11
01
00
000
001
011
010
110
111
101
100
G(1)
miroir prefixe
G(2) G(3)
miroir prefixe
Frank Nielsen 1. ode de Gray 6
Hyper ube et ode de Gray
0D 1D 2D 3D 4D
∅ 0
1
00
01
10
11
001 011
000 010
101 111
100 110
0001 0011
0000 0010
0101 0111
0100 0110
1001 1011
1000 1010
1101 1111
1100 1110
Deux opies (pré�xe 0 et pré�xe 1) de Hd−1
(Gd−1
) que l'on relie entre elles
ave les paires de n÷uds orrespondants
Frank Nielsen 1. ode de Gray 7
Code C++ simple : gray ode442. pp
// inverse l'ordre d'un ode
s t r i n g ∗ Mi r o i r ( s t r i n g ∗ s , i n t nb )
{ s t r i n g ∗ r e s ;
r e s=new s t r i n g [ nb ℄ ;
i n t i ;
f o r ( i =0; i <nb ; i ++)
{ r e s [ i ℄= s [ nb−1− i ℄ ; // i i, on re opie
}
r e t u r n r e s ;
}
// algorithme ré ursif pour le ode de Gray
s t r i n g ∗ GrayCode ( i n t dim )
{ s t r i n g ∗ r e s ;
i n t i ;
i n t a rd=1<<(dim−1) ; // veut dire 2
dim−1
, plus rapide que Math.pow(2, dim− 1)
i f ( dim==1)
{ r e s=new s t r i n g [ 2 ℄ ; r e s [0℄= "0" ; r e s [1℄= "1" ;
} e l s e
{
s t r i n g ∗GC=GrayCode ( dim−1) ;
s t r i n g ∗ GC r e f l e h i=M i r o i r (GC , ard ) ;
r e s=new s t r i n g [2∗ ard ℄ ;
// pre�xe
f o r ( i =0; i < ard ; i++)
{ r e s [ i ℄="0"+GC[ i ℄ ;
r e s [ i+ ard ℄="1"+GC r e f l e h i [ i ℄ ;
}
}
r e t u r n r e s ;
}
Frank Nielsen 1. ode de Gray 8
Code C++ simple : gray ode442. pp
#i n l u d e <ios t ream >
#i n l u d e <s t r i n g . h>
us i ng namespa e s t d ;
s t r i n g ∗ Mi r o i r ( s t r i n g ∗ s , i n t nb )
. . .
s t r i n g ∗ GrayCode ( i n t dim )
. . .
v o i d p r i n tCode ( s t r i n g ∗ ode , i n t nb )
{
i n t i ;
f o r ( i =0; i <nb ; i ++)
{
out<< ode [ i ℄<<end l ;
}
}
i n t main ( )
{
i n t i , dim=4;
out << " INF442 : ode de Gray en d imens ion "<<dim <<"\n" ;
s t r i n g ∗ GC=GrayCode ( dim ) ;
p r i n tCode (GC , 1<<dim ) ; // veut dire 2
dim
}
Frank Nielsen 1. ode de Gray 9
Convertir ode binaire ⇔ ode de Gray
code binaire
code de Gray
0 b0b1b2b3
g0g1g2g3
bit extra a 0(ne fait pas partie du code)
gi = 0 ⇔ bi+1 XOR bi = 0
Le bit du ode de Gray gi est à zéro si et seulement si les bits
adja ents de la représentation binaire oin ident (XOR, OU Ex lusif)
Frank Nielsen 1. ode de Gray 10
Exemple de onversions : binaire → Gray
code binaire
code de Gray
0 0 1 1 0
code binaire
code de Gray
0 0 1 1 0
1 0 10
Conversion (0110)b → (0101)g
XOR XOR XORXOR
XOR
?
al uls dire ts sans as ade (bits gi peuvent être al ulés en parallèle, CREW)
Frank Nielsen 1. ode de Gray 11
Exemple de onversions : Gray → binaire
code binaire
code de Gray
0
1 10
code binaire
code de Gray
0
Conversion (1011)g → (1101)b
XOR XOR XORXOR
XOR
1
1 10 1
1 01 1
?
Cal ul du bit binaire de poids fort vers le bit de poids faible, as ade ...
Frank Nielsen 1. ode de Gray 12
Les grands graphes : trouver
un sous-ensemble dense
le noyau
la plus grande ommunauté
...
Frank Nielsen 1. ode de Gray 13
Rappel sur la notation de graphes
◮ G = (V ,E ) un graphe à |V | = n n÷uds et |E | = m arêtes . Graphe
non-orienté.
◮Arête (vi , vj ) = paire de n÷uds
◮arête orientée = ar , digraph : dire ted graph
◮graphe sans y le : a y li graph
◮graphe à poids (sur les arêtes et/ou les n÷uds)
◮matri e d'in iden e ME du graphe V = {xi} :
e = (xi , xj ) ∈ E ⇔ ME [i ][j] = 1
(et 0 autrement)
◮graphe planaire (qui peut être plongé = dessiné dans le plan sans
interse tion des arêtes) : m = |E | ≤ 3(n − 2) pour n = |V | > 2.
◮graphe dense, graphe épars, graphe petits mondes (= haque n÷ud relié
à n'importe quel autre n÷ud par une ourte haine)
Frank Nielsen 2.graphes-1.notations 14
Les graphes : simples, utiles mais parfois di� iles à analyser
le théorème des 4 ouleurs : un problème intuitif mais preuves omplexes :
n÷ud = départements. une arête pour deux régions onnexes
Frank Nielsen 2.graphes-1.notations 15
Les graphes et les réseaux so iaux
◮une personne (= n÷ud) a une liste d'amis (= arêtes).
◮1,3 milliards d'utilisateurs FB (2013), 3 milliards d'hommes onne tés
(<50%). Aujourd'hui, en ore la moitié de la population mondiale reste a
onne ter
FB API : https://developers.fa ebook. om/do s/graph-api
Frank Nielsen 2.graphes-1.notations 16
Frank Nielsen 2.graphes-1.notations 17
Sous-graphe le plus dense
◮sous-graphe G ′ = (V ′,E ′) ⊆ G : V ′ ⊆ V , e = (vi , vj) ∈ E appartient à
E ′ssi. vi ∈ V ′
et vj ∈ V ′
◮on her he le sous-graphe V ′ ⊆ V qui maximise la densité ρ :
ρ(V ′) =|E (V ′)||V ′|
où E (V ′) = {(u, v) ∈ E : u, v ∈ V ′}◮
pour la lique G = Kn, on a ρ = ρ(V ) = n(n−1)2n
= n−1
2
◮Problème d'optimisation :
ρ∗ = max
V ′⊆Vρ(V ′)
Frank Nielsen 2.graphes-2.Heuristique pour le sous-graphe le plus dense 18
Exemple de densité de sous graphes
ρ = 1, 454... ρ = 1, 8
Frank Nielsen 2.graphes-2.Heuristique pour le sous-graphe le plus dense 19
Appli ations du al ul de sous-graphe le plus dense
Très utile en analyse de graphes
notamment pour les graphes des réseaux so iaux !
Trouver le sous-graphe le plus dense intervient dans :
◮la déte tion de ommunauté
◮la ompression de graphes
◮et .
Les réseaux sont pervasifs dans notre quotidien :
◮résaux de ommuni ations
◮réseaux de itations s ienti�ques
◮réseaux de ollaborations
◮réseaux d'intéra tion de protéines
◮réseaux d'information
◮réseaux �nan iers
◮et .
Frank Nielsen 2.graphes-2.Heuristique pour le sous-graphe le plus dense 20
Complexité du al ul de sous-graphe le plus dense
◮temps polynomial par résolution de programmes linéaires (LP)
◮devient NP-dur si on impose |V ′| = k
Notons V ∗une solution optimale de densité optimale ρ∗ :
ρ∗ = ρ(V ∗) =
|E (V ∗)||V ∗|
nous allons donner une heuristique qui al ule une 2-approximation :
V ′′, ρ(V ′′) ≥ 1
2
ρ∗
Frank Nielsen 2.graphes-2.Heuristique pour le sous-graphe le plus dense 21
Heuristique de al ul d'un sous-graphe dense
Heuristique itérative de Charikar (Prin eton U, 2000) :
◮enlever le n÷ud de plus faible degré ainsi que toutes ses arêtes
in identes, mettre à jour les degrés des autres n÷uds, al uler la densité
du graphe obtenu, et re ommen er jusqu'à épuisement des n÷uds
◮solution = garder le graphe le plus dense parmi es n = |V | itérations
Garanti de trouver une 2-approximation ( f. preuve poly opié)
Frank Nielsen 2.graphes-3.Heuristique séquentielle 22
Frank Nielsen 2.graphes-3.Heuristique séquentielle 23
Frank Nielsen 2.graphes-3.Heuristique séquentielle 24
Frank Nielsen 2.graphes-3.Heuristique séquentielle 25
Frank Nielsen 2.graphes-3.Heuristique séquentielle 26
Data: Un graphe non-orienté G = (V ,E )
Result: Retourne un sous-ensemble S ⊆ V des sommets qui induit le graphe
restreint G|S qui donne une 2-approximation du sous-graphe le plus
dense de G .
S ← V ;
S ← V ;
while S 6= ∅ dos ← arg mins∈S degS(s);
S ← S\{s};if ρ(S) > ρ(S) then
S ← S
end
end
return S
⇒ 2-approximation S du sous-graphe le plus dense de G = (V ,E ).Frank Nielsen 2.graphes-3.Heuristique séquentielle 27
Démo
Frank Nielsen 2.graphes-3.Heuristique séquentielle 28
Complexité de l'heuristique
Sur le modèle RAM.
Trouver le sommet de degré minimum, e�a er, al uler la densité, et
re ommen er ainsi jusqu'à obtenir le graphe vide
Implémentation naïve : O(n2) (par exemple en utilisant la matri e d'in iden e)
◮temps O((n +m) log n) en utilisant un tas (arbre binaire dont les lefs
des n÷uds sont supérieures aux lefs des �ls, f. �le de priorité)
◮temps O((n +m)) en maintenant une liste par degré ( f. poly opié)
Mais ette heuristique est di� ilement parallélisable omme telle !
Frank Nielsen 2.graphes-3.Heuristique séquentielle 29
Une heuristique fa ilement parallélisable
Nouvelle heuristique :
◮enlever tous les n÷uds de degré plus petit que (1+ ǫ) fois la moyenne
des degrés (ave ǫ ≥ 0)
◮on enléve don for ément les n÷uds de degré minimal à haque tour
Moyenne des degrés ...
d =
∑
v∈V d(v)
|V | = 2
|E ||V | = 2ρ
... est égale a deux fois la densité ρ :
d(G ) = 2ρ(G )
Frank Nielsen 2.graphes-4.heuristique parallèle 30
Algorithm 1: Heuristique gloutonne (parallèle) par blo s pour trouver une
approximation S du sous-graphe le plus dense.
Data: Un graphe G = (V ,E ) et ǫ > 0
S ← V ;
S ← V ;
while S 6= ∅ doA(S)← {s ∈ S | degS(s) ≤ 2(1+ ǫ)ρ(S)};S ← S\A(S);if ρ(S) > ρ(S) then
S ← S
end
end
return S
rappel : d(G ) = 2ρ(G )
Frank Nielsen 2.graphes-4.heuristique parallèle 31
Frank Nielsen 2.graphes-4.heuristique parallèle 32
Frank Nielsen 2.graphes-4.heuristique parallèle 33
Démo
Frank Nielsen 2.graphes-4.heuristique parallèle 34
Performan e de l'heuristique
◮on prouve que l'on fait O(1
ǫlog n) itérations.
Quelques dizaines d'itérations pour des graphes à 1 milliard de n÷uds ...
◮on montre qu'on obtient une (2+ ǫ)-approximation :
ρ∗ ≥ ρ(V ′) ≥ ρ∗
2+ ǫ
◮ ette heuristique s'implémente en plusieurs étapes de MapRedu e ( f.
poly opié)
⇒ f. poly opié
Frank Nielsen 2.graphes-4.heuristique parallèle 35
Tester l'isomorphisme de
(petits) graphes
Equilibrage de harge
Frank Nielsen 2.graphes-4.heuristique parallèle 36
Est- e le même graphe ?
Graphe identique ? = stru ture identique ?
... omment puis-je m'en persuader ?
Frank Nielsen 3.isomorphismes de graphes 37
Isomorphisme de graphes
◮ G1
= (V1
,E1
) et G2
= (V2
,E2
) deux graphes, ave n1
= |V1
| etm
1
= |E1
| et n2
= |V2
| et m2
= |E2
|◮
Est- e que G1
= G2
?
◮une ondition né essaire est d'avoir n
1
= n2
= n et m1
= m2
= m mais
e n'est bien sûr pas une ondition su�sante !
◮En pratique, on étiquette arbitrairement les n÷uds de V
1
et de V2
ave
des entiers entre 1 et n, et on her he une permutation
σ : [n] = {1, ..., n} → [n] telle que le n÷ud vi ∈ V1
orrespond au n÷ud
vσ(i) ∈ V
2
◮Une fois σ trouvée, on renumérote les n÷uds de V
2
en faisant i ← σ(i)
◮Notation quand deux graphes sont isomorphes ( ongruents) :
G1
∼= G2
Frank Nielsen 3.isomorphismes de graphes 38
Isomorphisme de graphes : dé�nition générale
Isomorphisme : omparer la stru ture des graphes ( ongruen e)
G1
∼= G2
: ∃f : V1
→ V2
, (v , v ′) ∈ V1
⇔ (f (v), f (v ′)) ∈ V2
f : fon tion sur les étiquettes : i i, entiers/lettres
Frank Nielsen 3.isomorphismes de graphes 39
1
2
3
4
5
6
7
8
1 5
638
2 7 4
Frank Nielsen 3.isomorphismes de graphes 40
Sous-isomorphisme de graphes
G1
est sous-isomorphe de G2
si et seulement si il existe G ′1
⊆ G1
tel que
G ′1
∼= G2
⇒ re onnaissan e de motifs dans les graphes (pattern mat hing)
Frank Nielsen 3.isomorphismes de graphes-1.Sous-isomorphisme 41
Appli ation : Re her he de motifs stru turaux identiques
◮isomorphisme de graphe très étudié en himie depuis les années 1950 ...
◮est- e qu'un motif himique se trouve déjà répertorié dans une base de
données ?
Par exemple, trouver un motif ARN (base azotées A, C, G, U) dans des
bruns d'ARN ...
◮en oder une molé ule par un graphe anonique (plusieurs standards
existent omme SMILES, InChI)
◮puis tester l'isomorphisme de sous-graphe (graph data mining)
Frank Nielsen 3.isomorphismes de graphes-1.Sous-isomorphisme 42
Complexité : pas en ore résolu !
Le problème de tester l'isomorphisme de graphe :
◮appartient à la lasse de omplexité NP (véri�able en temps polynomial) :
étant donné σ, on véri�e que σ(V1
) = V2
et σ(E1
) = E2
◮appartient à la lasse P (temps polynomial) pour ertaines familles de
graphes : les arbres, les graphes planaires, et .
◮une uriosité dans le as général :
Dans P ? ou dans NP- omplet ? ou alors ni dans l'un ni dans l'autre ?
◮Meilleur algorithme (Luks, 1983) :
2
O(√
n log n)
... pouvez-vous faire mieux ? ou alors montrer une borne inférieure
exponentielle ?
Frank Nielsen 3.isomorphismes de graphes-2.Complexité 43
Remarque : l'ordinateur ne voit pas ...
les graphes ne sont pas dessinés en mémoire ... l'÷il humain (+ erveau !) est
remarquable pour ses apa ités de re onnaissan e de motifs !
graphe, autre dessin du graphe, + permutation sur les étiquettes
Frank Nielsen 3.isomorphismes de graphes-2.Complexité 44
Algorithme naïf pour l'isomorphisme : tester tout !
◮ I1
la matri e binaire d'in iden e de G1
, et I2
la matri e d'in iden e de G2
(espa e mémoire n2)
◮pour toutes les n! permutations σ, on teste si I
1
= Iσ2
(temps
quadratique)
O(n2n!)
Formule de Stirling n! ≃√2πn
(
ne
)n
10! = 3, 628, 800
Frank Nielsen 3.isomorphismes de graphes-3.Algorithmes énumératifs 45
Algorithmes énumératifs : appariements progressifs
◮on augmente itérativement un appariement partiel des sommets M
(mat hing). Exploration ré ursive, de type Depth First Sear h (DFS)
◮les paires de sommets asso iés sont hoisies de façon à respe ter
ertaines onditions (par exemple, avoir le même degré, même base
azotée, et .)
◮on élimine les hemins de re her he qui n'aboutissent pas à un
appariemment omplet des sommets : élagage, pruning
◮lorsqu'on arrive à une impasse, on supprime la dernière hypothèse : on
fait mar he arrière = ba ktra king
◮l'algorithme s'arrête lorsqu'il a trouvé une solution (ave un erti� at σ
d'appariemment) qui prouve l'existen e de l'isomorphisme ou lorsque
tous les appariemments possibles ont été testés de façon infru tueuse.
Dans le pire des as, les algorithmes énumératifs sont exponentiels !
Frank Nielsen 3.isomorphismes de graphes-3.Algorithmes énumératifs 46
Un algorithme ré ursif pour le test d'isomorphisme
TesteIsomorphisme(g ,M,G ,H) :for all hi ∈ Hv do
if g 6∈ M and hi 6∈ M then
M ′ ← M ∪ (g , hi ) ;
Soit g ′ ∈ G{gi | (gi , x) ∈ M} ;M ′′ = TesteIsomorphisme(g ′,M ′,G ,H);
if |M ′′| = |G | thenreturn M ′′
end
end
return ∅end
On appelle ette pro édure initialement ave M = ∅ et g ∈ G :
TesteIsomorphisme(g ,M,G ,H)Complexité : O(d
max
!n)
Frank Nielsen 3.isomorphismes de graphes-3.Algorithmes énumératifs 47
Parallélisation des algorithmes énumératifs (en MPI)
◮soit un luster à P = n pro esseurs (petits graphes à n sommets)
◮parallélisation triviale : initialement pour le sommet v
(1)1
est appareillé au
sommet v(j)2
ave j ∈ {1, ...,P = n} sur le pro esseur Pj . On véri�e
d'abord que les degrés oïn ident ...
◮le travail sur haque pro esseur (de haque pro essus) dépend don de la
stru ture des graphes. Les pro essus ne �nissent pas en même temps.
Workload di�érent
◮ omment équilibrer la harge de travail ?
⇒ utiliser une ar hite ture maître/serviteurs ave des ommuni ations
non-bloquantes (MPI_Isend et MPI_Ire v)
Frank Nielsen 3.isomorphismes de graphes-4.parallélisation en MPI 48
Ar hite ture maître/serviteurs et équilibrage de harges
équilibrage de harges : load-balan ing = harge de travail sur haque
pro essus semblable
Un problème plus général sur les lusters : ordonnan ement de tâ hes ,
dé�nir un graphe de dépendan e ( omme le Make�le pour la ompilation) et
équilibrer les harges (beau oup de problèmes d'ordonnan ement sont
NP-durs).
Frank Nielsen 3.isomorphismes de graphes-4.parallélisation en MPI 49
Résumé A8
�X déte tion de sous-graphes denses
�X déte tion de (sous)-isomorphises de graphes (équilibrage de harge)
lire le hapitre 11 du poly opié
Frank Nielsen 4.Résumé 50
Voilà !
Mer i à tous
pour ette première édition
d'INF442 !
Vous en avez été les
pionniers !
Frank Nielsen 5.That is all folks ! 51
Toute l'équipe espère avoir
réussi à vous enseigner un
on entré de
◮C++
◮ al ul haute performan e sur un luster ave MPI
◮algorithmique parallèle distribuée
◮s ien e des données
On aimerait bien vous revoir
en 3A !
Frank Nielsen 5.That is all folks ! 52