INFO4
Complexité algorithmique et graphes
Matˇej Stehlík 21/9/2020
Volumes horaires
Cours magistraux (CM) 15h 1.5h par semaine Travaux dirigés (TD) 15h 1.5h par semaine
Évaluation
Partiel (1.5h, novembre) CC Examen (2h, décembre) ET
Note finale 0.5×CC+ 0.5×ET
4
Objectifs
Le cours présente la théorie des graphes sous plusieurs de ses aspects :
• Modélisation
• Raisonnement
• Algorithmes
• Complexité
Objectifs : modélisation
Les graphes sont très utilisés dans :
• les problèmes de routage en réseau,
• les problèmes de trafic en transport,
• l’étude des jeux,
• la recherche d’information (graphe du web)
• codage
• ordonnancement et emploi du temps
• . . .
6
Objectifs : raisonnement
Développer une aptitude à raisonner mieux en face de structures discrètes, en particulier :
• rédiger une démonstration,
• justifier proprement un algorithme,
• appliquer la récurrence.
Objectifs : complexité algorithmique
• Conception des algorithmes efficaces pour des problèmes de graphes
• Utilisation des structures de données “union-find” ou “tas binaire”
dans différents algorithmes.
8
Objectifs : théorie de la complexité
• Problèmes de décision et la notion de « bonne caractérisation ».
• Classes de complexité des problèmes NP, NP-complet, Co-NP et P.
• Réduction polynomiale d’un problème vers un autre.
Graphes
• Soit X un ensemble.
• On note X2
l’ensemble des parties à deux éléments deX.
• En général, on notera uv la partie{u, v}.
• L’ordre et les répétitions ne sont pas pris en compte : 12 = 21.
Exemple
SiX={1,2,3}, alors X2
={12,13,23}.
Définition
• Un graphe est un couple G= (V, E) formé par un ensemble finiV et un sous-ensemble E de X2
.
• V est l’ensemble des sommets deG(on le note aussi V(G)).
• E est l’ensemble des arêtes deG(on le note aussi E(G)).
10
À quoi ça sert ?
• Les sommets modélisent des “objets” (personnes, pages web, molécules, villes. . . )
• Les arêtes modélisent des “relations” entre ces objets (amitiés, hyperliens, liaisons chimiques, vols. . . )
• Les arêtes peuvent être non-orientées ou orientées (dans ce cas on parle de graphes orientés ; on les verra plus tard)
Quelques exemples de graphes
• ({1,2,3,4,5},{12,13,23,24}).
• Le métro de Paris : ({stations},{stations voisines}).
• L’internet :({pages web},(hyper-)liens).
• Facebook : ({utilisateurs},{amitiés}).
• Molécules. V ={atomes},E ={atomes partageant des électrons}.
12
Représentation graphique
• On représente chaque sommet par un disque .
• Pour représenter une arête uv, on trace un trait entre les disques correspondants à uet à v.
1 2
3 4
5
Remarques
• La forme des « disques » et des « traits » n’a aucune importance (sauf pour la lisibilité de la figure).
• Ce qui compte, c’est de traduire graphiquement s’il y a une arête entre deux sommets ou non.
Adjacence et incidence
Définition
Soient Gun graphe,u etv deux sommets deGeteune arête deG.
• u etv sont adjacents siuv∈E(G);
• eest incidente àusi u∈e;
• les deux éléments deesont ses extrémités ;
• le voisinage de udansGest l’ensemble, noté NG(u), des sommets deG adjacents à u;
• les voisins de usont les éléments de NG(u);
• l’ensemble des arêtes incidentes àu est notéδG(u).
14
Exemple
1
2
3 4
5
• 1 et2sont adjacents
• 4 est voisin de2
• N(2) ={1,3,4}
• N(5) =∅(5 est isolé)
• l’arête 12est incidente à 2
Sous-graphes
Définition
Soient G= (V, E) etH= (W, F) deux graphes.
• H est un sous-graphe de Gsi W ⊆V etF ⊆E.
• H est un sous-graphe couvrant deGsi W =V etF ⊆E.
• H est un sous-graphe induit deGsi W ⊆V etF contient toutes les arêtes uv∈E où u, v∈W. On le note G[W].
16
Illustration des différents types de sous-graphe
1 2
3 4
5
G
1 2
3 4
sous-graphe deG 1
2
3 4
5
sous-graphe couvrant de G
1 2
4
sous-graphe induit deG
Isomorphismes
• Souvent, on ne fera pas de distinction entre deux graphes ayant « la même forme », c’est-à-dire : qu’on ne peut les distinguer si l’on oublie les noms de leurs sommets.
Définition
• Soient G,H deux graphes.
• On dit queGest isomorphe à H s’il existe une bijectionf deV(G) sur V(H)telle que pour toute paire xy de sommets de G, on axy ∈E(G) si et seulement si f(x)f(y)∈E(H).
18
Illustration
1 3 5 7
2 4 6
8 a d
f g
b c
e h
• La relation d’isomorphisme est une relation d’équivalence.
Remarque
Il n’est pas toujours facile, à partir de représentations graphiques, de décider si deux graphes sont isomorphes.
Graphe complémentaire
Définition
SoitG= (V, E) un graphe. Le graphe complémentaireGest défini comme G= (V, V2
\E).
• C’est-à-dire, les arêtes de Gsont les non-arêtes deG, et vice versa.
1 2
3 4
5
G
1 2
3 4
5
G
20
Représentation matricielle et par listes
• Il y a plusieurs façons de représenter un graphe en mémoire de l’ordinateur.
• On va en voir trois : 1. matrice d’adjacence 2. matrice d’incidence 3. liste d’adjacence
• En général, chacune est plus ou moins adaptée au problème considéré et possède des avantages/inconvénients notamment par rapport à la densité (en arêtes) du graphe.
Matrices d’adjacence
Définition
• Soit Gun graphe ànsommets.
• On numérote les sommets V(G) ={v1, . . . , vn}.
• La matrice d’adjacence deG(pour la numérotation choisie) est la matrice M carrée n×nsur{0,1}définie par :
Mij = 1 si et seulement sivivj ∈E(G).
Remarque
• M est symétrique et nulle sur la diagonale.
1 2
3 4
5
M =
0 1 1 0 0 1 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0 0 0 0 0
22
Matrices d’incidence
Définition
• Soit Gun graphe ànsommets etmarêtes.
• On numérote les sommets V(G) ={v1, . . . , vn}et les arêtes E(G) ={e1, . . . , em}.
• La matrice d’incidence deG est la matriceN sur{0,1} de taillen×m définie par :
Nij = 1 si et seulement sivi∈ej. Remarque
1 2
3 4
5
N =
1 1 0 0 1 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0
Listes d’adjacence
Définition
• Soit Gun graphe.
• Une représentation en liste d’adjacence de G est la donnée, pour chaque sommetv deG, de la liste des voisins de v.
1 2
3 4
5
1 : [2,3]
2 : [1,3,4]
3 : [1,2]
4 : [2]
5 : []
24
Degrés
Définition
• Soient Gun graphe etv un sommet de G.
• Le degré dev dansG, notédG(v), est le nombre d’arêtes deGincidentes àv.
• C’est aussi (par simplicité des graphes définis dans ce cours) le nombre de voisins dev :dG(v) =|NG(v)|.
• SidG(v) = 0 on dit quev est isolé.
• SidG(v) = 1 on dit quev est une feuille.
1 2
3 4
5
• d(1) = 2
• d(2) = 3
• d(3) = 2
• d(4) = 1
• d(5) = 0
La somme des degrés
Théorème
SoitGun graphe. On a P
v∈V(G)dG(v) = 2|E(G)|. Démonstration
• Soit S la somme de tous les éléments de la matrice d’incidence deG.
• La somme de chaque ligne est égale au degré du sommet correspondant, donc S=P
v∈V(G)dG(v).
• La somme de chaque colonne est égale à deux, et on a|E(G)|colonnes, doncS = 2|E(G)|.
26
Illustration
1 2
3 4
5
N =
1 1 0 0 1 0 1 1 0 1 1 0 0 0 0 1 0 0 0 0
S= X
v∈V(G)
d(v) = 2 + 3 + 2 + 1 + 0 = 8 S= 2|E(G)|= 2·4 = 8
Une conséquence
Corollaire
• Soit Gun graphe. La sommeP
v∈V(G)dG(v)est paire.
• Autrement dit, le nombre de sommets de degré impair est pair.
Exemple
Sept personnes participent à une fête. Est-il possible que chacun d’entre eux serre la main de trois autres personnes exactement ?
28
Graphes complets
Définition
• Soit n≥1 un entier.
• Le graphe complet à nsommets est le graphe({1, . . . , n}, {1,...,n}2 ).
• Il est notéKn.
K1 K2 K3 K4 K5
Variants des graphes
• Un multigraphe est un graphe auquel on permet d’avoir plus d’une arête entre deux sommets ou une arête dont les deux extrémités sont
identiques (boucles).
• Un graphe orienté est obtenu à partir d’un graphe en ordonnant, pour chaque arête, ses extrémités. Autrement dit, chaque arête est dirigée vers une de ses extrémités.
• Dans un hypergraphe, les (hyper-)arêtes
peuvent être incidentes à un nombre arbitraire de sommets (et pas seulement à deux comme dans le cas des graphes).
30
Opérations élémentaires
Définition
Une opération élémentaire est une opération qui s’effectue en temps constant sur tous les calculateurs usuels.
On considérera les opérations suivantes comme élémentaires :
• Affectation ;
• Comparaisons ;
• Opérations arithmétiques et logiques ;
• Accès à une case d’un tableau ;
• Appel d’une sous-routine ;
• . . .
Complexité temporelle
Définition
La complexité temporelle (dans le pire cas) d’un algorithmeA, noté T(n), est le nombre d’opérations élémentaires le plus grand que puisse effectuer Aavant d’arriver à un résultat, étant donné une entrée de taille n.
• T(n) s’exprime en fonction de la taillende l’entrée.
• pour un graphe, on compte la complexité en fonction dunombre de sommetsn, et éventuellement du nombre d’arêtes m
• doncnn’est pas ici exactement la taille de l’entrée ; mais ce n’est pas grave car c’est relié polynomialement)
• pour un tableau à dimensionsn×m, on compte la complexité en fonction denetm.
32
Remarques sur la complexité temporelle
• Les études de complexité portent dans la majorité des cas sur le comportement asymptotique, lorsque la taille des entrées tend vers l’infini, et l’on utilise couramment les notations grandO.
• La complexité temporelle est la mesure la plus courante en
algorithmique ; on parle parfois simplement de la complexité d’un algorithme
• Il existe d’autres mesures comme la complexité spatiale.
Exemple
1 Algorithme :Max(A) Entrées :une listeA avec
nentrées.
Sorties :le maximum de A.
2 début
3 max←A[0];
4 pouride1à n−1 faire
5 si A[i]>max alors
6 max← A[i]
7 Retournermax ;
Pour calculerT(n) de l’algorithmeMax:
• La lignemax ←A[i]fait2opérations élémentaires.
• Vérifier la condition A[i]>max fait2 opérations élémentaires.
• Incrémenter ifait une opération élémentaire.
• Donc, la boucle répète n−1fois5 operations élémentaires, soit 5(n−1).
• 2 opérations élémentaires pour l’initialisation demax.
• T(n) = 5(n−1) + 2 = 5n−3 =O(n).
34
La notation grand O
Définition
• Soient f(n)etg(n) des fonctions deNversR+.
• On écrit f =O(g) s’il existe une constantec >0telle que f(n)≤c·g(n).
Remarques
• f =O(g)veut dire quef n’augmente pas plus vite que g.
• Dire que f =O(g) est moins fort que dire quef ≤g.
• La différence vient de la constantec, donc par exemple10n=O(n).
• Cette constante nous permet d’ignorer ce qui se passe pour des petites valeurs den.
La notation grand O : exemple
• Supposons que nous devrons choisir entre deux algorithmesA1 etA2
pour une certaine tâche, de complexité T1(n) =n2 etT2(n) = 2n+ 20, respectivement.
• T2 se comporte mieux quand naugmente,A2 est meilleur.
• T2=O(T1), parce que
T2(n)
T1(n) = 2n+ 20 n2 ≤22 pour toutn.
• Par contre,T1 6=O(T2), parce que T1(n)
T2(n) = n2 2n+ 20 tend vers l’infini quand ntend vers l’infini.
36
La notation grand O : exemple
• Supposons qu’il y a un autre algorithmeA3 de complexitéT3(n) =n+ 1.
• La différence entre T2 etT3 est minuscule comparé à la différence énorme entreT1 etT2.
• Donc, on considère deux fonctions comme équivalentes si elles ne diffèrent que par une constante multiplicative.
• On remarque queT2=O(T3): T2(n)
T3(n) = 2n+ 20 n+ 1 ≤20.
• On a aussi T3 =O(T2), avecc= 1.
Définition
De la même manière queO(·)est un analogue de ≤, nous pouvons aussi définir des analogues de≥et de=comme suit :
f = Ω(g) veut direg=O(f)
f = Θ(g) veut diref =O(g)etf = Ω(g).
38