• Aucun résultat trouvé

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

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 5"

Copied!
3
0
0

Texte intégral

(1)

Algorithmique - Semestre d’Automne 2011/2012

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

S´erie d’exercices 5 24 Oct. 2011

1. Algorithmes r´ecursifs : Le diam`etre d’un arbre binaire

Soit G= (V, E) un graphe. Pour deux sommets a, b∈ V, on d´efinit la distance d(a, b) comme

´etant la longueur du plus court chemin dea`ab. Lediam`etredeGest d´efini comme ´etant la distance maximale dans le graphe, i.e.

diam(G) := max

a,b∈V d(a, b).

a) SoitT un arbre binaire, et soientT1 etT2 ses sous-arbres gauche et droit. Exprimer le diam`etre puis la hauteur de T en fonction des diam`etres et hauteurs deT1 et T2.

b) Construire un algorithme qui calcule le diam`etre d’un arbre binaire en temps lin´eaire (en le nombre de sommets).

(Indice : Il faut construire par r´ecurrence un algorithme qui, ´etant donn´e un arbre binaire, retourne sa hauteur et son diam`etre en temps lin´eaire).

2. Diviser pour r´egner : Le probl`eme du skyline

On d´ecrit un bˆatiment par un triplet (x1, x2, h) ∈R3 o`u x1 d´ecrit la premi`ere coordonn´ee sur l’axe x et x2 la deuxi`eme. La hauteur du bˆatiment est d´ecrite par h. Etant donn´e une liste de n bˆatiments, la tˆache est de trouver la silhouette (skyline) form´ee par nos bˆatiments. Illustration :

La silhouette est repr´esent´ee par la liste croissante de coordonn´ees x et la hauteur correspon- dante.

a) Etant donn´e deux skylines on veut ´ecrire un programme pour les combiner (c’est-`a-dire trouver le skyline obtenu avec tous les bˆatiments du premier et du deuxi`eme).

On suppose qu’on nous donne deux tableauxA etB dont chaque entr´ee contient deux valeurs : x et h. Ces tableaux d´ecrivent les deux skylines qu’on veut combiner. Le output est aussi un skyline, c’est-`a-dire un tableau C avec le mˆeme type d’entr´ees, qui d´ecrit le skyline obtenu en combinant les skylines de A etB.

A[1].x A[2].x A[3].x A[4].x A[1].h

A[3].h A[2].h

1

(2)

Algorithmique - Semestre d’Automne 2011/2012

Ecrire un algorithme qui, ´etant donn´e comme input les tableauxAetB, retourne comme output le tableau C. (Indication : Regarder MergeSort).

b) Utiliser le fait qu’on puisse combiner deux skylines pour construire un algorithme diviser-pour- r´egner qui r´esout le probl`eme Skyline en O(nlog(n)).

3. Algorithmes par induction : Le probl`eme de la c´el´ebrit´e

Nous aimerions trouver une c´el´ebrit´e dans un ensemble V de n personnes. Pour mod´eliser ce probl`eme, nous caract´erisons une c´el´ebrit´e comme suit : C’est une personne qui est connue de tout le monde, mais qui ne connait personne.

Pour r´esoudre ce probl`eme, nous avons le droit de poser un seul type de question : si a, b∈V sont des personnes, nous pouvons demander `a a s’il connaitb, et il nous r´epondrera par “oui” ou

“non”. Le probl`eme est donc le suivant : Etant donn´e un groupe de personnes V contenant une c´el´ebrit´e, trouver la c´el´ebrit´e en posant de telles questions.

Remarquons qu’on peut mod´eliser ce probl`eme comme un probl`eme de graphe orient´e (V, E) : L’ensemble V est l’ensemble des personnes, et on met une fl`eche dea∈V `a b∈V si et seulement si a connait b. Poser la question ”a connait-il b?” revient alors `a v´erifier si l’´el´ement (a, b) de la matrice d’adjacence vaut 1.

a) Dans le graphe suivant y-a-t il une c´el´ebrit´e ?

00 0 11 1

00 11

00 11

00 11

00 11 00000000

00000000 00000000 00000000 00000000 00000000 00000000 00000000

11111111 11111111 11111111 11111111 11111111 11111111 11111111 11111111

00000 00000 00000 00000 00000 00000 00000

11111 11111 11111 11111 11111 11111 11111

0000000000 0000000000 0000000000 0000000000 1111111111 1111111111 1111111111 1111111111

000000 000000 111111 111111

000000 000000 000000 000000 000000 000000 000000 000000 000000 000000

111111 111111 111111 111111 111111 111111 111111 111111 111111 111111

000000 000000 000000 000000 000000

111111 111111 111111 111111 111111

1

2

3 4

5

b) Supposons que nous avons un ensemble de personnesV dont certaines se connaissent (on obtient donc un graphe orient´e (V, E)). Montrer qu’il peut y a voir au plus une c´el´ebrit´e dansV. c) Supposons que le sommet i est une c´el´ebrit´e. Que peut-on dire sur la ligne iet la colonne ide

la matrice d’adjacence du graphe ?

d) D´ecrire l’algorithme na¨ıf pour r´esoudre le probl`eme de la c´el´ebrit´e, ´etant donn´e la matrice d’ad- jacence du graphe. Donner l’ordre du nombre de questions qu’il faut poser (c’est-`a-dire le nombre d’entr´ees dans la matrice qu’il faut regarder) en fonction du nombre de personnes n=|V|.

e) Observons que pour tout a, b∈V, on a

– Si aconnaˆıtb, alorsane peut pas ˆetre une c´el´ebrit´e.

– Si ane connaˆıt pasb, alorsb ne peut pas ˆetre une c´el´ebrit´e.

2

(3)

Algorithmique - Semestre d’Automne 2011/2012

Nous voulons utiliser ce fait pour construire par induction un algorithmeO(n) pour r´esoudre le probl`eme de la c´el´ebrit´e.

Pour simplifier, nous supposons qu’il y a en effet une c´el´ebrit´e dans G, et qu’il s’agit donc juste de la trouver.

– (i) Base. Montrer que pourn= 2 on peut r´esoudre ce probl`eme en posant une seule question.

– (ii) Pas. Supposons que nous savons r´esoudre le probl`eme pour n personnes en posant T(n) questions. Montrer qu’on peut le r´esoudre pourn+ 1 personnes en posantT(n) + 1 questions.

– (iii) En d´eduire un algorithme pour r´esoudre le probl`eme pour n personnes, et donner le nombre de questions qui sont n´ecessaires.

3

Références

Documents relatifs

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

1. On peut modifier la variante du cours pour m´emoriser sur le stack aussi le chemin de retour. ` A chaque retour correspond exactement un aller, ce qui fait que l’arˆete e