Es scheint, dass Ihr Problem in . Hier ist ein Algorithmus.NL
Erraten Sie zunächst nicht deterministisch einen Pfad vons nach . Wenn Sie falsch raten, lehnen Sie ab . Rufen Sie diesen Algorithmus A .tA
Betrachten Sie den folgenden nichtdeterministischen Algorithmus , der bestimmt, ob mindestens zwei Pfade vorhanden sind. Wenn ein Graph und s , t gegeben sind , erraten Sie für alle Paare unterschiedlicher Kanten e , f einen Pfad von s nach t , der e, aber nicht f enthält , und erraten Sie dann einen Pfad von s nach t , der f, aber nicht e enthält . Wenn die Vermutungen richtig sind, akzeptieren Sie . Wenn für alle Auswahlmöglichkeiten von e und f keine Annahme erfolgt , lehnen Sie ab . Anmerkung B.Bs,te,fstefstfeefB ist im nichtdeterministischen Logspace implementierbar.
Die Menge ist nun die Menge von s - t Graphen mit mindestens zwei Pfaden von s nach t . Da N L = c o N L , das Komplement von B auch in ist N L , das heißt, können wir bestimmen , wenn s und t haben weniger als zwei Wege, in nichtdeterministischen logspace.L(B)ststNL=coNLBNLst
Der endgültige Algorithmus lautet: "Führen Sie . Wenn A akzeptiert, führen Sie das Komplement von B aus und geben Sie seine Antwort aus."AAB
Ich kenne keine Referenz.
UPDATE: Wenn Sie wirklich eine Referenz wünschen, lesen Sie den ersten Absatz von Abschnitt 3 dieses Dokuments . Dies ist jedoch wahrscheinlich nur eine von vielen Referenzen, die diese Konsequenz zitieren. Es wäre vernünftiger, das Ergebnis "Folklore" zu nennen, als ein Papier zu zitieren, das es zufällig erwähnt.
UPDATE 2: Nehmen wir an, Sie möchten feststellen, ob es einen eindeutigen einfachen Pfad gibt. In diesem Fall muss sich Algorithmus nicht ändern: Wenn es überhaupt einen Pfad gibt, gibt es einen einfachen Pfad. Ich glaube, dass die folgende Modifikation für Algorithmus B funktionieren wird .AB
Wir wollen den Algorithmus so umschreiben , dass er akzeptiert, wenn es mindestens zwei einfache Pfade gibt.B
Betrachten Sie zunächst den folgenden Polynom-Zeit-Algorithmus für das Problem. Finden Sie einen kürzesten Weg von s nach t . Überprüfen Sie für jede Kante e in P , ob es einen anderen s - t - Pfad gibt, der nicht durch e führt . Wenn Sie einen solchen Weg finden, akzeptieren Sie . Wenn Sie nie einen anderen Pfad finden, lehnen Sie ab . Da P am kürzesten ist, hat es keinen Zyklus, und wenn es einen anderen Pfad gibt, der keine Kante von P verwendet , dann gibt es einen anderen Pfad, der einfach ist und keine Kante von P verwendetPstePstePPP. (Dieser Algorithmus wird für das Problem "zweitkürzeste Pfade" verwendet.)
Wir werden diesen Algorithmus in implementieren . Wenn wir einen N L -Algorithmus zum Abfragen der Kanten e in einem festen Pfad P hätten , könnten wir das Obige in einem nicht deterministischen Lograum implementieren: Durchlaufen aller Kanten e in P , Erraten eines s - t - Pfads und Überprüfen Sie dies für jede besuchte Kante entlang des Übrigens ist keiner von ihnen gleich e .NLNLePePste
Was wir also brauchen, ist ein "Pfadorakel", ein -Algorithmus mit der Eigenschaft: Wenn i = 1 , ... , n ist , meldet der Algorithmus in jedem Berechnungspfad entweder die i- te Kante auf einem bestimmten festen s - t - Pfad oder ablehnen . Wir können ein Pfadorakel erhalten, indem wir N L = c o N L verwenden , um den lexikographisch ersten Pfad zu isolieren.NLi=1,…,nistNL=coNL
Hier ist eine Skizze des Pfadorakels.
kstk=1,…,nNL=coNL
u:=sx:=1j:=k
vu
vtj−1NL=coNLstj−1
Wenn es keinen Pfad gibt, fahren Sie mit dem nächsten Nachbarn fort. Wenn Sie alle Nachbarn erschöpft haben, lehnen Sie ab .
x=i(u,v)istxju:=vv≠t
x<itii
iiPst