From deb1a6a80ad382dbbf6738b06f28579143ef9e83 Mon Sep 17 00:00:00 2001
From: Orestis <orestis.malaspinas@pm.me>
Date: Thu, 18 May 2023 19:13:44 +0200
Subject: [PATCH] removed content not covered

---
 slides/cours_21.md | 309 ---------------------------------------------
 1 file changed, 309 deletions(-)

diff --git a/slides/cours_21.md b/slides/cours_21.md
index e1aa620..c3967a0 100644
--- a/slides/cours_21.md
+++ b/slides/cours_21.md
@@ -729,312 +729,3 @@ rien maj_force_sur_etoile(arbre, e, theta)
 * Insérer 20, 40, 10, 30, 15, 35, 7, 26, 18, 22, 5, 42, 13, 46, 27, 8, 32, 38, 24, 45, 25, 2, 14, 28, 32, 41,
 * Dans un B-arbre d'ordre 2.
 
-# Les B-arbres
-
-## Structure de données
-
-* Chaque page a une contrainte de remplissage, par rapport à l'ordre de l'arbre;
-* Un nœud (page) est composé d'un tableau de clés/pointeurs vers les enfants;
-
-```
-P_0 | K_1 | P_1 | K_2 |  | P_i | K_{i+1} |  | P_{m-1} | K_m | P_m
-```
-
-* `P_0`, ..., `P_m` pointeurs vers enfants;
-* `K_1`, ..., `K_m` les clés.
-* Il y a `m+1` pointeurs mais `m` clés.
-* Comment faire pour gérer l'insertion?
-
-# Les B-arbres
-
-## Faire un dessin de la structure de données (3min matrix)?
-
-. . .
-
-![Structure d'une page de B-arbre d'ordre 2.](figs/barbres_struct.png)
-
-1. On veut un tableau de `P_i, K_i => struct`;
-2. `K_0` va être en "trop";
-3. Pour simplifier l'insertion dans une page, on ajoute un élément de plus.
-
-# Les B-arbres
-
-## L'insertion cas nœud pas plein, insertion `4`?
-
-![](figs/barbres_insert_easy.svg){width=50%}
-
-. . .
-
-## Solution
-
-![](figs/barbres_insert_easy_after.svg){width=50%}
-
-# Les B-arbres
-
-## L'insertion cas nœud pas plein, insertion `N`
-
-* On décale les éléments plus grand que `N`;
-* On insère `N` dans la place "vide";
-* Si la page n'est pas pleine, on a terminé.
-
-# Les B-arbres
-
-## L'insertion cas nœud plein, insertion `2`?
-
-![](figs/barbres_insert_hard_before.svg){width=50%}
-
-. . .
-
-## Solution
-
-![](figs/barbres_insert_hard_during.svg){width=50%}
-
-# Les B-arbres
-
-## L'insertion cas nœud plein, promotion `3`?
-
-![](figs/barbres_insert_hard_during.svg){width=50%}
-
-. . .
-
-## Solution
-
-![](figs/barbres_insert_hard_after.svg)
-
-# Les B-arbres
-
-## L'insertion cas nœud plein, insertion `N`
-
-* On décale les éléments plus grand que `N`;
-* On insère `N` dans la place "vide";
-* 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 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.
-
-# Les B-arbres
-
-## Pseudo-code structure de données (3min, matrix)?
-
-. . .
-
-```C
-struct page
-    entier ordre, nb
-    element tab[2*ordre + 2]
-```
-
-```C
-struct element
-    int clé
-    page pg
-```
-
-# Les B-arbres
-
-\footnotesize
-
-## Les fonctions utilitaires (5min matrix)
-
-```C
-booléen est_feuille(page)     // la page est elle une feuille?
-entier position(page, valeur) // à quelle indice on insère?
-booléen est_dans_page(page, valeur) // la valeur est dans la page
-```
-
-. . .
-
-```C
-booléen est_feuille(page) 
-    retourne (page.tab[0].pg == vide)
-
-entier position(page, valeur)
-    i = 0
-    tant que i < page.nb && val >= page.tab[i+1].clef
-        i += 1
-    retourne i
-
-booléen est_dans_page(page, valeur)
-    i = position(page, valeur)
-    retourne (page.nb > 0 && page.tab[i].val == valeur)
-```
-
-# Les B-arbres
-
-\footnotesize
-
-## Les fonctions utilitaires (5min matrix)
-
-```C
-page nouvelle_page(ordre)  // creer une page
-rien liberer_memoire(page) // liberer tout un arbre!
-```
-. . .
-
-```C
-page nouvelle_page(ordre)
-    page = allouer(page)
-    page.ordre = ordre
-    page.nb = 0
-    page.tab = allouer(2*ordre+2)
-    retourner page
-
-rien liberer_memoire(page)
-    si est_feuille(page)
-        liberer(page.tab)
-        liberer(page)
-    sinon
-        pour fille dans page.tab
-            liberer_memoire(fille)
-        liberer(page.tab)
-        liberer(page)
-```
-
-# Les B-arbres
-
-## Les fonctions (5min matrix)
-
-```C
-page recherche(page, valeur) // retourner la page contenant
-                             // la valeur ou vide 
-```
-
-. . .
-
-```C
-page recherche(page, valeur)
-    si est_dans_page(page, valeur)
-        retourne page
-    sinon si est_feuille(page) 
-        retourne vide
-    sinon
-        recherche(page.tab[position(page, valeur)], valeur)
-```
-
-# Les B-arbres
-
-## Les fonctions
-
-```C
-page inserer_valeur(page, valeur) // inserer une valeur
-```
-
-. . .
-
-```C
-page inserer_valeur(page, valeur)
-    element = nouvel_element(valeur)
-    // on change element pour savoir s'il faut le remonter
-    inserer_element(page, element) 
-    si element.page != vide && page.nb > 2*page.ordre
-        // si on atteint le sommet!
-        page = ajouter_niveau(page, element) 
-    retourne page
-```
-
-# Les B-arbres
-
-## Les fonctions
-
-```C
-rien inserer_element(page, element) // inserer un element et voir s'il remonte
-```
-
-. . .
-
-```C
-rien inserer_element(page, element)
-    si est_feuille(page)
-        placer(page, element)
-    sinon
-        sous_page = page.tab[position(page, element)].page
-        inserer_element(sous_page, element)
-        // un element a été promu
-        si element.page != vide
-            placer(page, element)
-```
-
-# Les B-arbres
-
-## Les fonctions (5min matrix)
-
-```C
-rien placer(page, element) // inserer un élément
-```
-
-. . .
-
-```C
-rien placer(page, element)
-    pos = position(page, element.clé)
-    pour i de 2*page.ordre à pos+1
-        page.tab[i+1] = page.tab[i]
-    page.tab[pos+1] = element
-    page.nb += 1
-    si page.nb > 2*page.ordre
-        scinder(page, element)
-```
-
-# Les B-arbres
-
-## Les fonctions (5min matrix)
-
-```C
-rien scinder(page, element) // casser une page et remonter
-```
-
-. . .
-
-```C
-rien scinder(page, element)
-    new_page = new_page(page.ordre)
-    new_page.nb = page.ordre
-    pour i de 0 à ordre inclu
-        new_page.tab[i] = page.tab[i+ordre+1]
-    element.clé = page.tab[ordre+1].clé
-    element.page = new_page
-```
-
-# Les B-arbres
-
-## Les fonctions (5min matrix)
-
-```C
-page ajouter_niveau(page, element) // si on remonte à la racine...
-                                   // on doit créer une nouvelle racine
-```
-
-. . .
-
-```C
-page ajouter_niveau(page, element) 
-    tmp = nouvelle_page(page.ordre)
-    tmp.tab[0].page = page
-    tmp.tab[1].clé = element.clé
-    tmp.tab[1].page = element.page
-    retourne tmp
-```
-
-
-<!-- # Les B-arbres -->
-
-<!-- ## Structure de données en C (3min, matrix) -->
-
-<!-- . . . -->
-
-<!-- ```C -->
-<!-- typedef struct _page { -->
-<!--     int order, nb; -->
-<!--     struct _element *tab; -->
-<!-- } page; -->
-<!-- ``` -->
-
-<!-- ```C -->
-<!-- typedef struct element { -->
-<!--     int key; -->
-<!--     struct _page *pg; -->
-<!-- } element; -->
-<!-- ``` -->
-
-- 
GitLab