{
 "cells": [
  {
   "cell_type": "markdown",
   "id": "cd27fe91",
   "metadata": {},
   "source": [
    "## Graphviz\n",
    "\n",
    "---\n",
    "\n",
    "Graphviz une biobliothèque open-source de dessin de graphes (ce qui inclue les arbres et automates).\n",
    "\n",
    "\n",
    "### Installation\n",
    "\n",
    "\n",
    "#### Mac\n",
    "\n",
    "Exécuter la commande suivante dans une fenêtre de terminal (console).\n",
    "\n",
    "> brew install graphviz\n",
    "\n",
    "#### Windows\n",
    "\n",
    "Le site https://graphviz.org/download/ vous indique comment procéder. Avec Conda :\n",
    "\n",
    "> conda install -c anaconda graphviz\n",
    "\n",
    "Une alternative consiste à installer le module Python à partir de `pip` :\n",
    "\n",
    "https://pypi.org/project/graphviz/\n",
    "\n",
    "### Alternatives\n",
    "\n",
    "Vous pouvez créer vos proprez diagrammes en ligne en utilisant le format `dot`. Un exemple en ligne :\n",
    "\n",
    "https://dreampuf.github.io/GraphvizOnline/#digraph%20auto%20%7B%0A%20%20%20%20rankdir%3D%22LR%22%3B%0A%0A%20%20%20%20%2F%2F%20Etats%20(12)%0A%20%20%20%20node%20%5Bshape%20%3D%20point%20%5D%3B%20%20%20%20%20__Qi__%20%2F%2F%20Etat%20initial%0A%20%20%20%20node%20%5Bshape%3Dcircle%5D%3B%20Q_0%20%5Blabel%3D0%5D%3B%0A%20%20%20%20node%20%5Bshape%3Ddoublecircle%5D%3B%20Q_1%20%5Blabel%3D1%5D%3B%0A%0A%20%20%20%20%2F%2F%20Transitions%0A%20%20%20%20__Qi__%20-%3E%20Q_0%3B%20%2F%2F%20Etat%20initial%20fleche%0A%20%20%20%20Q_0%20-%3E%20Q_0%20%5Blabel%3Db%5D%3B%0A%20%20%20%20Q_0%20-%3E%20Q_1%20%5Blabel%3Da%5D%3B%0A%20%20%20%20Q_1%20-%3E%20Q_1%20%5Blabel%3Da%5D%3B%0A%20%20%20%20Q_1%20-%3E%20Q_1%20%5Blabel%3Db%5D%3B%0A%7D\n",
    "\n",
    "```\n",
    "  digraph auto {\n",
    "    rankdir=\"LR\";\n",
    "\n",
    "    // Etats (12)\n",
    "    node [shape = point ];     __Qi__ // Etat initial inivisble\n",
    "    node [shape=circle]; Q_0 [label=0];\n",
    "    node [shape=doublecircle]; Q_1 [label=1]; // Etat final\n",
    "\n",
    "    // Transitions\n",
    "    __Qi__ -> Q_0; // Etat initial fleche\n",
    "    Q_0 -> Q_0 [label=b];\n",
    "    Q_0 -> Q_1 [label=a];\n",
    "    Q_1 -> Q_1 [label=a];\n",
    "    Q_1 -> Q_1 [label=b];\n",
    "}\n",
    "```\n",
    "\n",
    "D'autres modules de dessins de graphes existent comme NetworkX https://networkx.org\n",
    "\n",
    "### Autres méthodes d'installation\n",
    "\n",
    "- https://forum.graphviz.org/t/new-simplified-installation-procedure-on-windows/224"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "id": "89ba9690",
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3 (ipykernel)",
   "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.10.9"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 5
}