diff --git a/slides/cours_18.md b/slides/cours_18.md index 909114b91292a4f5f883b6d2edc20638c6b23232..42a938892fdde21bcb25939c260ea8557b9b3c58 100644 --- a/slides/cours_18.md +++ b/slides/cours_18.md @@ -636,3 +636,299 @@ graph TD; ::: +# Encore un petit exercice + +* Insérer les nœuds suivants dans un arbre AVL + +``` +25 | 60 | 35 | 10 | 5 | 20 | 65 | 45 | 70 | 40 | 50 | 55 | 30 | 15 +``` + +## Un à un et le/la premier/ère qui poste la bonne réponse sur matrix a un point + +# Suppression dans un arbre AVL + + +::: columns + +:::: column + +## Algorithme par problème: supprimer 10 + +```{.mermaid format=pdf width=400 loc=figs/} +graph TD; + id0((8))-->id1((4)); + id0-->id2((10)); + id1-->id3((2)); + id1-->id4((6)); + id3-->id5((1)); + id3-->id6(( )) + id4-->id7(( )) + id4-->id8((7)) + id2-->id9((9)) + id2-->id10((14)) + id10-->id11((12)) + id10-->id12((16)) + style id6 fill:#fff,stroke:#fff + style id7 fill:#fff,stroke:#fff +``` + +:::: + +:::: column + +. . . + +## Algorithme par problème: supprimer 10 + +```{.mermaid format=pdf width=400 loc=figs/} +graph TD; + id0((8))-->id1((4)); + id0-->id2((12)); + id1-->id3((2)); + id1-->id4((6)); + id3-->id5((1)); + id3-->id6(( )) + id4-->id7(( )) + id4-->id8((7)) + id2-->id9((9)) + id2-->id10((14)) + id10-->id11(( )) + id10-->id12((16)) + style id6 fill:#fff,stroke:#fff + style id7 fill:#fff,stroke:#fff + style id11 fill:#fff,stroke:#fff +``` + +:::: + +::: + +# Suppression dans un arbre AVL + + +::: columns + +:::: column + +## Algorithme par problème: supprimer 8 + +```{.mermaid format=pdf width=400 loc=figs/} +graph TD; + id0((8))-->id1((4)); + id0-->id2((12)); + id1-->id3((2)); + id1-->id4((6)); + id3-->id5((1)); + id3-->id6(( )) + id4-->id7(( )) + id4-->id8((7)) + id2-->id9((9)) + id2-->id10((14)) + id10-->id11(( )) + id10-->id12((16)) + style id6 fill:#fff,stroke:#fff + style id7 fill:#fff,stroke:#fff + style id11 fill:#fff,stroke:#fff +``` + +:::: + +:::: column + +. . . + +## Algorithme par problème: rotation de 12 + +```{.mermaid format=pdf width=400 loc=figs/} +graph TD; + id0((9))-->id1((4)); + id0-->id2((12)); + id1-->id3((2)); + id1-->id4((6)); + id3-->id5((1)); + id3-->id6(( )) + id4-->id7(( )) + id4-->id8((7)) + id2-->id9(( )) + id2-->id10((14)) + id10-->id11(( )) + id10-->id12((16)) + style id6 fill:#fff,stroke:#fff + style id7 fill:#fff,stroke:#fff + style id9 fill:#fff,stroke:#fff + style id11 fill:#fff,stroke:#fff +``` + +:::: + +::: + +# Suppression dans un arbre AVL + +::: columns + +:::: column + +## Algorithme par problème: rotation de 12 + +```{.mermaid format=pdf width=400 loc=figs/} +graph TD; + id0((9))-->id1((4)); + id0-->id2((14)); + id1-->id3((2)); + id1-->id4((6)); + id3-->id5((1)); + id3-->id6(( )) + id4-->id7(( )) + id4-->id8((7)) + id2-->id9((12)) + id2-->id10((16)) + style id6 fill:#fff,stroke:#fff + style id7 fill:#fff,stroke:#fff +``` + +:::: + +:::: column + +. . . + +1. On supprime comme d'habitude. +2. On rééquilibre si besoin à l'endroit de la suppression. + +* Facile non? + +. . . + +* Plus dur.... + +:::: + +::: + +# Suppression dans un arbre AVL 2.0 + +::: columns + +:::: column + +## Algorithme par problème: suppression de 30 + +```{.mermaid format=pdf width=400 loc=figs/} +graph TD; + id0((50))-->id1((30)); + id0-->id2((100)); + id1-->id3((10)); + id1-->id4((40)); + id3-->id5(( )); + id3-->id6((20)) + id2-->id7((80)) + id2-->id8((200)) + id7-->id9((70)) + id7-->id10((90)) + id9-->id11((60)) + id9-->id12(( )) + id8-->id13(( )) + id8-->id14((300)) + style id5 fill:#fff,stroke:#fff + style id12 fill:#fff,stroke:#fff + style id13 fill:#fff,stroke:#fff +``` + +:::: + +:::: column + +. . . + +## Algorithme par problème: rotation GD autour de 40 + +```{.mermaid format=pdf width=400 loc=figs/} +graph TD; + id0((50))-->id1((40)); + id0-->id2((100)); + id1-->id3((10)); + id1-->id4(( )); + id3-->id5(( )); + id3-->id6((20)) + id2-->id7((80)) + id2-->id8((200)) + id7-->id9((70)) + id7-->id10((90)) + id9-->id11((60)) + id9-->id12(( )) + id8-->id13(( )) + id8-->id14((300)) + style id4 fill:#fff,stroke:#fff + style id5 fill:#fff,stroke:#fff + style id12 fill:#fff,stroke:#fff + style id13 fill:#fff,stroke:#fff +``` + +:::: + +::: + +# Suppression dans un arbre AVL 2.0 + +::: columns + +:::: column + +## Argl! 50 est déséquilibré! + +```{.mermaid format=pdf width=400 loc=figs/} +graph TD; + id0((50))-->id1((20)); + id0-->id2((100)); + id1-->id3((10)); + id1-->id4((40)); + id2-->id7((80)) + id2-->id8((200)) + id7-->id9((70)) + id7-->id10((90)) + id9-->id11((60)) + id9-->id12(( )) + id8-->id13(( )) + id8-->id14((300)) + style id12 fill:#fff,stroke:#fff + style id13 fill:#fff,stroke:#fff +``` + +:::: + +:::: column + +. . . + +## Algorithme par problème: rotation DG autour de 50 + +```{.mermaid format=pdf width=400 loc=figs/} +graph TD; + id0((80))-->id1((50)); + id0-->id2((100)); + id1-->id3((20)); + id1-->id4((70)); + id3-->id5((10)); + id3-->id6((40)); + id4-->id9((60)) + id4-->id10(( )) + id2-->id7((90)) + id2-->id8((200)) + id8-->id13(( )) + id8-->id14((300)) + style id10 fill:#fff,stroke:#fff + style id13 fill:#fff,stroke:#fff +``` + +:::: + +::: + +# Résumé de la suppression + +1. On supprime comme pour un arbre binaire de recherche. +2. Si un nœud est déséquilibré, on le rééquilibre. + * Cette opération pour déséquilibrer un autre nœud. +3. On continue à rééquilibrer tant qu'il y a des nœuds à équilibrer. diff --git a/slides/figs/double_rotation_gauche_droite.png b/slides/figs/double_rotation_gauche_droite.png new file mode 100644 index 0000000000000000000000000000000000000000..d0e8cc8a1321c354d2adecb57a4e34bc5b98e5d2 Binary files /dev/null and b/slides/figs/double_rotation_gauche_droite.png differ diff --git a/slides/figs/facteur_equilibre.png b/slides/figs/facteur_equilibre.png new file mode 100644 index 0000000000000000000000000000000000000000..df60e129ff990ed2ae13647d5e1ca56ae739a9ef Binary files /dev/null and b/slides/figs/facteur_equilibre.png differ diff --git a/slides/figs/rotation_gauche_droite.png b/slides/figs/rotation_gauche_droite.png new file mode 100644 index 0000000000000000000000000000000000000000..28f7476188fc858ecd5fc37b32b933b2956f9d27 Binary files /dev/null and b/slides/figs/rotation_gauche_droite.png differ