Ich habe ein Wörterbuch, das Zeichenketten Mengen von Zeichenketten zuordnet. Als Spielzeug Beispiel:Einen Weg durch ein Wörterbuch finden
d = {'a': {'b', 'c', 'd'},
'b': {'c', 'x'},
'c': {'d', 'z'}}
Die Idee ist, dass jeder String Karten auf einen Satz von Saiten, die jeweils wieder Karten zu seinem eigenen Satz von Saiten usw.
mag ich eine Funktion f(start, d, pathLength)
das wird Nehmen Sie eine Startzeichenfolge, das Wörterbuch und eine Pfadlänge, und geben Sie den ersten Pfad durch das gefundene Wörterbuch mit der Länge pathLength zurück. Eine Invariante ist, dass ein Pfad nicht fortgesetzt werden kann, wenn sein letztes Element einem Wert entspricht, der bereits im Pfad vorhanden ist.
Ich schrieb Code, der den gesamten Baum rekursiv konstruiert, aber das ist ziemlich rechenintensiv und scheint unnötig. Um die benötigte Zeit zu reduzieren, ließ ich Knoten mit einer gewissen Wahrscheinlichkeit aufbauen. Ich möchte das stochastische Feature beibehalten, so dass jedes Mal, wenn die Funktion ausgeführt wird, ein anderer Pfad zurückgegeben wird. Ich denke, es gibt eine Möglichkeit, dies mit einem Stack und einer Schleife ohne Rekursion zu tun, aber ich war nicht erfolgreich.
Guido van Rossum hat einen guten Aufsatz dazu hier: https://www.python.org/doc/essays/graphs/ – Hatshepsut