Université d'Alger 1 Faculté des Sciences Département d’Informatique 2e année 2020/2021 Module : Théorie des graphes Série n°3 – Solution Exercice1 Graphe Arbre Arborescence Forêt Oui Oui Oui Oui Non, absence d’une racine Oui Non, nous avons deux arbres constitués par les sous graphes {1,2,3,4,5} et {6,7}. Oui Non, nous sommes en présence d’un cycle Non. Par contre nous avons deux arborescences constituées par les sous graphes {1,2,3,4,5} et {6,7}. Non. Il existe par exemple, plusieurs chemins duis 2 vers 3. Non. Par contre nous avons trois arbres constitués par les sous graphes {1,2}, {3,4} et {5,6}. Non. Par contre nous avons trois arbres constitués par les sous graphes {1,2}, {3,4} et {5,6}. Oui Oui Non, l’orientation du graphe ne permet pas de déterminer une racine. Oui Non Exercice 2 Montrez que si G = (𝑋, 𝑈) est un graphe pondéré et e est une arête dont le poids est inférieur à celui de toute autre arête, alors e doit appartenir à chaque arbre couvrant de poids minimum pour G. - Supposons que T=(𝑋, 𝑈𝑇 ) est l’arbre couvrant de poids minimum pour le graphe G et qui ne contient pas l'arête e. Considérons alors le graphe T (𝑋, 𝑈𝑇 ∪ {𝑒}). Ce graphe doit contenir un cycle C qui contient l'arête e. Soit f une arête de C différente de e, et posons T*=T+e−f. T* est aussi un arbre couvrant pour G, mais w(T*)=w(T+e−f)=w(T)+w(e)−w(f) < w(T), contrairement à T étant un arbre couvrant de poids minimum. Par conséquent, un tel arbre T (c'està-dire sans e) ne peut exister. Exercice 4 Combien d’arbres couvrants différents les graphes suivants possèdent-ils ? 𝑁𝑜𝑚𝑏𝑟𝑒 𝑑 ′ 𝑎𝑟𝑏𝑟𝑒𝑠 𝑐𝑜𝑢𝑣𝑒𝑟𝑎𝑛𝑡𝑠 = 𝐶43 = 4 𝑁𝑜𝑚𝑏𝑟𝑒 𝑑 ′ 𝑎𝑟𝑏𝑟𝑒𝑠 𝑐𝑜𝑢𝑣𝑒𝑟𝑎𝑛𝑡𝑠 = 𝐶53 − (𝑐𝑜𝑚𝑏𝑖𝑛𝑎𝑖𝑠𝑜𝑛𝑠 𝑐𝑜𝑛𝑡𝑒𝑛𝑎𝑛𝑡 𝑢𝑛 𝑐𝑦𝑐𝑙𝑒) = 10 − 2 = 8 𝑁𝑜𝑚𝑏𝑟𝑒 𝑑′ 𝑎𝑟𝑏𝑟𝑒𝑠 𝑐𝑜𝑢𝑣𝑒𝑟𝑎𝑛𝑡𝑠 = 𝐶63 − (𝑐𝑜𝑚𝑏𝑖𝑛𝑎𝑖𝑠𝑜𝑛𝑠 𝑐𝑜𝑛𝑡𝑒𝑛𝑎𝑛𝑡 𝑢𝑛 𝑐𝑦𝑐𝑙𝑒) = 20 − 4 = 16 Exercice 5 Faire tourner l’algorithme de Kruskal sur les graphes pondérés ci-contre. b d g e a i c f h G2 G1 1) Graphe G1 Initialisation : On ordonne les arcs par ordre croissant des poids. 𝒊 1 2 3 4 5 6 7 8 9 10 11 12 13 14 𝒖𝒊 𝒄(𝒖𝒊 ) (c,f) 1 (f,h) 2 (d,e) 2 (a,b) 4 (d,h) 4 (e,f) 5 (c,e) 7 (d,g) 7 (a,c) 8 (b,d) 8 (g,i) 9 (h,i) 10 (b,c) 11 (g,h) 14 𝒊 𝒖𝒊 Création du cycle ? Poids 1 (c,f) 2 (f,h) 3 (d,e) 4 (a,b) 5 (d,h) 6 (e,f) 7 (c,e) 8 (d,g) 9 (a,c) 10 (b,d) 11 (g,i) Non Non Non Non Non Oui Oui Non Non Oui Non 1 3 5 9 13 - - 20 28 - 37 𝑃𝑜𝑖𝑑𝑠_ min(𝑮) = 𝟑𝟕 2) Graphe G2 3) Initialisation : On ordonne les arcs par ordre croissant des poids. 𝒊 1 2 3 4 5 6 𝒖𝒊 𝒄(𝒖𝒊 ) (a,c) 1 (a,b) 1 (d,e) 1 (d,f) 1 (b,c) 2 (e,f) 2 𝒊 𝒖𝒊 Création du cycle ? Poids 7 (b,d) 5 1 (a,c) 2 (a,b) 3 (d,e) 4 (d,f) 5 (b,c) 6 (e,f) 7 (b,d) Non Non Non Non Oui Oui Non 1 2 3 4 - - 9 𝑃𝑜𝑖𝑑𝑠_ min(𝑮) = 𝟗 Exercice 6 Soit le graphe suivant - Trouver l’arbre de poids minimum puis l’arbre de poids maximum. Arbre de poids min Initialisation : On ordonne les arcs par ordre croissant des poids. 𝒊 1 𝒖𝒊 𝒄(𝒖𝒊 ) 2 3 4 5 6 7 8 9 10 (2,5) (5,8) (3,6) (1,2) (2,4) (6,7) (1,5) (4,7) (7,8) (1,6) 1 1 1 2 2 2 3 3 3 3 11 12 13 14 15 (3,4) 3 (4,5) 4 (1,3) 5 (4,8) 5 (6,8) 5 𝒊 1 2 3 4 5 6 7 8 𝒖𝒊 Création du cycle Poids (2,5) (5,8) (3,6) (1,2) (2,4) (6,7) (1,5) (4,7) Non Non Non Non Non Non Oui Non 1 2 3 5 7 9 - 12 𝑃𝑜𝑖𝑑𝑠_ min(𝑮) = 𝟏𝟐 Arbre de poids max La solution du problème de recherche de l'arbre de poids maximum s'obtient en utilisant l’algorithme de Kruskal après avoir multiplié les poids des arcs par (-1). 𝑃𝑜𝑖𝑑𝑠_ max(𝑮) = −𝑝𝑜𝑖𝑑𝑠_𝑚𝑖𝑛(−𝑮) 𝑖 1 (6,8) 𝒖𝒊 𝒄(𝒖𝒊 ) -5 2 3 4 5 6 7 8 9 10 11 12 13 14 15 (4,8) -5 (1,3) -5 (4,5) -4 (3,4) -3 (1,6) -3 (7,8) -3 (4,7) -3 (1,5) -3 (6,7) -2 (2,4) -2 (1,2) -2 (3,6) -1 (5,8) -1 (2,5) -1 𝒊 1 2 3 4 5 6 7 8 9 10 11 𝒖𝒊 Création du cycle ? Poids (6,8) (4,8) (1,3) (4,5) (3,4) (1,6) (7,8) (4,7) (1,5) (6,7) (2,4) Non Non Non Non Non Oui Oui Oui Oui Non -5 -10 -15 -19 -22 - - - - -27 Non -25 𝑃𝑜𝑖𝑑𝑠_ max(𝑮) = −(−27) = 𝟐𝟕