cc-sb

2
Algorithmes de Graphes, GLIN501 Ann´ ee 2014-2015 Contrˆ ole continu L3 Info, L3 Math-Info - Contrˆ ole continu - SUJET B - - Dur´ ee : 1 heure - Aucun document n’est autoris´ e- Le barˆ eme est indicatif, la note totale est sur 15 points. Les exercices peuvent ˆ etre trait´ es dans un ordre quelconque. Sauf mention contraire, toutes les r´ eponses doivent ˆ etre justifi´ ees, et notamment, lors du d´ eroulement d’algorithmes, vous indiquerez la mise-` a-jour des variables utilis´ ees. - Exercice 1 - g++ ALGO.cc -o ALGO; ./ALGO (4 points) On se donne l’algorithme suivant : Algorithme : ALGO Donn´ ees : Un graphe G =(V,E) cod´ e par listes de voisin V ois(x) pour x V . esultat : Un ensemble X de sommets de G. ebut 1 X ←- ∅; 2 pour tous les x V faire c(x) ←- 0; 3 i ←- 0; 4 tant que il existe v/ X avec c(v)= i faire 5 Choisir un tel v; 6 i ←- i + 1; 7 X ←- X ∪{x}; 8 pour tous les z vois(v) faire 9 c(z) ←- c(z) + 1; 10 fin 11 fin 12 retourner X; 13 fin 14 a. D´ erouler ALGO sur le graphe G suivant : b a c d e f g h b. Quelle est la complexit´ e de ALGO ? On notera n le nombre de sommets de G et m son nombre d’arˆ etes. c. Sans preuve, dire quelle propri´ et´ e poss` ede l’ensemble X. d. Proposer un autre d´ eroulement de ALGO sur le graphe G, qui retourne un ensemble X de taille diff´ erente de celle obtenue ` a la question a. 1

Upload: jawad-hamriti

Post on 20-Sep-2015

212 views

Category:

Documents


0 download

DESCRIPTION

j

TRANSCRIPT

  • Algorithmes de Graphes, GLIN501 Annee 2014-2015Controle continuL3 Info, L3 Math-Info

    - Controle continu - SUJET B -

    - Duree : 1 heure - Aucun document nest autorise -

    Le bareme est indicatif, la note totale est sur 15 points.Les exercices peuvent etre traites dans un ordre quelconque.Sauf mention contraire, toutes les reponses doivent etre justifiees, et notamment, lors du deroulementdalgorithmes, vous indiquerez la mise-a`-jour des variables utilisees.

    - Exercice 1 - g++ ALGO.cc -o ALGO; ./ALGO (4 points)

    On se donne lalgorithme suivant :

    Algorithme : ALGO

    Donnees : Un graphe G = (V,E) code par listes de voisin V ois(x) pour x V .Resultat : Un ensemble X de sommets de G.debut1

    X ;2pour tous les x V faire c(x) 0;3i 0;4tant que il existe v / X avec c(v) = i faire5

    Choisir un tel v;6i i + 1;7X X {x};8pour tous les z vois(v) faire9

    c(z) c(z) + 1;10fin11

    fin12retourner X;13

    fin14

    a. Derouler ALGO sur le graphe G suivant :

    b

    a

    c

    de

    f

    g

    h

    b. Quelle est la complexite de ALGO ? On notera n le nombre de sommets de G et m son nombredaretes.

    c. Sans preuve, dire quelle propriete posse`de lensemble X.

    d. Proposer un autre deroulement de ALGO sur le graphe G, qui retourne un ensemble X de tailledifferente de celle obtenue a` la question a.

    1

  • Algorithmes de Graphes, GLIN501 Annee 2014-2015Controle continuL3 Info, L3 Math-Info

    - Exercice 2 - Connexite (6 points) -

    On conside`re que les graphes sont codes par liste daretes.

    a. Question de cours : Ecrire un algorithme qui prend en entree un graphe G = (V,E) et quiretourne FAUX si G nest pas connexe ou un tableau arbre contenant les aretes dun arbrecouvrant de G si G est connexe.

    b. Dans le cas ou` G est connexe, ecrire un algorithme qui prend en entree un sommet r de G ainsique le tableau arbre calcule precedemment et qui renvoie un tableau pe`re tel que pe`re[r]=r etque lensemble des aretes xpe`re[x] correspond exactement aux aretes du tableau arbre.

    c. Si G est connexe, pourquoi a-t-on m n 1 ou` n designe le nombre de sommets de G et m sonnombre daretes ?

    d. Preciser la complexite des algorithmes que vous proposez aux questions a. et b.

    e. Soit G un graphe connexe. Comment trouver un sommet x de G tel que G \ x soit connexe ?f. Ecrire un algorithme qui prend en entree un graphe G connexe et un entier k et qui retourne un

    ensemble X de sommets de G tel que |X| = k et G \X est connexe. On pourra faire appel a` unefonction arbre-couvrant qui calcule un arbre couvrant de G.

    - Exercice 3 - Arbres couvrants de poids minimum (5 points) -

    Soit V = {v1, . . . , v8} un ensemble de noeuds que lon desire connecter par un arbre. Le poids w dela connexion entre deux sommets est donne par la matrice (symetrique) suivante :

    (w(vi, vj)) =

    0 1 5 2 4 6 8 7. 0 3 3 8 5 6 8. . 0 1 7 6 5 4. . . 0 6 7 5 4. . . . 0 3 3 2. . . . . 0 3 7. . . . . . 0 4. . . . . . . 0

    Le poids dun ensemble F daretes de G est defini comme la somme des poids des aretes de F .

    a. Construire un arbre couvrant T = (V, F ) de poids minimum. On utilisera lalgorithme de Kruskal,en justifiant les etapes de selection ou de rejet des aretes.

    b. Existe-il un arbre couvrant de G de poids minimum dans lequel le sommet v3 nest pas unefeuille ? Si oui lequel, sinon justifier. Et existe il un arbre couvrant de G de poids minimum danslequel v3 est une feuille ? Si oui lequel, sinon justifier.

    c. Montrer que si T est un arbre couvrant de poids minimum de G et f une feuille de T , alors T \fest un arbre couvrant de poids minimum de G \ f .

    d. Ecrire un algorithme qui permette de repondre a` la question de facon generale : etant donnesun graphe G dont les aretes sont ponderees par une fonction de poids w et un sommet x de G,existe-il un arbre couvrant de G de poids minimum dans lequel x est une feuille ?

    2