-
Notifications
You must be signed in to change notification settings - Fork 0
/
class_graphe.py
executable file
·76 lines (61 loc) · 2.23 KB
/
class_graphe.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
"""
Implémentations des opérations élémentaires du graphe 6 orienté et pondéré sous forme d'objet
"""
# Rappel et compléments des classes Sommet(), Arc() et Graphe()
# =============================================================
class Sommet():
def __init__(self,nom,pos,visited=False):
self.nom = nom
self.pos = pos
self.visited=visited
def __str__(self):
return f"Sommet : {self.nom} , {self.pos} , {self.visited}"
class Arc():
def __init__(self,s_origine,s_extremite):
self.s_origine=s_origine
self.s_extremite=s_extremite
def __str__(self):
return f"Arc {self.nom} de {self.s_origine.nom} à {self.s_extremite.nom}"
def origine_fin(self):
return (self.s_origine.nom,self.s_extremite.nom)
class Graphe():
def __init__(self,nom):
self.nom=nom
self.sommets=[]
self.arcs=[]
def __str__(self):
aff = f"Graphe {self.nom} : \n"
aff += "\t Liste des sommets : \n"
for s in self.sommets:
aff += "\t\t"+str(s)+"\n"
aff += "\t Liste des arcs : \n"
for a in self.arcs:
aff += "\t\t"+str(a)+"\n"
return aff
def ajouterSommet(self,s):
if not self.sommetExist(s):
self.sommets.append(s)
def ajouterArc(self,a):
if self.sommetExist(a.s_origine) and self.sommetExist(a.s_extremite) and not self.arcExist(a):
self.arcs.append(a)
def supprimerArc(self,a):
if self.arcExist(a):
self.arcs.remove(a)
def supprimerSommet(self,s):
if self.sommetExist(s):
nArc=len(self.arcs)-1
while nArc>=0:
a=self.arcs[nArc]
if a.s_origine==s or a.s_extremite==s:
self.supprimerArc(a)
nArc-=1
self.sommets.remove(s)
def sommetExist(self,s):
return s in self.sommets
def arcExist(self,a):
return a in self.arcs
def arcExist2(self,a,b):
for arc in self.arcs:
if arc.s_origine==a and arc.s_extremite==b or arc.s_origine==b and arc.s_extremite==a:
return True
return False