[Python-de] graph ausgeben

Frank Immich frankimmich at gmx.de
Die Okt 21 23:15:33 CEST 2003


Hallo zusammen,

ich kämpfe immer noch mit Graphen...
Das untenstehende Beispiel ist klar, aber ich würde jetzt gerne nur
alle Kinder von z.b. "A" auflisten. Ich besuche ja jeden Ast, aber es muss
doch funktionieren, nur in die Pfade zu gehen, die man noch nicht besucht
hat ?
Kann mir jemand einen Tipp geben ?

Danke und
Grüße Frank



import string, sys, re, time, os, pickle

graph = {'A': ['B', 'C'],
             'B': ['D', 'D'],
             'C': ['F', "E"],

             'D': ['F'],
             'V': ['F'],
             'I': ['Z'],
             'E': ['T', 'V'],
             'Z': ['Y', 'X'],

             'F': ['G','R','I']}

def get_path(graph, root ,path=[]):
		global depth
		path = path + [root]
		if not graph.has_key(root):
			return None
		children = graph[root]
		for child in children:
			print " |"*depth,child
                        if child not in mylist:mylist.append(child)
			if child not in path:
				depth += 1
				newpath = get_path(graph, child, path)
				depth -= 1
				if newpath:return newpath
		return None

if __name__ == '__main__':
    depth = 0
    mylist = []
    get_path(graph, "A")
    print [ x for x in mylist ]