Examen sur l'analyse d'algorithmes, Examens de Analyse circuit électriques
Christophe
Christophe28 février 2014

Examen sur l'analyse d'algorithmes, Examens de Analyse circuit électriques

PDF (155 KB)
4 pages
411Numéro de visites
Description
Exercices de mathématique - examen sur l'analyse d'algorithmes. Les principaux thèmes abordés sont les suivants: exercices.
20 points
Points de téléchargement necessaire pour télécharger
ce document
Télécharger le document
Aperçu3 pages / 4

Ceci c'est un aperçu avant impression

3 shown on 4 pages

Télécharger le document

Ceci c'est un aperçu avant impression

3 shown on 4 pages

Télécharger le document

Ceci c'est un aperçu avant impression

3 shown on 4 pages

Télécharger le document

Ceci c'est un aperçu avant impression

3 shown on 4 pages

Télécharger le document

ENSEIRB 2006-2007 - Département informatique - Première année IF105 - Analyse d’algorithmes

Examen (session1)

Veillez à soigner la rédaction de vos solutions, particulièrement vos justifications et vos preuves. Soyez précis et concis. Bon courage et bonne chance !

Exercice 1 (3 points)

1. Donnez en quelques phrases la définition d’un problème de décision.

2. Donnez le principe d’un algorithme ”brute-force” pour résoudre un problème de décision

3. En vous appuyant sur la structure de votre algorithme, à quelle(s) condition(s) un problème est-il dans la classe de complexité NP ?

4. À quelle(s) condition(s) un problème est-il dans la classe de complexité P ?

Exercice 2 (3 points)

Pour chacune des affirmations suivantes, indiquez si elle est vraie ou fausse en justifiant votre réponse. Les réponses non justifiées, même exactes, ne rapportent aucun point.

1. Les problèmes de la classe de complexité P sont ceux pour lesquels il est impossible de trouver une solution déterministe polynômiale

2. Il est possible de prouver la correction de n’importe quel while-program en utilisant la logique de Hoare

3. Il existe des problèmes que l’on peut résoudre avec une machine de Turing à 2 rubans, mais qu’il est impossible de résoudre avec une machine de Turing n’ayant qu’un seul ruban

4. Si un problème est résolu par une machine de Turing non-déterministe, alors il est aussi résolu par une machine de Turing déterministe

5. Les problèmes de correction et de terminaison des machines de Turing sont indécidables

6. L’ensemble des configurations accessibles d’une machine de Turing est calculable

Exercice 3 (6 points)

Le while-program suivant recherche un élément x (de type elmt) dans une liste châınée l (de type list). E est une variable de type ensemble.

1 l’ := l; E := ∅; 2 while (l’ 6= NULL) ∧ (head(l’) 6= x) do 3 E := E∪{l′} 4 l’ := next(l’);

5 endwhile

1

Le TAD list est muni des opérations :

NULL : list

head : list -> elmt

next : list -> list

qui définissent la liste vide (NULL), la valeur en tête de liste (head) et la liste suivante (next) respectivement.

On s’intéresse à la preuve de terminaison de cet algorithme par la méthode des ensembles bien fondés. On rappelle qu’un ensemble (E,≤) est bien fondé s’il n’existe pas de suite infinie strictement décroissante (relativement à ≤) d’éléments de E.

1. Pour tout ensemble X, on note 2X l’ensemble des parties finies de X. Montrez que (2X ,⊆) est un ensemble bien fondé.

2. Les valeurs de l et l’ peuvent être assimilées aux adresses des premières cellules de ces listes. Soit A l’ensemble des adresses possibles et Al l’ensemble des adresses apparaissant dans l, pour toute liste l. Dans cet algorithme, que stocke l’ensemble E ?

En vous appuyant sur cette remarque, proposez une mesure pour prouver la terminaison de cet algorithme. Vous motiverez votre choix.

3. Prouvez à l’aide de la méthode de Hoare que ce while-program termine. On pourra utiliser l’invariance de E ∪ Al′ = Al. Indiquez, en justifiant votre réponse, quelle(s) précondition(s) vous devez imposer sur l pour la preuve.

Exercice 4 (8 points)

Soit le while-program suivant :

1 p := x*y; mincm := p;

2 while ((p>=x) /\ (p>=y)) do

3 if ((p%x=0) /\ (p%y=0)) then

4 mincm := p

5 endif;

6 p := p-1

7 endwhile

qui calcule le plus petit commun multiple (PPCM) de x et de y, la variable mincm contenant le résultat attendu. L’opérateur % désigne le modulo, c’est à dire le reste de la division entière.

Les spécifications pour cet algorithme sont : – Precond : x ∈ N ∧ y ∈ N – Postcond : mincm = ppcm(x, y)

1. Simulez le fonctionnement de cet algorithme pour les valeurs x = 3 et y = 4. Vous remplirez le tableau suivant :

x y p mincm

3 4 ...

... ...

...

2

2. Pour prouver la correction de cet algorithme avec la méthode de Hoare, nous devons trouver un invariant de la boucle while qui nous permette de déduire la postcondition.

Notons que cet algorithme procède en recherchant le PPCM de x et y dans l’ensemble des valeurs possibles, c’est à dire comprises entre max(x, y) et x ∗ y. Son invariant exprime donc que ”le PPCM de x et y n’est pas dans la partie de l’espace des solutions qui a déjà été explorée”. La différence avec un algorithme de recherche classique est qu’ici, nous avons l’assurance de trouver un multiple de x et y, cependant, nous devons trouver le plus petit d’entre eux. Ceci devra donc être exprimé par l’invariant.

À l’aide d’un schéma, indiquez dans quelle(s) partie(s) de la demi-droite N vous pouvez garantir à toute itération que le PPCM de x et y ne se trouve pas. Proposez alors un invariant.

3. Calculez la preuve de ce while-program en utilisant l’invariant que vous avez trouvé à la question précédente. Mentionnez les obligations de preuve que vous générez. Utilisez pour cela la feuille fournie à cet effet.

4. Prouvez la validité des obligations de preuve. Que pouvez-vous dire de la correction de ce while-program ?

Règles de Hoare

Règle de conséquence :

P ′ ⇒ P , {P}S {Q} , Q ⇒ Q′ {P ′}S {Q′}

Règle d’affectation :

{P [e/x]}x:=e {P} Règle de séquence :

{P}S1 {Q} , {Q}S2 {R} {P}S1;S2 {R}

Règle du if : {P ∧ B}S1 {R} , {P ∧ ¬B}S2 {R} {P} if B then S1 else S2 endif {R}

Règle du while (avec terminaison) :

{P ∧ B ∧ (t = X) ∧ (t ∈ D)}S {P ∧ (t < X) ∧ (t ∈ D)} {P ∧ (t ∈ D)} while (B) do S endwhile {P ∧ ¬B}

où :

1. t est un terme (la mesure) ;

2. X est une nouvelle variable qui n’apparâıt ni dans P , ni dans B, ni dans S, ni dans t ;

3. (D,≤) est bien fondé ; 4. t < X est défini par la formule t ≤ X ∧ X 6≤ t.

3

Nom : Prénom : Place :

p := x*y;

mincm := p;

while ((p>=x) /\ (p>=y)) do

if ((p%x=0) /\ (p%y=0)) then

mincm := p

else

skip

endif;

p := p-1

endwhile

4

commentaires (0)

Aucun commentaire n'a été pas fait

Écrire ton premier commentaire

Ceci c'est un aperçu avant impression

3 shown on 4 pages

Télécharger le document