Skip to content
Snippets Groups Projects
Verified Commit ccaaaa8c authored by orestis.malaspin's avatar orestis.malaspin
Browse files

modif insertion et debut split

parent 1e5d5482
Branches
Tags
No related merge requests found
---
title: "B-Arbres"
date: "2022-04-13"
patat:
eval:
tai:
command: fish
fragment: false
replace: true
ccc:
command: fish
fragment: false
replace: true
images:
backend: auto
---
# Rappel: Les B-arbres
## Pourquoi utiliser un B-arbre?
. . .
## À quoi ressemble un B-arbre?
. . .
## Qu'est-ce qu'un B-arbre d'ordre $n$
* Chaque page d'un arbre contient au plus $2\cdot n$ *clés*;
* Chaque page (excepté la racine) contient au moins $n$ clés;
* Chaque page qui contient $m$ clés contient soit:
* $0$ descendants;
* $m+1$ descendants.
* Toutes les pages terminales apparaissent au même niveau.
# Rappel: Les B-arbres
## Quelques propriétés
* Dans chaque noeud les clés sont **triées**.
* Chaque page contient au plus $n$ noeuds: check;
* Chaque noeud avec $m$ clés a $m+1$ descendants;
* Toutes les feuilles apparaissent au même niveau.
# Les B-arbres
## Exemple de recherche: trouver `32`
![B-arbre d'ordre 2.](figs/barbres_exemple.png)
. . .
* Si `n` plus petit que la 1e clé ou plus grand que la dernière descendre.
* Sinon parcourir (par bissection ou séquentiellement) jusqu'à trouver ou descendre entre 2 éléments.
# Les B-arbres
## La recherche de la clé `C` algorithme
0. En partant de la racine.
1. Si on est dans une feuille:
* Si la `C` est dans une page, retourner la page;
* Sinon c'est perdu.
2. Sinon:
* Tant que `C > page` passer à la page suivante
* Descendre
# Les B-arbres
## Exercice: insérer `22, 45, 50, 5, 32, 55, 60, 41` dans l'arbre d'ordre 2
![](figs/barbres_ex1.png)
. . .
![](figs/barbres_ex5.png)
# Les B-arbres
## L'algorithme d'insertion
0. Rechercher la feuille (la page a aucun enfant) où insérer;
1. Si la page n'est pas pleine insérer dans l'ordre croissant.
2. Si la page est pleine:
1. On décale les éléments plus grand que `N`;
2. On insère `N` dans la place "vide";
3. On trouve la valeur médiane `M` de la page (quel indice?);
4. On crée une nouvelle page de droite;
5. On copie les valeur à droite de `M` dans la nouvelle page;
6. On promeut `M` dans la page du dessus;
7. 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] == vide)
entier position(page, valeur)
i = 0
tant que i < page.nb && val >= page.tab[i]
i += 1
retourne i
booléen est_dans_page(page, valeur)
i = position(page, valeur)
retourne (i > 0 && page.tab[i] == 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) && !est_dans_page(page, valeur)
retourne vide
sinon
recherche(page.tab[position(page, valeur)], valeur)
```
# Les B-arbres
## Les fonctions
```C
page inserer(page, valeur) // inserer une valeur
```
. . .
```C
page inserer(page, valeur)
element = nouvel_element(valeur)
inserer_element(page, element) // on change elmement pour savoir s'il faut le remonter
si element.page != vide
page = ajouter_niveau(page, element) // si on atteint le sommet!
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)
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)
i = position(page, element.clé)
pour i de 2*page.ordre à i+1
page.tab[i+1] = page.tab[i]
page.tab[i+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: suppression
## Cas simplissime
![Suppression de 25.](figs/barbres_ordre2_supp1.svg){width=80%}
. . .
![25 supprimé, on décale juste 27.](figs/barbres_ordre2_supp2.svg){width=80%}
<!-- # 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; -->
<!-- ``` -->
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="291.39478mm"
height="90.311111mm"
viewBox="0 0 291.39478 90.311113"
version="1.1"
id="svg5"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="barbres_ordre2_supp1.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"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="1.1737386"
inkscape:cx="672.21098"
inkscape:cy="174.22959"
inkscape:window-width="944"
inkscape:window-height="1022"
inkscape:window-x="14"
inkscape:window-y="44"
inkscape:window-maximized="1"
inkscape:current-layer="layer1">
<inkscape:grid
type="xygrid"
id="grid824"
originx="0.17639326"
originy="-15.698609" />
</sodipodi:namedview>
<defs
id="defs2" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0.17639426,-15.698611)">
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848"
width="26.458332"
height="26.458332"
x="74.083328"
y="15.875" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-6"
width="26.458332"
height="26.458332"
x="105.83333"
y="15.874999" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;fill:#020000;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
x="80.349121"
y="32.956631"
id="text5839"><tspan
sodipodi:role="line"
id="tspan5837"
style="fill:#020000;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
x="80.349121"
y="32.956631">10</tspan></text>
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240"
width="5.2916665"
height="26.458332"
x="100.54166"
y="15.874999" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-7"
width="5.2916665"
height="26.458332"
x="68.791664"
y="15.875" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-5"
width="5.2919998"
height="26.458332"
x="132.29167"
y="15.874999" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-6-2"
width="26.458332"
height="26.458332"
x="137.58334"
y="15.875001" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-5-9"
width="5.2919998"
height="26.458332"
x="164.0417"
y="15.875001" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-6-2-7"
width="26.458332"
height="26.458332"
x="169.33334"
y="15.875001" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-5-9-0"
width="5.2919998"
height="26.458332"
x="195.79169"
y="15.875001" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-6-2-9"
width="26.458332"
height="26.458332"
x="68.791306"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-5-9-3"
width="5.2919998"
height="26.458332"
x="95.249664"
y="79.375" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-6-2-7-6"
width="26.458332"
height="26.458332"
x="100.54131"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-5-9-0-0"
width="5.2919998"
height="26.458332"
x="126.99965"
y="79.375" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;fill:#040000;fill-opacity:1;stroke-width:0.264583"
x="112.21022"
y="32.903568"
id="text8608-2"><tspan
sodipodi:role="line"
id="tspan8606-6"
style="fill:#040000;fill-opacity:1;stroke-width:0.264583"
x="112.21022"
y="32.903568">15</tspan></text>
<text
xml:space="preserve"
style="font-size:10.5831px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;fill:#040000;fill-opacity:1;stroke-width:0.264579"
x="144.02982"
y="32.97282"
id="text8608-2-7"
transform="scale(0.9999849,1.0000151)"><tspan
sodipodi:role="line"
id="tspan8606-6-9"
style="fill:#040000;fill-opacity:1;stroke-width:0.264579"
x="144.02982"
y="32.97282">30</tspan></text>
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-9"
width="26.458332"
height="26.458332"
x="5.291666"
y="79.375" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-6-3"
width="26.458332"
height="26.458332"
x="37.041664"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-1"
width="5.2916665"
height="26.458332"
x="31.749994"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-7-8"
width="5.2916665"
height="26.458332"
x="-5.7529296e-06"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-5-7"
width="5.2916665"
height="26.458332"
x="63.500008"
y="79.375" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="11.629802"
y="96.456635"
id="text17588"><tspan
sodipodi:role="line"
id="tspan17586"
style="stroke-width:0.264583"
x="11.629802"
y="96.456635">13</tspan></text>
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="43.253193"
y="96.4618"
id="text17588-2"><tspan
sodipodi:role="line"
id="tspan17586-3"
style="stroke-width:0.264583"
x="43.253193"
y="96.4618">14</tspan></text>
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-9-9"
width="26.458332"
height="26.458332"
x="164.04167"
y="79.375" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-6-3-2"
width="26.458332"
height="26.458332"
x="195.79167"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-1-3"
width="5.2916665"
height="26.458332"
x="190.5"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-7-8-7"
width="5.2916665"
height="26.458332"
x="158.75"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-5-7-5"
width="5.2916665"
height="26.458332"
x="222.25002"
y="79.375" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;fill:#000000;fill-opacity:1;stroke-width:0.264583"
x="170.50125"
y="96.382401"
id="text17588-9"><tspan
sodipodi:role="line"
id="tspan17586-2"
style="fill:#000000;fill-opacity:1;stroke-width:0.264583"
x="170.50125"
y="96.382401">20</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 100.54166,42.333334 18.520832,79.375001"
id="path19781"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 137.58333,42.333334 174.625,79.375"
id="path19783" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-6-2-6"
width="26.458332"
height="26.458332"
x="227.54167"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-5-9-2"
width="5.2919998"
height="26.458332"
x="254.00003"
y="79.375" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-6-2-7-61"
width="26.458332"
height="26.458332"
x="259.29166"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-5-9-0-8"
width="5.2919998"
height="26.458332"
x="285.75"
y="79.375" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="202.36235"
y="96.382401"
id="text17588-7"><tspan
sodipodi:role="line"
id="tspan17586-5"
style="stroke-width:0.264583"
x="202.36235"
y="96.382401">25</tspan></text>
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="234.10202"
y="96.457329"
id="text17588-92"><tspan
sodipodi:role="line"
id="tspan17586-28"
style="stroke-width:0.264583"
x="234.10202"
y="96.457329">27</tspan></text>
</g>
</svg>
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<!-- Created with Inkscape (http://www.inkscape.org/) -->
<svg
width="291.39478mm"
height="90.311111mm"
viewBox="0 0 291.39478 90.311113"
version="1.1"
id="svg5"
inkscape:version="1.1.2 (0a00cf5339, 2022-02-04)"
sodipodi:docname="barbres_ordre2_supp2.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"
fit-margin-top="0"
fit-margin-left="0"
fit-margin-right="0"
fit-margin-bottom="0"
inkscape:zoom="1.1737386"
inkscape:cx="672.21098"
inkscape:cy="174.22959"
inkscape:window-width="1920"
inkscape:window-height="1080"
inkscape:window-x="0"
inkscape:window-y="0"
inkscape:window-maximized="1"
inkscape:current-layer="layer1">
<inkscape:grid
type="xygrid"
id="grid824"
originx="0.17639326"
originy="-15.698609" />
</sodipodi:namedview>
<defs
id="defs2" />
<g
inkscape:label="Layer 1"
inkscape:groupmode="layer"
id="layer1"
transform="translate(0.17639426,-15.698611)">
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848"
width="26.458332"
height="26.458332"
x="74.083328"
y="15.875" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-6"
width="26.458332"
height="26.458332"
x="105.83333"
y="15.874999" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;fill:#020000;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
x="80.349121"
y="32.956631"
id="text5839"><tspan
sodipodi:role="line"
id="tspan5837"
style="fill:#020000;fill-opacity:1;stroke:none;stroke-width:0.264583;stroke-opacity:1"
x="80.349121"
y="32.956631">10</tspan></text>
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240"
width="5.2916665"
height="26.458332"
x="100.54166"
y="15.874999" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-7"
width="5.2916665"
height="26.458332"
x="68.791664"
y="15.875" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-5"
width="5.2919998"
height="26.458332"
x="132.29167"
y="15.874999" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-6-2"
width="26.458332"
height="26.458332"
x="137.58334"
y="15.875001" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-5-9"
width="5.2919998"
height="26.458332"
x="164.0417"
y="15.875001" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-6-2-7"
width="26.458332"
height="26.458332"
x="169.33334"
y="15.875001" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-5-9-0"
width="5.2919998"
height="26.458332"
x="195.79169"
y="15.875001" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-6-2-9"
width="26.458332"
height="26.458332"
x="68.791306"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-5-9-3"
width="5.2919998"
height="26.458332"
x="95.249664"
y="79.375" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-6-2-7-6"
width="26.458332"
height="26.458332"
x="100.54131"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-5-9-0-0"
width="5.2919998"
height="26.458332"
x="126.99965"
y="79.375" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;fill:#040000;fill-opacity:1;stroke-width:0.264583"
x="112.21022"
y="32.903568"
id="text8608-2"><tspan
sodipodi:role="line"
id="tspan8606-6"
style="fill:#040000;fill-opacity:1;stroke-width:0.264583"
x="112.21022"
y="32.903568">15</tspan></text>
<text
xml:space="preserve"
style="font-size:10.5831px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;fill:#040000;fill-opacity:1;stroke-width:0.264579"
x="144.02982"
y="32.97282"
id="text8608-2-7"
transform="scale(0.9999849,1.0000151)"><tspan
sodipodi:role="line"
id="tspan8606-6-9"
style="fill:#040000;fill-opacity:1;stroke-width:0.264579"
x="144.02982"
y="32.97282">30</tspan></text>
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-9"
width="26.458332"
height="26.458332"
x="5.291666"
y="79.375" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-6-3"
width="26.458332"
height="26.458332"
x="37.041664"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-1"
width="5.2916665"
height="26.458332"
x="31.749994"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-7-8"
width="5.2916665"
height="26.458332"
x="-5.7529296e-06"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-5-7"
width="5.2916665"
height="26.458332"
x="63.500008"
y="79.375" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="11.629802"
y="96.456635"
id="text17588"><tspan
sodipodi:role="line"
id="tspan17586"
style="stroke-width:0.264583"
x="11.629802"
y="96.456635">13</tspan></text>
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="43.253193"
y="96.4618"
id="text17588-2"><tspan
sodipodi:role="line"
id="tspan17586-3"
style="stroke-width:0.264583"
x="43.253193"
y="96.4618">14</tspan></text>
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-9-9"
width="26.458332"
height="26.458332"
x="164.04167"
y="79.375" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-6-3-2"
width="26.458332"
height="26.458332"
x="195.79167"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-1-3"
width="5.2916665"
height="26.458332"
x="190.5"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-7-8-7"
width="5.2916665"
height="26.458332"
x="158.75"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-5-7-5"
width="5.2916665"
height="26.458332"
x="222.25002"
y="79.375" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;fill:#000000;fill-opacity:1;stroke-width:0.264583"
x="170.50125"
y="96.382401"
id="text17588-9"><tspan
sodipodi:role="line"
id="tspan17586-2"
style="fill:#000000;fill-opacity:1;stroke-width:0.264583"
x="170.50125"
y="96.382401">20</tspan></text>
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 100.54166,42.333334 18.520832,79.375001"
id="path19781"
sodipodi:nodetypes="cc" />
<path
style="fill:none;stroke:#000000;stroke-width:0.264583px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
d="M 137.58333,42.333334 174.625,79.375"
id="path19783" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-6-2-6"
width="26.458332"
height="26.458332"
x="227.54167"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-5-9-2"
width="5.2919998"
height="26.458332"
x="254.00003"
y="79.375" />
<rect
style="fill:none;stroke:#000000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none"
id="rect848-6-2-7-61"
width="26.458332"
height="26.458332"
x="259.29166"
y="79.375" />
<rect
style="fill:none;fill-opacity:1;stroke:#020000;stroke-width:0.352777;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1"
id="rect9240-5-9-0-8"
width="5.2919998"
height="26.458332"
x="285.75"
y="79.375" />
<text
xml:space="preserve"
style="font-size:10.5833px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;stroke-width:0.264583"
x="202.35202"
y="96.457329"
id="text17588-92"><tspan
sodipodi:role="line"
id="tspan17586-28"
style="stroke-width:0.264583"
x="202.35202"
y="96.457329">27</tspan></text>
</g>
</svg>
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment