Ich implementiere ein DFS, um den Ausgang eines Labyrinths zu finden, und derzeit ist es single-threaded.Tiefe erste Suche parallel
Ich plane, es effizienter zu machen, indem ich mehrere Threads erzeuge, die den Baum mit demselben Singlethread-Algorithmus durchsuchen, aber ich bin randomisiert, in welche Richtung ich gehen soll, wenn ich auf eine Kreuzung stoße.
Zum Beispiel stoßen die Threads auf eine Kreuzung, wo sie nach Osten oder Westen gehen können. Die Hälfte von ihnen geht nach Osten und die andere Hälfte nach Westen. Dies wird fortgesetzt, bis einer der Threads den Lösungspfad findet.
Ist dies ein gültiger Weg, um DFS parallel zu implementieren?
Könnte die Labyrinth-Zyklen haben? – ajb
keine Zyklen oder Schleifen – Kingamere
Dies wird eine Suche sein und sollte gut funktionieren. Es wird kein DFS gemäß der Standarddefinition sein, aber das spielt keine Rolle. Wenn das Labyrinth ein Baum ist, dann ist es ziemlich einfach zu implementieren. Wenn es ein Graph ist, wird die Synchronisation wichtig. – Gene