IN101 - cours 05 - 15 octobre 2010
11 pages
Français

IN101 - cours 05 - 15 octobre 2010

-

Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres
11 pages
Français
Le téléchargement nécessite un accès à la bibliothèque YouScribe
Tout savoir sur nos offres

Description

Un probl`eme concretRecherche de collisions√Le paradoxe des anniversaires dit que 365 ´el`eves sont suffisants(en moyenne) pour avoir une collision d’anniversaire,IN 101 - Cours 05deux ´el`eves ayant leur anniversaire le mˆeme jour.7 octobre 2011Comment fait-on pour efficacement trouver ces “paires” d’´el`eves?pr´esent´eparMatthieu FiniaszUn probl`eme concret Un probl`eme concretRecherche de collisions Recherche de collisions√ √Le paradoxe des anniversaires dit que 365 ´el`eves sont suffisants Le paradoxe des anniversaires dit que 365 ´el`eves sont suffisants(en moyenne) pour avoir une collision d’anniversaire, (en moyenne) pour avoir une collision d’anniversaire, deux ´el`eves ayant leur anniversaire le mˆeme jour. deux ´el`eves ayant leur anniversaire le mˆeme jour.Comment fait-on pour efficacement trouver ces “paires” d’´el`eves? Comment fait-on pour efficacement trouver ces “paires” d’´el`eves?M´ethode simple : M´ethode simple :on remplit un tableau avec les n dates d’anniversaire, on remplit un tableau avec les n dates d’anniversaire,on compare chaque ´el´ement `a tous les autres du tableau on compare chaque ´el´ement `a tous les autres du tableau,2 2complexit´eenΘ(n ). complexit´eenΘ(n ). Peut-on faire mieux? Peut-on faire mieux? OUIon trie le tableau,on le parcourt en regarant si 2 voisins sont ´egaux,complexit´eenΘ(nlogn).Le triDescription du probl`emeOn se donne un tableau de n ´el´ements (des entiers par exemple) etune relation ...

Informations

Publié par
Nombre de lectures 37
Langue Français

Extrait

IN 101 - Cours 05 7 octobre 2011
pre´sent´epar Matthieu Finiasz
Unproble`meconcret Recherche de collisions Leparadoxedesanniversairesditque365e´l`evessontsusants (en moyenne) pour avoir unecollision d’anniversaire, ˆeemelirsaerivnnarueltnayaseve`ldeux´eru.emoj
Comment fait-on pourefficacementrouvtspaerced´riseev?slee` Me´thodesimple: on remplit un tableau avec lesndates d’anniversaire, oncomparechaque´el´ementa`touslesautresdutableau 2 oceenxit´mpleΘ(n).
Peut-on faire mieux ?
Unproble`meconcret Recherche de collisions Leparadoxedesanniversairesditque365´ele`vessontsusants (en moyenne) pour avoir unecollision d’anniversaire, e`ev´xledueniveuranntlesayauojemeˆmeleriasrr.
Comment fait-on pourefficacementevuosecriapserd´el`eves?tr
Unprobl`emeconcret Recherche de collisions Leparadoxedesanniversairesditque365´ele`vessontsusants (en moyenne) pour avoir unecollision d’anniversaire, irelemˆemejour.ltnaaruevinnasrede´euxevl`ayes
Comment fait-on pourefficacement´desirpasceervuortev?slee` M´ethodesimple: on remplit un tableau avec lesndates d’anniversaire, oncomparechaque´ele´ment`atouslesautresdutableau, 2 molpxetien´ecΘ(n).
Peut-on faire mieux ?OUI ontrie le tableau, onleparcourtenregarantsi2voisinssonte´gaux, eplmioxc´teenΘ(nlogn).
Comment trier un tableau
Complexite´variable Quelquesd´enitions
Complexit´edanslepirecas Tempsdecalculdanslepirecaspourlesentr´eesdetaillen:´xee
T(n) = maxT(x). {x,|x|=n}
Complexite´moyenne Tempsdecalculmoyensurtouteslesentre´esdetaillene:x´e Tm(n) =pn(x)T(x). x,|x|=n (pnrpednoittilibabonetues)buristdiedatliel´esurlesentr´eesn.
Le tri Descriptionduproble`me
On se donne un tableau denaperexpmele)´etl´ements(desentiers unerelation d’ordre totale. on effectue untri par comparaison, utilisant uniquementlacomplexite´estlenombredecomparaisons.
  2 Lesalgorithmes´ele´mentairesontunecomplexit´eenΘn. Lesmeilleursalgorithmesontunecomplexite´enΘ(nlog(n)).
En autorisant plus que des comparaisons, on peut parfois faireΘ(n).
Tri par insertion Si¸camarchepourn,c¸amarchepourn+1
1voidinsertion_sort(int*tab,intn) { 2inti,j,tmp; 3for (i=1; i<n; i++) { 4tmp = tab[i]; 5j = i-1; 6while ((j >= 0) && (tab[j] > tmp)) { tab[j+1] = tab[j]; 7 8j--; 9} 10tab[j+1] = tmp; } 11 } 12
L´el´ementiesiltsareapmrgne´itri´es):1pmires´ere´letnem´d(sa`je i ins´ererune´l´ementcoˆuteaupireien moyenne ,   2 2 complexite´enΘnipersneladnvereauitablcas()e´i,emesrttn   2 complexit´emoyenneenΘnaussi.
Oncommenceparrecopierdos`adosles2tableaux(couˆtΘ(n)),
Tri fusion Fusion des sous-tableaux
p(p+r)/2r-1 1 5 4 9 7 3 6 2
Tri rapide Quicksort
1 4 5 9 7 6 3 2
Pourame´liorerunpeulesperformances,onarreˆteletride`sque lundesparcoursninverseaucun´el´ements. Ce tri ne fait queΘ(ntri´ej`aaud´able.eoc)armpsoaisunsntru
Tre`srapide,peuteˆtrefaiten place:   2 complexit´edanslepirecasΘn, complexite´enmoyenneΘ(nlog(n)).
2 3 6 7
1 4 5 9
Oncherche`are´duireleprobl`eme: on coupe le tableau en deux, ontriechaquemoiti´e, on fusionne.
Inse´rerun´el´ementsdansuntableautri´ecoˆuteΘ(n), n fusionnerdeuxtableauxdetaillecouˆteaussiΘ(n). 2
puisonparcourtparlesdeuxboutsenavan¸cantdupluspetitcoˆt´e a`chaquefois(coˆutΘ(n) aussi).
Lide´eestdefaireremonterlesgrands´el´ements`alandutableau onparcourtletableauencomparantl´el´ementiauiet on+ 1 lesinversesin´ecessaire, `al,sruocrapudnalsttepllegrusd,anrederein´le´neme apr`esiparcours lesiplusgrands´eln.sstneme´ala`tno on faitn´e.ttricoar1plttaruesuasebael Complexit´e:oneectueΘ(n) parcours comportantΘ(n) compa-raisons`achaquefois,   2 letria`bullesaunecomplexite´deΘndans le pire cas et en moyenne.
4 5 9 7 6 i j
1 2 3 4
Tri fusion n Si¸camarchepour,c¸amarchepourn 2
1voidquick_sort(int*tab,intp,intr) { 2if (r-p > 1) { 3intq =partition(tab,p,r); 4quick_sort(tab,p,q); 5quick_sort(tab,q+1,r); 6} 7}
5 9 7 6 i j
1 2 3
Trire´cursifbase´surunpartitionnement: on choisit unpivot, onpermutelese´le´mentsdutableau gransles,puiivotlspep,iubetuua´dtstipeesl,ds on trie les petits entre eux et les grands entre eux.
7 3 6 2
7 3
6 2
7
2
3
1 5
3 7
2 6
Tria`bulles
4 9
4 9
9
Lecouˆttotalestceluidesfusions: chaquefusioncoˆuteΘ(rp), lecouˆttotalestΘ(nlog(n)), dans le pire cas et en moyenne.
1 5 4 9
4
1 2 3 4 5 6 7 9
2 3 6 7
1
5
1 5
1 4 5 9
6
La fonctionpartitioneffectuerp1 comparaisons.
1intpartition(int*tab,intp,intr) { 2intx = tab[p]; 3intq = p; 4inti,tmp; 5for (i=p+1; i<r; i++) { 6if (tab[i] <= x) { 7q++; 8tmp = tab[q]; 9tab[q] = tab[i]; 10tab[i] = tmp; 11} 12} 13tmp = tab[q]; 14tab[q] = tab[p]; tab[p] = tmp; 15 16return q; 17}
En moyenne
n
Tableau trié
n
Complexit´es
compare´es En pratique
Tableau inversement trié
n
Tri rapide Tri par insertion Tri fusion
Algorithme Tri par insertion Tri`abulles Tri rapide Tri fusion
Cas le pire   2 Θn   2 Θn Θ(nlog(n))
Complexite´scompare´es Asymptotiquement
En moyenne   2 Θn Θ(nlog(n)) Θ(nlog(n))
Application L’algorithme “quickselect”
Pourtrouverlam´ediane(ouleke´em´eleutntnd):auleabi`em-n onpeuttrierletableauetprendrel´el´ement, 2 cˆotueΘ(nlogn). maiscelanestpasn´ecessaire...
On s’inspire du tri rapide : on conserve la ligne :intq = partition(tab,p,r); aulieude2appelsre´cursifs,onnenfaitquun n n queq<o , selon2uq>2 onnefaitquunepartiedutri,leminimumn´ecessaire, n n n esnetlaelixocpmyone´tmen... = 2+ + + + n=Θ(n). 2 4 8
  • Univers Univers
  • Ebooks Ebooks
  • Livres audio Livres audio
  • Presse Presse
  • Podcasts Podcasts
  • BD BD
  • Documents Documents