Smipple is shutting down Nov 30, 2017. Some features are currently disabled.
Profile image for Thomas Simonsen simoth00
Kante Knoten Graphen
Language
Python
Tags
Graphen Kante Knoten

Kante Knoten Graphen

1 class Knoten(object): 2 def __init__(self, nameKnoten): 3 self.name = nameKnoten 4 self.kantenZuNachbarn = [] 5 6 def addNachbar(self, refKante): 7 self.kantenZuNachbarn = self.kantenZuNachbarn + [(refKante)] 8 9 def delNachbar(self, refKante): 10 neueListe = [] 11 for kante in self.kantenZuNachbarn: 12 if kante != refKante: 13 neueListe = neueListe + [kante] 14 self.kantenZuNachbarn = neueListe 15 16 class Kante(object): 17 def __init__(self, refStartKnoten, refZielKnoten): 18 self.startKnoten = refStartKnoten 19 self.zielKnoten = refZielKnoten 20 21 class Graph(object): 22 def __init__(self): 23 self.knotenListe = [] 24 25 def getRefKnoten(self, nameKnoten): 26 refKnoten = None 27 for knoten in self.knotenListe: 28 if knoten.name == nameKnoten: 29 refKnoten = knoten 30 return refKnoten 31 32 def addKnoten(self, nameKnoten): 33 refKnoten = self.getRefKnoten(nameKnoten) 34 if refKnoten == None: 35 knoten = Knoten(nameKnoten) 36 self.knotenListe = self.knotenListe + [knoten] 37 38 def delKnoten(self, nameKnoten): 39 neueListe = [] 40 for knoten in self.knotenListe: 41 if knoten.name != nameKnoten: 42 neueListe = neueListe + [knoten] 43 neueNachbarn = [] 44 for kante in knoten.kantenZuNachbarn: 45 if kante.zielKnoten.name != nameKnoten: 46 neueNachbarn = neueNachbarn + [kante] 47 knoten.kantenZuNachbarn = neueNachbarn 48 self.knotenListe = neueListe 49 50 def addKante(self, nameStartKnoten, nameZielKnoten): 51 if self.existiertKnoten(nameStartKnoten) and \ 52 self.existiertKnoten(nameZielKnoten) and \ 53 not self.existiertKante(nameStartKnoten, nameZielKnoten): 54 refStartKnoten = self.getRefKnoten(nameStartKnoten) 55 refZielKnoten = self.getRefKnoten(nameZielKnoten) 56 if refStartKnoten != None and refZielKnoten != None: 57 neueKante = Kante(refStartKnoten, refZielKnoten) 58 refStartKnoten.addNachbar(neueKante) 59 60 def delKante(self, nameStartKnoten, nameZielKnoten): 61 for knoten in self.knotenListe: 62 if knoten.name == nameStartKnoten: 63 for kante in knoten.kantenZuNachbarn: 64 if kante.zielKnoten.name == nameZielKnoten: 65 knoten.delNachbar(kante) 66 67 def getAlleKnoten(self): 68 namenKnoten = [] 69 for knoten in self.knotenListe: 70 namenKnoten = namenKnoten + [knoten.name] 71 return namenKnoten 72 73 def getAlleNachbarn(self, nameKnoten): 74 refKnoten = self.getRefKnoten(nameKnoten) 75 if refKnoten != None: 76 listeNachbarn = [] 77 for kante in refKnoten.kantenZuNachbarn: 78 listeNachbarn = listeNachbarn + [kante.zielKnoten.name] 79 return listeNachbarn 80 else: 81 return [] 82 83 def existiertKnoten(self, nameKnoten): 84 if self.getRefKnoten(nameKnoten) == None: 85 return False 86 else: 87 return True 88 89 def existiertKante(self, nameStartKnoten, nameZielKnoten): 90 gefunden = False 91 refStartKnoten = self.getRefKnoten(nameStartKnoten) 92 refZielKnoten = self.getRefKnoten(nameZielKnoten) 93 if refStartKnoten != None and refZielKnoten != None: 94 for kante in refStartKnoten.kantenZuNachbarn: 95 if kante.zielKnoten == refZielKnoten: 96 gefunden = True 97 return gefunden

Comments