Académique Documents
Professionnel Documents
Culture Documents
Convention de notation
Tableau (Array)
Enregistrement (Record)
Un tas est un arbre binaire dont les clés des noeuds satisfont la
propriété suivante :
La clé de chaque noeud est supérieure ou égale à la clé de chacun de
ses noeuds enfants.
Les files et les piles sont des ensembles dynamiques dans lesquels
l’élément retiré d’un ensemble par l’opération de suppression est
pré-spécifié.
Dans une pile, l’élément supprimé de l’ensemble est celui qui a été le
plus récemment inséré : la pile implémente une politique de Last-in,
First-out ou LIFO.
De façon similaire, dans une file, l’élément supprimé est toujours celui
qui a été dans l’ensemble dynamique le plus longtemps. Une file
implémente une politique de First-in, First-out ou FIFO. Il existe
différentes façons d’implémenter des files et des piles dans un
ordinateur.
Les piles
L’opération d’insertion dans une pile est souvent appelée PUSH tandis
que l’opération de suppression qui ne prend pas d’élément comme
argument est souvent appelée POP.
Une pile contenant au plus n éléments peut être implémenté avec un
tableau S[]. Le tableau possède un attribut top[S] qui indexe l’élément
le plus récemment inséré. La pile consiste en un tableau S[1..top[S]]
dans lequel S[1] l’élément du fond de la pile et top[S] se trouve à la
tête de la pile.
Quand top[S] = 0, la pile ne contient pas d’éléments. Elle est vide.
PUSH(S,x)
top[S] := top[S] + 1
S[top[S]] := x
POP(S)
If STACK-EMPTY(s)
then error ”underflow”
else top[S] := top[S] − 1
return S[top[S] + 1]
Exemple
Exercice 4.1
Les files
L’opération d’insertion dans une file est appelée ENQUEUE tandis que
l’opération de suppression est appelée DEQUEUE (qui comme dans
l’opération sur les pile POP ne prend pas d’élément comme argument).
Sa propriété FIFO fait qu’une file agit comme une queue dans laquelle
le premier arrivé est le premier servi. Une façon d’implémenter une file
est de le faire avec un tableau contenant au plus n - 1 éléments
Q[1..n].
Une file a un attribut head qui indexe ou pointe sur la tête de file.
L’attribut tail indexe le prochain emplacement dans lequel le nouveau
élément arrivé sera inséré dans la file.
Les éléments de la file sont disposés de façon circulaire
head[Q], head[Q + 1]..tail[Q].
Quand head[Q] = tail[Q], la file est vide. Initialement, nous avons
head[Q] = tail[Q] = 1. Quand head[Q] = tail[Q] + 1, la file pleine.
ENQUEUE(Q,x)
tail|[Q] := x
If tail|[Q] = length[Q]
then tail|[Q] := 1
else tail|[Q] := tail|[Q] + 1
DEQUEUE (Q)
x := Q[head[Q]]
if head[Q] = length[Q]
then head[Q] := 1
else head[Q] := head[Q] + 1
return x
Exemple
Exercice 4.2
Exercice 4.3
Listes chainées
I Simple ;
I Doublement chainée ;
I Circulaire doublement chainée.
I Recherche ;
I Insertion ;
I Suppression.
Hypothèses et précisions
V1 V3 V5 V7
V4 V6
V2
1 3 5 7
2 4 6
Description du DFS
Le graphe précédent avec toutes les arêtes d’arbre et arêtes avant qui
descendent à l’intérieur d’un arbre DFS et toutes les arêtes arrière qui
remontent d’un descendant à un ancêtre.
Remarques
Le tri topologique
Cette partie porte sur une application de l’algo DFS aux graphes
orientés acycliques Un tri topologique sur un graphe orienté acyclique
G = (V , E) est un rangement linéaire de tous ses sommets de telle
sorte que si G contient un arc (u, v ) alors u apparait avant v dans le
rangement. Si le graphe n’est pas acyclique, alors aucun rangement
linéaire n’est possible. Un tri topologique d’un graphe peut être vu
comme un rangement de ses sommets le long d’une droite horizontale
de telle sorte que les arcs vont de la gauche vers la droite.
début
m(s) = 0
Q=s
Tant que Q 6= ∅ et m(t) non défini faire
debut
Soit v un élément de Q
retirer v de Q
pour tout v 0 ∈ S(v ) alors
debut
si m(v 0 ) indéfini alors m(v 0 ) = v
si v 0 = t alors CHEMIN(v 0 )
sinon introduire v 0 dans Q
fin
fin
écrire "pas de chemin de s à t dans G"
Fin tant que
fin
Semestre 1, Année académique 2018-2019
Ayoub Insa Correa (Université de Thies) 60 / 64 / 64
L’algorithme de recherche en profondeur Depth-First-Search
Les algorithmes de base d’exploration de graphes -DFS-
Procédure CHEMIN(v)
Exercice 1 (TD)
Exercice 2 (TD)