ich beschäftige mich zur Zeit ein bischen mit Graphen-Theorie und Such-Algorithmen. Ich wollte eine Tiefensuche implementieren. Diese läuft auch direkt, doch wenn ich mir das passende Objekt in der Funktion zurückgeben lasse herhalte ich immer den Type None. Ich kann mir gut vorstellen, dass es was mit der Referenzierung von dem Objekt "Node" zu tun hat.
Code: Alles auswählen
class Node(object):
def __init__(self,x,y,wert):
self.x = x
self.y = y
self.wert = wert
self.nachbar = []
def __str__(self):
string = "(%d,%d) = %d \n" % (self.x,self.y,self.wert)
return string
def add_nachbar(self,node):
self.nachbar.append(node)
def expand(self):
return self.nachbar
def dfs(node,goal):
print("Node-DFS",node,"GOAL:",goal,"Node.wert:",node.wert)
if(node.wert == goal):
print("in der If",node)
return node
else:
stack = node.expand()
while len(stack) != 0:
node1 = stack.pop()
print("Node1-DFS",node1)
dfs(node1,goal)
root = Node(0,0,100)
n1 = Node(1,0,101)
n2 = Node(0,1,102)
n3 = Node(1,1,103)
print(root,n1,n2,n3)
root.add_nachbar(n1)
root.add_nachbar(n2)
n2.add_nachbar(n3)
print("Gefunder Node:",dfs(root,101))
Gruß Leus.
P.S.: Das Beispiel ist mit Python 3.1 geschrieben und die print-Anweisungen dienen mir als Debug-Hilfe.