Angenommen, wir haben eine Blackbox die wir abfragen und zurücksetzen können. Wenn wir zurückgesetzt , wird der Zustand von ist an einem Element festgelegt gleichmäßig zufällig aus dem Satz gewählt
Wenn man mit jeder Abfrage einheitlich zufällige Vermutungen , muss man Vermutungen , bevor man mit der Varianz (ohne Beweis angegeben) .f S = x n 2 - n
Kann ein Algorithmus besser ausgelegt werden (dh weniger Vermutungen anstellen, möglicherweise mit weniger Abweichungen in der Anzahl der Vermutungen)? Wie viel besser könnte es sein (dh was ist ein optimaler Algorithmus und was ist seine Leistung)?
Eine effiziente Lösung dieses Problems könnte wichtige Auswirkungen auf die Kostenersparnis haben, wenn in einem dunklen Raum auf ein Kaninchen geschossen wird (das nur auf einer Kreisbahn hüpft).
Antworten:
Zunächst werde ich davon ausgehen, dass durch
du meinst eigentlich
Ansonsten ist nicht ganz klar, dass immer gilt und wie genau sich verhält.fS∈{0,...,n−1} fS±k
Auf diese Weise besteht das Problem im Grunde darin, "so viel wie möglich zu fehlen". Beachten Sie, dass je näher wir dem Kaninchen schießen, desto größere Sprünge macht er. im Extremfall haben wir . Dies führt zu einem gleichmäßigen Sprung zwischen und , der die Position des Kaninchens im Grunde genommen wieder vollständig randomisiert. Wenn wir dagegen so schlecht wie möglich verfehlen - um einen Versatz von , bewegt sich das Kaninchen überhaupt nicht (!) Und die Blackbox aktualisiert uns tatsächlich auf diese Tatsache. Deshalb können wir uns einfach umdrehen und das Kaninchen erschießen.fS−x=±1modn −(⌊n/2⌋±1) (⌊n/2⌋±1) fS−xmodn=⌊n/2⌋
Wir müssen ein Verfahren finden, um mit jeder Einstellung mehr zu verfehlen. Ich schlage eine einfache "binäre Suche" vor. (Ich werde die Rundung bequemerweise weglassen.) Es geht ungefähr so:
Jeder Schritt benötigt erwartete Zeit, um erfolgreich zu sein, und halbiert den Suchraum, was eine Gesamtzahl von erwarteten Schritten ergibt .O ( log n )2=O(1) O(logn)
quelle