Skip to content
GitLab
Explore
Sign in
Primary navigation
Search or go to…
Project
C
cours
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Package registry
Model registry
Operate
Environments
Terraform modules
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
algorithmique
cours
Commits
60331eff
Commit
60331eff
authored
3 weeks ago
by
paul.albuquer
Browse files
Options
Downloads
Patches
Plain Diff
Corrected some typos
parent
b2c0899d
Branches
Branches containing commit
No related tags found
No related merge requests found
Pipeline
#39828
passed
3 weeks ago
Stage: test
Changes
1
Pipelines
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
slides/cours_21.md
+15
-14
15 additions, 14 deletions
slides/cours_21.md
with
15 additions
and
14 deletions
slides/cours_21.md
+
15
−
14
View file @
60331eff
...
...
@@ -15,7 +15,7 @@ Les B-arbres
## Problématique
*
Grands jeux de données (en 1970).
*
Stockage dans un arbre, mais l'arbre tien
s
pas en mémoire.
*
Stockage dans un arbre, mais l'arbre
ne
tien
t
pas en mémoire.
*
Regrouper les sous-arbres en
**pages**
qui tiennent en mémoire.
## Exemple
...
...
@@ -28,7 +28,7 @@ Les B-arbres
## Remarques
*
On sait pas ce que veut dire
`B`
: Bayer, Boeing, Balanced?
*
On
ne
sait pas ce que veut dire
`B`
: Bayer, Boeing, Balanced?
*
Variante plus récente B+-arbres.
# Les B-arbres
...
...
@@ -42,14 +42,14 @@ Les B-arbres
## Utilisation
*
Bases de données (souvent très grandes donc sur le disque);
*
Système de fichier.
*
Système
s
de fichier
s
.
# Les B-arbres
## Avantages
*
Arbres moins profonds;
*
Diminu
e l
es opération de rééquilibrage;
*
Diminu
tion d
es opération
s
de rééquilibrage;
*
Complexité toujours en $
\l
og(N)$;
. . .
...
...
@@ -86,20 +86,21 @@ Les B-arbres
. . .
*
Si
`
n
`
plus petit que la 1e clé ou plus grand que la dernière descendre.
*
Sinon parcourir (par bissection ou séquentiellement) jusqu'à trouver o
u
descendre entre 2 éléments.
*
Si
`
C
`
plus petit que la 1
èr
e clé ou plus grand que la dernière descendre.
*
Sinon parcourir (par bissection ou séquentiellement) jusqu'à trouver o
ù
descendre entre 2 éléments.
# Les B-arbres
##
La
recherche de la clé `C`
algorithme
##
Algorithme de
recherche de la clé `C`
0.
En partant de la racine.
1.
Si on est dans une feuille:
*
Si
la
`C`
est dans
une
page, retourner la page;
*
Si
`C`
est dans
la
page, retourner la page;
*
Sinon c'est perdu.
2.
Sinon:
*
Tant que
`C > page`
passer à la page suivante
*
Descendre
*
Tant que
`C < clé(page)`
passer à la clé suivante
*
Si
`C`
est dans la page, retourner la page;
*
Sinon descendre
# Les B-arbres
...
...
@@ -123,7 +124,7 @@ Les B-arbres
. . .
*
La première page est pas pleine, on insère dans l'ordre (après 1).
*
La première page
n'
est pas pleine, on insère dans l'ordre (après 1).
# Les B-arbres
...
...
@@ -181,7 +182,7 @@ Les B-arbres
. . .
*
On descend à droite (on peut pas insérer à la racine comme pour
`4`
);
*
On descend à droite (on
ne
peut pas insérer à la racine comme pour
`4`
);
*
On dépasse la capacité de l'enfant droite;
*
`4`
, médiane de
`3, 4, 5`
, remonte à la racine;
*
On crée un nouveau nœud à droite de
`4`
;
...
...
@@ -232,7 +233,7 @@ Les B-arbres
## L'algorithme d'insertion
0.
Rechercher la feuille (la page a aucun enfant) où insérer;
0.
Rechercher la feuille (la page
n'
a aucun enfant) où insérer;
1.
Si la page n'est pas pleine insérer dans l'ordre croissant.
2.
Si la page est pleine, on sépare la page en son milieu :
1.
On trouve la médiane,
`M`
, de la page;
...
...
@@ -370,7 +371,7 @@ P_0 | K_1 | P_1 | K_2 | .. | P_i | K_{i+1} | .. | P_{m-1} | K_m | P_m
*
Si la page est pleine:
*
On trouve la valeur médiane
`M`
de la page (quel indice?);
*
On crée une nouvelle page de droite;
*
On copie les valeur à droite de
`M`
dans la nouvelle page;
*
On copie les valeur
s
à droite de
`M`
dans la nouvelle page;
*
On promeut
`M`
dans la page du dessus;
*
On connecte le pointeur de gauche de
`M`
et de droite de
`M`
avec l'ancienne et la nouvelle page respectivement.
...
...
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment