• Aucun résultat trouvé

´ECOLE POLYTECHNIQUE F´ED ´ERALE DE LAUSANNE Sections d’Informatique et de Syst`emes de Communication S´erie d’exercices 3

N/A
N/A
Protected

Academic year: 2022

Partager "´ECOLE POLYTECHNIQUE F´ED ´ERALE DE LAUSANNE Sections d’Informatique et de Syst`emes de Communication S´erie d’exercices 3"

Copied!
2
0
0

Texte intégral

(1)

Algorithmique - Semestre d’Automne 2010/2011

ECOLE POLYTECHNIQUE F´´ ED ´ERALE DE LAUSANNE Sections d’Informatique et de Syst`emes de Communication

S´erie d’exercices 3 10 Octobre 2011

1. Stacks

a) Supposons que nous avons un stack impl´ement´e par un array dans l’´etat initial suivant:

top[S]

32 9 7

1 2 3 4 5 6 7 8 9 10

Quel est l’´etat du stack apr`es les instructions suivantes (c’est-`a-dire quelles sont les valeurs dans l’array, et que vaut l’attribut top[S])?

Push(S,7),Push(S,Pop(S) +Pop(S)),Pop(S),Push(S,11), Push(S,12)

b) Supposons que nous voulons utiliser un stack pour r´esoudre le probl´eme de v´erification de parenth`eses pour l’input suivant:

[(1 + 2)∗3−((4/5) + 6))∗7]

Quel est l’output attendu? En utilisant l’algorithme donn´e dans le cours avec cet input, quelles sont les op´erations effectu´ees sur le stack, et dans quel ordre? Quel est l’output?

2. Stacks et files d’attente

a) Supposons que nous disposons uniquement de la structure de donn´ees stack. Est-il possible de r´ealiser une file d’attente en utilisant deux stacks? Si oui, donner les algorithmes correspondants pour les op´erations de la file d’attente.

b) Nous voulons de nouveau r´ealiser une file d’attente en utilisant deux stacks, mais avec la condition de plus que le temps de calcul des op´erations est similaire `a celui d’une impl´ementation classique de file d’attente.

Plus pr´ecis´ement, supposons que les op´erations sur les stacks se font en temps O(1) (i.e.

ne d´ependent pas de la taille du stack). Donner alors des algorithmes pour les op´erations d’une file d’attente bas´ee sur deux stacks qui ont la propri´et´e que, si l’on commence avec une file vide, pour faire les m premi`eres op´erations de la file d’attente, on a besoin de O(m) op´erations du stack.

3. Permutations avec stacks et files d’attente

Consid´erons une machine avec les caract´eristiques suivantes:

1

(2)

Algorithmique - Semestre d’Automne 2010/2011

• Elle dispose d’un (seul) stack S.

• Elle peut lire un caract`ere de l’input et le d´eposer sur le stack—c’est l’op´eration Push.

• Elle peut enlever un caract`ere du stack et l’ajouter `a l’output—Pop.

• Il n’y a pas d’autres op´erations ni de stock suppl´ementaire.

Par exemple, la suite suivante d’instructions

Push,Push,Push,Pop,Push,Pop,Pop,Push,Pop,Pop cr´ee, si l’input i= (1,2,3,4,5) est donn´e, l’output (3,4,2,5,1).

a) Existe-t-il une suite d’instructions qui sort, pour le mˆeme input i, l’output (1,2,3,5,4)?

Et l’output (2,3,5,4,1)? Ou encore (3,1,2,5,4)?

b) Montrer qu’il est possible d’obtenir la permutation (p1, p2, . . . , pn) de (1,2, . . . , n) s’il n’existe pas d’indicesi < j < k tel quepj < pk< pi.

c) Si nous rempla¸cons le stack par une file d’attente, quelles permutations pouvons nous alors obtenir?

4.Arbres

a) Donner les suites de sommets obtenues en parcourant l’arbre binaire suivant en l’ordre preorder, inorder et postorder.

I

D O

A G M

C

B

H N

L J F

E K

b) V´erifier qu’il s’agit bien d’un arbre de recherche binaire pour l’ordre alphab´etique.

c) Prouver qu’un arbre binaire est un arbre de recherche si et seulement si la suite des valeurs obtenue en prenant les cl´es dans un parcours inorder est croissante.

d) Effacer le sommet D de mani`ere `a pr´eserver la structure d’arbre de recherche.

e) ´Ecrire un algorithme pour effacer dans un arbre de recherche. Donner un argument qui justifie cet algorithme.

f) SoitT un arbre binaire de hauteurh. Montrer queT peut avoir au plus 2h+1−1 sommets.

2

Références

Documents relatifs

b) Modifier l’algorithme de Dijkstra pour qu’il fournisse pour chaque sommet v le plus court chemin du sommet de d´epart s ` a v et l’ensemble des sommets qui font partie de

a) Si on augmente le poids de chaque arˆete de G par une constante c, est-ce que l’arbre T reste minimal? Justifiez votre r´eponse.. b) Si on diminue le poids de l’une des arˆetes de

, k m litt´eraux, determiner si cette formule est satisfaisable (C’est le probl`eme SAT). Quelle est la taille de l’input pour ce probl`eme ?. e) Montrer que ce probl`eme est

L’output attendu est donc un nombre naturel (et pour tout nombre naturel x il existe un input pour lequel x est l’output), l’ensemble des outputs possibles est donc l’ensemble de

Soit x le nombre de 1’s au dessus de la diagonale et y le nombre de 1’s en dessous de la diagonale (donc x + y = nd). Or si n et d sont impairs alors nd sera aussi impair. On en

b) Supposons que nous avons un graphe avec deux c´el´ebrit´es (que nous appelons les sommets i et j). j ne peut donc pas ˆetre une c´el´ebrit´e et nous avons une contradiction.

Nous le comparons ` a a[2] (4), il est plus petit, donc nous continuons, nous le comparons ` a a[0] (2), il est encore plus petit et nous savons donc qu’il doit ˆetre le

Et on divise notre suite en deux sous-suites: la premi`ere consiste en tous les ´el´ements ` a gauche du pivot (ils sont tous plus petits que lui par construction), et la