Matrice d’adjacence d’un graphe
On dispose du graphe non-orienté suivant :
G = [ [0, 0, 1, 0, 1],
[0, 0, 1, 0, 1],
[1, 1, 0, 1, 1],
[0, 0, 1, 0, 0],
[1, 1, 1, 0, 0]]
def pres_arete(G : list, v1 : int, v2 : int) -> bool:
"""
indique si une arête existe entre 2 sommets
Arguments:
G -- matrice d'adjacence
v1 -- n° sommet 1
v2 -- n° sommet 2
Retour:
True si une arrête existe entre v1 et v2, False sinon
None en cas d'erreur
"""
if 0 <= v1 <= len(G) and 0 <= v2 <= len(G):
if G[v1][v2]==1:
return True
else:
return False
else:
return None
def voisin(G : list, v : int) -> list:
"""
recherche les voisins d'un sommet dans un graphe non orienté
Arguments:
G -- matrice d'adjacence
v -- n° sommet
Retour:
liste des voisins de v
"""
voisin = []
for i in range(len(G)):
if pres_arete(G, v, i):
voisin.append(i)
return voisin
En théorie des graphes, le degré (ou valence) d'un sommet d'un graphe est le nombre d’arêtes reliant ce sommet (les boucles comptées deux fois).
def degre(G : list, v : int) -> int:
"""
calcul le degrée (ou valence) d'un sommet
ie: nombre d’arêtes reliant ce sommet (les boucles comptées deux fois).
Arguments:
G -- matrice d'adjacence
v -- n° sommet
Retour:
degrée du sommet dans G
"""
return len(voisin(G, v)) + G[v][v]
def max_degre(G : list) -> int:
"""
calcul le degrée maximum d'un graphe
ie: nombre d’arêtes reliant ce sommet (les boucles comptées deux fois).
Arguments:
G -- matrice d'adjacence
Retour:
degrée maximum de G
"""
degres = []
for i in range(len(G)):
degres.append(degre(G, i))
return max(degres)
def arete(G : list) -> int:
"""
calcul le nombre d'arêtes dans un graphe
Arguments:
G -- matrice d'adjacence
Retour:
nombre d'arêtes de G
"""
count = 0
for i in range(len(G)):
for j in range(len(G)):
count += G[i][j]
return count // 2
def afficher(G : list) -> str:
""" affiche la matrice d'adjacence """
matrice = ""
for i in range(len(G)):
for j in range(len(G)):
matrice += str(G[i][j]) + " "
matrice += "\n"
return matrice