2017-03-22 7 views
0

Ich versuche, ein DFS zu implementieren, um Zyklen in einem Zeichenfolgendiagramm zu finden. Zum Beispiel die Grafik:Wiederholen von 'False' Ausgaben

walkways_info = """\ 
U 3 
0 1 
1 2 
2 0 
""" 

würde True zurückgeben. Ich habe zur Zeit das Problem, dass meine if-Anweisung:

if current_vertex in visited or int(graph[i].split()[1]) in visited: 

es falsch ausgibt, aber ich will nicht, dass es zu diesem Zeitpunkt zur Ausgabe nichts.

Aktualisiert Code Here

ich etwas Hilfe schätzen würde.

+2

Ich würde Ihnen vorschlagen, eine Adjazenz-Matrix basierend auf einer String-Repräsentation zu erstellen, BEVOR Sie irgendeine graphbasierte Aufgabe lösen. Auf diese Weise werden Sie in der Lage sein, bekannte und ausgefeilte Algorithmen und Implementierungen zu verwenden. – CaptainTrunky

+0

Sehen Sie sich Ihren Code an: Der einzige Weg, um 'False' zurückzugeben, ist, wenn Ihr Diagramm leer ist! – Julien

+0

Ich habe 'return False' außerhalb der for-Schleife hinzugefügt. Sollte dies nicht ausgelöst werden, wenn der Graph durch iteriert wird und' return True' nicht aufgerufen wird? –

Antwort

0

Ich glaube, dass Sie eine Reihenfolge der Operation Fehler haben, die in und == nicht gut spielen.

current_vertex in visited == True wertet wie diese (current_vertex in (visited == True))

Beispiel:

In [1]: x = [0,1,2] 

In [2]: y = 1 

In [3]: y in x == True 
Out[3]: False 

In [3]: y in x 
Out[3]: True 

Also, wenn Sie Drop Ihre == True sollte es funktionieren.

+0

Hey Danke dafür, aber mir ist jetzt aufgefallen, wenn es zu 'if current_vertex in besucht oder int (graph [i] .split() [1]) in besucht' es wird 'False' ausgegeben bekomme ich es nicht zu tun ? –

+0

Ich habe keine Druckanweisung gesehen, die ich hinzugefügt hatte ..... Danke für Ihre Hilfe! –