Vous êtes sur la page 1sur 1
sei Tag FETS TK > Unie | Affecte une Gtiquette une fiche (Attention, une erreur se produit sf-une étiquette a deja ct affoctée & cette the.) get tage taak > Ine Teenvoie Tétiquette Tune tache. {Atiention, une erreur se produit si aucune Aliquette n'a été affectée A cette tache.) thas_tag task —> bool Reenvoie veai si Tétiquette de In tache a Gté definie ‘par Ja fonction set_tag ct faux sinon “Tapue 3 — La table des fonctions complémentaires pour la manipulation des étiquettes & valeurs centidres des taches. ‘Une tache peut étre ordonnancée seulement si toutes les tches dont elle dépend Vont déja été, Trouver un ordonnancement d'un geaphe G acyclique avec wn sell Process revient done & “caumérer les taches de ce graphe dans un ordre (total) qui respecte les contraintes de dependance. Treat done intéressant d'étiqueter le graphe de taches selon ces contraintes, Pour manipuler les iquettes A valeurs entigres des taches, on tend la bibliotheque Graph ‘avec les fonctions sur les taches décrites en table 3. Cot étiquetage fonctionne de la maniére suivante : une tache v regoit uve étiquette tag(v) portant un numéro strictement supérieur & celui de toutes les Glausltes ‘tag(u) des taches u telles que 1» v. Notez que plusieurs taches peuvent recevoir Ia meme etiquette. ‘Algorithme 1 (étiquetage par hauteur depuis les racines)- 1. Initialement, aucune tache n'est étiquetée. . A Vitération d’ordre k = 0, on parcourt ensemble de aux tiches racines 3. A Vitération k > 0, on parcourt Vensemble des taches en repérant toutes les ‘taches qui ont pas encore été étiquetées mais dont toutes les tAches prédécesseurs sont déja ‘riquetées. On affecte ensuite & chacune de ces taches l'étiquette k. 4. Llalgorithme termine quand toutes les taches sont étiquetées. les taches et on affecte l'étiquette 0 On dira d'une téche qui a regu létiquette k qu'elle porte etiquette k. La figure 3a présente un exemple d’étiquetage selon Valgorithme 1. Les étiquettes sont notées dans les eercles grisés & droite des taches. Question 5. Ecrivez une fonction ‘Caml check_tags_ predecessors: task —> bool qui prend en paramétre une tAche et renvoie urai si toutes ses taches préoesseurs ‘dans le graphe de taches sont Ptiquetées ct four sinon. En particulier, la fonction renuoic trai st a tache ne dépend d’aucune tache (c'est une racine). “Rerivez une fonction, Cam label_height: graph —> unit qui prend en paramdirs 1 hres ef affecte 4 chaque the tne étiquette selon Valgoritme 1. Veils bien @ ce Js des fonctions de ta bibliotheque Graph. Question 6. graphe de tae quaucune erreur ne puisse se produire lors des ape

Vous aimerez peut-être aussi