def recherche_sommet_simplicial(mat_adjacence,sommet): n=len(mat_adjacence) voisins_sommet=[i for i in range(n) if mat_adjacence[sommet][i] !=0] for i in range(len(voisins_sommet)): noeud_1=voisins_sommet[i] for j in range(i+1,len(voisins_sommet)): noeud_2=voisins_sommet[j] if mat_adjacence[noeud_1][noeud_2]==0: return False return True def elimination(mat_adjacence): sommet=0 while len(mat_adjacence)!=0 and (sommet!=len(mat_adjacence) or sommet==0): if recherche_sommet_simplicial(mat_adjacence,sommet)==False : sommet+=1 else: mat_adjacence=np.delete(mat_adjacence,sommet,axis=0) mat_adjacence=np.delete(mat_adjacence,sommet,axis=1) sommet=0 if len(mat_adjacence)==0: return True else: return False import numpy as np mat_adjacence_sherlock=np.array([[0,1,1,0,0,1,1,0],[1,0,1,0,0,0,0,1],[1,1,0,1,1,0,0,1],[0,0,1,0,1,0,0,0],[0,0,1,1,0,1,0,0],[1,0,0,0,1,0,0,0],[1,0,0,0,0,0,0,1],[0,1,1,0,0,0,1,0]]) def lettres(L): return [chr(65+i) for i in L] for i in range (len(mat_adjacence_sherlock)): print("les voisins de",chr(65+i), "sont",lettres(recherche_voisins(mat_adjacence_sherlock,i)) ) etiquettes=[chr(ord('A') + i)for i in range(len(mat_adjacence_sherlock))] for i in range(len(mat_adjacence_sherlock)): mat_adjacence_1=np.delete(mat_adjacence_sherlock,i,axis=0) mat_adjacence_1=np.delete(mat_adjacence_1,i,axis=1) r=elimination(mat_adjacence_1) print(etiquettes[i],r) ## intulie ici def determination_numero(etiquettes,nom_noeud): for i in range(len(etiquettes)): # Parcours de la liste etiquettes if etiquettes[i]== nom_noeud: # Test return i def recherche_voisins(mat_adj,noeuds_visites,noeud): return [i for i in range(len(mat_adj)) if mat_adj[noeud][i]!=0 and i not in noeuds_visites]