Commit 96f26d59 authored by MARRAKCHI_GHASSEN's avatar MARRAKCHI_GHASSEN
Browse files

Rapport.md

parent 1f4b4b54
Pipeline #4468 passed with stage
in 6 seconds
<hr>
<div style="display:flex;align-items:center;flex-direction:column;">
<img src="./institut-Galilee.png"/>
<h1 style="text-align:center;color:#5b84b3">Structure de Données Avancée</h1>
<span style="color:#c4c1d9"><i>Ghassen <strong>MARRAKCHI</strong></i></span>
</div>
<hr>
<h2 style="text-align:center;color:#7494c4">TP 3</h1>
<hr>
<h3 style="color:##7C7C7C"> I- Présentation brève de la structure de données utilisée</h3>
<p>
Un tas binaire est un tableau qui peut être vu comme un arbre binaire comme le montre les images ci-dessous :
</p>
<div style="display:flex;align-items:center;flex-direction:row;">
<img src="./tas-binaire-format-tableau.png" style="width:50px"/>
<img src="./tas-binaire-format-arbre.png" style="width:50px"/>
</div>
<p>
Un tas est caractérisé par sa longueur qui représente sa capacité (le nombre maximal d'élements qu'il peut contenir) et sa taille qui représente le nombre d'élement du tas. Il est dit borné si sa capacité est fixe comme dans notre cas.
</p>
<p>
Un tas en général vérifie un certain nombre de caractéristques:
<ul>
<li>longueur du tas >= taille du tas</li>
<li>parent de l'élement numéro i est à la i/2 ème position</li>
<li>parent de l'élement numéro i est à la 2i ème position</li>
<li>parent de l'élement numéro i est à la 2i + 1 ème position</li>
</ul>
</p>
<p>
Il faut noter qu'il existe deux type de tas, selon la proprieté fondamentale qu'il vérifie :
<ul>
<li>si parent de l'élement numéro i est inférieur au i ème élement, alors le tas est dit minimal.</li>
<li>si parent de l'élement numéro i est supérieur au i ème élement, alors le tas est dit maximal.</li>
</ul>
</p>
<h3 style="color:##7C7C7C"> II- Expériences effectuées</h3>
<p>
Nous avons implémenter un benchmark qui effectue trois expériences différents sur les deux types de tas en même temps :
<ul>
<li>Ajout croissant : on ajoute n élements ordonnés dans l'ordre croissant allant de 1 jusqu'à n.</li>
<li>Ajout décroissant : on ajoute n élements ordonnés dans l'ordre décroissant allant de n jusqu'à 1.</li>
<li>Ajout aléatoire : on ajoute n élements NON-ordonnés compris entre 1 et n.</li>
</ul>
</p>
<h3 style="color:##7C7C7C"> III- Analyse des résultats des experiences</h3>
<h4 style="color:##7C7C7C"> 1- Courbes de temps amorti</h4>
<p>
D'abord, on remarque l'analogie entre les courbes d'ajout croissant et décroissant. Analysons l'exemple des ajouts croissant :<br>
On remarque que le temps amorti pour les ajouts croissants dans un tas minimal est plus grand que celui du tas maximal. Ceci est dù au nombre de swap (permutations) dont la courbe sera analysée dans ce qui suit.
De plus on remarque un caractère asymptotique qui nous rappelle de la complexité temporelle devant être théoriquement O(log n) au pire et au meilleur des cas.
</p>
<p>
Pour le cas d'ajout aléatoire on remarque une NON-régularité dans le tracé de la courbe ce qui est expliquable par les données de permutation. Cependant, on note une corrélation entre les courbes des tas minimal et maximal.
</p>
<h4 style="color:##7C7C7C"> 2- Courbes de mémoire gaspillée</h4>
<p>
Comme expliqué ci-dessus, dans notre cas nous avons implémenté un tas binaire borné. Ainsi, si on ajoute à chaque itération un élement, l'espace de mémoire libre décroit linéairement comme le mettent en évidence toutes les courbes.
</p>
<h4 style="color:##7C7C7C"> 3- Courbes de permutations (SWAP)</h4>
<p>
Pour la courbe d'ajout croissant, on remarque que le nombre de swap est croissant pour le tas minimal et totalement absent pour le tas maximal (Aucune permutation n'est effectuée).
Cela est expliquable par le fait que l'ajout croissant vérifie la condition du tas max tel que le i ème élement est supérieur au i+1 ème élement.
Ainsi, chaque élement ajouté à la fin du tableau vérifie la proprieté de tas maximal (le i ème élement est supérieur au parent de celui-ci) à savoir qu'il est supérieur à son parent ce qui ne nécessite aucune permutation.<br>
Pour la courbe d'ajout décroissant, les mêmes caractéristiques sont remarquées avec un raisonnement inversé à savoir que le tas max est celui qui effectue le plus de permutation d'élements.<br>
De plus, on peut remarquer une caractéristique intéressante dans les deux cas à savoir que le nombre de permutations se stabilise pour 2<sup>k</sup> élements ajoutés (2, 4, 8, 16 ..).
</p>
<p>
Pour la courbe aléatoire, la non régularité de la courbe est le resultat attendu. En effet, chaque fois que l'on ajoute un élement, on ne peut pas prédire le nombre de permutation à effectuer.
Cela est du à la dépendance de ce dernier de la position de l'element à ajouter.<br>
De plus, on peut dire que les deux types de tas possèdent le même comportement.
</p>
......@@ -2,49 +2,49 @@
1 1.000000 1.000000
2 0.000000 0.500000
3 2.000000 1.000000
4 1.000000 1.000000
5 0.000000 0.800000
6 1.000000 0.833333
4 0.000000 0.750000
5 2.000000 1.000000
6 0.000000 0.833333
7 2.000000 1.000000
8 0.000000 0.875000
9 1.000000 0.888889
10 2.000000 1.000000
11 0.000000 0.909091
12 1.000000 0.916667
13 2.000000 1.000000
14 0.000000 0.928571
15 1.000000 0.933333
16 1.000000 0.937500
17 2.000000 1.000000
18 0.000000 0.944444
19 0.000000 0.894737
20 0.000000 0.850000
21 0.000000 0.809524
22 0.000000 0.772727
23 2.000000 0.826087
24 0.000000 0.791667
25 3.000000 0.880000
26 0.000000 0.846154
27 0.000000 0.814815
28 0.000000 0.785714
29 2.000000 0.827586
30 0.000000 0.800000
31 2.000000 0.838710
32 4.000000 0.937500
33 1.000000 0.939394
34 3.000000 1.000000
35 1.000000 1.000000
36 1.000000 1.000000
37 1.000000 1.000000
38 1.000000 1.000000
39 0.000000 0.974359
40 2.000000 1.000000
41 0.000000 0.975610
42 1.000000 0.976190
43 0.000000 0.953488
44 0.000000 0.931818
45 0.000000 0.911111
46 1.000000 0.913043
47 2.000000 0.936170
48 5.000000 1.020833
49 0.000000 1.000000
10 0.000000 0.800000
11 0.000000 0.727273
12 2.000000 0.833333
13 2.000000 0.923077
14 0.000000 0.857143
15 4.000000 1.066667
16 2.000000 1.125000
17 1.000000 1.117647
18 1.000000 1.111111
19 2.000000 1.157895
20 0.000000 1.100000
21 1.000000 1.095238
22 1.000000 1.090909
23 1.000000 1.086957
24 2.000000 1.125000
25 0.000000 1.080000
26 2.000000 1.115385
27 2.000000 1.148148
28 0.000000 1.107143
29 0.000000 1.068966
30 2.000000 1.100000
31 1.000000 1.096774
32 0.000000 1.062500
33 2.000000 1.090909
34 0.000000 1.058824
35 2.000000 1.085714
36 0.000000 1.055556
37 1.000000 1.054054
38 1.000000 1.052632
39 3.000000 1.102564
40 1.000000 1.100000
41 1.000000 1.097561
42 1.000000 1.095238
43 4.000000 1.162791
44 0.000000 1.136364
45 1.000000 1.133333
46 0.000000 1.108696
47 0.000000 1.085106
48 2.000000 1.104167
49 0.000000 1.081633
0 0.000000 0.000000
1 1.000000 1.000000
2 0.000000 0.500000
3 0.000000 0.333333
4 0.000000 0.250000
5 1.000000 0.400000
6 0.000000 0.333333
7 1.000000 0.428571
1 0.000000 0.000000
2 0.000000 0.000000
3 2.000000 0.666667
4 0.000000 0.500000
5 0.000000 0.400000
6 1.000000 0.500000
7 0.000000 0.428571
8 0.000000 0.375000
9 2.000000 0.555556
10 0.000000 0.500000
11 2.000000 0.636364
12 0.000000 0.583333
13 1.000000 0.615385
14 0.000000 0.571429
15 1.000000 0.600000
16 0.000000 0.562500
11 0.000000 0.454545
12 0.000000 0.416667
13 0.000000 0.384615
14 2.000000 0.500000
15 1.000000 0.533333
16 1.000000 0.562500
17 0.000000 0.529412
18 0.000000 0.500000
19 1.000000 0.526316
20 3.000000 0.650000
21 1.000000 0.666667
22 1.000000 0.681818
23 4.000000 0.826087
24 1.000000 0.833333
25 0.000000 0.800000
26 2.000000 0.846154
27 0.000000 0.814815
28 0.000000 0.785714
29 1.000000 0.793103
30 1.000000 0.800000
31 3.000000 0.870968
32 4.000000 0.968750
33 1.000000 0.969697
34 1.000000 0.970588
35 2.000000 1.000000
36 1.000000 1.000000
37 1.000000 1.000000
38 1.000000 1.000000
18 2.000000 0.611111
19 2.000000 0.684211
20 0.000000 0.650000
21 3.000000 0.761905
22 1.000000 0.772727
23 2.000000 0.826087
24 0.000000 0.791667
25 3.000000 0.880000
26 0.000000 0.846154
27 2.000000 0.888889
28 0.000000 0.857143
29 2.000000 0.896552
30 4.000000 1.000000
31 1.000000 1.000000
32 2.000000 1.031250
33 2.000000 1.060606
34 0.000000 1.029412
35 0.000000 1.000000
36 3.000000 1.055556
37 0.000000 1.027027
38 0.000000 1.000000
39 3.000000 1.051282
40 0.000000 1.025000
41 0.000000 1.000000
42 1.000000 1.000000
43 0.000000 0.976744
44 1.000000 0.977273
45 1.000000 0.977778
46 0.000000 0.956522
47 1.000000 0.957447
48 1.000000 0.958333
49 0.000000 0.938776
40 4.000000 1.125000
41 1.000000 1.121951
42 3.000000 1.166667
43 0.000000 1.139535
44 2.000000 1.159091
45 0.000000 1.133333
46 1.000000 1.130435
47 3.000000 1.170213
48 3.000000 1.208333
49 2.000000 1.224490
0 87.000000 87.000000
1 78.000000 165.000000
2 27.000000 96.000000
3 61.000000 84.333333
4 43.000000 74.000000
5 33.000000 65.800000
6 35.000000 60.666667
7 60.000000 60.571429
8 51.000000 59.375000
9 50.000000 58.333333
10 50.000000 57.500000
11 42.000000 56.090909
12 43.000000 55.000000
13 43.000000 54.076923
14 43.000000 53.285714
15 58.000000 53.600000
16 50.000000 53.375000
17 64.000000 54.000000
18 51.000000 53.833333
19 50.000000 53.631579
20 47.000000 53.300000
21 51.000000 53.190476
22 51.000000 53.090909
23 49.000000 52.913043
24 48.000000 52.708333
25 49.000000 52.560000
26 50.000000 52.461538
27 48.000000 52.296296
28 50.000000 52.214286
29 52.000000 52.206897
30 57.000000 52.366667
31 81.000000 53.290323
32 78.000000 54.062500
33 87.000000 55.060606
34 57.000000 55.117647
35 58.000000 55.200000
36 57.000000 55.250000
37 58.000000 55.324324
38 57.000000 55.368421
39 58.000000 55.435897
40 55.000000 55.425000
41 87.000000 56.195122
42 59.000000 56.261905
43 58.000000 56.302326
44 58.000000 56.340909
45 56.000000 56.333333
46 57.000000 56.347826
47 59.000000 56.404255
48 58.000000 56.437500
49 58.000000 56.469388
0 81.000000 81.000000
1 78.000000 159.000000
2 26.000000 92.500000
3 52.000000 79.000000
4 42.000000 69.750000
5 31.000000 62.000000
6 34.000000 57.333333
7 58.000000 57.428571
8 50.000000 56.500000
9 39.000000 54.555556
10 40.000000 53.100000
11 39.000000 51.818182
12 42.000000 51.000000
13 57.000000 51.461538
14 43.000000 50.857143
15 82.000000 52.933333
16 49.000000 52.687500
17 50.000000 52.529412
18 49.000000 52.333333
19 50.000000 52.210526
20 50.000000 52.100000
21 65.000000 52.714286
22 50.000000 52.590909
23 50.000000 52.478261
24 48.000000 52.291667
25 52.000000 52.280000
26 51.000000 52.230769
27 49.000000 52.111111
28 52.000000 52.107143
29 49.000000 52.000000
30 65.000000 52.433333
31 82.000000 53.387097
32 57.000000 53.500000
33 56.000000 53.575758
34 57.000000 53.676471
35 56.000000 53.742857
36 57.000000 53.833333
37 71.000000 54.297297
38 69.000000 54.684211
39 55.000000 54.692308
40 77.000000 55.250000
41 57.000000 55.292683
42 55.000000 55.285714
43 55.000000 55.279070
44 55.000000 55.272727
45 54.000000 55.244444
46 53.000000 55.195652
47 70.000000 55.510638
48 55.000000 55.500000
49 55.000000 55.489796
0 70.000000 70.000000
1 44.000000 114.000000
2 18.000000 66.000000
3 21.000000 51.000000
4 22.000000 43.750000
5 21.000000 39.200000
6 23.000000 36.500000
7 20.000000 34.142857
8 21.000000 32.500000
9 21.000000 31.222222
10 22.000000 30.300000
11 21.000000 29.454545
12 21.000000 28.750000
13 22.000000 28.230769
14 21.000000 27.714286
15 21.000000 27.266667
16 21.000000 26.875000
17 21.000000 26.529412
18 20.000000 26.166667
19 20.000000 25.842105
20 20.000000 25.550000
21 31.000000 25.809524
22 21.000000 25.590909
23 21.000000 25.391304
24 21.000000 25.208333
25 22.000000 25.080000
26 22.000000 24.961538
27 21.000000 24.814815
28 22.000000 24.714286
29 22.000000 24.620690
30 20.000000 24.466667
31 21.000000 24.354839
32 21.000000 24.250000
33 22.000000 24.181818
34 21.000000 24.088235
35 22.000000 24.028571
36 21.000000 23.944444
37 21.000000 23.864865
38 21.000000 23.789474
39 21.000000 23.717949
40 20.000000 23.625000
41 22.000000 23.585366
42 22.000000 23.547619
43 24.000000 23.558140
44 21.000000 23.500000
45 21.000000 23.444444
46 22.000000 23.413043
47 22.000000 23.382979
48 22.000000 23.354167
49 21.000000 23.306122
0 48.000000 48.000000
1 59.000000 107.000000
2 24.000000 65.500000
3 23.000000 51.333333
4 26.000000 45.000000
5 22.000000 40.400000
6 22.000000 37.333333
7 23.000000 35.285714
8 23.000000 33.750000
9 22.000000 32.444444
10 21.000000 31.300000
11 21.000000 30.363636
12 22.000000 29.666667
13 22.000000 29.076923
14 21.000000 28.500000
15 21.000000 28.000000
16 22.000000 27.625000
17 21.000000 27.235294
18 22.000000 26.944444
19 21.000000 26.631579
20 20.000000 26.300000
21 21.000000 26.047619
22 22.000000 25.863636
23 22.000000 25.695652
24 21.000000 25.500000
25 21.000000 25.320000
26 22.000000 25.192308
27 21.000000 25.037037
28 20.000000 24.857143
29 22.000000 24.758621
30 22.000000 24.666667
31 22.000000 24.580645
32 22.000000 24.500000
33 22.000000 24.424242
34 23.000000 24.382353
35 23.000000 24.342857
36 21.000000 24.250000
37 21.000000 24.162162
38 19.000000 24.026316
39 21.000000 23.948718
40 22.000000 23.900000
41 21.000000 23.829268
42 21.000000 23.761905
43 23.000000 23.744186
44 24.000000 23.750000
45 22.000000 23.711111
46 21.000000 23.652174
47 21.000000 23.595745
48 21.000000 23.541667
49 21.000000 23.489796
0 97.000000 97.000000
1 44.000000 141.000000
2 23.000000 82.000000
3 25.000000 63.000000
4 21.000000 52.500000
5 21.000000 46.200000
6 22.000000 42.166667
7 22.000000 39.285714
8 23.000000 37.250000
9 21.000000 35.444444
10 23.000000 34.200000
11 22.000000 33.090909
12 22.000000 32.166667
13 22.000000 31.384615
14 22.000000 30.714286
15 40.000000 31.333333
16 22.000000 30.750000
17 21.000000 30.176471
18 22.000000 29.722222
19 20.000000 29.210526
20 21.000000 28.800000
21 21.000000 28.428571
22 22.000000 28.136364
23 21.000000 27.826087
24 21.000000 27.541667
25 20.000000 27.240000
26 20.000000 26.961538
27 22.000000 26.777778
28 20.000000 26.535714
29 22.000000 26.379310
30 20.000000 26.166667
31 20.000000 25.967742
32 22.000000 25.843750
33 21.000000 25.696970
34 23.000000 25.617647
35 23.000000 25.542857
36 22.000000 25.444444
37 21.000000 25.324324
38 22.000000 25.236842
39 23.000000 25.179487
40 21.000000 25.075000
41 24.000000 25.048780
42 23.000000 25.000000
43 21.000000 24.906977
44 21.000000 24.818182
45 21.000000 24.733333
46 20.000000 24.630435
47 22.000000 24.574468
48 21.000000 24.500000
49 21.000000 24.428571
0 88.000000 88.000000
1 30.000000 118.000000
2 21.000000 69.500000
3 23.000000 54.000000
4 21.000000 45.750000
5 23.000000 41.200000
6 22.000000 38.000000
7 23.000000 35.857143
8 23.000000 34.250000
9 22.000000 32.888889
10 22.000000 31.800000
11 20.000000 30.727273
12 24.000000 30.166667
13 23.000000 29.615385
14 22.000000 29.071429
15 23.000000 28.666667
16 22.000000 28.250000
17 22.000000 27.882353
18 23.000000 27.611111
19 23.000000 27.368421
20 20.000000 27.000000
21 22.000000 26.761905
22 21.000000 26.500000
23 23.000000 26.347826
24 22.000000 26.166667
25 22.000000 26.000000
26 22.000000 25.846154
27 22.000000 25.703704
28 21.000000 25.535714
29 22.000000 25.413793
30 23.000000 25.333333
31 23.000000 25.258065
32 22.000000 25.156250
33 23.000000 25.090909
34 21.000000 24.970588
35 22.000000 24.885714
36 23.000000 24.833333
37 22.000000 24.756757
38 23.000000 24.710526
39 23.000000 24.666667
40 23.000000 24.625000
41 22.000000 24.560976
42 21.000000 24.476190
43 22.000000 24.418605
44 22.000000 24.363636
45 24.000000 24.355556
46 22.000000 24.304348
47 24.000000 24.297872
48 21.000000 24.229167
49 22.000000 24.183673
0 55.000000 55.000000
1 71.000000 126.000000
2 29.000000 77.500000
3 58.000000 71.000000
4 34.000000 61.750000
5 35.000000 56.400000
6 34.000000 52.666667
7 60.000000 53.714286
8 61.000000 54.625000
9 63.000000 55.555556
10 41.000000 54.100000
11 44.000000 53.181818
12 43.000000 52.333333
13 42.000000 51.538462
14 43.000000 50.928571
15 65.000000 51.866667
16 59.000000 52.312500
17 52.000000 52.294118
18 50.000000 52.166667
19 50.000000 52.052632