From 0b988aa639e5587ead2267e49f0ee12b9160d4ae Mon Sep 17 00:00:00 2001 From: Orestis <orestis.malaspinas@pm.me> Date: Wed, 26 Apr 2023 17:39:20 +0200 Subject: [PATCH] course 19 --- slides/cours_19.md | 696 ++++++++++++++++++++++++++++ slides/figs/board_blacked_parts.svg | 163 +++++++ slides/figs/quad_ex.svg | 209 +++++++++ slides/figs/quad_img.svg | 305 ++++++++++++ slides/figs/quad_img_simple.svg | 257 ++++++++++ slides/figs/quad_struct.svg | 69 +++ 6 files changed, 1699 insertions(+) create mode 100644 slides/cours_19.md create mode 100644 slides/figs/board_blacked_parts.svg create mode 100644 slides/figs/quad_ex.svg create mode 100644 slides/figs/quad_img.svg create mode 100644 slides/figs/quad_img_simple.svg create mode 100644 slides/figs/quad_struct.svg diff --git a/slides/cours_19.md b/slides/cours_19.md new file mode 100644 index 0000000..806c444 --- /dev/null +++ b/slides/cours_19.md @@ -0,0 +1,696 @@ +--- +title: "Arbres quarternaires" +date: "2023-04-28" +--- + + +# Les arbres quaternaires + +## Définition + +Arbre dont chaque nœud a 4 enfants ou aucun. + + + +# Les arbres quaternaires + +## Cas d'utilisation + +Typiquement utilisés pour représenter des données bidimensionnelles. + +Son équivalent tri-dimensionnel est l'octree (chaque nœud a 8 enfants ou aucun). + +## Cas d'utilisation: images + +* Stockage: compression. +* Transformations: symétries, rotations, etc. + +## Cas d'utilisation: simulation + +* Indexation spatiale. +* Détection de collisions. +* Simulation de galaxies, Barnes-Hut. + +# Exemple de compression + +::: columns + +:::: {.column width=30%} + +## Comment représenter l'image + + + +:::: + +:::: {.column width=70%} + +## Sous la forme d'un arbre quaternaire? + +. . . + + + +**Économie?** + +. . . + +Image 64 pixels, arbre 25 neouds. + +:::: + +::: + + +# Structure de données + +::: columns + +:::: {.column width=50%} + +## Pseudocode? + +. . . + +```python +struct node + info + node sup_gauche, sup_droit, + inf_gauche, inf_droit +``` + + + +:::: + +:::: {.column width=50%} + +## En C? + +. . . + +```C +struct _node { + int info; + struct _node *sup_left; + struct _node *sup_right; + struct _node *inf_left; + struct _node *inf_right; +}; +``` + +* Pourquoi le `*` est important? + +. . . + +* Type récursif => taille inconnue à la compilation. + +:::: + +::: + +# Une fonctionnalité simple + +\footnotesize + +## La fonction `est_feuille(noeud)` + +* Problème avec cette implémentation? + +```python +bool est_feuille(noeud) + retournee + est_vide(sup_gauche(noeud)) && + est_vide(sup_droit(noeud)) && + est_vide(inf_gauche(noeud)) && + est_vide(inf_droit(noeud)) +``` + +. . . + +* Inutile d'avoir 4 conditions (soit 4 enfants soit aucun!) +* Facile d'en oublier un! +* Comment changer la structure pour que ça soit moins terrible? + +. . . + +```python +struct node + info + node enfant[4] +``` + +# Structure de données + +## En C? + +. . . + +```C +typedef struct _node { + int info; + struct _node *child[4]; +} node; +``` + +## Fonction `is_leaf(node *tree)`? + +. . . + +```C +bool is_leaf(node *tree) { + return (NULL == tree->child[0]); // only first matters +} +``` + +# Problème à résoudre + +* Construire un arbre quaternaire à partir d'une image: + * Créer l'arbre (allouer la mémoire pour tous les nœuds), + * Le remplir avec les valeurs des pixels. +* Compression de l'image: + * Si les pixels sont les mêmes dans le quadrant on supprime le sous-arbre (sans perte) + * Si les pixels dévient pas trop on supprime le quadrant (avec perte) + +# Création de l'arbre + +## Comment créer un arbre de profondeur `prof` (3min)? + +. . . + +```python +arbre creer_arbre(prof) + n = nouveau_noeud() # alloue la mémoire + si prof > 0 + pour i = 0 à 3 + n.enfant[i] = creer_arbre(prof-1) + retourne n +``` + +## En `C` (3 min, matrix)? + +. . . + +```C +node *qt_create(int depth) { + node *n = calloc(1, sizeof(node)); + if (depth > 0) { + for (int i = 0; i < 4; ++i) { + n->child[i] = qt_create(depth-1); + } + } + return n; +} +``` + +# Le nombre de nœuds? + +## Comment implémenter la fonction (pseudo-code, 5min, matrix)? + +. . . + +```C +entier nombre_nœuds(arbre) + si est_feuille(arbre) + retourne 1 + sinon + somme = 1 + pour i de 0 à 3 + somme += nombre_nœuds(arbre.enfant[i]) + retourne somme +``` + +# Le nombre de nœuds? + +## Comment implémenter la fonction en C (3min, matrix)? + +. . . + +```C +int size(node *qt) { + if (is_leaf(qt)) { + return 1; + } else { + int sum = 1; + for (int i = 0; i < 4; ++i) { + sum += size(qt->child[i]); + } + return sum; + } +} +``` + +# La profondeur en C? + +## Implémentation (5min, matrix) + +. . . + +\footnotesize +```C +int max(int x, int y) { + return (x >= y ? x : y); +} +int max_depth(int depths[4]) { + int m = depths[0]; + for (int i = 1; i < 4; ++i) { + m = max(m, depths[i]); + } + return m; +} +int depth(node *qt) { + int depths[] = {0, 0, 0, 0}; + if (is_leaf(qt)) { + return 0; + } else { + for (int i = 0; i < 4; ++i) { + depths[i] = depth(qt->child[i]); + } + return 1 + max_depth(depths); + } +} +``` + +# Fonctions utiles (1/4) + +## Comment remplir un arbre depuis une matrice? + +``` + SG=0 | SD=1 + 21 | 12 | 4 | 4 + 9 | 7 | 4 | 4 +----------------- + 1 | 1 | 0 | 31 + 1 | 1 | 3 | 27 + IG=2 | ID=3 +``` + +## Quel arbre cela représente? + +. . . + + + +# Fonctions utiles (3/5) + +* On veut transformer une ligne/colonne en feuille. +* Comment? + +::: columns + +:::: {.column width=40%} + +## Soit `ligne=2`, `colonne=3` + +``` + SG=0 | SD=1 + 21 | 12 | 4 | 4 + 9 | 7 | 4 | 4 +----------------- + 1 | 1 | 0 | 31 + 1 | 1 | 3 | 27 + IG=2 | ID=3 +``` + +:::: + +:::: {.column width=70%} + +## Trouver un algorithme + + + +* Quelle feuille? +* Plus important: quel chemin? + +. . . + +* `co -> G/D`, `li -> S/I`, +* `2 * (li / 2) + co / 2 -> 2 * 1 + 1 = 3` +* `2 * ((li % 2) / 1) + (co % 2) / 1 -> 2 * 0 + 1 = 1` +* Comment généraliser? + +:::: + +::: + +# Fonctions utiles (4/5) + +::: columns + +:::: {.column width=40%} + +## Soit `ligne=2`, `colonne=3` + +``` + SG=0 | SD=1 + 21 | 12 | 4 | 4 + 9 | 7 | 4 | 4 +----------------- + 1 | 1 | 0 | 31 + 1 | 1 | 3 | 27 + IG=2 | ID=3 +``` + +:::: + +:::: {.column width=70%} + +## Trouver un algorithme (prendre plusieurs exemples, 15min, matrix) + + + +* Comment généraliser? + +. . . + +```C +noeud position(li, co, arbre) + d = profondeur(arbre); + tant_que (d > 1) + index = 2 * ((li % 2^d) / 2^(d-1)) + + (col % 2^d) / 2^(d-1) + arbre = arbre.enfant[index] + d -= 1 + retourne arbre +``` + + +:::: + +::: + +# Fonctions utiles (5/5) + +\footnotesize + +## Pseudocode + +```C +noeud position(li, co, arbre) + d = profondeur(arbre); + tant_que (d > 1) + index = 2 * ((li % 2^d) / 2^(d-1)) + + (col % 2^d) / 2^(d-1) + arbre = arbre.enfant[index] + d -= 1 + retourne arbre +``` + +## Écrire le code `C` correspondant (5min, matrix) + +```C + + + + + + + + + + + +``` + +# Remplir l'arbre + +## A partir d'une matrice (pseudo-code, 5min, matrix)? + +. . . + +```C +arbre matrice_à _arbre(matrice) + arbre = creer_arbre(profondeur) + pour li de 0 à nb_lignes(matrice) + pour co de 0 à nb_colonnes(matrice) + noeud = position(li, co, arbre) + noeud.info = matrice[co][li] + retourne arbre +``` + +. . . + +## A partir d'une matrice (C, 5min, matrix)? + +. . . + +\footnotesize + +```C +node *matrix_to_qt(int nb_li, int nb_co, int matrix[nb_li][nb_co], int depth) +{ + node *qt = qt_create(depth); + for (int li = 0; li < nd_li; ++li) { + for (int co = 0; co < nd_co; ++co) { + node *current = position(li, co, qt); + current->info = matrix[li][co]; + } + } + return qt; +} +``` + + +<!-- +Deja fait plus haut +# La profondeur? + +## Comment implémenter la fonction profondeur? + +* Quelle signature? + +. . . + +```C +entier profondeur(arbre) +``` + +* Quel pseudo-code (3min, matrix)? + +. . . + +```C +entier profondeur(arbre) + profondeurs = [0, 0, 0, 0]; + si est_feuille(arbre) + retourne 0 + sinon + pour i 0 à 3 + profondeurs[i] = 1 + profondeur(arbre.enfant[i]) + retourne max(p) +``` + +# La profondeur en C? + +## Implémentation (5min, matrix) + +. . . + +```C +int max(int x, int y) { + return (x >= y ? x : y); +} +int max_depth(int depths[4]) { + int m = depths[0]; + for (int i = 1; i < 4; ++i) { + m = max(m, depths[i]); + } + return m; +} +int depth(node *qt) { + int depths[] = {0, 0, 0, 0}; + if (is_leaf(qt)) { + return 0; + } else { + depths[i] = 1 + depth(qt->child[i]); + return max_depth(depths); + } +} +``` --> + +# Remplir la matrice + +## A partir de l'arbre (pseudo-code, 3min, matrix)? + +. . . + +```C +matrice arbre_à _matrice(arbre) + pour li de 0 à nb_lignes(matrice) + pour co de 0 à nb_colonnes(matrice) + noeud = position(li, co, arbre) + matrice[co][li] = noeud.info + retourne arbre +``` + +. . . + +## A partir de l'arbre (C, 3min, matrix)? + +. . . + +\footnotesize + +```C +void qt_to_matrix(node *qt, int nb_li, int nb_co, int matrix[nb_li][nb_co]) + for (int li = 0; li < nd_li; ++li) { + for (int co = 0; co < nd_co; ++co) { + node *current = position(li, co, qt); + matrix[li][co] = current->info; + } + } +``` + +# Transformations avec un arbre quaternaire + +## A faire + +* Symétrie axiale (horizontale/verticale). +* Rotation quart de cercle (gauche/droite). +* Compression. + +# La symétrie verticale + +## Que donne la symétrie verticale de + +``` + SG=0 | SD=1 + 21 | 12 | 4 | 4 + 9 | 7 | 4 | 4 +----------------- + 1 | 1 | 0 | 31 + 1 | 1 | 3 | 27 + IG=2 | ID=3 +``` + +. . . + +``` + SG=0 | SD=1 + 4 | 4 | 12 | 21 + 4 | 4 | 7 | 9 +------------------ + 31 | 0 | 1 | 1 + 27 | 3 | 1 | 1 + IG=2 | ID=3 +``` + +# La symétrie d'axe vertical + +## Comment faire sur une matrice (3min, matrix)? + +. . . + +\footnotesize + +```C +matrice symétrie(matrice) + pour i de 0 à nb_colonnes(matrice) / 2 + pour j de 0 à nb_lignes(matrice) + échanger(matrice[i][j], matrice[nb_colonnes(matrice)-1-i][j]) + retourne matrice +``` + +# La symétrie d'axe vertical + +## Comment faire sur un arbre? + +* Faire un dessin de l'arbre avant/après (5min, matrix) + + ``` + SG=0 | SD=1 SG=0 | SD=1 + 21 | 12 | 4 | 4 4 | 4 | 12 | 21 + 9 | 7 | 4 | 4 4 | 4 | 7 | 9 + ----------------- => ---------------- + 1 | 1 | 0 | 31 31 | 0 | 1 | 1 + 1 | 1 | 3 | 27 27 | 3 | 1 | 1 + IG=2 | ID=3 IG=2 | ID=3 + ``` + +* Écrire le pseudo-code (3min, matrix) + +. . . + +\footnotesize + +```C +arbre symétrie(arbre) + si !est_feuille(arbre) + échanger(arbre.enfant[0], arbre.enfant[1]) + échanger(arbre.enfant[2], arbre.enfant[3]) + pour i de 0 à 3 + symétrie(arbre.enfant[i]) + retourne arbre +``` + +# La symétrie d'axe horizontal + +* Trivial de faire l'axe horizontal (exercice à la maison) + +# Rotation d'un quart de cercle + +## Comment faire sur un arbre? + +* Faire un dessin de l'arbre avant/après (5min, matrix) + + ``` + SG=0 | SD=1 SG=0 | SD=1 + 21 | 12 | 4 | 4 4 | 4 | 31 | 27 + 9 | 7 | 4 | 4 4 | 4 | 0 | 3 + ----------------- => ----------------- + 1 | 1 | 0 | 31 12 | 7 | 1 | 1 + 1 | 1 | 3 | 27 21 | 9 | 1 | 1 + IG=2 | ID=3 IG=2 | ID=3 + + ``` + +* Écrire le pseudo-code (3min, matrix) + +. . . + +```C +rien rotation_gauche(arbre) + si !est_feuille(arbre) + échange_cyclique_gauche(arbre.enfant) + pour i de 0 à 3 + rotation_gauche(arbre.enfant[i]) +``` + +# Rotation d'un quart de cercle + +\footnotesize + +## Comment faire sur un arbre? + +``` + SG=0 | SD=1 SG=0 | SD=1 + 21 | 12 | 4 | 4 4 | 4 | 31 | 27 + 9 | 7 | 4 | 4 4 | 4 | 0 | 3 +----------------- => ----------------- + 1 | 1 | 0 | 31 12 | 7 | 1 | 1 + 1 | 1 | 3 | 27 21 | 9 | 1 | 1 + IG=2 | ID=3 IG=2 | ID=3 +``` + +* Écrire le vrai (5min, matrix) + +. . . + +```C +void rotate(node *qt) { + if (!is_leaf(qt)) { + node *tmp = qt->child[2]; + qt->child[2] = qt->child[0]; + qt->child[0] = qt->child[1]; + qt->child[1] = qt->child[3]; + qt->child[3] = tmp; + for (int i=0;i < 4; i++) { + rotate(qt->child[i]); + } + } +} +``` + + + diff --git a/slides/figs/board_blacked_parts.svg b/slides/figs/board_blacked_parts.svg new file mode 100644 index 0000000..50d056a --- /dev/null +++ b/slides/figs/board_blacked_parts.svg @@ -0,0 +1,163 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!-- Created with Inkscape (http://www.inkscape.org/) --> + +<svg + width="42.597916mm" + height="42.597916mm" + viewBox="0 0 42.597916 42.597916" + version="1.1" + id="svg5" + inkscape:version="1.1.2 (0a00cf5339, 2022-02-04, custom)" + sodipodi:docname="board_blacked_parts.svg" + xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape" + xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd" + xmlns="http://www.w3.org/2000/svg" + xmlns:svg="http://www.w3.org/2000/svg"> + <sodipodi:namedview + id="namedview7" + pagecolor="#ffffff" + bordercolor="#666666" + borderopacity="1.0" + inkscape:pageshadow="2" + inkscape:pageopacity="0.0" + inkscape:pagecheckerboard="0" + inkscape:document-units="mm" + showgrid="true" + inkscape:zoom="0.94867184" + inkscape:cx="274.06737" + inkscape:cy="28.987895" + inkscape:window-width="1920" + inkscape:window-height="1050" + inkscape:window-x="0" + inkscape:window-y="30" + inkscape:window-maximized="1" + inkscape:current-layer="layer1" + fit-margin-top="0" + fit-margin-left="0" + fit-margin-right="0" + fit-margin-bottom="0"> + <inkscape:grid + type="xygrid" + id="grid824" + originx="-26.326041" + originy="-42.201041" /> + </sodipodi:namedview> + <defs + id="defs2" /> + <g + inkscape:label="Layer 1" + inkscape:groupmode="layer" + id="layer1" + transform="translate(-26.326042,-42.201042)"> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 26.458333,42.333333 H 68.791666" + id="path859" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 26.458333,42.333333 V 84.666666" + id="path861" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 26.458333,84.666666 H 68.791666 V 42.333333" + id="path863" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 31.75,42.333333 V 84.666666" + id="path865" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 37.041667,42.333334 V 84.666667" + id="path865-3" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 47.625,42.333333 V 84.666666" + id="path865-6" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 52.916667,42.333333 V 84.666669" + id="path865-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 58.208333,42.333333 V 84.666669" + id="path865-5" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 63.5,42.333337 v 42.33333" + id="path865-35" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 42.333333,42.333333 V 84.666666" + id="path865-62" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 26.458327,79.375 h 42.33333" + id="path865-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 26.458328,74.083333 H 68.791657" + id="path865-3-1" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 26.458327,63.5 h 42.33333" + id="path865-6-2" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 26.458327,58.208333 h 42.33334" + id="path865-7-7" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 26.458327,52.916667 h 42.33334" + id="path865-5-0" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="M 26.458331,47.624996 H 68.791657" + id="path865-35-9" /> + <path + style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1" + d="m 26.458327,68.791667 h 42.33333" + id="path865-62-3" /> + <rect + style="fill:#000000;stroke:#000205;stroke-width:0.499999;stroke-linecap:square;fill-opacity:1" + id="rect1808" + width="21.166666" + height="21.166666" + x="26.458334" + y="42.333336" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:#000205;stroke-width:0.499999;stroke-linecap:square" + id="rect1832" + width="10.583333" + height="10.583333" + x="26.458334" + y="74.083336" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:#000205;stroke-width:0.499999;stroke-linecap:square" + id="rect1834" + width="10.583333" + height="10.583333" + x="58.208332" + y="63.5" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:#000205;stroke-width:0.499999;stroke-linecap:square" + id="rect1836" + width="5.2916665" + height="5.2916665" + x="63.5" + y="79.375" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:#000205;stroke-width:0.499999;stroke-linecap:square" + id="rect1838" + width="5.2916665" + height="5.2916665" + x="47.625" + y="42.333336" /> + <rect + style="fill:#000000;fill-opacity:1;stroke:#000205;stroke-width:0.499999;stroke-linecap:square" + id="rect1840" + width="5.2916665" + height="5.2916665" + x="52.916668" + y="47.625" /> + </g> +</svg> diff --git a/slides/figs/quad_ex.svg b/slides/figs/quad_ex.svg new file mode 100644 index 0000000..97df585 --- /dev/null +++ b/slides/figs/quad_ex.svg @@ -0,0 +1,209 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.40.1 (20161225.0304) + --> +<!-- Title: G Pages: 1 --> +<svg width="566pt" height="260pt" viewBox="0.00 0.00 566.00 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)"> +<title>G</title> +<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-256 562,-256 562,4 -4,4"/> +<!-- 0 --> +<g id="node1" class="node"> +<title>0</title> +<ellipse fill="none" stroke="#000000" cx="243" cy="-234" rx="27" ry="18"/> +<text text-anchor="middle" x="243" y="-229.8" font-family="Times,serif" font-size="14.00" fill="#000000"> </text> +</g> +<!-- sg1 --> +<g id="node2" class="node"> +<title>sg1</title> +<ellipse fill="none" stroke="#000000" cx="135" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="135" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000">67</text> +</g> +<!-- 0->sg1 --> +<g id="edge1" class="edge"> +<title>0->sg1</title> +<path fill="none" stroke="#000000" d="M223.6918,-221.1278C206.6445,-209.763 181.5981,-193.0654 162.4656,-180.3104"/> +<polygon fill="#000000" stroke="#000000" points="164.4031,-177.3956 154.1411,-174.7607 160.5201,-183.2199 164.4031,-177.3956"/> +</g> +<!-- sd1 --> +<g id="node3" class="node"> +<title>sd1</title> +<ellipse fill="none" stroke="#000000" cx="207" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="207" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000">32</text> +</g> +<!-- 0->sd1 --> +<g id="edge2" class="edge"> +<title>0->sd1</title> +<path fill="none" stroke="#000000" d="M234.2854,-216.5708C230.0403,-208.0807 224.8464,-197.6929 220.1337,-188.2674"/> +<polygon fill="#000000" stroke="#000000" points="223.237,-186.6477 215.6343,-179.2687 216.976,-189.7782 223.237,-186.6477"/> +</g> +<!-- ig1 --> +<g id="node4" class="node"> +<title>ig1</title> +<ellipse fill="none" stroke="#000000" cx="279" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="279" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000"> </text> +</g> +<!-- 0->ig1 --> +<g id="edge3" class="edge"> +<title>0->ig1</title> +<path fill="none" stroke="#000000" d="M251.7146,-216.5708C255.9597,-208.0807 261.1536,-197.6929 265.8663,-188.2674"/> +<polygon fill="#000000" stroke="#000000" points="269.024,-189.7782 270.3657,-179.2687 262.763,-186.6477 269.024,-189.7782"/> +</g> +<!-- id1 --> +<g id="node5" class="node"> +<title>id1</title> +<ellipse fill="none" stroke="#000000" cx="351" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="351" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000">7</text> +</g> +<!-- 0->id1 --> +<g id="edge4" class="edge"> +<title>0->id1</title> +<path fill="none" stroke="#000000" d="M262.3082,-221.1278C279.3555,-209.763 304.4019,-193.0654 323.5344,-180.3104"/> +<polygon fill="#000000" stroke="#000000" points="325.4799,-183.2199 331.8589,-174.7607 321.5969,-177.3956 325.4799,-183.2199"/> +</g> +<!-- sg2 --> +<g id="node6" class="node"> +<title>sg2</title> +<ellipse fill="none" stroke="#000000" cx="171" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="171" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000"> </text> +</g> +<!-- ig1->sg2 --> +<g id="edge5" class="edge"> +<title>ig1->sg2</title> +<path fill="none" stroke="#000000" d="M259.6918,-149.1278C242.6445,-137.763 217.5981,-121.0654 198.4656,-108.3104"/> +<polygon fill="#000000" stroke="#000000" points="200.4031,-105.3956 190.1411,-102.7607 196.5201,-111.2199 200.4031,-105.3956"/> +</g> +<!-- sd2 --> +<g id="node7" class="node"> +<title>sd2</title> +<ellipse fill="none" stroke="#000000" cx="243" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="243" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">2</text> +</g> +<!-- ig1->sd2 --> +<g id="edge6" class="edge"> +<title>ig1->sd2</title> +<path fill="none" stroke="#000000" d="M270.2854,-144.5708C266.0403,-136.0807 260.8464,-125.6929 256.1337,-116.2674"/> +<polygon fill="#000000" stroke="#000000" points="259.237,-114.6477 251.6343,-107.2687 252.976,-117.7782 259.237,-114.6477"/> +</g> +<!-- ig2 --> +<g id="node8" class="node"> +<title>ig2</title> +<ellipse fill="none" stroke="#000000" cx="315" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="315" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text> +</g> +<!-- ig1->ig2 --> +<g id="edge7" class="edge"> +<title>ig1->ig2</title> +<path fill="none" stroke="#000000" d="M287.7146,-144.5708C291.9597,-136.0807 297.1536,-125.6929 301.8663,-116.2674"/> +<polygon fill="#000000" stroke="#000000" points="305.024,-117.7782 306.3657,-107.2687 298.763,-114.6477 305.024,-117.7782"/> +</g> +<!-- id2 --> +<g id="node9" class="node"> +<title>id2</title> +<ellipse fill="none" stroke="#000000" cx="387" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="387" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000"> </text> +</g> +<!-- ig1->id2 --> +<g id="edge8" class="edge"> +<title>ig1->id2</title> +<path fill="none" stroke="#000000" d="M298.3082,-149.1278C315.3555,-137.763 340.4019,-121.0654 359.5344,-108.3104"/> +<polygon fill="#000000" stroke="#000000" points="361.4799,-111.2199 367.8589,-102.7607 357.5969,-105.3956 361.4799,-111.2199"/> +</g> +<!-- sg3 --> +<g id="node10" class="node"> +<title>sg3</title> +<ellipse fill="none" stroke="#000000" cx="27" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="27" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">12</text> +</g> +<!-- sg2->sg3 --> +<g id="edge9" class="edge"> +<title>sg2->sg3</title> +<path fill="none" stroke="#000000" d="M149.1295,-79.0647C124.7778,-66.8889 85.238,-47.119 57.7715,-33.3858"/> +<polygon fill="#000000" stroke="#000000" points="59.114,-30.1439 48.6045,-28.8022 55.9835,-36.4049 59.114,-30.1439"/> +</g> +<!-- sd3 --> +<g id="node11" class="node"> +<title>sd3</title> +<ellipse fill="none" stroke="#000000" cx="99" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="99" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text> +</g> +<!-- sg2->sd3 --> +<g id="edge10" class="edge"> +<title>sg2->sd3</title> +<path fill="none" stroke="#000000" d="M155.7307,-74.7307C145.803,-64.803 132.6847,-51.6847 121.5637,-40.5637"/> +<polygon fill="#000000" stroke="#000000" points="123.7933,-37.8436 114.2473,-33.2473 118.8436,-42.7933 123.7933,-37.8436"/> +</g> +<!-- ig3 --> +<g id="node12" class="node"> +<title>ig3</title> +<ellipse fill="none" stroke="#000000" cx="171" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="171" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">2</text> +</g> +<!-- sg2->ig3 --> +<g id="edge11" class="edge"> +<title>sg2->ig3</title> +<path fill="none" stroke="#000000" d="M171,-71.8314C171,-64.131 171,-54.9743 171,-46.4166"/> +<polygon fill="#000000" stroke="#000000" points="174.5001,-46.4132 171,-36.4133 167.5001,-46.4133 174.5001,-46.4132"/> +</g> +<!-- id3 --> +<g id="node13" class="node"> +<title>id3</title> +<ellipse fill="none" stroke="#000000" cx="243" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="243" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">3</text> +</g> +<!-- sg2->id3 --> +<g id="edge12" class="edge"> +<title>sg2->id3</title> +<path fill="none" stroke="#000000" d="M186.2693,-74.7307C196.197,-64.803 209.3153,-51.6847 220.4363,-40.5637"/> +<polygon fill="#000000" stroke="#000000" points="223.1564,-42.7933 227.7527,-33.2473 218.2067,-37.8436 223.1564,-42.7933"/> +</g> +<!-- sg4 --> +<g id="node14" class="node"> +<title>sg4</title> +<ellipse fill="none" stroke="#000000" cx="315" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="315" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">8</text> +</g> +<!-- id2->sg4 --> +<g id="edge13" class="edge"> +<title>id2->sg4</title> +<path fill="none" stroke="#000000" d="M371.7307,-74.7307C361.803,-64.803 348.6847,-51.6847 337.5637,-40.5637"/> +<polygon fill="#000000" stroke="#000000" points="339.7933,-37.8436 330.2473,-33.2473 334.8436,-42.7933 339.7933,-37.8436"/> +</g> +<!-- sd4 --> +<g id="node15" class="node"> +<title>sd4</title> +<ellipse fill="none" stroke="#000000" cx="387" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="387" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">4</text> +</g> +<!-- id2->sd4 --> +<g id="edge14" class="edge"> +<title>id2->sd4</title> +<path fill="none" stroke="#000000" d="M387,-71.8314C387,-64.131 387,-54.9743 387,-46.4166"/> +<polygon fill="#000000" stroke="#000000" points="390.5001,-46.4132 387,-36.4133 383.5001,-46.4133 390.5001,-46.4132"/> +</g> +<!-- ig4 --> +<g id="node16" class="node"> +<title>ig4</title> +<ellipse fill="none" stroke="#000000" cx="459" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="459" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">5</text> +</g> +<!-- id2->ig4 --> +<g id="edge15" class="edge"> +<title>id2->ig4</title> +<path fill="none" stroke="#000000" d="M402.2693,-74.7307C412.197,-64.803 425.3153,-51.6847 436.4363,-40.5637"/> +<polygon fill="#000000" stroke="#000000" points="439.1564,-42.7933 443.7527,-33.2473 434.2067,-37.8436 439.1564,-42.7933"/> +</g> +<!-- id4 --> +<g id="node17" class="node"> +<title>id4</title> +<ellipse fill="none" stroke="#000000" cx="531" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="531" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">9</text> +</g> +<!-- id2->id4 --> +<g id="edge16" class="edge"> +<title>id2->id4</title> +<path fill="none" stroke="#000000" d="M408.8705,-79.0647C433.2222,-66.8889 472.762,-47.119 500.2285,-33.3858"/> +<polygon fill="#000000" stroke="#000000" points="502.0165,-36.4049 509.3955,-28.8022 498.886,-30.1439 502.0165,-36.4049"/> +</g> +</g> +</svg> \ No newline at end of file diff --git a/slides/figs/quad_img.svg b/slides/figs/quad_img.svg new file mode 100644 index 0000000..7b48a2e --- /dev/null +++ b/slides/figs/quad_img.svg @@ -0,0 +1,305 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.40.1 (20161225.0304) + --> +<!-- Title: G Pages: 1 --> +<svg width="1070pt" height="260pt" viewBox="0.00 0.00 1070.00 260.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 256)"> +<title>G</title> +<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-256 1066,-256 1066,4 -4,4"/> +<!-- 0 --> +<g id="node1" class="node"> +<title>0</title> +<ellipse fill="none" stroke="#000000" cx="387" cy="-234" rx="27" ry="18"/> +<text text-anchor="middle" x="387" y="-229.8" font-family="Times,serif" font-size="14.00" fill="#000000"> </text> +</g> +<!-- sg1 --> +<g id="node2" class="node"> +<title>sg1</title> +<ellipse fill="none" stroke="#000000" cx="243" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="243" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000">0</text> +</g> +<!-- 0->sg1 --> +<g id="edge1" class="edge"> +<title>0->sg1</title> +<path fill="none" stroke="#000000" d="M365.1295,-223.0647C340.7778,-210.8889 301.238,-191.119 273.7715,-177.3858"/> +<polygon fill="#000000" stroke="#000000" points="275.114,-174.1439 264.6045,-172.8022 271.9835,-180.4049 275.114,-174.1439"/> +</g> +<!-- sd1 --> +<g id="node3" class="node"> +<title>sd1</title> +<ellipse fill="none" stroke="#000000" cx="315" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="315" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000"> </text> +</g> +<!-- 0->sd1 --> +<g id="edge2" class="edge"> +<title>0->sd1</title> +<path fill="none" stroke="#000000" d="M371.7307,-218.7307C361.803,-208.803 348.6847,-195.6847 337.5637,-184.5637"/> +<polygon fill="#000000" stroke="#000000" points="339.7933,-181.8436 330.2473,-177.2473 334.8436,-186.7933 339.7933,-181.8436"/> +</g> +<!-- ig1 --> +<g id="node4" class="node"> +<title>ig1</title> +<ellipse fill="none" stroke="#000000" cx="495" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="495" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000"> </text> +</g> +<!-- 0->ig1 --> +<g id="edge3" class="edge"> +<title>0->ig1</title> +<path fill="none" stroke="#000000" d="M406.3082,-221.1278C423.3555,-209.763 448.4019,-193.0654 467.5344,-180.3104"/> +<polygon fill="#000000" stroke="#000000" points="469.4799,-183.2199 475.8589,-174.7607 465.5969,-177.3956 469.4799,-183.2199"/> +</g> +<!-- id1 --> +<g id="node5" class="node"> +<title>id1</title> +<ellipse fill="none" stroke="#000000" cx="783" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="783" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000"> </text> +</g> +<!-- 0->id1 --> +<g id="edge4" class="edge"> +<title>0->id1</title> +<path fill="none" stroke="#000000" d="M413.2893,-229.2201C482.1457,-216.7008 667.8702,-182.9327 746.7603,-168.589"/> +<polygon fill="#000000" stroke="#000000" points="747.5074,-172.0107 756.72,-166.7782 746.2551,-165.1236 747.5074,-172.0107"/> +</g> +<!-- sg2 --> +<g id="node6" class="node"> +<title>sg2</title> +<ellipse fill="none" stroke="#000000" cx="135" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="135" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000"> </text> +</g> +<!-- sd1->sg2 --> +<g id="edge5" class="edge"> +<title>sd1->sg2</title> +<path fill="none" stroke="#000000" d="M293.5289,-150.643C288.8008,-148.3177 283.7773,-145.9788 279,-144 232.255,-124.6376 217.745,-127.3624 171,-108 169.2085,-107.2579 167.3824,-106.4653 165.5502,-105.6416"/> +<polygon fill="#000000" stroke="#000000" points="167.0084,-102.4596 156.4711,-101.357 164.0208,-108.7901 167.0084,-102.4596"/> +</g> +<!-- sd2 --> +<g id="node7" class="node"> +<title>sd2</title> +<ellipse fill="none" stroke="#000000" cx="207" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="207" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text> +</g> +<!-- sd1->sd2 --> +<g id="edge6" class="edge"> +<title>sd1->sd2</title> +<path fill="none" stroke="#000000" d="M295.6918,-149.1278C278.6445,-137.763 253.5981,-121.0654 234.4656,-108.3104"/> +<polygon fill="#000000" stroke="#000000" points="236.4031,-105.3956 226.1411,-102.7607 232.5201,-111.2199 236.4031,-105.3956"/> +</g> +<!-- ig2 --> +<g id="node8" class="node"> +<title>ig2</title> +<ellipse fill="none" stroke="#000000" cx="279" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="279" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text> +</g> +<!-- sd1->ig2 --> +<g id="edge7" class="edge"> +<title>sd1->ig2</title> +<path fill="none" stroke="#000000" d="M306.2854,-144.5708C302.0403,-136.0807 296.8464,-125.6929 292.1337,-116.2674"/> +<polygon fill="#000000" stroke="#000000" points="295.237,-114.6477 287.6343,-107.2687 288.976,-117.7782 295.237,-114.6477"/> +</g> +<!-- id2 --> +<g id="node9" class="node"> +<title>id2</title> +<ellipse fill="none" stroke="#000000" cx="351" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="351" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text> +</g> +<!-- sd1->id2 --> +<g id="edge8" class="edge"> +<title>sd1->id2</title> +<path fill="none" stroke="#000000" d="M323.7146,-144.5708C327.9597,-136.0807 333.1536,-125.6929 337.8663,-116.2674"/> +<polygon fill="#000000" stroke="#000000" points="341.024,-117.7782 342.3657,-107.2687 334.763,-114.6477 341.024,-117.7782"/> +</g> +<!-- sg3 --> +<g id="node10" class="node"> +<title>sg3</title> +<ellipse fill="none" stroke="#000000" cx="423" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="423" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text> +</g> +<!-- ig1->sg3 --> +<g id="edge9" class="edge"> +<title>ig1->sg3</title> +<path fill="none" stroke="#000000" d="M479.7307,-146.7307C469.803,-136.803 456.6847,-123.6847 445.5637,-112.5637"/> +<polygon fill="#000000" stroke="#000000" points="447.7933,-109.8436 438.2473,-105.2473 442.8436,-114.7933 447.7933,-109.8436"/> +</g> +<!-- sd3 --> +<g id="node11" class="node"> +<title>sd3</title> +<ellipse fill="none" stroke="#000000" cx="495" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="495" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text> +</g> +<!-- ig1->sd3 --> +<g id="edge10" class="edge"> +<title>ig1->sd3</title> +<path fill="none" stroke="#000000" d="M495,-143.8314C495,-136.131 495,-126.9743 495,-118.4166"/> +<polygon fill="#000000" stroke="#000000" points="498.5001,-118.4132 495,-108.4133 491.5001,-118.4133 498.5001,-118.4132"/> +</g> +<!-- ig3 --> +<g id="node12" class="node"> +<title>ig3</title> +<ellipse fill="none" stroke="#000000" cx="567" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="567" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">0</text> +</g> +<!-- ig1->ig3 --> +<g id="edge11" class="edge"> +<title>ig1->ig3</title> +<path fill="none" stroke="#000000" d="M510.2693,-146.7307C520.197,-136.803 533.3153,-123.6847 544.4363,-112.5637"/> +<polygon fill="#000000" stroke="#000000" points="547.1564,-114.7933 551.7527,-105.2473 542.2067,-109.8436 547.1564,-114.7933"/> +</g> +<!-- id3 --> +<g id="node13" class="node"> +<title>id3</title> +<ellipse fill="none" stroke="#000000" cx="639" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="639" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text> +</g> +<!-- ig1->id3 --> +<g id="edge12" class="edge"> +<title>ig1->id3</title> +<path fill="none" stroke="#000000" d="M516.8705,-151.0647C541.2222,-138.8889 580.762,-119.119 608.2285,-105.3858"/> +<polygon fill="#000000" stroke="#000000" points="610.0165,-108.4049 617.3955,-100.8022 606.886,-102.1439 610.0165,-108.4049"/> +</g> +<!-- sg4 --> +<g id="node14" class="node"> +<title>sg4</title> +<ellipse fill="none" stroke="#000000" cx="711" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="711" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text> +</g> +<!-- id1->sg4 --> +<g id="edge13" class="edge"> +<title>id1->sg4</title> +<path fill="none" stroke="#000000" d="M767.7307,-146.7307C757.803,-136.803 744.6847,-123.6847 733.5637,-112.5637"/> +<polygon fill="#000000" stroke="#000000" points="735.7933,-109.8436 726.2473,-105.2473 730.8436,-114.7933 735.7933,-109.8436"/> +</g> +<!-- sd4 --> +<g id="node15" class="node"> +<title>sd4</title> +<ellipse fill="none" stroke="#000000" cx="783" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="783" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">0</text> +</g> +<!-- id1->sd4 --> +<g id="edge14" class="edge"> +<title>id1->sd4</title> +<path fill="none" stroke="#000000" d="M783,-143.8314C783,-136.131 783,-126.9743 783,-118.4166"/> +<polygon fill="#000000" stroke="#000000" points="786.5001,-118.4132 783,-108.4133 779.5001,-118.4133 786.5001,-118.4132"/> +</g> +<!-- ig4 --> +<g id="node16" class="node"> +<title>ig4</title> +<ellipse fill="none" stroke="#000000" cx="855" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="855" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text> +</g> +<!-- id1->ig4 --> +<g id="edge15" class="edge"> +<title>id1->ig4</title> +<path fill="none" stroke="#000000" d="M798.2693,-146.7307C808.197,-136.803 821.3153,-123.6847 832.4363,-112.5637"/> +<polygon fill="#000000" stroke="#000000" points="835.1564,-114.7933 839.7527,-105.2473 830.2067,-109.8436 835.1564,-114.7933"/> +</g> +<!-- id4 --> +<g id="node17" class="node"> +<title>id4</title> +<ellipse fill="none" stroke="#000000" cx="927" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="927" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000"> </text> +</g> +<!-- id1->id4 --> +<g id="edge16" class="edge"> +<title>id1->id4</title> +<path fill="none" stroke="#000000" d="M804.8705,-151.0647C829.2222,-138.8889 868.762,-119.119 896.2285,-105.3858"/> +<polygon fill="#000000" stroke="#000000" points="898.0165,-108.4049 905.3955,-100.8022 894.886,-102.1439 898.0165,-108.4049"/> +</g> +<!-- sg5 --> +<g id="node18" class="node"> +<title>sg5</title> +<ellipse fill="none" stroke="#000000" cx="27" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="27" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">0</text> +</g> +<!-- sg2->sg5 --> +<g id="edge17" class="edge"> +<title>sg2->sg5</title> +<path fill="none" stroke="#000000" d="M115.6918,-77.1278C98.6445,-65.763 73.5981,-49.0654 54.4656,-36.3104"/> +<polygon fill="#000000" stroke="#000000" points="56.4031,-33.3956 46.1411,-30.7607 52.5201,-39.2199 56.4031,-33.3956"/> +</g> +<!-- sd5 --> +<g id="node19" class="node"> +<title>sd5</title> +<ellipse fill="none" stroke="#000000" cx="99" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="99" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text> +</g> +<!-- sg2->sd5 --> +<g id="edge18" class="edge"> +<title>sg2->sd5</title> +<path fill="none" stroke="#000000" d="M126.2854,-72.5708C122.0403,-64.0807 116.8464,-53.6929 112.1337,-44.2674"/> +<polygon fill="#000000" stroke="#000000" points="115.237,-42.6477 107.6343,-35.2687 108.976,-45.7782 115.237,-42.6477"/> +</g> +<!-- ig5 --> +<g id="node20" class="node"> +<title>ig5</title> +<ellipse fill="none" stroke="#000000" cx="171" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="171" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text> +</g> +<!-- sg2->ig5 --> +<g id="edge19" class="edge"> +<title>sg2->ig5</title> +<path fill="none" stroke="#000000" d="M143.7146,-72.5708C147.9597,-64.0807 153.1536,-53.6929 157.8663,-44.2674"/> +<polygon fill="#000000" stroke="#000000" points="161.024,-45.7782 162.3657,-35.2687 154.763,-42.6477 161.024,-45.7782"/> +</g> +<!-- id5 --> +<g id="node21" class="node"> +<title>id5</title> +<ellipse fill="none" stroke="#000000" cx="243" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="243" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">0</text> +</g> +<!-- sg2->id5 --> +<g id="edge20" class="edge"> +<title>sg2->id5</title> +<path fill="none" stroke="#000000" d="M154.3082,-77.1278C171.3555,-65.763 196.4019,-49.0654 215.5344,-36.3104"/> +<polygon fill="#000000" stroke="#000000" points="217.4799,-39.2199 223.8589,-30.7607 213.5969,-33.3956 217.4799,-39.2199"/> +</g> +<!-- sg6 --> +<g id="node22" class="node"> +<title>sg6</title> +<ellipse fill="none" stroke="#000000" cx="819" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="819" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text> +</g> +<!-- id4->sg6 --> +<g id="edge21" class="edge"> +<title>id4->sg6</title> +<path fill="none" stroke="#000000" d="M907.6918,-77.1278C890.6445,-65.763 865.5981,-49.0654 846.4656,-36.3104"/> +<polygon fill="#000000" stroke="#000000" points="848.4031,-33.3956 838.1411,-30.7607 844.5201,-39.2199 848.4031,-33.3956"/> +</g> +<!-- sd6 --> +<g id="node23" class="node"> +<title>sd6</title> +<ellipse fill="none" stroke="#000000" cx="891" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="891" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text> +</g> +<!-- id4->sd6 --> +<g id="edge22" class="edge"> +<title>id4->sd6</title> +<path fill="none" stroke="#000000" d="M918.2854,-72.5708C914.0403,-64.0807 908.8464,-53.6929 904.1337,-44.2674"/> +<polygon fill="#000000" stroke="#000000" points="907.237,-42.6477 899.6343,-35.2687 900.976,-45.7782 907.237,-42.6477"/> +</g> +<!-- ig6 --> +<g id="node24" class="node"> +<title>ig6</title> +<ellipse fill="none" stroke="#000000" cx="963" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="963" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text> +</g> +<!-- id4->ig6 --> +<g id="edge23" class="edge"> +<title>id4->ig6</title> +<path fill="none" stroke="#000000" d="M935.7146,-72.5708C939.9597,-64.0807 945.1536,-53.6929 949.8663,-44.2674"/> +<polygon fill="#000000" stroke="#000000" points="953.024,-45.7782 954.3657,-35.2687 946.763,-42.6477 953.024,-45.7782"/> +</g> +<!-- id6 --> +<g id="node25" class="node"> +<title>id6</title> +<ellipse fill="none" stroke="#000000" cx="1035" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="1035" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">0</text> +</g> +<!-- id4->id6 --> +<g id="edge24" class="edge"> +<title>id4->id6</title> +<path fill="none" stroke="#000000" d="M946.3082,-77.1278C963.3555,-65.763 988.4019,-49.0654 1007.5344,-36.3104"/> +<polygon fill="#000000" stroke="#000000" points="1009.4799,-39.2199 1015.8589,-30.7607 1005.5969,-33.3956 1009.4799,-39.2199"/> +</g> +</g> +</svg> \ No newline at end of file diff --git a/slides/figs/quad_img_simple.svg b/slides/figs/quad_img_simple.svg new file mode 100644 index 0000000..f9fea0d --- /dev/null +++ b/slides/figs/quad_img_simple.svg @@ -0,0 +1,257 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.40.1 (20161225.0304) + --> +<!-- Title: G Pages: 1 --> +<svg width="1142pt" height="188pt" viewBox="0.00 0.00 1142.00 188.00" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 184)"> +<title>G</title> +<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-184 1138,-184 1138,4 -4,4"/> +<!-- 0 --> +<g id="node1" class="node"> +<title>0</title> +<ellipse fill="none" stroke="#000000" cx="567" cy="-162" rx="27" ry="18"/> +<text text-anchor="middle" x="567" y="-157.8" font-family="Times,serif" font-size="14.00" fill="#000000"> </text> +</g> +<!-- sg1 --> +<g id="node2" class="node"> +<title>sg1</title> +<ellipse fill="none" stroke="#000000" cx="171" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="171" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">SG</text> +</g> +<!-- 0->sg1 --> +<g id="edge1" class="edge"> +<title>0->sg1</title> +<path fill="none" stroke="#000000" d="M540.7107,-157.2201C471.8543,-144.7008 286.1298,-110.9327 207.2397,-96.589"/> +<polygon fill="#000000" stroke="#000000" points="207.7449,-93.1236 197.28,-94.7782 206.4926,-100.0107 207.7449,-93.1236"/> +</g> +<!-- sd1 --> +<g id="node3" class="node"> +<title>sd1</title> +<ellipse fill="none" stroke="#000000" cx="459" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="459" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">SD</text> +</g> +<!-- 0->sd1 --> +<g id="edge2" class="edge"> +<title>0->sd1</title> +<path fill="none" stroke="#000000" d="M547.6918,-149.1278C530.6445,-137.763 505.5981,-121.0654 486.4656,-108.3104"/> +<polygon fill="#000000" stroke="#000000" points="488.4031,-105.3956 478.1411,-102.7607 484.5201,-111.2199 488.4031,-105.3956"/> +</g> +<!-- ig1 --> +<g id="node4" class="node"> +<title>ig1</title> +<ellipse fill="none" stroke="#000000" cx="675" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="675" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">IG</text> +</g> +<!-- 0->ig1 --> +<g id="edge3" class="edge"> +<title>0->ig1</title> +<path fill="none" stroke="#000000" d="M586.3082,-149.1278C603.3555,-137.763 628.4019,-121.0654 647.5344,-108.3104"/> +<polygon fill="#000000" stroke="#000000" points="649.4799,-111.2199 655.8589,-102.7607 645.5969,-105.3956 649.4799,-111.2199"/> +</g> +<!-- id1 --> +<g id="node5" class="node"> +<title>id1</title> +<ellipse fill="none" stroke="#000000" cx="963" cy="-90" rx="27" ry="18"/> +<text text-anchor="middle" x="963" y="-85.8" font-family="Times,serif" font-size="14.00" fill="#000000">ID</text> +</g> +<!-- 0->id1 --> +<g id="edge4" class="edge"> +<title>0->id1</title> +<path fill="none" stroke="#000000" d="M593.2893,-157.2201C662.1457,-144.7008 847.8702,-110.9327 926.7603,-96.589"/> +<polygon fill="#000000" stroke="#000000" points="927.5074,-100.0107 936.72,-94.7782 926.2551,-93.1236 927.5074,-100.0107"/> +</g> +<!-- sg2 --> +<g id="node6" class="node"> +<title>sg2</title> +<ellipse fill="none" stroke="#000000" cx="27" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="27" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">21</text> +</g> +<!-- sg1->sg2 --> +<g id="edge5" class="edge"> +<title>sg1->sg2</title> +<path fill="none" stroke="#000000" d="M149.1295,-79.0647C124.7778,-66.8889 85.238,-47.119 57.7715,-33.3858"/> +<polygon fill="#000000" stroke="#000000" points="59.114,-30.1439 48.6045,-28.8022 55.9835,-36.4049 59.114,-30.1439"/> +</g> +<!-- sd2 --> +<g id="node7" class="node"> +<title>sd2</title> +<ellipse fill="none" stroke="#000000" cx="99" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="99" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">12</text> +</g> +<!-- sg1->sd2 --> +<g id="edge6" class="edge"> +<title>sg1->sd2</title> +<path fill="none" stroke="#000000" d="M155.7307,-74.7307C145.803,-64.803 132.6847,-51.6847 121.5637,-40.5637"/> +<polygon fill="#000000" stroke="#000000" points="123.7933,-37.8436 114.2473,-33.2473 118.8436,-42.7933 123.7933,-37.8436"/> +</g> +<!-- ig2 --> +<g id="node8" class="node"> +<title>ig2</title> +<ellipse fill="none" stroke="#000000" cx="171" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="171" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">9</text> +</g> +<!-- sg1->ig2 --> +<g id="edge7" class="edge"> +<title>sg1->ig2</title> +<path fill="none" stroke="#000000" d="M171,-71.8314C171,-64.131 171,-54.9743 171,-46.4166"/> +<polygon fill="#000000" stroke="#000000" points="174.5001,-46.4132 171,-36.4133 167.5001,-46.4133 174.5001,-46.4132"/> +</g> +<!-- id2 --> +<g id="node9" class="node"> +<title>id2</title> +<ellipse fill="none" stroke="#000000" cx="243" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="243" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">7</text> +</g> +<!-- sg1->id2 --> +<g id="edge8" class="edge"> +<title>sg1->id2</title> +<path fill="none" stroke="#000000" d="M186.2693,-74.7307C196.197,-64.803 209.3153,-51.6847 220.4363,-40.5637"/> +<polygon fill="#000000" stroke="#000000" points="223.1564,-42.7933 227.7527,-33.2473 218.2067,-37.8436 223.1564,-42.7933"/> +</g> +<!-- sg3 --> +<g id="node10" class="node"> +<title>sg3</title> +<ellipse fill="none" stroke="#000000" cx="315" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="315" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">4</text> +</g> +<!-- sd1->sg3 --> +<g id="edge9" class="edge"> +<title>sd1->sg3</title> +<path fill="none" stroke="#000000" d="M437.1295,-79.0647C412.7778,-66.8889 373.238,-47.119 345.7715,-33.3858"/> +<polygon fill="#000000" stroke="#000000" points="347.114,-30.1439 336.6045,-28.8022 343.9835,-36.4049 347.114,-30.1439"/> +</g> +<!-- sd3 --> +<g id="node11" class="node"> +<title>sd3</title> +<ellipse fill="none" stroke="#000000" cx="387" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="387" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">4</text> +</g> +<!-- sd1->sd3 --> +<g id="edge10" class="edge"> +<title>sd1->sd3</title> +<path fill="none" stroke="#000000" d="M443.7307,-74.7307C433.803,-64.803 420.6847,-51.6847 409.5637,-40.5637"/> +<polygon fill="#000000" stroke="#000000" points="411.7933,-37.8436 402.2473,-33.2473 406.8436,-42.7933 411.7933,-37.8436"/> +</g> +<!-- ig3 --> +<g id="node12" class="node"> +<title>ig3</title> +<ellipse fill="none" stroke="#000000" cx="459" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="459" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">4</text> +</g> +<!-- sd1->ig3 --> +<g id="edge11" class="edge"> +<title>sd1->ig3</title> +<path fill="none" stroke="#000000" d="M459,-71.8314C459,-64.131 459,-54.9743 459,-46.4166"/> +<polygon fill="#000000" stroke="#000000" points="462.5001,-46.4132 459,-36.4133 455.5001,-46.4133 462.5001,-46.4132"/> +</g> +<!-- id3 --> +<g id="node13" class="node"> +<title>id3</title> +<ellipse fill="none" stroke="#000000" cx="531" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="531" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">4</text> +</g> +<!-- sd1->id3 --> +<g id="edge12" class="edge"> +<title>sd1->id3</title> +<path fill="none" stroke="#000000" d="M474.2693,-74.7307C484.197,-64.803 497.3153,-51.6847 508.4363,-40.5637"/> +<polygon fill="#000000" stroke="#000000" points="511.1564,-42.7933 515.7527,-33.2473 506.2067,-37.8436 511.1564,-42.7933"/> +</g> +<!-- sg4 --> +<g id="node14" class="node"> +<title>sg4</title> +<ellipse fill="none" stroke="#000000" cx="603" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="603" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text> +</g> +<!-- ig1->sg4 --> +<g id="edge13" class="edge"> +<title>ig1->sg4</title> +<path fill="none" stroke="#000000" d="M659.7307,-74.7307C649.803,-64.803 636.6847,-51.6847 625.5637,-40.5637"/> +<polygon fill="#000000" stroke="#000000" points="627.7933,-37.8436 618.2473,-33.2473 622.8436,-42.7933 627.7933,-37.8436"/> +</g> +<!-- sd4 --> +<g id="node15" class="node"> +<title>sd4</title> +<ellipse fill="none" stroke="#000000" cx="675" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="675" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text> +</g> +<!-- ig1->sd4 --> +<g id="edge14" class="edge"> +<title>ig1->sd4</title> +<path fill="none" stroke="#000000" d="M675,-71.8314C675,-64.131 675,-54.9743 675,-46.4166"/> +<polygon fill="#000000" stroke="#000000" points="678.5001,-46.4132 675,-36.4133 671.5001,-46.4133 678.5001,-46.4132"/> +</g> +<!-- ig4 --> +<g id="node16" class="node"> +<title>ig4</title> +<ellipse fill="none" stroke="#000000" cx="747" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="747" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text> +</g> +<!-- ig1->ig4 --> +<g id="edge15" class="edge"> +<title>ig1->ig4</title> +<path fill="none" stroke="#000000" d="M690.2693,-74.7307C700.197,-64.803 713.3153,-51.6847 724.4363,-40.5637"/> +<polygon fill="#000000" stroke="#000000" points="727.1564,-42.7933 731.7527,-33.2473 722.2067,-37.8436 727.1564,-42.7933"/> +</g> +<!-- id4 --> +<g id="node17" class="node"> +<title>id4</title> +<ellipse fill="none" stroke="#000000" cx="819" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="819" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">1</text> +</g> +<!-- ig1->id4 --> +<g id="edge16" class="edge"> +<title>ig1->id4</title> +<path fill="none" stroke="#000000" d="M696.8705,-79.0647C721.2222,-66.8889 760.762,-47.119 788.2285,-33.3858"/> +<polygon fill="#000000" stroke="#000000" points="790.0165,-36.4049 797.3955,-28.8022 786.886,-30.1439 790.0165,-36.4049"/> +</g> +<!-- sg5 --> +<g id="node18" class="node"> +<title>sg5</title> +<ellipse fill="none" stroke="#000000" cx="891" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="891" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">0</text> +</g> +<!-- id1->sg5 --> +<g id="edge17" class="edge"> +<title>id1->sg5</title> +<path fill="none" stroke="#000000" d="M947.7307,-74.7307C937.803,-64.803 924.6847,-51.6847 913.5637,-40.5637"/> +<polygon fill="#000000" stroke="#000000" points="915.7933,-37.8436 906.2473,-33.2473 910.8436,-42.7933 915.7933,-37.8436"/> +</g> +<!-- sd5 --> +<g id="node19" class="node"> +<title>sd5</title> +<ellipse fill="none" stroke="#000000" cx="963" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="963" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">31</text> +</g> +<!-- id1->sd5 --> +<g id="edge18" class="edge"> +<title>id1->sd5</title> +<path fill="none" stroke="#000000" d="M963,-71.8314C963,-64.131 963,-54.9743 963,-46.4166"/> +<polygon fill="#000000" stroke="#000000" points="966.5001,-46.4132 963,-36.4133 959.5001,-46.4133 966.5001,-46.4132"/> +</g> +<!-- ig5 --> +<g id="node20" class="node"> +<title>ig5</title> +<ellipse fill="none" stroke="#000000" cx="1035" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="1035" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">3</text> +</g> +<!-- id1->ig5 --> +<g id="edge19" class="edge"> +<title>id1->ig5</title> +<path fill="none" stroke="#000000" d="M978.2693,-74.7307C988.197,-64.803 1001.3153,-51.6847 1012.4363,-40.5637"/> +<polygon fill="#000000" stroke="#000000" points="1015.1564,-42.7933 1019.7527,-33.2473 1010.2067,-37.8436 1015.1564,-42.7933"/> +</g> +<!-- id5 --> +<g id="node21" class="node"> +<title>id5</title> +<ellipse fill="none" stroke="#000000" cx="1107" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="1107" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">27</text> +</g> +<!-- id1->id5 --> +<g id="edge20" class="edge"> +<title>id1->id5</title> +<path fill="none" stroke="#000000" d="M984.8705,-79.0647C1009.2222,-66.8889 1048.762,-47.119 1076.2285,-33.3858"/> +<polygon fill="#000000" stroke="#000000" points="1078.0165,-36.4049 1085.3955,-28.8022 1074.886,-30.1439 1078.0165,-36.4049"/> +</g> +</g> +</svg> \ No newline at end of file diff --git a/slides/figs/quad_struct.svg b/slides/figs/quad_struct.svg new file mode 100644 index 0000000..7bfd48f --- /dev/null +++ b/slides/figs/quad_struct.svg @@ -0,0 +1,69 @@ +<?xml version="1.0" encoding="UTF-8" standalone="no"?> +<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"> +<!-- Generated by graphviz version 2.40.1 (20161225.0304) + --> +<!-- Title: G Pages: 1 --> +<svg width="314pt" height="133pt" viewBox="0.00 0.00 313.99 132.80" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"> +<g id="graph0" class="graph" transform="scale(1 1) rotate(0) translate(4 128.8)"> +<title>G</title> +<polygon fill="#ffffff" stroke="transparent" points="-4,4 -4,-128.8 309.993,-128.8 309.993,4 -4,4"/> +<!-- 0 --> +<g id="node1" class="node"> +<title>0</title> +<ellipse fill="none" stroke="#000000" cx="154" cy="-106.8" rx="27" ry="18"/> +<text text-anchor="middle" x="154" y="-102.6" font-family="Times,serif" font-size="14.00" fill="#000000">info</text> +</g> +<!-- sg1 --> +<g id="node2" class="node"> +<title>sg1</title> +<ellipse fill="none" stroke="#000000" cx="27" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="27" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">0</text> +</g> +<!-- 0->sg1 --> +<g id="edge1" class="edge"> +<title>0->sg1</title> +<path fill="none" stroke="#000000" d="M128.139,-101.2097C99.5091,-94.5402 55.8191,-82.7801 43.9116,-70.8 37.256,-64.1038 33.2179,-54.7877 30.7686,-45.8424"/> +<polygon fill="#000000" stroke="#000000" points="34.1842,-45.0779 28.6235,-36.0597 27.3467,-46.5773 34.1842,-45.0779"/> +<text text-anchor="middle" x="77.0442" y="-58.2" font-family="Times,serif" font-size="14.00" fill="#000000">sup_gauche</text> +</g> +<!-- sd1 --> +<g id="node3" class="node"> +<title>sd1</title> +<ellipse fill="none" stroke="#000000" cx="116" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="116" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">0</text> +</g> +<!-- 0->sd1 --> +<g id="edge2" class="edge"> +<title>0->sd1</title> +<path fill="none" stroke="#000000" d="M135.1259,-93.5052C128.1258,-87.4583 120.9598,-79.6658 117.1136,-70.8 113.866,-63.314 112.7418,-54.6514 112.6573,-46.5351"/> +<polygon fill="#000000" stroke="#000000" points="116.163,-46.4535 113.0537,-36.3252 109.1683,-46.1818 116.163,-46.4535"/> +<text text-anchor="middle" x="144.4432" y="-58.2" font-family="Times,serif" font-size="14.00" fill="#000000">sup_droit</text> +</g> +<!-- ig1 --> +<g id="node4" class="node"> +<title>ig1</title> +<ellipse fill="none" stroke="#000000" cx="192" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="192" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">0</text> +</g> +<!-- 0->ig1 --> +<g id="edge3" class="edge"> +<title>0->ig1</title> +<path fill="none" stroke="#000000" d="M161.8951,-89.258C164.5048,-83.401 167.4038,-76.8308 170,-70.8 173.6125,-62.4084 177.4698,-53.2291 180.9294,-44.9121"/> +<polygon fill="#000000" stroke="#000000" points="184.1753,-46.2217 184.7695,-35.6436 177.7083,-43.5423 184.1753,-46.2217"/> +<text text-anchor="middle" x="208.0975" y="-58.2" font-family="Times,serif" font-size="14.00" fill="#000000">inf_gauche</text> +</g> +<!-- id1 --> +<g id="node5" class="node"> +<title>id1</title> +<ellipse fill="none" stroke="#000000" cx="277" cy="-18" rx="27" ry="18"/> +<text text-anchor="middle" x="277" y="-13.8" font-family="Times,serif" font-size="14.00" fill="#000000">0</text> +</g> +<!-- 0->id1 --> +<g id="edge4" class="edge"> +<title>0->id1</title> +<path fill="none" stroke="#000000" d="M179.5839,-100.9465C198.6633,-95.5835 224.5126,-86.1061 243,-70.8 251.566,-63.708 258.7036,-53.8853 264.1911,-44.6338"/> +<polygon fill="#000000" stroke="#000000" points="267.3563,-46.142 269.1204,-35.695 261.2265,-42.7617 267.3563,-46.142"/> +<text text-anchor="middle" x="281.4965" y="-58.2" font-family="Times,serif" font-size="14.00" fill="#000000">inf_droit</text> +</g> +</g> +</svg> \ No newline at end of file -- GitLab