07.11.2013 Views

Une Boite `a Outils Pour la Preuve Formelle de Syst`emes Séquentiels

Une Boite `a Outils Pour la Preuve Formelle de Syst`emes Séquentiels

Une Boite `a Outils Pour la Preuve Formelle de Syst`emes Séquentiels

SHOW MORE
SHOW LESS

You also want an ePaper? Increase the reach of your titles

YUMPU automatically turns print PDFs into web optimized ePapers that Google loves.

92 CHAPITRE 4. CALCUL DE L’IMAGE D’UNE FONCTION<br />

Ceci signifie qu’un couple ([f 1 ...f k ],χ) dans le cache dénote l’image <strong>de</strong> (k! × 2 k )<br />

vecteurs <strong>de</strong> longueur k. La complexité du test d’i<strong>de</strong>ntification étendue dépend directement<br />

<strong>de</strong> <strong>la</strong> représentation <strong>de</strong>s fonctions booléennes. En utilisant les BDDs, tester si une fonction<br />

f est<strong>la</strong>négation<strong>de</strong>g estenO(max(|f|,|g|)). Doncpourtoutordretotal“≼”surlesBDDs,<br />

si <strong>la</strong> fonction λf.λg.((f ≼ g) ∧ (g ≼ f)) et <strong>la</strong> fonction λf.λg.((f = g) ∨ (f = ¬g)) sont<br />

égales, alors λf.λg.(f ≼ g) peut être évaluée au mieux en O(max(|f|,|g|)). Ceci implique<br />

que les propriétés traduites par les Théorèmes 4.8 et 4.9 sont re<strong>la</strong>tivement coûteuses à<br />

tester avec les BDDs : le test d’i<strong>de</strong>ntité étendue entre <strong>de</strong>ux vecteurs ⃗ f et ⃗g <strong>de</strong> dimension<br />

k est en O(klogk ×(| ⃗ f|+|⃗g|)).<br />

Ceci est entièrement différent avec les TDGs. Tester si une fonction f est <strong>la</strong> négation<br />

<strong>de</strong> g est en O(1). Les composantes d’un vecteur [f 1 ...f k ] sont ordonnées selon l’ordre<br />

total “≼” défini par : (f ≼ g) si et seulement si add(f) ≤ add(g), où add(f) est l’adresse<br />

en mémoire du graphe <strong>de</strong> f si f est positive, et add(f) est l’adresse du graphe <strong>de</strong> ¬f<br />

si f est négative. Notons que cet ordonnancement fait que le processus <strong>de</strong> réécriture<br />

d’un vecteur ⃗ f en un couple (c,P) est canonique. Cet ordonnancement, qui peut être<br />

directement fait dans <strong>la</strong> fonction “eliminate-and-partition”, s’effectue en O(klogk). <strong>Une</strong><br />

fois le vecteur ordonné, les <strong>de</strong>ux propriétés 4.8 et 4.9 sont testées en O(k), ce qui fait que<br />

le test d’i<strong>de</strong>ntité étendue est effectué en O(klogk). Ce test sur les TDGs ne dépend que<br />

<strong>de</strong> <strong>la</strong> longueur du vecteur, et pas <strong>de</strong> <strong>la</strong> taille <strong>de</strong>s graphes.<br />

Nous <strong>de</strong>vons maintenant étudier le choix d’un restricteur d’image qui puisse décomposer<br />

efficacement le calcul <strong>de</strong> l’image, ce qui nous conduira à introduire le restricteur d’image<br />

“constrain”.<br />

4.4 Restricteur d’image<br />

Comme le coût <strong>de</strong>s manipu<strong>la</strong>tions <strong>de</strong>s DAGs est directement lié à leur taille, le meilleur<br />

restricteur d’image rr est celui qui minimise <strong>la</strong> taille <strong>de</strong>s DAGs <strong>de</strong> ( ⃗ f rr χ). Mais le<br />

théorème suivant indique que le restricteur d’image rr qui minimise <strong>la</strong> taille du graphe <strong>de</strong><br />

( ⃗ f rr χ) est beaucoup trop coûteux.<br />

Théorème 4.10 Etant donnés les arbres <strong>de</strong> Shannon réduits (ou les DAGs) d’un vecteur<br />

⃗f, trouver un vecteur ⃗ f ′ satisfaisant Img( ⃗ f ′ ,1) = Img( ⃗ f,1) et ayant <strong>de</strong>s arbres <strong>de</strong> Shannon<br />

minimaux (ou <strong>de</strong>s DAGs minimaux) est NP–difficile.<br />

<strong>Preuve</strong>. Nous ne donnons <strong>la</strong> preuve que sur les arbres <strong>de</strong> Shannon réduits, <strong>la</strong> preuve<br />

pour les DAGs étant analogue. D’une part, tout vecteur ⃗ f ′ <strong>de</strong> n composantes tel que<br />

Img( ⃗ f ′ ,1) = 1 doit disposer <strong>de</strong> n variables indépendantes, donc | ⃗ f ′ | ≥ n. D’autre part, <strong>la</strong><br />

fonction vectorielle i<strong>de</strong>ntité Id est <strong>de</strong> taille n, et Img(Id,1) = 1. Donc tout vecteur ⃗ f ′ <strong>de</strong><br />

n composantes tel que Img( ⃗ f ′ ,1) = 1 et qui minimise <strong>la</strong> forme <strong>de</strong> Shannon est <strong>de</strong> taille n.<br />

Alors on voit que tout vecteur ⃗ f ′ <strong>de</strong> n composantes tel que Img( ⃗ f ′ ,1) = 1 et qui minimise<br />

<strong>la</strong> forme <strong>de</strong> Shannon est égal à l’une <strong>de</strong>s n!×2n fonctions λ⃗x.[ε 1 (x π(1) )...ε n (x π(n) )], où π<br />

est une permutation <strong>de</strong>s n premiers entiers. Alors tester si Img( ⃗ f,1) = 1 revient d’abord à<br />

calculer le vecteur minimal ⃗ f ′ tel que Img( ⃗ f ′ ,1) = Img( ⃗ f,1), puis vérifier que ⃗ f ′ est d’une<br />

<strong>de</strong>s formes décrites ci-<strong>de</strong>ssus, ce qui peut être fait en O(n 2 ). <strong>Une</strong> preuve simi<strong>la</strong>ire à celle

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!