{ "cells": [ { "cell_type": "markdown", "metadata": { "id": "3pOYcjF3Xe6h" }, "source": [ "\n", "

\n", " Implémentation des arbres binaires \n", "
\n", "


" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
\n", "
⌛ Avant de commencer
\n", "\n", "#### Vous devez travailler sur basthon.fr :\n", " \n", "Vous devez charger ces modules dans le document (icone ouvrir fichier puis **choisir Installer le module**): \n", "- `visu_tree.py` \n", "- `visu_arbre_3.py`\n" ] }, { "cell_type": "markdown", "metadata": { "id": "SQEvJ0vgXe6i" }, "source": [ "\n", "

I. exemple d'utilisation d'un arbre binaire


" ] }, { "cell_type": "markdown", "metadata": { "id": "s4X4qSodXe6i" }, "source": [ "On donne ci-dessous le tableau caractérisant un arbre. SAG signifie sous-arbre gauche, et SAD sous arbre-droit. " ] }, { "cell_type": "markdown", "metadata": { "id": "GBhWFn8YXe6j" }, "source": [ "| Nœud | Etiquette | Nœud du SAG | Nœud du SAD | \n", "| :--: | :--: | :--: | :--: |\n", "| 1 | * |2 | 3 | \n", "| 2 | + |4 | 5 | \n", "| 3 | - |6 | 7 | \n", "| 4 | 3 | | | \n", "| 5 | / |8 | 9 | \n", "| 6 | 8 | | | \n", "| 7 | * |10 | 11 | \n", "| 8 | 4 | | | \n", "| 9 | 2 | | | \n", "| 10 | 2 | | | \n", "| 11 | 3 | | | " ] }, { "cell_type": "markdown", "metadata": { "id": "b3PYJwSzXe6j" }, "source": [ "1. Représenter à la main sur votre cahier cet arbre \n", "\n", "\n", "\n", "
Réponse : \n", "

\n", " \n", "\n", "\n", "\n", "![arbre_operations.png](data:image/png;base64,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)\n", " \n", "\n", " \n", "

\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "DqCVUBnSXe6k" }, "source": [ "2. Ecrire l'expression mathématique calculée par cet arbre: " ] }, { "cell_type": "markdown", "metadata": { "id": "Vw7zYzb0Xe6k" }, "source": [ "
Réponse : \n", "

\n", " \n", "\n", "$$\\left ( 3+\\left ( \\frac{4}{2} \\right ) \\right )*\\left ( 8-\\left ( 2*3 \\right ) \\right )$$\n", " \n", "

\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "kt1huFSPXe6l" }, "source": [ "***Nous avons vu que les arbres binaires étaient un type abstrait. Il existe donc de nombreuses implémentations possibles.***" ] }, { "cell_type": "markdown", "metadata": { "id": "-m64BwbKEZcs" }, "source": [ "\n", "

2. Une première possibilité d'implémentation avec une seule classe


" ] }, { "cell_type": "markdown", "metadata": { "id": "5CuUH_5_Xe6l" }, "source": [ "### a. Observez bien l'implémentation proposée suivante. Quelle est sa particularité?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "class Arbre :\n", " def __init__(self, val = None) :\n", " self.val = val\n", " self.fils_g = None\n", " self.fils_d = None\n", " \n", " def ajout_g(self, val) :\n", " self.fils_g = Arbre(val) # on ajoute un Noeud à gauche\n", "\n", " def ajout_d(self, val) :\n", " self.fils_d = Arbre(val) # on ajoute un Noeud à droite" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Réponse : \n", "

\n", " \n", "\n", "**La structure d'arbre est naturellement récursive**. Chaque noeud possède un sous-arbre gauche et un sous-arbre droit qui est lui-même un arbre. C'est ce que nous utilisons ici. \n", "Un arbre vide, par abus est implémenté par la valeur None, bien que None ne soit pas de type arbre binaire.\n", " \n", "

\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "SC2fsbb_Xe6p" }, "source": [ "On donne les instructions suivantes. Représenter sur votre cahier, à la main, l'arbre que cela a créé." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "tD8WbNe7EZcx" }, "outputs": [], "source": [ "from visu_tree import Arbre # necessaire pour représenter plus tard arbre1\n", "\n", "arbre1 = Arbre(\"A\")\n", "arbre1.ajout_g(\"B\")\n", "arbre1.ajout_d(\"C\")\n", "arbre1.fils_g.ajout_g(\"D\")\n", "arbre1.fils_g.ajout_d(\"E\")\n", "arbre1.fils_g.fils_g.ajout_d(\"G\")\n", "arbre1.fils_d.ajout_g(\"F\")" ] }, { "cell_type": "markdown", "metadata": { "id": "KOH6A4B_Xe6s" }, "source": [ "
Réponse : \n", "

\n", "\n", "![ArbreBin.png](data:image/png;base64,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)\n", "\n", "

\n", "
" ] }, { "cell_type": "markdown", "metadata": { "id": "ULlmL3cVEZc5" }, "source": [ "### b. La taille d'un arbre est son nombre de nœuds. \n", "Voici une fonction qui renvoie la taille d'un arbre:" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "14r28Vg1Xe6v", "outputId": "e7672d7c-22c5-4cfe-c0bc-09d481de7f0e" }, "outputs": [], "source": [ "def taille(arbre):\n", " if arbre is None:\n", " return 0\n", " else :\n", " return 1 + taille(arbre.fils_g) + taille(arbre.fils_d)" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Testons la taille de l'arbre que nous venons de créer : " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(taille(arbre1))" ] }, { "cell_type": "markdown", "metadata": { "id": "4s2Jv996Xe6y" }, "source": [ "### c. Hauteur d'un arbre binaire " ] }, { "cell_type": "markdown", "metadata": { "id": "OofY-r2EXe6y" }, "source": [ "La hauteur d'un arbre est le nombre maximal de noeuds se trouvant entre la racine (comprise) et une feuille (comprise). \n", "Voici une fonction qui renvoie la hauteur d'un arbre binaire :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/" }, "id": "9L6P2AjAXe6y", "outputId": "fe98ec30-b4fd-479e-f4a7-aadd790fe41e" }, "outputs": [], "source": [ "def hauteur(arbre):\n", " if arbre is None:\n", " return 0\n", " else:\n", " return 1 + max(hauteur(arbre.fils_g), hauteur(arbre.fils_d))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Testons la taille de l'arbre que nous venons de créer : " ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(hauteur(arbre1))" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Visualisation
" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from visu_tree import Arbre\n", "arbre1.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Si on ne veut que le sous-arbre gauche de A :" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "arbre1.fils_g.show()" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Et si on ne veut que le sous-arbre gauche de B ?" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# A vous\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
A vous

" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "Créez un arbre, et visualisez-le, ainsi que certains sous-arbres." ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# A vous\n" ] }, { "cell_type": "markdown", "metadata": { "id": "7PhjlUVQEZc_" }, "source": [ " \n", "

3. Une deuxième possibilité d'implémentation avec une seule classe


\n" ] }, { "cell_type": "markdown", "metadata": { "id": "VPH2t0JiEZc_" }, "source": [ "### a. Un arbre est constitué d'un nœud, d'un sous-arbre gauche et d'un sous-arbre droit." ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "Lz-qWkjjT2o1" }, "outputs": [], "source": [ "class Noeud:\n", " \n", " def __init__(self, valeur, gauche = None, droit = None):\n", " self.valeur = valeur\n", " self.gauche = gauche\n", " self.droit = droit\n", " \n", " def __str__(self):\n", " return str(self.valeur) # juste la racine\n", "\n", " def estFeuille(self):\n", " if not self.gauche and not self.droit:\n", " return True\n", " else:\n", " return False" ] }, { "cell_type": "markdown", "metadata": { "id": "ZGYYRnMzXQNA" }, "source": [ "Quelles instructions faut-il écrire pour implémenter le même arbre que dans le 1.? \n", "Compléter ci-dessous" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# A vous\n" ] }, { "cell_type": "markdown", "metadata": {}, "source": [ "
Visualisation
" ] }, { "cell_type": "markdown", "metadata": { "id": "9QWq9OgTX1Ii" }, "source": [ "Testons donc ci-dessous :" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "from visu_arbre_3 import repr_graph\n", "repr_graph(arbre_A,(3, 3), False) # sans les feuilles fantômes. (3, 3) correspond à la taille de la représentation\n", "repr_graph(arbre_A,(3, 3), True) # avec les feuilles fantômes" ] }, { "cell_type": "markdown", "metadata": { "id": "fxKmLr-0YAcI" }, "source": [ "Autre possibilité, en imbriquant les instructions :" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "id": "Abk7O10gYDX-" }, "outputs": [], "source": [ "arbre_A = Noeud('A', Noeud('B', Noeud('D', None, Noeud('G') ), Noeud('E')), Noeud('C', Noeud('F'), None))" ] }, { "cell_type": "code", "execution_count": null, "metadata": { "colab": { "base_uri": "https://localhost:8080/", "height": 194 }, "id": "c_cldzqVYof-", "outputId": "8f4031d0-b436-449b-bd3a-7515a9aa3e02" }, "outputs": [], "source": [ "repr_graph(arbre_A,(3, 3), False) # sans les feuilles fantômes" ] }, { "cell_type": "markdown", "metadata": { "id": "lU1C96X0YwgQ" }, "source": [ "### b. La taille d'un arbre \n", "En procédant de manière analogue à celle du 1.b., écrire ci-dessous une fonction qui renvoie la taille d'un arbre" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# A vous\n", "def taille(arbre):\n", " pass" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(taille(arbre_A))" ] }, { "cell_type": "markdown", "metadata": { "id": "GDT63o2_aI_v" }, "source": [ "### c. Hauteur d'un arbre \n", "En procédant de manière analogue à celle du 1.c., écrire ci-dessous une fonction qui renvoie la hauteur d'un arbre" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "# A vous\n", "def hauteur(arbre):\n", " pass" ] }, { "cell_type": "code", "execution_count": null, "metadata": {}, "outputs": [], "source": [ "print(hauteur(arbre_A))" ] }, { "cell_type": "markdown", "metadata": { "id": "vELD5shEXe7B" }, "source": [ "
\n", "\n", "---\n", "\n", "**Auteurs** Jean-Louis Thirot et Mireille Coilhac\n", "\n", "Publié sous licence CC BY-NC-SA\n", "\n", "\n", "---\n", "\"Creative
This work is licensed under a Creative Commons Attribution-NonCommercial-ShareAlike 4.0 International License. \n" ] } ], "metadata": { "colab": { "collapsed_sections": [], "name": "implementation_arbres_binaires_correction_MC.ipynb", "provenance": [] }, "kernelspec": { "display_name": "Python 3", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.7.6" } }, "nbformat": 4, "nbformat_minor": 2 }