0% ont trouvé ce document utile (0 vote)
48 vues6 pages

Solution Ex Amen Jan 2025

Ce document est un examen sur les algorithmes et la complexité, comprenant des questions à choix multiples (QCM) et des exercices pratiques. Les QCM portent sur la complexité des recherches et des structures de données, tandis que les exercices demandent des constructions de structures de données et des algorithmes spécifiques. L'examen est prévu pour le 13 janvier 2025 et dure 1h30.

Transféré par

Lilia Fardeheb
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd
0% ont trouvé ce document utile (0 vote)
48 vues6 pages

Solution Ex Amen Jan 2025

Ce document est un examen sur les algorithmes et la complexité, comprenant des questions à choix multiples (QCM) et des exercices pratiques. Les QCM portent sur la complexité des recherches et des structures de données, tandis que les exercices demandent des constructions de structures de données et des algorithmes spécifiques. L'examen est prévu pour le 13 janvier 2025 et dure 1h30.

Transféré par

Lilia Fardeheb
Copyright
© © All Rights Reserved
Nous prenons très au sérieux les droits relatifs au contenu. Si vous pensez qu’il s’agit de votre contenu, signalez une atteinte au droit d’auteur ici.
Formats disponibles
Téléchargez aux formats PDF, TXT ou lisez en ligne sur Scribd

U.S.T.O.M.B./Dept. Informatique/2ème Année Ing. Nom Prénom : …………………..…………….……………..

………………………
Durée : 01h30’ EXAMEN ALGORITHMIQUES ET COMPLEXITE Lundi 13 Janvier 2025

I) QCM (7pts) COCHER LA OU LES REPONSES JUSTES / CHECK THE CORRECT ANSWER(S)
1. La recherche d’un élément a une complexité pire cas 𝑂(𝑁) dans le cas
The search for an element has a worst-case complexity of 𝑶(𝑵) in the case

 Recherche séquentielle dans une liste quelconque / Sequential search in an unordered list
 Recherche dichotomique dans une liste triée / Binary search in a sorted list
 Arbre binaire de recherche dégénéré / Degenerate binary search tree
 Arbre binaire de recherche équilibré AVL / Balanced binary search tree AVL

2. La recherche de l’élément minimal a une complexité pire cas 𝑂(𝑙𝑜𝑔𝑁) dans le cas
Finding the minimum element has a worst-case complexity of 𝑶(𝒍𝒐𝒈𝑵) in the case

 Liste quelconque / Unordered list


 Liste triée / Sorted list
 Arbre binaire de recherche dégénéré / Degenerate binary search tree
 Arbre binaire de recherche équilibré AVL / Balanced binary search tree AVL
 Min-Tas / Min-heap
 Max-Tas / Max-heap

3. Le nombre de permutations est dans le pire des cas de l’ordre de 𝑂(𝑁²) dans le cas
The number of swaps is in the worst case of the order 𝑶(𝑵²) in the case

 Tri par sélection / Selection sort


 Tri par insertion / Insertion sort
 Tri à bulles / Bubble sort
 Tri par fusion / Merge sort
 Tri rapide / Quick sort

4. Etant donné les séquences suivantes de parcours d’un arbre binaire


Given the following traversal sequences of a binary tree
(infixe / inorder 9 13 5 11 14 41 21 53 25 6, postfixe / postorder 13 11 5 9 21 25 53 41 6 14)

 La séquence préfixe correspondante est / The correspondent preorder sequence is


14 9 13 5 11 6 41 21 53 25
 La séquence préfixe correspondante est / The correspondent preorder sequence is
14 9 5 13 11 6 41 53 21 25
 La séquence par niveaux correspondante est / The level-order traversal is
14 9 6 13 5 41 11 21 53 25
 L’arbre est indéfini (On ne peut pas le déduire) / The tree is undefined (It cannot be deduced)

1/3
U.S.T.O.M.B./Dept. Informatique/2ème Année Ing. Nom Prénom : …………………..…………….……………..………………………
Durée : 01h30’ EXAMEN ALGORITHMIQUES ET COMPLEXITE Lundi 13 Janvier 2025

5. Un arbre binaire de recherche de taille N / A binary search tree of size N

 Ne peut jamais être dégénéré / It can never be degenerated


 Le parcours préfixe donne une liste triée / The preorder traversal gives a sorted list
 Le parcours infixe donne une liste triée / The inorder traversal gives a sorted list
 La complexité pire cas de la recherche d’un élément est 𝑂(𝑙𝑜𝑔𝑁) / The worst-case time
complexity of searching for an element is 𝑶(𝒍𝒐𝒈𝑵)

6. Dans un tas de taille N / In a heap of size N

 L’opération d’insertion d’un élément a une complexité pire cas de l’ordre de 𝑂(𝑙𝑜𝑔𝑁)
The insertion operation for an element has a worst-case complexity of 𝑶(𝒍𝒐𝒈𝑵)

 L’opération de suppression d’un élément a une complexité pire cas de l’ordre de 𝑂(𝑁)
The deletion operation for an element has a worst-case complexity of 𝑶(𝑵)

 Les feuilles se trouvent au niveau de la première moitié du tableau


The leaves are located in the first half of the array

 Le tableau représentant un tas est toujours trié


The array representing a heap is always sorted

7. Dans un graphe orienté avec 𝑁 sommets et 𝑀 arcs ayant une densité de 0.9 (90%)
In a directed graph with 𝑵 vertices and 𝑴 edges having a density of 0.9 (90%)

 La représentation en matrice occupe moins d’espace que les listes d’adjacence


The matrix representation takes up less space than adjacency lists

 La représentation en listes d’adjacence occupe moins d’espace que la matrice


The adjacency lists representation takes up less space than matrix representation

 La recherche des successeurs d’un sommet donné se fait en 𝑂(𝑁²) dans le cas d’une
représentation en matrice
The search for the successors of a given vertex is done in 𝑶(𝑵²) in the case of a matrix
representation

 La recherche des successeurs d’un sommet donné se fait en 𝑂(𝑁 + 𝑀) dans le cas d’une
représentation en listes d’adjacence
The search for the successors of a given vertex is done in 𝑶(𝑵 + 𝑴) in the case of a
adjacency lists representation

2/3
U.S.T.O.M.B./Dept. Informatique 2ème Année Ingénieur d’état en informatique
Durée : 01h30’ EXAMEN ALGORITHMIQUES ET COMPLEXITE Lundi 13 Janvier 2025

II) EXERCICES : (13pts)


1. (3,5pts) Donner la structure de données résultante de l’insertion des sept clés 1,3,2,5,6,8,4 dans
cet ordre dans le cas d’un :
Give the resulting data structure from the insertion of the seven keys 1,3,2,5,6,8,4 in this order in the
case of a:
a. arbre binaire de recherche (BST) (indiquer le facteur d’équilibrage des nœuds du BST obtenu)
binary search tree (BST) (indicate the balance factor of the nodes in the resulting BST)
b. arbre binaire de recherche équilibré (AVL) (indiquer les opérations de rotation utilisées)
balanced binary search tree (AVL) (indicate the rotation operations used)
c. min-tas / min-heap
d. max-tas / max-heap

2. (1,5pts) Soit le graphe orienté représenté ci-après. Donner sa matrice d’adjacence puis le
déroulement de l’algorithme de parcours en profondeur (DFS) à partir du sommet 1.
Let the directed graph represented below. Provide its adjacency matrix and then detail the execution
of the Depth-First Search (DFS) algorithm starting from vertex 1.
1 2 3 4 5
Tete 1 2 2 6 6
1 2 3 4 5
Succ 3 3 2 1 4

3. (4pts) Soit une matrice carrée d’ordre N triée par ordre croissant (voir ci-dessous). Quelle est la
meilleure complexité temporelle possible de recherche d’un élément x dans une telle matrice (Evaluer
la complexité dans le pire des cas). Donner l’algorithme correspondant.
Let a square matrix of order N sorted in ascending order (as shown below). What is the best possible
time complexity for searching an element x in such a matrix (evaluate the worst-case complexity)?
Provide the corresponding algorithm.
M 1 2 3 4 5
1 2 4 5 7 10
2 14 16 18 25 27
3 29 39 45 52 59
4 60 66 74 81 87
5 88 90 92 93 98

4. (4pts) Le carré d’un graphe orienté G de n sommets et m arcs est le graphe G² construit comme
suit : pour chaque paire d’arcs dans G de la forme (u,v), (v,w), on ajoute l’arc (u,w) si ce dernier
n’existait pas déjà. Dans le cas de représentation en listes d’adjacence chainées, écrire le code C/C++
qui permet de construire G².
The square of a directed graph G with n vertices and m edges is the graph G² constructed as follows:
for each pair of edges in G of the form (u,v), (v,w), add the edge (u,w) if it does not already exist. In
the case of representation using linked adjacency lists, write the C/C++ code to construct G².

Utilisez la déclaration suivante / Use the following declaration:

const int MX = 50;


struct Bloc { int val; Bloc* suiv; };

struct Graphe { Bloc *Tete[MX]; int n,m; };


3/3
Solution & Barème
I) QCM : (7pts) (1pt par réponse, Notation : Conformité stricte)
1. La recherche d’un élément a une complexité pire cas 𝑶(𝑵) dans le cas :
 Recherche séquentielle dans une liste quelconque
 Recherche dichotomique dans une liste triée
 Arbre binaire de recherche dégénéré
 Arbre binaire de recherche équilibré AVL
2. La recherche de l’élément minimal a une complexité pire cas 𝑶(𝒍𝒐𝒈𝑵) dans le cas :
 Liste quelconque
 Liste triée
 Arbre binaire de recherche dégénéré
 Arbre binaire de recherche équilibré AVL
 Min-Tas
 Max-Tas
3. Le nombre de permutations est dans le pire des cas de l’ordre de 𝑶(𝑵²) dans le cas :
 Tri par sélection
 Tri par insertion
 Tri à bulles
 Tri par fusion
 Tri rapide
4. Etant donné les séquences suivantes de parcours d’un arbre binaire :
(Séquence infixe 9 13 5 11 14 41 21 53 25 6, Séquence postfixe : 13 11 5 9 21 25 53 41 6 14)
 La séquence préfixe correspondante est : 14 9 13 5 11 6 41 21 53 25
 La séquence préfixe correspondante est : 14 9 5 13 11 6 41 53 21 25
 La séquence par niveaux correspondante est : 14 9 6 13 5 41 11 21 53 25
 L’arbre binaire est indéfini (On ne peut pas le déduire)
5. Un arbre binaire de recherche de taille N :
 Ne peut jamais être dégénéré
 Le parcours préfixe donne une liste triée
 Le parcours infixe donne une liste triée
 La complexité pire cas de la recherche d’un élément est 𝑂(𝑙𝑜𝑔𝑁)
6. Dans un tas de taille N :
 L’opération d’insertion d’un élément a une complexité pire cas de l’ordre de 𝑂(𝑙𝑜𝑔𝑁)
 L’opération de suppression d’un élément a une complexité pire cas de l’ordre de 𝑂(𝑁)
 Les feuilles se trouvent au niveau de la première moitié du tableau
 Le tableau représentant un tas est toujours trié
7. Dans un graphe orienté ayant N sommets et M arcs ayant une densité de 0.9 (90%) :
 La représentation en matrice occupe moins d’espace que les listes d’adjacence
 La représentation en listes d’adjacence occupe moins d’espace que la matrice
 La recherche des successeurs d’un sommet donné se fait en 𝑂(𝑁²) dans le cas d’une
représentation en matrice
 La recherche des successeurs d’un sommet donné se fait en 𝑂(𝑁 + 𝑀) dans le cas d’une
représentation en listes d’adjacence
1. (3,5pts) Donner la structure de données résultante de l’insertion des sept clés 1,3,2,5,6,8,4 dans
cet ordre dans le cas d’un :

1
a. BST (0,5pt : 0.25 BST + 0.25 facteur d’équilibrage)
3

2 5

4 6

b. AVL : (1.5pts : 1 AVL + 0.5 Rotations double DG + 2x simple G)


5

2 6

1 3 8

c. min-Heap : (0.5pt : min-Heap)


1 3 2 5 6 8 4

d. max-Heap : (1pt : max-Heap)


8 5 6 1 3 2 4

2. (1,5pts) Soit le graphe orienté représenté ci-après. Donner sa matrice d’adjacence puis le
déroulement de l’algorithme de parcours en profondeur (DFS) à partir du sommet 1.
Tete
1 2 3 4 5
1 2 2 6 6

Succ
1 2 3 4 5
3 3 2 1 4

Matrice d’adjacence : 0,75pt


1 2 3 4
1 0 0 1 0
2 0 0 0 0
3 1 1 1 1
4 0 0 0 0

Parcours en profondeur : 0,75pt

2 4
Pile 3 3 3 3 3 Pile Vide
1 1 1 1 1 1 1
Mark 1 3 2 4
3. (4pts) Soit une matrice carrée d’ordre N triée par ordre croissant (voir ci-dessous). Quelle est la
meilleure complexité temporelle possible de recherche d’un élément x dans une telle matrice (Evaluer
la complexité dans le pire des cas). Donner l’algorithme correspondant.
M 1 2 3 4 5
1 2 4 5 7 10
2 14 16 18 25 27
3 29 39 45 52 59
4 60 66 74 81 87
5 88 90 92 93 98
Three Ideas :
- Sequential search: O(N²) (0.25 Idea + 0.5 Complexity + 0.75 Algorithm) = 1.5pts
- Binary search in each row: O(NlogN) (0.75 Idea + 0.75 Complexity + 1 Algorithm) = 2.5pts
- One Row One Column: 2N = O(N) (1 Idea + 1 Complexity + 2 Algorithm) = 4pts

La recherche peut se faire au pire cas en 2N itérations (parcours d’une colonne et d’une ligne) soit
une complexité linéaire O(N). (2pts)

bool rech(int **M,int N,int x) (2pts, 1pt par boucle)


{ int i=1;
while (i<=N && M[i][1]<x) i++; // N Itérations au pire cas
if (M[i][1]==x) return true;

i--; int j=1;


while (j<=N && M[i][j]<x) j++; // N Itérations au pire cas
if (M[i][j]==x) return true;
return false;
}

4. (4pts) Le carré d’un graphe orienté G

Graphe buildG2(Graphe G) {
for (int u = 0 ; u < G.n ; u++) {
int k=0; //Nombre d’arcs ajoutés
Bloc *courant1 = [Link][u];
while (courant1 != NULL) {
int v = courant1->val;
courant2 = [Link][v];
while (courant2 != NULL) {
int w = courant2->val;
//chercher si (u,w) n’existe pas déjà
courant3 = [Link][u];
while (courant3 != NULL && courant3->val != w) courant3 = courant3->suiv;
//insertion de (u,w) en tête si (u,w) n’existe pas déjà
if (courant3 == NULL)
{nouv=new Bloc; nouv->val = w; nouv->suiv = [Link][u]; [Link][u] = nouv; k++;}
courant2 = courant2->suiv;
}
courant1 = courant1->suiv;
}
}
G.m += k; return G;
}
Barème :
Parcours : 2pts
Recherche de l’existence : 1pt
Insertion et modification du nombre d’arcs : 1pt

Vous aimerez peut-être aussi