M1 2012–2013
Algorithmique de base
Interrogation no 1
Durée : 1h
Les notes de cours sont autorisées.
Exercice 1 (sur 5 points)
1. a) Rappeler la définition d’un arbre binaire de recherche.
b)
Rappeler l’algorithme, vu en cours, de recherche dans un arbre binaire de recherche
et donner sa complexité asymptotique.
2. a)
Donner un algorithme qui prend en entrée un arbre binaire de recherche
arbre
et
un élément
x
et qui renvoie le plus petit élément
y
supérieur ou égal à
x
qui est
présent dans arbre (ou renvoie une erreur si un tel yn’existe pas).
3. a) Rappeler l’algorithme, vu en cours, de parcours en profondeur d’un graphe.
b)
Soit
arbre
un arbre binaire de recherche ayant
n
éléments. En s’inspirant de
l’algorithme de parcours en profondeur, proposer un algorithme de complexité
O
(
n
)
qui imprime dans l’ordre croissant tous les éléments de arbre.
(On pourra écrire, au choix, un algorithme itératif ou récursif.)
Exercice 2 (sur 5 points)
Le but de cet exercice est de présenter un algorithme efficace de calcul de plus court
chemin sur un graphe acyclique (i.e. n’ayant pas de cycle).
Soit
G
un graphe orienté acyclique ayant
S
sommets et
A
arêtes. Chaque arête (
u, v
)
de
G
est, en outre, munie d’une
longueur
qui est un réel strictement positif noté
`
(
u, v
). Si
s
et
t
sont deux sommets de
G
, la distance de
s
à
t
est alors définie comme
l’infimum des quantités
`
(
s0, s1
) +
`
(
s1, s2
) +
· · ·
+
`
(
sk−1, sk
) pris sur tous les chemins
possibles
hs0, s1, . . . , ski
reliant
s
à
t
(i.e.
s0
=
s
,
sk
=
t
et (
si, si+1
) est une arête de
G
pour tout i).
On rappelle que les sommets de
G
peuvent être triés topologiquement, c’est-à-dire
qu’il existe un ordre total noté
≺
sur les sommets de
G
tel que
u≺v
dès qu’il existe une
arête de uvers v.
1.
Rappeler l’algorithme, vu en cours, permettant de calculer un ordre topologique sur
les sommets de G.
1. Par définition, un voisin vde uest un sommet vde Gpour lequel l’arête (u, v) existe dans G.
1/2