Documente Academic
Documente Profesional
Documente Cultură
Info-Sp Epita
D.S. 312009.3 BW (4 jan 2011 - 10 :00)
Consignes ( lire) :
2 Vous devez rpondre sur les feuilles de rponses prvues cet eet.
Aucune autre feuille ne sera ramasse (gardez vos brouillons pour vous). Rpondez dans les espaces prvus, les rponses en dehors ne seront pas corriges : utilisez des brouillons ! Ne sparez pas les feuilles moins de pouvoir les r-agrafer pour les rendre. Aucune rponse au crayon de papier ne sera corrige.
2 La prsentation est note en moins, c'est dire que vous tes not sur 20 et que les points de prsentation (2 au maximum) sont retirs de cette note. 2 Les algorithmes :
Tout algorithme doit tre crit dans le langage Tout code
Algo Algo
(pas de
C, Caml
ou autre).
Tout ce dont vous avez besoin (types, routines) est indiqu en annexe (dernire page) !
2 Dure : 2h00
Info-Sp Epita
1. Comment utiliser/modier le plus simplement possible l'algorithme de parcours en profondeur d'un graphe non orient pour dterminer si ce dernier est connexe ? 2. Peut-on appliquer cette mthode un graphe orient pour dterminer si celui-ci est fortement connexe ? Justier. 3. Si pref[i] retourne le Numro d'ordre prxe de rencontre du sommet i, dans la fort couvrante associe au parcours en profondeur d'un graphe orient G, les arcs x y tels que pref[y] est infrieur pref[x] dans la fort sont appels ? Comment peut-on les direncier ?
Algorithmique Partiel no 1 D.S. 312009.3 BW Exercice 3 (ARN : question d'quilibre 5 points ) Rappels :
Info-Sp Epita
Un arbre bicolore (arbre rouge-noir ) est un arbre binaire de recherche dont les nuds portent une information supplmentaire : ils sont rouges ou noirs (ou blancs sur un tableau noir !). C'est une reprsentation des arbres 2-3-4. L'arbre est "quilibr" condition que les proprits suivantes soient respectes : Un nud rouge ne peut pas avoir de ls rouge. La couleur de la racine est noire. Le nombre de nuds noirs sur tous les chemins de la racine aux feuilles est le mme (hauteur noire = hauteur arbre 2-3-4).
On dsire vrier si un arbre bicolore est bien quilibr. Il faut donc vrier que les nuds rouges et noirs respectent bien les proprits rappeles ci-dessus. L'algorithme crire ici devra vrier : Qu'il n'y a pas deux nuds rouges qui se suivent : pour cela la fonction retournera un entier gal 0 ou 1 selon que la racine de l'arbre parcouru est rouge ou pas. Que les hauteurs noires en chaque branche sont identiques : pour cela, la fonction prendra un paramtre global hauteur qui contiendra la hauteur de l'arbre parcouru. Dans la cas o l'arbre n'est pas quilibr, la fonction retournera un entier ngatif. La vrication que la racine est noire sera faite par la fonction d'appel, donne ci-dessous.
variables
debut retourne (A = nul) ou (non A.rouge et (test_arn (A, hauteur) <> -1)) n algorithme fonction est_arn
Complter la fonction rcursive test_arn (t_arn A) (vous pouvez ajouter des variables si cela vous semble ncessaire). Le type t_arn est rappel en annexe.
entier
hauteur
Algorithmique Partiel no 1 D.S. 312009.3 BW Exercice 4 (Poids cumul d'un arbre couvrant 7 points )
Info-Sp Epita
2 1. 4 1. 1. 10. 5 1. 4. 2. 3 5. 1. 1
2.
6 4.
2. 8
7 1.
Figure
Dans cet exercice nous travaillerons avec des graphes orients et valus en reprsentation dynamique. On dnit le poids cumul d'un sommet dans un arbre couvrant (issu d'un parcours profondeur) comme la somme des poids des ls de sommet dans l'arbre plus le cot des arcs couvrant joignant ces sommets, c'est dire : p[s] = i (cout(s, si ) + p[si ]) o si est un ls du sommet s dans l'arbre couvrant. On se propose d'crire un algorithme qui construit l'arbre couvrant du parcours profondeur d'un graphe et calcule le poids cumul des sommets de cet arbre. Par exemple, pour le graphe de la gure 1 en partant du sommet 2 (en rencontrant les sommets dans l'odre croissant) on obtiendra le vecteur de poids (prsent ici avec le vecteur de pres reprsentant l'arbre couvrant) suivant : pere poids 0
-1 17.
2 16.
3 6.
"
4 5.
5 3.
6 1.
7 0.
&
Remarque : les feuilles de l'arbre couvrant ont un poids de zro et les sommets non atteints par le parcours ont un poids de +.
Pour la suite, on considre que le principe d'un parcours profondeur est acquis (vous n'avez pas dcrire le principe du parcours, seulement ce qui est spcique l'algorithme.) 1. crire la fonction cumul(ps,pere,poids) qui eectue le parcours profondeur depuis le sommet point par ps et remplit le vecteur pere reprsentant l'arbre couvrant ainsi que le vecteur (rel) poids contenant les poids des sommets atteints par le parcours. La fonction renverra le poids cumul du sommet ps. 2. crire la fonction (appel de l'algorithme prcdant) poids_cumul(s,g,pere,poids) qui lance le parcours en profondeur sur le sommet s dans le graphe g.
Info-Sp Epita
Annexes
Reprsentation des arbres bicolores
Routines autorises
Files
Toutes les oprations sur les les peuvent tre utilises condition de prciser le type des lments.
file_vide (): t_file : initialise la le est_vide (t_file f ) : booleen : indique si f est vide enfiler (t_elt_file e, t_file f ): t_file : enle e dans f defiler (t_file f ): t_elt_file : dle et retourne le premier lment de f
Autres
Les fonctions max, min, abs, ainsi que les valeurs et sont aussi autorises. De mme pour la fonction recherche (entier s, t_graphe_d G) qui retourne le pointeur sur le sommet s dans G (de type t_listsom).