Changes between Version 4 and Version 5 of 2010CaoTme4


Ignore:
Timestamp:
Apr 1, 2010, 6:47:08 PM (15 years ago)
Author:
jpc
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • 2010CaoTme4

    v4 v5  
    2222
    2323[[Image(BDD-1.png)]]
     24
    2425
    2526= A) Structures de données et fonctions de base =
     
    184185
    185186
    186 = B)  Représentation Graphique =
     187= C)  Représentation Graphique =
    187188
    188189Soit la fonction Booléenne F(a,b,c,d,e), définie par l’expression suivante
     
    196197E0 = OR( AND (NOT (a) OR (b c NOT (d) e)) c)
    197198
    198 '''B.1''' En  utilisant la décomposition  de Shannon, représentez graphiquement  le graphe
     199'''C.1''' En  utilisant la décomposition  de Shannon, représentez graphiquement  le graphe
    199200ROBDD associé  à la  fonction F(a,b,c,d,e) pour  l’ordre a >  b > c  > d  > e ,  puis pour
    200201l’ordre e > d > c > b > a.
    201202
    202 '''B.2''' Précisez,  pour chaque noeud  du ROBDD ainsi  construit, quelle est  la fonction
     203'''C.2''' Précisez,  pour chaque noeud  du ROBDD ainsi  construit, quelle est  la fonction
    203204Booléenne représentée par ce noeud.
    204205
    205206
    206 = C) Méthodes Bdd::neg() et Bdd::apply() =
     207= D) Méthodes Bdd::neg() et Bdd::apply() =
    207208
    208209Les  méthodes {{{Bdd::apply()}}}  et {{{bdd::neg()}}}  ont été  présentées en  cours. Vous
    209210trouverez le code de ces fonctions dans le fichier {{{Bdd.cpp}}}.
    210211
    211 '''C.1''' Soient F1 et  F2 deux fonctions Booléennes, et les fonctions  F1H, F1L, F2H, F2L
     212'''D.1''' Soient F1 et  F2 deux fonctions Booléennes, et les fonctions  F1H, F1L, F2H, F2L
    212213définies par la décomposition de Shannon suivant la variable x :
    213214
     
    220221l’une des deux fonctions F1 ou F2 est égale à une des deux fonctions constantes 0 ou 1.
    221222
    222 '''C.2'''  Soit la fonction  F, définie  par l’expression  E1 =  a .  (b +  c) Représentez
     223'''D.2'''  Soit la fonction  F, définie  par l’expression  E1 =  a .  (b +  c) Représentez
    223224graphiquement le  ROBDD représentant la  fonction F,  pour l’ordre des  variables a >  b >
    224225c. On  appelle p0, p1,  p2, p3,  p4 les pointeurs  sur les 5  noeuds BDD contenus  dans ce
     
    238239
    239240
    240 = D) Méthode Bdd::fromEbm() =
     241= E) Méthode Bdd::fromEbm() =
    241242
    242243On  cherche à  écrire la  méthode {{{Bdd::fromEbm()}}},  qui construit  automatiquement le
     
    248249possible de construire le graphe ROBDD en utilisant uniquement ces deux fonctions.
    249250
    250 '''D.1''' Décrire en français, l’algorithme  de cette méthode {{{Bdd::fromEbm()}}} dans le
     251'''E.1''' Décrire en français, l’algorithme  de cette méthode {{{Bdd::fromEbm()}}} dans le
    251252cas particulier où tous  les opérandes AND, OR ou XOR présents  dans l’arbre ABL n’ont que
    252253deux opérandes. On traite successivement les trois cas suivants:
     
    260261   est l'un des trois opérateurs OR, AND ou XOR.
    261262
    262 '''D.2''' Ecrire en langage C++ la méthode {{{Bdd::fromEbm()}}} dans le cas particulier de
     263'''E.2''' Ecrire en langage C++ la méthode {{{Bdd::fromEbm()}}} dans le cas particulier de
    263264la question précédente.   Pour valider cette fonction, on écrira  un programme main(), qui
    264265effectue successivement les opérations suivantes :
     
    275276 * Affichage du graphe ROBDD ainsi construit, en utilisant la fonction Bdd::display().
    276277
    277 '''D.3''' Comment faut-il  modifier la fonction {{{Bdd::fromEbm()}}}, pour  traiter le cas
     278'''E.3''' Comment faut-il  modifier la fonction {{{Bdd::fromEbm()}}}, pour  traiter le cas
    278279général, où les opérateurs OR, AND et XOR peuvent avoir une arité quelconque?  Modifier le
    279280code de la fonction, et validez  ces modifications sur l’exemple de l’expression Booléenne
     
    281282
    282283
    283 = E) Méthode Bdd::satisfy() =
     284= F) Méthode Bdd::satisfy() =
    284285
    285286Soit  une  fonction   Booléenne  quelconque  F(x1,  x2,  x3,  ...   xn),  dépendant  de  n
     
    302303représentant F retourne un pointeur sur le noeud représentant G.
    303304
    304 '''E.1''' La décomposition  de Shannon de la  fonction F suivant la variable  x d’index le
     305'''F.1''' La décomposition  de Shannon de la  fonction F suivant la variable  x d’index le
    305306plus élévé  définit les cofacteurs  FH et FL  : F  = x .  FH + x’  .  FL Pour  alléger les
    306307notations,   on  note   sat(F)   la   fonction  Booléenne   construite   par  la   méthode
     
    310311ou FL sont égales à 0 ou 1.
    311312
    312 '''E.2'''  Ecrire,  en  langage  C++,  le  code de  la  méthode  {{{Bdd::satisfy()}}},  et
     313'''F.2'''  Ecrire,  en  langage  C++,  le  code de  la  méthode  {{{Bdd::satisfy()}}},  et
    313314appliquez-la sur la fonction Booléenne F définie dans la partie, en modifiant le programme
    314315main de la fonction précédente.
    315316
    316317
    317 = F) Méthode Bdd::toEbm() =
     318= G) Méthode Bdd::toEbm() =
    318319
    319320On souhaite pour  finir écrire la méthode Bdd::toEbm(),  qui construit automatiquement une
     
    328329(cofacteurs de Shannon).
    329330
    330 '''F.1'''  Quelle expression Booléenne  dépendant de  x, FH  et FL  peut-on associer  à la
     331'''G.1'''  Quelle expression Booléenne  dépendant de  x, FH  et FL  peut-on associer  à la
    331332fonction F dans le  cas général ou FH et FL sont quelconques  ? (aucune des deux fonctions
    332333FH ou FL n’est égale à 0 ou à 1)
    333334
    334 '''F.2''' Comment  cette expression Booléenne  se simplifie-t-elle lorsque l’une  des deux
     335'''G.2''' Comment  cette expression Booléenne  se simplifie-t-elle lorsque l’une  des deux
    335336fonctions FH ou FL est égale à 0 ou à 1. Etudier un par un les 4 cas particuliers.
    336337
    337 '''F.3''' En utilisant les résultats des questions précédentes, proposez un algorithme.
     338'''G.3''' En utilisant les résultats des questions précédentes, proposez un algorithme.