RICM 4 robabilit´
es et Simulation
G´
en´
eration de structures combinatoires
G´
en´
eration de terrains al´
eatoires
L’objectif est de donner des algorithmes qui g´
en`
erent un terrain de ncases ayant kcases occup´
ees par des
obstacles.
G´
en´
eration al´
eatoire uniforme de terrains comportant exactement kobstacles
M´
ethode 1 : Sachant qu’il y a exactement Ck
nterrains, on g´
en`
ere uniform´
ement un entier dans l’intervalle
[1, Ck
n]et on g´
en`
ere la configuration correspondant au num´
ero g´
en´
er´
e,
M´
ethode 2 : On g´
en`
ere les kpremiers ´
el´
ements d’une permutation al´
eatoire de {1,· · · , n}.
M´
ethode 2bis : On g´
en`
ere successivement et uniform´
ement les obstacles sur l’ensemble des cases libres.
M´
ethode 3 : Tant que le nombre d’obstacles g´
en´
er´
es n’est pas ´
egal `
ak, on choisit uniform´
ement une posi-
tion sur [1, ..., n]et si la position est d´
ej`
a occup´
ee, on recommence.
M´
ethode 4 : On place successivement un obstacle sur la case iavec la probabilit´
ek−ki
n−i+1 , o`
ukiest le
nombre d’obstacles d´
ej`
a plac´
es sur les cases {1,· · · , i −1}.
G´
en´
eration al´
eatoire de terrains comportant une densit´
e moyenne d=k
nd’obstacles
M´
ethode 5 : De mani`
ere ind´
ependante on g´
en`
ere un obstacle sur une case avec la probabilit´
ed.
M´
ethode 5bis : Mˆ
eme m´
ethode que que la pr´
ec´
edente, mais avec rejet si la densit´
e obtenue est hors d’un
intervalle [d−, d +].
Question 1.1 : Analyse et algorithmes
Quel est le nombre de configurations de terrains possible ?
Ecrire l’algorithme associ´
e`
a chaque m´
ethode et l’ex´
ecuter pour g´
en´
erer 5 terrains de 5 cases et 3
obstacles). On utilisera la fiche des tirages al´
eatoires donn´
ee pr´
ec´
edemment).
Question 1.2 : Preuve et complexit´
e
Prouver que chaque m´
ethode g´
en`
ere un terrain et que la g´
en´
eration est uniforme (sauf pour 5 et 5
bis).
Pour chaque m´
ethode donner la distribution du coˆ
ut de g´
en´
eration.
G´
en´
erateur d’arbres al´
eatoires
On dispose d’un g´
en´
erateur alea(int n) qui g´
en`
ere un entier uniformement distribu´
e sur {0,· · · , n}.
D’autre part on dispose d’un type arbre binaire et de deux constructeurs d’arbres binaires :
-arbre vide() cr´
ee un arbre vide ;
-assemble arbre(arbre x ; arbre y) prend en argument les arbres xet y et renvoie un arbre binaire
dont le sous-arbre gauche (resp. droit) est x(resp. y).
Soit la fonction suivante :
arbre creer arbre(int n) ;
arbre a1,a2 ;
si (n==0) alors
return arbre vide() ;
sinon
q=alea(n-1) ;
a1=creer arbre(q) ;
a2=creer arbre(n-q-1) ;
return assemble arbre(a1,a2) ;
fin si
2011 1/ 2