• Aucun résultat trouvé

Devoir à la maison. 1 Problème du rendu de monnaie

N/A
N/A
Protected

Academic year: 2022

Partager "Devoir à la maison. 1 Problème du rendu de monnaie"

Copied!
7
0
0

Texte intégral

(1)

Universit´e Paris Diderot – Paris 7 Algorithmique

L3 Informatique Ann´ee 2009-2010, 1er semestre

Devoir ` a la maison

Ce devoir est compos´e de quatre parties ind´ependantes, num´erot´ees de 1 `a 4. Le bar`eme indicatif attribue 4 points aux parties 1, 2 et 4, et 8 points `a la partie 3.

Attention : Vous devez rendre les solutions de ces quatre parties sur des copies s´epar´ees ! Il est autoris´e de vous documenter dans divers ouvrages pour r´esoudre les probl`emes propos´es. Il est aussi autoris´e de r´efl´echir en groupe aux solutions. En revanche, la r´edactiondoit ˆetrepersonnelle.

1 Probl` eme du rendu de monnaie

On souhaite construire un algorithme pour obtenir une sommeS(Sest un entier) `a partir densortes de pi`eces de valeurs diff´erentes (et enti`eres) : v1, . . . , vn. On suppose que pour chaque valeurvi, le nombre de pi`eces disponibles est illimit´e. On suppose de plus que vn> vn−1> . . . > v1 et quev1= 1.

Exercice 1 [Algorithme glouton]

On consid`ere l’algorithme suivant o`u lesvi sont stock´ees dans un tableauVal. Le tableauSol est utilis´e pour d´ecrire une mani`ere de composer une somme : Sol[i] donne le nombre de pi`eces de valeur vi. La somme correspondante est donc : Σni=1Sol[i]·Val[i].

Dans l’algorithme suivant, le symbole/ d´esigne la division enti`ere et % le reste de la division enti`ere.

Proc´edureSomme(S,Val) begin

Sol:=tableau d’entiers de tailleninitialis´e avec[0, . . . ,0];

j:=n;

tant queS >0faire Sol[j] :=S/Val[j] ; S:=S%Val[j] ; j:=j−1;

retournerSol end

Question 1. Donnez le r´esultat renvoy´e dans le casS= 236 etv1= 1,v2= 3, v3= 50 etv4= 70.

Question 2. Donnez le r´esultat renvoy´e dans le casS= 8 etv1= 1,v2= 4, etv3= 6.

Question 3. D´ecrivez l’id´ee sous-jacente `a cet algorithme.

Question 4. Montrez que cet algorithme termine.

Question 5. Montrez qu’il fournit une solution au probl`eme, c’est-`a-dire une mani`ere de composerS.

(2)

Exercice 2 [Programmation dynamique]

On veut maintenant trouver un algorithme qui calcule une solution utilisant un nombre minimal de pi`eces pour composer la sommeS (`a partir des pi`eces de valeurv1, . . . , vn). Dans un premier temps, on va chercher `a construire un algorithme ne calculant que le nombre minimal de pi`eces n´ecessaires.

Question 1. Montrez que compter le nombre de pi`eces de la solution renvoy´ee par l’algorithmeSomme n’est pas correct pour r´esoudre ce nouveau probl`eme.

Remarque annexe De fait, il est possible de montrer que pour le syst`eme de monnaie europ´een l’algorithme glouton de l’exercice 1 calcule une solution utilisant le nombre minimal de pi`eces. La question pr´ec´edente a montr´e que dans certains syst`emes de monnaie tr`es peu communs, cette propri´et´e n’est pas v´erifi´ee. `A l’heure actuelle, on ne connait pas de crit`ere permettant de distinguer automatiquement les syst`emes de monnaie pour lesquelles l’algorithme glouton calculera une solution utilisant le nombre minimal de pi`ece.

Question 2. Proposez un algorithme qui calcule le nombre minimal de pi`eces n´ecessaires pour composer S.(Indication : Une possibilit´e est calculer successsivement, pour tout S0 ≤S, la valeurNS0 du nombre minimal de pi`eces n´ecessaires pour constituer la sommeS0, et de stocker ces valeurs interm´ediaires dans un tableau.)

Question 3. Adaptez votre algorithme pour calculer non seulement le nombre minimal de pi`eces n´ecessaires, mais aussi une d´ecomposition optimale deS, c’est-`a-dire un ensemble de pi`eces de sommeS et de taille minimale.

Question 4. Comparez la complexit´e de l’algorithmeSommeavec celui ´etabli `a la question pr´ec´edente.

Exercice 3 [Nombre limit´e de pi`eces]

On cherche maintenant `a r´esoudre le probl`eme lorsque le nombre de pi`eces de chaque sorte est limit´e.

Etant donn´´ es une sommeS, un ensemble E de pi`eces compos´e de N1 pi`eces de valeur v1,N2 pi`eces de valeurv2,etc., proposer un principe pour un algorithme calculant, lorsque une solution existe, le nombre minimal de pi`eces n´ecessaires pour r´ealiser la somme S et correspondant `a une solution faisable avecE.

2 Vrai ou Faux sur les ABR

Pour chacun des exercices suivants sur les arbres binaires de recherche (ABR) sur des ensembles de cl´es distinctes, vous devez soit donner une d´emonstration de l’affirmation propos´ee, soit fournir un contre- exemple infirmant cette proposition. Dans cet exercice, nous faisons r´ef´erence la fonction de suppression bas´ee sur la fonctionextraire min.

Exercice 1 On consid`ere un ABRA, et deux nouvelles cl´esaetb. On noteA1(resp.A2) l’ABR obtenu en ins´erantapuisb (resp.b puisa) dansA. A-t-on toujoursA1=A2?

Exercice 2 On consid`ere un ABRA, et deux cl´esaetb dansA. On note A1 (resp.A2) l’ABR obtenu en supprimantapuisb(resp.bpuisa) dansA. A-t-on toujoursA1=A2?

Exercice 3 On consid`ere un ABRA, et une nouvelle cl´ea. On noteA1l’ABR obtenu en ins´erantapuis en supprimantadansA. A-t-on toujoursA1=A?

Exercice 4 On consid`ere un ABRA, et une cl´eadans A. On noteA1 l’ABR obtenu en supprimanta puis en ins´erantadansA. A-t-on toujoursA1=A?

Exercice 5 On consid`ere un ABRA, et une nouvelle cl´ea. On noteCle chemin d’insertion deadansA.

On note aussiG(resp.D) l’ensemble des cl´es `a gauche (resp. droite) du cheminCdansA. Les affirmations suivantes sont-elles toujours v´erifi´ees ?

a) pour toutg∈ G, d∈ D, g < a < d; b) pour toutg∈ G, c∈ C, d∈ D, g < c < d.

(3)

3 Analyse de la complexit´ e en moyenne du tri rapide

Le but de ce probl`eme est de calculer le nombre moyen de comparaisons entre ´el´ements du tableau `a trier qui est effectu´ees dans l’algorithme de tri rapide, lorsque pour une taille donn´ee tous les tableaux sont

´

equiprobables. Pour cela, on consid´ere que le tableau T `a trier a une taillenet contient tous les entiers de 1 `a n. Ainsi,T est une permutation de{1, . . . , n}dans lui-mˆeme.

Exercice 1 Pourquoi est-il possible de faire cette hypoth`ese sans perte de g´en´eralit´e ?

La distribution de probabilit´e sur les tableaux T est alors la distribution uniforme sur l’ensemble des permutations de{1, . . . , n}.

Exercice 2 Quel est le nombre de permutations de{1, . . . , n}? Selon la distribution uniforme, quelle est la probabilit´e d’une permutationT0 donn´ee ?

Dans la suite, la notationT0=T1, p, T2 signifie queT0 est un tableau de taille |T1|+|T2|+ 1 v´erifiant :

T0[i] =

T1[i] pour toutitel que 1≤i≤ |T1|

p pouri=|T1|+ 1

T2[i− |T1| −1] pour touti tel que|T1|+ 2≤i≤ |T1|+|T2|+ 1

Le tri rapide est un algorithme r´ecursif. La premi`ere ´etape consiste en un r´e-ordonnancement du tableau T `a trier en un tableau T0 = T1, p, T2, o`u p = T[n] est appel´e le pivot, et o`u le tableau T1 contient tous les ´el´ements de T inf´erieurs `a petT2 tous ceux sup´erieurs. Ici et pour toute cette ´etude, le dernier

´

el´ement du tableauT `a trier est choisit comme pivot, mais bien-entendu d’autres choix auraient pu ˆetre possibles. Une fois le tableauT r´eorganis´e enT1, p, T2 le pivotpest `a la bonne place, et il suffit de trier r´ecursivement T1 et T2. Le cas de base est atteint lorsque T n’a qu’un ´el´ement : dans ce cas le tableau est d´ej`a tri´e.

La phase consistant `a r´eordonner le tableau autour du pivot est appel´ee«pivotement». Sipest la valeur du pivot, l’algorithme de pivotement que nous allons utiliser fonctionne en ´echangeant successivement tous les couples (i, j)«invers´es», c’est-`a-dire tels quei < jet pourtantT[i]> p > T[j]. Pour cela, nous avons besoin d’une fonction interm´ediaire, appel´ee Prochain couple(T, k, l, p), pour trouver le «prochain» couple invers´e par rapport `a un pivot p, en partant des extr´emit´es du tableau T et en allant vers le centre. Les indices k et l permettent de restreindre la recherche au sous-tableau T[k..l] des cases de T dont les indices sont compris entreketl inclus.

Proc´edureProchain couple (T, k, l, p)

1

d´ebut

2

s:=k;

3

t:=l ;

4

tant ques≤l etT[s]< pfaire

5

s:=s+ 1 ;

6

tant quet≥s etT[t]> pfaire

7

t:=t−1 ;

8

renvoyer(s, t)

9

fin

10

La fonction effectuant le pivotement sur le tableau T[i..j], qui renvoie la nouvelle position du pivot, s’appellePivotement(T, i, j). Et l’algorithme du tri rapide se nommeQuicksort(T, i, j).

(4)

Proc´edurePivotement(T, i, j)

1

d´ebut

2

p:=T[j] ;

3

(s, t) :=Prochain couple(T, i, j−1, p) ;

4

tant ques≤tfaire

5

T[s]↔T[t] ; // abr´eviation pour´Echange(T, s, t) ;

6

(s, t) :=Prochain couple(T, s+ 1, t−1, p)

7

T[j]↔T[s] ;

8

renvoyers

9

fin

10

Proc´edureQuicksort(T, i, j)

1

d´ebut

2

sii < j alors

3

p:=Pivotement(T, i, j) ;

4

Quicksort(T, i, p−1) ;

5

Quicksort(T, p+ 1, j) ;

6

fin

7

Exercice 3 [Pivotement]

Question 1. Simulez `a la main l’ex´ecution dePivotement(T,1,10) sur le tableauT suivant :

7 5 8 6 9 2 3 10 1 4

en pr´ecisant pour chaque appel `aProchain couple(T, k, l, p), lequel des 4 cas ci-dessous est v´erifi´e : a) ∀i∈[k, l], T[i]< p;

b) ∀i∈[k, l], T[i]> p; c) ∃q∈[k, l−1] tel que :

– pour touti∈[k, q] :T[i]< p; – et pour touti∈[q+ 1, l] :T[i]> p;

d) ∃i,∃j,tels que k≤i < j≤l etT[j]< p < T[i].

Question 2. Etant donn´´ e un pivot pet un tableau T[k..l], montrez que s’il existe un couple d’indice (s, t), compris entrek etl, et v´erifiant :sest le plus petit indice tel queT[s]> p, ettest le plus grand indice tel queT[t]< p, alors soits=t+ 1, soits < t.

Montrez que lorsqu’un tel couple existe, l’algorithmeProchain couple(T, k, l, p) renvoie ce couple.

Pour quelles configurations du tableauT, un tel couple n’existe pas ? Dans ces cas, que renvoie l’algorithmeProchain couple(T, k, l, p) ?

Question 3. Prouvez la correction de l’algorithme de pivotement. Indication : il est possible de mon- trer que l’invariant suivant est satisfait « `a la fin de chaque it´eration de la boucle dans l’ex´ecution de Pivotement(T, i, j), tous les ´el´ements deT[i..s−1]sont inf´erieurs `apet tous les ´el´ements deT[t+1..j−1]

sont sup´erieurs `ap». Il ne faut pas oublier de justifier pr´ecis´ement l’´echange finalT[j]↔T[s].

Question 4. Montrez que le nombre de comparaisons entre valeurs du tableau T[i..j] effectu´ees par Pivotement(T, i, j) est soitnsoitn−1, o`un=j−i+ 1 est le nombre d’´elements du tableauT[i..j].

(5)

Exercice 4 [Pr´eservation de la distribution uniforme]

Pour calculer le nombre moyen de comparaisons de l’algorithmeQuicksort(T,1, n), on va raisonner par r´ecurrence. C’est-`a-dire que l’on va chercher `a d´ecrire le coˆut moyen du tri d’un tableau de taille nen fonction du coˆut moyen des appels r´ecursifs. Pour cela, il faut d’abord montrer que notre op´eration de pivotement pr´eserve la distribution uniforme sur les permutations des ´el´ements des tableaux pass´es en argument aux appels r´ecursifs.

L’algorithme de pivotement transforme une permutation T en une nouvelle permutation T0 =T1, p, T2

o`u p=T[n],T1 est une permutation de{1, . . . , p−1} etT2est une permutation de{p+ 1, . . . , n}. Pour simplifier les notations, on appellera f la fonction qui envoie T sur T0. On suppose que pest fix´e dans tout cet exercice.

Question 1. Montrez quef est une surjection de l’ensemble des permutationsT telles queT[n] =psur l’ensemble des permutationsT0 de la formeT1, p, T2o`up=T[n],T1est une permutation de{1, . . . , p−1}

etT2est une permutation de{p+ 1, . . . , n}. En d’autres termes, montrez que toutes les permutations de la formeT1, p, T2sont atteintes parf.

Question 2. SoitT0 =T1, p, T2 une permutation fix´ee dans l’image def. Le but de cette question est de calculer le nombre d’ant´ec´edents deT0, c’est-`a-dire le nombre de permutationsT distinctes telles que f(T) =T0.

a) Soient (p−1) indices, not´esi1, i2, . . . , ip−1, tels que 1≤i1< i2<· · ·< ip−1≤n−1. Montrez qu’il y a exactement une permutationT telle quef(T) =T0 et∀j, T[ij]< p. En d’autres termes, montrez que le choix des cases de valeur inf´erieure `apd´etermine un unique ant´ec´edent deT0. On pourra raisonner sur les ´echanges effectu´es par l’algorithme de pivotement, notamment en justifiant que les casesT[ij] restent inchang´ees si ij < p, et en d´eterminant la case avec laquelle est ´echang´ee T[ij] pour ij ≥p.

(On ignorera dans cette question le dernier ´echange de la casepavec la case nconsistant `a placer le pivot.)

b) En d´eduire que chaque permutationT0 a exactement n−1p−1

ant´ec´edents parf.

Question 3. Apr`es pivotement, quelle est donc la probabilit´e d’une permutation T0 =T1, p, T2? En d´eduire qu’il s’agit de la distribution uniforme sur les permutations T0, puis que les distributions surT1

etT2 sont ´egalement uniformes.

Exercice 5 [Complexit´e moyenne]

Cet exercice peut ˆetre traˆıt´e en admettant les r´esultats des exercices 3 et 4.

L’objet de ce dernier exercice est le calcul du nombre moyen de comparaisons effectu´ees par l’algorithme Quicksort(T,1, n). Ce nombre sera not´eC(n).

Question 1. Que valentC(0) etC(1) ? Montrez que pourn≥2,

C(n)≤n+1 n

n

X

i=1

(C(i−1) +C(n−i)).

D´eduisez-en :

C(n)≤n+2 n

n−1

X

i=1

C(i).

Question 2. Montrez par r´ecurrence queC(n)≤4nlnnpour n≥1. (Indication : vouz pourrez utiliser une comparaison s´erie-int´egrale pour montrer que Pn−1

i=1 ilni≤(n2/2) lnn−n2/4 + 1/4) D´eduisez-en un que le nombre moyen de comparaisons pour le tri rapide est en O(nlnn).

Question 3. En utilisant la mˆeme m´ethode, montrez que le nombre moyen de comparaisons pour le tri rapide est en Θ(nlnn).

(6)

4 De l’art de la contradiction utile

Selon une enquˆete finlandaise, dont nous n’avons pas pu retrouver la source, lorsque trois amis sont invit´es

`

a la mˆeme table, il est in´evitable que l’un des trois en viennent `a contredire les deux autres, et qu’une dispute ´eclate. Mais il est bien connu que les disputes entre amis nourrissent l’amiti´e.

Selon une enquˆete norv´egienne, dont nous n’avons pas plus retrouv´e la source, lorsque trois personnes ne se connaissant pas sont invit´ees `a la mˆeme table, il est in´evitable que l’une des trois en viennent `a contredire les deux autres, et qu’une dispute ´eclate. Mais il est bien connu que les disputes entre inconnus font naˆıtre de nouvelles amiti´es.

En vous appuyant sur ces deux enquˆetes, vous devez montrer que lorsque six convives se retrouvent `a la mˆeme table, l’amiti´e en sort toujours grandie. Pour cela vous pourrez montrer qu’une dispute a eu lieu.

Vous pourrez aussi vous aider de la th´eorie des graphes non-orient´es, et des questions suivantes.

D´efinition Etant donn´´ e un grapheG= (S, A), et un sous-ensembleS0⊂S de ses sommets, on appelle sous-graphe induit parS0 deG, le grapheG0 = (S0, A0) o`uA0 ={{s1;s2} ∈A|s1∈S0, s2∈S0}.

D´efinition On appellestables1 d’un grapheG, les sous-graphes induits deGne contenant pas d’arˆete ; on appellecliques d’un grapheG, les sous-graphes induits deGdont tous les sommets sont deux `a deux reli´es par une arˆete. Par exemple, dans le graphe (1) ci-dessous, les sous-graphes induits par{a; b; f} et {b; e} sont des stables, les sous-graphes induits par{a; d; e} et{c; e; f} sont des cliques. Dans le graphe (2), le sous-graphe induit par{b; d; f} est un stable.

(1)

e f d

b c a

(2)

e f d

b c a

Question 2. Parmi les graphes suivants, lesquels contiennent des cliques de taille 2 ? de taille 3 ? de taille 4 ? des stables de taille 2 ? de taille 3 ? de taille 4 ?

(3) d c

b a

(4) e

d c

b a

(5) f

e d

c b a

(6)

e f d

b c a

(7)

e f d

b c a

(8)

e f d

b c a

(9)

e f d

b c a

1parfois aussi appel´esensembles ind´ependants d’un graphe G

(7)

Question 3. Parmi l’ensemble des stables d’un graphe, on appellestables-maxceux ayant le plus grand nombre de sommets. Mettez en ´evidence dans les graphes (1) `a (9), un de leurs stables-max.

Question 4. Dessiner un graphe de taille 5 dont les stable-max sont de taille 1.

Question 5. Etant donn´´ e un graphe G= (S, A), et un de ses stables-maxG0 = (S0, A0), montrez que les sommets du compl´ementaire deS0 dansS, sont tous voisins dansGd’un des sommets de S0.

Proposition PUne tabl´ee de 6 convives peut ˆetre abstraite par un graphe non orient´e si l’on identifie les invit´es `a des sommets, et les relations d’amiti´e aux arˆetes. L’objet des questions suivantes est de montrer la proposition : «tout grapheG de taille 6 contient une clique de taille 3 ou un stable de taille de 3».

Les deux parties de la disjonction ne sont pas exclusive comme le montre le graphe suivant, o`u le graphe induit par{a, b, c} est un stable, et celui induit par{c, e, f}est une clique.

(10)

e f d

b c a

Question 6. Montrez que cette proposition n’est pas vraie pour les graphes de taille 5.

Dans le cas des graphes de taille 6, la preuve peut se faire par cas sur la taille des stables-max.

Question 7. Montrez que la proposition P est vraie lorsque les stables-max sont de taille 1, et lorsqu’ils sont de taille sup´erieure ou ´egale `a 3.

Il ne reste plus que le cas o`u les stables-max sont de taille 2. Les 4 questions suivantes servent `a prouver ce dernier cas. En particulier dans ces questionsGd´esigne un graphe de taille 6, et aet bd´esignent les deux sommets d’un de ses stables-max. La preuve va se faire par cas sur le cardinal du voisinageV(a) de adansG.

Question 8. Montrez que si|V(a)| ≥3, alors au moins 2 des voisins deasont reli´es par une arˆete dans G. D´eduisez-en que la proposition P est vraie dans ce cas.

Question 9. Montrez que si |V(a)| = 1, alors |V(b)| ≥3. D´eduisez-en que la proposition P est vraie dans ce cas.

Question 10. Par sym´etrie entre aet b, le seul cas restant est le cas |V(a)|=|V(b)|= 2. D´emontrez que dans ce casV(a) etV(b) sont disjoints.

Dans ce cas, le grapheGa donc la structure suivante :

(11) e f c d

b a

o`u les arˆetes en pointill´es sont les arˆetes encore possibles.

Question 11. Montrez que la proposition P est vraie dans ce dernier cas.

Question 12. Proposez une conclusion par rapport au sc´enario initial.

Question 13. Sauriez-vous ´etendre ce r´esultat aux tabl´ees de plus de six convives ?

Références

Documents relatifs

La probabilit´e que la dur´ee d’attente d’une personne prise au hasard soit comprise entre 15 min et 20 min sachant que la personne attend d´ej`a depuis 10 min est

Troisième partie: Calculs des périmètres des deux hexagones.

(b) Puisque les évènements &#34;obtenir une blanche&#34; et &#34;obtenir une noire &#34; sont incompatibles, on se ramène à la pioche ordonnée de deux boules blanches puis de

Ecrire un programme en langage naturel donnant le nombre de pi` eces de valeur a et de pi` eces de valeur b permettant si c’est possible de payer un produit de valeur n sans rendu

Dessiner l’´ evolution de l’´ energie potentielle et de l’´ energie cin´ etique en fonction du temps pendant la chute de la pi` ece de monnaie.. On pose que l’´

Exercice 39 Correction : Afin de d´ eterminer l’esp´ erance math´ ematique de la variable al´ eatoire X, on consid` ere les donn´ ees

Les pi` eces produites par A ont une probabilit´ e 1/5 d’ˆ etre d´ efectueuses, et les pi` eces produites par B ont une probabilit´ e 1/10 d’ˆ etre d´ efectueuses (les pi` eces

[r]