Algorithmus zum Jagen eines sich bewegenden Ziels

20

Angenommen, wir haben eine Blackbox f die wir abfragen und zurücksetzen können. Wenn wir zurückgesetzt f , wird der Zustand fS von f ist an einem Element festgelegt gleichmäßig zufällig aus dem Satz gewählt

{0,1,...,n1}
wobei n fest ist und für gegebenes f . Zur Abfrage f ein Element x (der Schätzwert ) aus
{0,1,...,n1}
wird bereitgestellt und der zurückgegebene Wert ist . Zusätzlich wird der Zustand von auf einen Wert , wobei gleichmäßig zufällig ausf S f f ' S = f S ± k k { 0 , 1 , 2 , . . . , n / 2 - ( ( f S - x )(fSx)modnfSffS=fS±kk
{0,1,2,...,n/2((fSx)modn)}

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 - nnfS=xn2n

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).

Patrick87
quelle
Ich bin nicht sicher, ob das Schießen von Kaninchen Informatik ist.
Dave Clarke
6
@ DaveClarke Aber wenn Sie Kaninchen schießen können, haben Sie das Halteproblem für Kaninchen gelöst.
Patrick87
@ DaveClarke Weder schießt Satelliten in den Weltraum, aber die Berechnung der Position des Satelliten ist. Diese Frage ist der Kryptoanalyse nicht ganz unähnlich.
Gilles 'SO- hör auf böse zu sein'

Antworten:

13

Zunächst werde ich davon ausgehen, dass durch

Zusätzlich wird der Zustand von auf einen Wert , wobei gleichmäßig zufällig ausfSffS=fS±kk

{0,1,2,...,n/2((fSx)modn)}

du meinst eigentlich

Zusätzlich wird der Zustand von auf einen Wert , wobei gleichmäßig zufällig ausfSffS=fS+kmodnk

{|n2((fSx)modn)|,,1,0,1,2,,|n2((fSx)modn)|}

Ansonsten ist nicht ganz klar, dass immer gilt und wie genau sich verhält.fS{0,...,n1}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.fSx=±1modn(n/2±1)(n/2±1)fSxmodn=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:

  1. Setzen Sie zurück und schießen Sie an einer beliebigen Position, bis Sie die Antwort aus der Blackbox erhaltenDies erfordert eine konstante Anzahl von Schritten in der Erwartung.(fSxmodn){14n,...,34n}.
  2. Nun wissen wir, dass sich das Kaninchen an seiner letzten Position nicht mehr als Schritte in beide Richtungen bewegt hat . Dies halbiert grundsätzlich unseren Suchraum in der nächsten Iteration, da sich das Kaninchen an einer PositionfS14nfS{(fS14n)modn,...,fS,...,(fS+14n)modn}
  3. Rekurs: Schießen Sie auf Position . Mit der Wahrscheinlichkeit liegt die Position das Kaninchen in Schritt 1 & 2 gesprungen ist, im Bereich . In diesem Fall haben wir den Suchraum noch einmal halbiert. Mit der Wahrscheinlichkeit ist das Kaninchen nicht in diesen Bereich gesprungen, aber da wir wissen, dass , wir haben die gleichen Annahmen wie in Schritt (2) und deshalb nichts verlieren.fSn/2modn1/2fS{fS18n,...,fS,...,fS+18n}1/2fSxmodn=fSfS+n/2modn{12n14n,...,12n+14n}

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)

HdM
quelle