diff --git a/slides/cours_21.md b/slides/cours_21.md index 4f0a9c8236dc64b4c5b40d97adb0e79aa0a17aff..0fd789a3e642d5252f5e78168dbf51a78018ea36 100644 --- a/slides/cours_21.md +++ b/slides/cours_21.md @@ -15,7 +15,7 @@ Les B-arbres ## Problématique * Grands jeux de données (en 1970). -* Stockage dans un arbre, mais l'arbre tiens pas en mémoire. +* Stockage dans un arbre, mais l'arbre ne tient 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èmes de fichiers. # Les B-arbres ## Avantages * Arbres moins profonds; -* Diminue les opération de rééquilibrage; +* Diminution des opérations de rééquilibrage; * Complexité toujours en $\log(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 ou descendre entre 2 éléments. +* Si `C` plus petit que la 1ère 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 valeurs à 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.