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
No related branches found
No related tags found
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