Eindeutiger Pfad in einem gerichteten Diagramm

9

Ich entwerfe einen Algorithmus für eine Klasse, der bestimmt, ob ein gerichteter Graph in Bezug auf einen Scheitelpunkt eindeutig ist, so dass es für jedes u v höchstens einen Pfad von v nach u gibt . Ich habe zunächst BFS (Breitensuche) verwendet, um den kürzesten Pfad von v zu einem anderen Scheitelpunkt u zu finden, und dann BFS erneut ausgeführt, um festzustellen, ob ein alternativer Pfad von v zu u gefunden werden kann. Ich denke jedoch, dass dies zu zeitaufwändig ist. Hat jemand Hinweise, wie die Lösung mit einer kürzeren Ausführungszeit gefunden werden kann?vuvvu

Juho
quelle

Antworten:

9

Verwenden Sie BFS, um von v aus rückwärts zu arbeiten, und markieren Sie jeden Scheitelpunkt unterwegs als "besucht". Wenn Sie jemals einen zuvor besuchten Scheitelpunkt getroffen haben, verfügt Ihr Diagramm nicht über die Eindeutigkeitseigenschaft. Ansonsten ist es so.


quelle
3

Schauen Sie sich den Max Flow Min Cut- Algorithmus an.

Charlie Martin
quelle
2

Es ist eine einfache Änderung jeder Diagrammdurchquerung: Wenn Sie eine Kante zu einem zuvor markierten Knoten finden, haben Sie mehrere Pfade.


quelle