Skip to content
Snippets Groups Projects
Commit 1da2fc46 authored by Loic Scoth's avatar Loic Scoth
Browse files

update readme et finalisation de certaines classes

parent bb91402b
Branches
No related tags found
No related merge requests found
......@@ -2,22 +2,39 @@
## authors
Mamadou Lamarana Bah
Mamadu Lamarana Bah
Loïc Scoth
## TODO
## Problèmes et erreurs
Le projet contient quelques problèmes:
La suppression n'est pas terminé, celle-ci gère certains cas feuille mais ne fonctionne pas correctement.
expérimentation suppr1: niveau 2 de l'arbre, il y a un noeud vide due au rééquilibrage après une fusion ![alt](./src/ArbreB/GraphPb.gv.jpg)
les cas racine et noeud interne ne sont pas pris en compte.
ajout commande execution/tests
Ce qui ne vas pas
## Description du projet
Le projet consiste à la création et à la représentation d'un arbre binaire, constitué de noeud et de feuilles, que nous créons.
Celui-ci est modulable, nous pouvons ajouter ou supprimer des noeuds mais également rechercher l'emplacement d'un noeud dans cet arbre.
## commande
Expérimentation :
projet-s-6-loic-scoth-etu-mamadulamarana-bah-etu/src$ python3 experimentation.py
Test:
projet-s-6-loic-scoth-etu-mamadulamarana-bah-etu/src$ python3 BTree.py
projet-s-6-loic-scoth-etu-mamadulamarana-bah-etu/src$ python3 Node.py
projet-s-6-loic-scoth-etu-mamadulamarana-bah-etu/src$ python3 util.py
## Status
En cours, Suppression à terminer
Terminé, suppression non fini
## UML
......@@ -25,6 +42,38 @@ Voici un UML simple de notre projet :
![alt text](DiagramProjet.png)
## Compléxité
### util
recheche dicho : O(log(n))
### Node
search: O(log(n)) si arbre équilibré, en O(n) dans le pire des cas (arbre déséquilibré, parcours donc tout les noeuds)
is_ArbreB: O(n)
insert: O(log(n)) dans le meilleur des cas, O(h) dans le pire des cas ,h correspond à la hauteur de l'arbre
suppression: O(log(n)) dans le meilleur de cas, O(h + n) dans le pire des cas
splitNode: O(n)
linearisation: O(n)
### Btree
search: voir Node
insertion: voir Node
linearisation: voir Node
isBalance: voir Node
suppr: voir Node (non terminé)
### Semaine 1
Mise en place du projet, compréhension du sujet et création des premières classes.
......@@ -77,4 +126,12 @@ Suite suppression.
### semaine 13
suite suppression
\ No newline at end of file
suite suppression.
### semaine 14
suite suppression et expérimentation.
### semaine 15
Dernières modifs et soutenance.
\ No newline at end of file
......@@ -33,12 +33,15 @@ graph {
"[22, 30]"
"[14]" -- "[22, 30]"
"[22, 30]"
"[]"
"[22, 30]" -- "[]"
"[]"
"[16, 18]"
"[]" -- "[16, 18]"
"[16, 18]"
"[18]"
"[22, 30]" -- "[18]"
"[18]"
"[16]"
"[18]" -- "[16]"
"[16]"
"[20]"
"[18]" -- "[20]"
"[20]"
"[26]"
"[22, 30]" -- "[26]"
"[26]"
......
src/ArbreB/Graph.gv.jpg

40 KiB | W: | H:

src/ArbreB/Graph.gv.jpg

42.3 KiB | W: | H:

src/ArbreB/Graph.gv.jpg
src/ArbreB/Graph.gv.jpg
src/ArbreB/Graph.gv.jpg
src/ArbreB/Graph.gv.jpg
  • 2-up
  • Swipe
  • Onion skin
File deleted
src/ArbreB/GraphPb.gv.jpg

40 KiB

......@@ -104,13 +104,14 @@ class Btree() :
def suppr(self, value, k):
"""
Non fonctionnel
Supprimer une valeur dans l'arbre
Params :
value : (int), valeur à supprimer
k : (int), nombre de clés
Return :
#TODO
Exemple(s):
>>> arbreB = Btree(2, Node([5,25]))
>>> arbreB.suppr(25,2)
......@@ -129,4 +130,4 @@ class Btree() :
if __name__ == '__main__':
import doctest
doctest.testmod(verbose=False)
\ No newline at end of file
doctest.testmod(verbose=True)
\ No newline at end of file
......@@ -20,8 +20,6 @@ class Node() :
"""
return (len(self.childs) == 0)
def getSize(self) :
return len(self.keys)
def search(self, value):
"""
......@@ -299,4 +297,4 @@ class Node() :
if __name__ == '__main__':
import doctest
doctest.testmod(verbose=False)
\ No newline at end of file
doctest.testmod(verbose=True)
\ No newline at end of file
......@@ -11,7 +11,6 @@ class Visualization() :
self.add_node_to_graph(self.btree.root)
def add_node_to_graph(self, node):
# print(repr(node.keys))
nodeKeys = repr(node.keys)
self.g.node(nodeKeys)
for child in node.childs:
......
File added
File added
File added
File added
......@@ -30,12 +30,11 @@ class experimentation:
print("Non fonctionnel")
for n in [2, 4, 5] + list(range(6, 37, 2)) + [7, 9, 11, 13]:
self.btree.insertion(n)
self.btree.suppr(20,2)
Visualization(self.btree).render()
#for n in [14,10,20,18,16,24,6]
Visualization(self.btree).render()
print(self.btree)
......
......@@ -33,6 +33,9 @@ def recherche_dichotomique(x, l, cmp = compare):
Cet indice `index` indiquera soit la place de l'élément x dans la liste,
soit la place du fils susceptible de contenir l'élément x recherché
dans un arbre de recherche.
complexité:
log(n)
Précondition : `liste` est triée par ordre croissant
Exemple(s) :
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment