Vous êtes sur la page 1sur 7

....

Nom :

Prenom

Groupe:

EMSI

t~me annee I.I.R.

Algorithmique et Structures de donnees 2 h 30 mn

08 / 02 / 2010 Mme OUAZZANI Documents non autorises

Exercice 1 :

Soit Une file d'attente avec priorites ou chaque element est caracterise par deux valeurs:

• L'Identite de I'element sous forme d'un caractere

• La priorite sous forme d'un nombre compris entre 1 et 5 (priorite croissante )

On peut representer cette file d'attente avec priorites sous forme d'un vecteur «file[n] }} d' enregistrements.

Chaque element de la file est represente, dans le vecteur filejn] , par un element fileji], avec 2 champs :

o file[i].id pour l'Identite

II' file[i].prio pour la priorite

Exemple:

file

=(J'\"

id prio

A , 4

C s 1

" E , 4

"

D , 3

" #~ ;; ...... ) fin logique

Les elements de la file ne sont pas tries.

Le vecteur file a une dimension n ,suffisante pour ranger n'importe quelle file d'attente.

La fin logique est indiquee par une valeur speciale «ii w , dans le vecteur, it la place de Pidentite.

N.B.: Le vecteur «Tile » est deja cree en memo ire.

Supprimer un element dans cette file d'attente, avec priorites, revient it :

1

e chercher , depuis le debut de la file, I'element qui a la plus grande priorite ( le premier quand il y a plusieurs elements avec la meme priorite )

• afficher son identite

e supprimer cet element de la file, en procedant par un decalage a gauche.

Exemple:

Apres une suppression, I' element supprime sera affiche, a savoir : « A » , et Ie vecteur file deviendra:

file = ( B ,3 ;; C, 1 ;; E ,4 ;; D, 3 ;; # , )

1) Ecrire l'algorithme qui permet de calculer ct d'affleher le nombre d'elements dans one file avec priorites,

2) Ecrire l'algorithme qui permet de supprimer un element d'une file d'attcnte avec priorites, de la facon decrite ci-dessus.

2

Exercice 2 :

Soit un arbre binaire , ordonne , dentiers tel que:

sous-arbre gauche < noeud <= sous-arbre droit

L'arbre binaire est represente dans 3 vecteurs : FG[n] , V]n] et FD[n] . n etant Ie nombre delements dans l'arbre.

exernple:

FG[i]

6 3 4 o 7 o o 9 o

vrn FDm
0 2
5 8
4 0
1 5
3 0
-7 0
2 0
9 0
5 0 Pour i de 1 an:

V[i] FG[i] FD[i]

contient la valeur d'un nceud

contient l'indice du fils gauche. 0 si pas de fils gauche contient l'indice du fils droit. 0 si pas de fils droit

3

Ecrire l'algorithme qui lit one valeur X , et permct de faire one recherche binaire de X dans I'arbre.

L'ulgorithme doit afficher si X existe, combien de fois et a queUes positions.

exemple:

dans l' arbre de l' exemple precedent:

si X = 5 , le resultat serait :

5 existe

le nombre d'apparitions est 2 les positions sont :

2 9

si X = 6 , le resultat serait :

6 n' existe pas

4

Exercice 3 :

On peut representer un graphe par une matrice Mat [ n , n ] ,ou n represente le nombre de noeuds dans le graphe.

Une ligne i de la matrice represente le nceud i dans le graphe, les elements de cette ligne indiquent les numerus des noeuds suivants ( vers Iesquels on peut passer a partir de ce nceud ), completes par des zeros.

On peut representer un chemin dans ce graphe par un tableau de c elements.

Le but de cet exercice est de verifier si un chemin donne est un chemin possible it deduire du graphe ou pas.

Chaque nceud du graphe peut etre un point d'entree pour un chemin.

Chaque nceud du graphe peut etre un point de sortie pour un chemin.

Exemple :

Soit Ie graphe :

On represente ce graphe par la matrice Mat de Ia facon suivante :

colI col 2 col 3

Iigl lig2 lig3

2 0 0
1 3 0
1 0 0 la ligne numero 1, de Ia matrice Mat, indique qu'a partir du nceud numero 1 on peut atteindre le nceud numero 2 c'est a dire I'arc en gras dans Ie graphe :

5

La ligne numero 2, de la matrice Mat, indique qu'a partir du noeud numero 2 on peut atteindre les noeuds numero 1 et 3 c' est it dire les arcs en gras dans le graphe :

La ligne numero 3, de la matrice Mat, indique qu'a partir du nceud numero 3 on peut atteindre le nceud numero 1, c'est it dire l'arc en gras dans le graphe :

Soit Ie chemin, de 7 elements, represente dans le tableau T :

I 3

T[l]

I 1

T[2]

I 2

T[3]

I 1

T[4]

I 2

T[5]

T[6]

I 3

I 1

T[7]

Le chemin indique dans ce tableau est bien un chemin possible dans le graphe car :

T(2) existe dans la ligne 3 de la matrice T(3) existe dans la ligne 1 de la matrice T( 4) existe dans la ligne 2 de la matrice T(5) existe dans la ligne 1 de la matrice T( 6) existe dans la ligne 2 de la matrice T(7) existe dans la ligne 3 de la matrice

Un A utre chemin:

Soit le chemin, de 5 elements, represente dans le tableau T :

I 2

T[l]

T[2]

T[3]

I 1

I 3

I 1

T[4]

I 2

T[5]

6

Le chemin indique dans ce tableau n 'est pas un chemin possible dans le graphe car:

T(2) existe dans la ligne 2 de la matrice

T(3) n'existe pas dans la ligne 1 de la matrice

On suppose que :

G la matrice Mat et le tableau T sont deja crees

., il y a C elements dans le tableau T , celui-ci etant d'une certaine dimension d o la matrice Mat est de n lignes et n colonnes.

Ecrire I'algorithme qui indique si le chemin, donne par un tableau T, est un chemin possible ou pas , dans le graphe represente par la matrice Mat.

7