Sei ein zufälliger Graph an Kanten. Mit sehr hoher Wahrscheinlichkeit hat viele Zyklen. Unser Ziel ist es, einen dieser Zyklen so schnell wie möglich auszugeben .
Angenommen, wir haben Zugriff auf in Form einer Adjazenzliste, können wir mit konstanter Wahrscheinlichkeit in Zeit wie folgt erfolgreich sein: Wählen Sie einen beliebigen Knoten und beginnen Sie mit der Erzeugung zufälliger Pfade ab ; Sobald wir zwei unterschiedliche Pfade gefunden haben, die sich einen Endpunkt teilen, sind wir fertig. Es gibt mögliche Endpunkte, und nach dem Geburtstagsparadoxon werden wir mit konstanter Wahrscheinlichkeit Erfolg haben, nachdem wir ungefähr von ihnen entdeckt haben.
Können wir es besser machen? Ist insbesondere ein Algorithmus mit konstanter Zeit möglich, der mit konstanter Wahrscheinlichkeit erfolgreich ist?
Antworten:
Nein, Sie können Abfragen nicht beantworten. Ich werde erklären, wie man die Beweisskizze von exfret auf eine Weise formalisiert , die für adaptive Algorithmen funktioniert. Dies alles wird in der Antwort von Exfret erwartet; Ich fülle nur einige Details aus.Θ(n−−√)
Betrachten Sie einen (möglicherweise adaptiven) Algorithmus, der eine Folge von Abfragen ausgibt, wobei jede Abfrage entweder "die te Kante der Adjazenzliste des Scheitelpunkts abrufen" oder "testen, ob die Scheitelpunkte durch eine Kante verbunden sind". Wir können davon ausgehen, dass keine Abfrage wiederholt wird, da jeder Algorithmus, der eine Abfrage wiederholt, in einen Algorithmus umgewandelt werden kann, der keine Abfrage wiederholt. In ähnlicher Weise können wir annehmen, dass der Algorithmus niemals eine Konnektivitätsabfrage für ein Paar von Scheitelpunkten durchführt, von denen bereits bekannt ist, dass sie durch eine Kante verbunden sind (nämlich das Testen von wenn zuvor von einer Abrufabfrage für , oder war zuvor von einer Abrufabfrage aufi v v,w v,w w v v w , oder wir haben zuvor die Konnektivität von ) getestet .w,v
Lassen das Ereignis bezeichnen , daß während der ersten - Abfragen, keine Vertex von mehr zurückgeführt wird als eine Fetch-Abfrage, und keine fetch-Abfrage gibt eine Vertex , die zuvor abgefragt wurden, und dass kein Konnektivitätstest-query returns „verbunden ". Wir werden beweisen, dass wenn . Daraus folgt, dass kein Algorithmus, der Abfragen durchführt, eine konstante Wahrscheinlichkeit haben kann, einen 4-Zyklus zu finden.Ek k w Pr[Eq]=1−o(1) q=o(n−−√) o(n−−√)
Wie beweisen wir das? Berechnen wir . Es gibt zwei Fälle: Entweder ist die te Abfrage eine Abrufabfrage oder eine Konnektivitätstestabfrage:Pr[Ek|Ek−1] k
Wenn die te Abfrage eine Abrufabfrage für den Scheitelpunkt , werden Scheitelpunkte unter den ersten Abfragen erwähnt, und wenn die te Abfrage eine davon , haben wir andernfalls wir werden . Jetzt ist die Antwort auf die te Abfrage gleichmäßig auf eine Menge von Scheitelpunkten verteilt, wobei alle Scheitelpunkte enthält, die nicht durch vorherige Abrufabfragen auf , sodass die Antwort auf die te Abfrage gleichmäßig auf eine Menge verteilt ist mit einer Größe von mindestensk v 2(k−1) k−1 k ¬Ek Ek k S S v k n−k+1 . Die Wahrscheinlichkeit, mindestens eine davon zu treffen, ist , also in diesem Fall .≤2(k−1)/(n−k+1) Pr[Ek|Ek−1]≥1−2(k−1)/(n−k+1)
Wenn die te Abfrage eine Konnektivitätstestabfrage ist, dann .k Pr[Ek|Ek−1]≥1−1/n−−√
In beiden Fällen haben wir , wennq=o(n−−√)
Jetzt,
Wenn , dannk≤q≤n−−√
so
Die rechte Seite ist ungefähr . Wenn , ist dies .exp{−2q2/(n−q)} q=o(n−−√) 1−o(1)
Zusammenfassend: wenn . Daraus folgt, dass Sie benötigen, um eine konstante Wahrscheinlichkeit zu haben, einen Zyklus zu finden (geschweige denn einen 4-Zyklus).Pr[Eq]=1−o(1) q=o(n−−√) Ω(n−−√)
quelle
Nehmen wir an, wir können nur die te Kante der Adjazenzliste eines bestimmten Scheitelpunkts abfragen (von der ich annehme, dass sie nicht sortiert ist) oder ob zwei gegebene Scheitelpunkte benachbart sind. In diesem Fall sollten Abfragen erforderlich sein, um überhaupt einen Zyklus zu finden. Dies liegt daran, dass die Wahrscheinlichkeit dass alle unsere Abfragen des ersten Typs unterschiedliche Scheitelpunkte zurückgeben und dass alle unsere Abfragen des zweiten Typs zurückgeben, dass die beiden Scheitelpunkte nicht verbunden sind.i n−−√ 1−o(1)
Bitte korrigieren Sie mich, wenn ich irgendwo falsch liege oder das Problem falsch verstehe.
quelle