Travaux Dirigés N°4
Relations binaires et algorithmique
EL METHNI M.
Exercice I :
Dans toute la suite E est un ensemble fini non vide ayant n éléments et R est une relation binaire définie sur E. On désigne par p le nombre
d’éléments (de couples) de R et par M sa matrice booléenne.
Pour les vérifications dans un cas particulier on utilisera l’ensemble E={a,
b, c, d} et la relation R donnée par son diagramme sagittal
(graphe) :
1) On représente R par un tableau bidimensionnel T[1..n][1..n].
a)
Quel est l’occupation mémoire ?
b)
Quel est le nombre d’opérations élémentaires (addition et multiplication
booléennes) doit-on effectuer pour calculer M2 ?
2) On représente R par sa table de successeurs. Pour cela on
numérote les éléments de E de 1 à n et on se donne deux tableaux
unidimensionnels T[1..n] et S[1..p] où les successeurs
d’un sommet i sont donnés par les éléments : S[T[i]],
… , S[T[i+1] -1]
a)
Quel est l’occupation mémoire ?
b)
Représenter la relation de l’exemple précédent.
3) On représente R par deux tableaux unidimensionnels D[1..p]
et F[1..p] où pour tout couple ai=(x,y)R D[i]=x et F[i]=y.
a)
Quel est l’occupation mémoire ?
b)
Représenter la relation de l’exemple précédent.
3) On représente R par des listes chaînées : A chaque
élément xi on associe la liste de ses successeurs.
a)
Quel est l’occupation mémoire ?
b)
Représenter la relation de l’exemple précédent.
Exercice II :
Dans toute la suite E est un ensemble fini non vide ayant n éléments et R est une relation binaire définie sur E. On désigne par M la matrice
booléenne de R . Rappelons (Ex II TD3) que la fermeture transitive
de R est donnée par
1) On considère la suite matricielle
(Sk) définie par : S1=M et Sk=M+M2+…+Mk 1≤k≤n
a)
Etablir une relation de récurrence entre Sk et Sk+1
b) En déduire un algorithme pour calculer la matrice S de R +.
c)
Pour k>1 évaluer le nombre d’opérations élémentaires (addition et
multiplication booléennes) pour calculer Sk. Quelle est la complexité
de cet algorithme ?
Application : Reprenons l’exercice I du TD II
E={a, b,
c, d, e, f, g,
h} désigne un ensemble d’émissions de
télévision. Le père, la mère et le fils d’une même famille ont chacun classé
ces émissions par ordre de préférence :
père : a, b, c, d,
e, f, g, h
mère : a, c, f, b,
d, e, g, h
fils : a, b, c, e,
f,
d, h, g
On se propose d’étudier l’existence d’un ordre de préférence pour l’ensemble de
la famille.
On dira que l’émission x est préférée à l’émission y
si au moins une personne de la famille préfère x à y.
Cette relation R
n’est pas transitive (voir TD II exercice I). Convenons qu’elle est réflexive.
a) Donner la matrice booléenne
de R.
b) Donner la fermeture
transitive t(R) de R.
c) Donner les propriétés de t(R)
et conclure.
2) Application :
Ordonnancement
Pour accomplir une tâche
(globale) certaines tâches intermédiaires doivent être réalisées en respectant
des contraintes d’antériorité. Donner des exemples.
On désigne par a, b, c, d, e, f, g, h, i et j ces tâches
intermédiaires et soit R la relation d’antériorité
représentée par son diagramme sagittal (graphe) :
(x,y)R si et seulement si la tâche x
doit être réalisée avant la tâche y. Convenons qu’elle est réflexive.
On se propose de déterminer un ordre sur les tâches intermédiaires compatible avec l’antériorité.
a) Si on calcule la fermeture
transitive par l’algorithme précédent combien cela nous coûterait-il ?
b) Réfléchir à un algorithme plus performant en remarquant que ce
graphe ne comporte pas de cycle.