Psi 945 – 2015/2016
http://blog.psi945.fr DS 5 – 23/01/2016
Le sujet est composé d’un exercice (probabilités pour analyser un programme
Python) et d’un problème (séries entières, intégration) complètement
indépendants.
1 Probabilités
Pour ce problème, on donne le programme Python suivant :
1def injective(p, N):
2valeurs_prises = [False for _ in range(N)]
3images = []
4for compteur in range(p):
5y = randint(0, N-1)
6while valeurs_prises[y]:
7y = randint(0, N-1)
8images.append(y)
9valeurs_prises[y] = True
10 return images
On rappelle que randint(a, b) renvoie un entier aléatoire de [[a, b]] (chacun avec la même
probabilité).
1. Analyse du fonctionnement du programme :
On suppose qu’on exécute injective(p, N), avec 26p6N.
(a) Lors du premier passage à la ligne 6:
– Quelles sont les valeurs des variables valeurs_prises, images, compteur, y ?
– Que vaut valeur_prises[y] ?
Est-ce que la ligne 7est exécutée après ce premier passage à la ligne 6?
(b) Lors du deuxième passage à la ligne 6, expliquer ce qui peut se passer, selon la
valeur de yqui aura été affectée juste avant (au deuxième passage à la ligne 5).
(c) On suppose qu’au deuxième passage dans la boucle 4→9on passe à la ligne 8.
Que vaut images avant et après l’exécution de cette ligne ?
(d) On suppose que l’exécution conduit à la ligne 10. Que dire alors de la valeur
retournée ? Donner un exemple possible si (p, N ) = (5,10).
2. Analyse de la complexité du programme :
L’exécution du programme étant soumise à l’aléa des randint, son temps d’exécu-
tion n’est pas constant. Pour évaluer la complexité temporelle, on peut s’intéresser au
nombre d’appels à la fonction randint, qui peut être vu comme une variable aléatoire,
qu’on notera X. On va par ailleurs noter, pour 06c < p,Xcle nombre d’appels à la
fonction randint lorsque compteur vaut c. On a donc X=
p−1
P
c=0
Xc.
(a) Montrer que l’exécution de injective(p, N) peut ne pas terminer.
La variable aléatoire Xest donc seulement définie lorsque le programme termine.
(b) Montrer qu’en cas de terminaison, on a X>p, et que pour p>2, il n’existe pas
de majorant a priori de X.
1