Algoritmo per inseguire un bersaglio in movimento


20

Supponiamo di avere un black-box f , che siamo in grado di interrogare e reimpostare. Quando azzeriamo f , lo stato fS di f è impostato su un elemento scelto uniformemente a caso dal set

{0,1,...,n1}
dove n è fisso e noto per la data f . Per interrogare f , un elemento x (l'ipotesi) da
{0,1,...,n1}
viene fornito e il valore restituito è . Inoltre, lo stato di f è impostato su un valore f_S '= f_S \ pm k , dove k è selezionato uniformemente a caso da \ {0, 1, 2, ..., \ lfloor n / 2 \ rfloor - (( f_S - x) \ mod n) \}f 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)}

Effettuando ipotesi uniformemente casuali con ogni query, ci si aspetterebbe di dover fare n ipotesi prima di ottenere fS=x , con varianza n2n (dichiarata senza prove).

È possibile progettare un algoritmo per ottenere risultati migliori (ovvero effettuare meno ipotesi, possibilmente con una varianza minore nel numero di ipotesi)? Quanto potrebbe fare di meglio (ovvero cos'è un algoritmo ottimale e quali sono le sue prestazioni)?

Una soluzione efficiente a questo problema potrebbe avere importanti implicazioni in termini di costi per sparare a un coniglio (limitato a saltare su una pista circolare) in una stanza buia.


Non sono sicuro che sparare ai conigli sia informatica.
Dave Clarke,

6
@DaveClarke Ma se riesci a sparare ai conigli, hai risolto il problema di arresto per i conigli.
Patrick87,

@DaveClarke Né sta sparando satelliti nello spazio, ma il calcolo della posizione del satellite è. Questa domanda non è del tutto diversa dalla crittoanalisi.
Gilles 'SO- smetti di essere malvagio' il

Risposte:


13

Prima di tutto, suppongo che entro

Inoltre, lo stato di è impostato su un valore , dove è selezionato uniformemente a caso dafSffS=fS±kk

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

intendi davvero

Inoltre, lo stato di è impostato su un valore , dove è selezionato in modo uniforme a caso dafSffS=fS+kmodnk

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

Altrimenti, non è del tutto chiaro che vale sempre e come si esattamente .fS{0,...,n1}fS±k

Usando questo, il problema si riduce sostanzialmente a "perdere il più possibile". Osserva che più ci avviciniamo al coniglio, maggiore è il luppolo che fa; in casi estremi abbiamo . Ciò si traduce in un salto uniforme tra e , che sostanzialmente sostanzialmente randomizza nuovamente la posizione del coniglio. D'altra parte, se ci perdiamo il più male possibile - con un offset di , il coniglio in realtà non si muove affatto (!) E la scatola nera ci aggiorna davvero su questo fatto. Pertanto, possiamo semplicemente girarci e sparare al coniglio.fSx=±1modn(n/2±1)(n/2±1)fSxmodn=n/2

Ci resta la ricerca di una procedura per perdere sempre di più in ogni colpo. Propongo una semplice "ricerca binaria". (Ometterò convenientemente l'arrotondamento.) Procede approssimativamente come segue:

  1. Ripristina e scatta in una posizione arbitraria finché non ottieni dalla blackbox la rispostaCiò richiede una quantità costante di passaggi in previsione.(fSxmodn){14n,...,34n}.
  2. Ora, sappiamo che la posizione passata del coniglio e che non si è mossa di più di passi in nessuna delle due direzioni. Questo sostanzialmente dimezza il nostro spazio di ricerca nella prossima iterazione, poiché il coniglio deve trovarsi in una posizionefS14nfS{(fS14n)modn,...,fS,...,(fS+14n)modn}
  3. Recurse: scatta in posizione . Con probabilità , la posizione il coniglio è saltato nei passaggi 1 e 2 si trova nell'intervallo . In quel caso abbiamo dimezzato ancora una volta lo spazio di ricerca. Con probabilità , il coniglio non è saltato in quell'intervallo, ma poiché sappiamo che , abbiamo le stesse ipotesi del passaggio (2) e quindi non perdere nulla.fSn/2modn1/2fS1/2f{fS18n,...,fS,...,fS+18n}1/2fSxmodn=fSfS+n/2modn{12n14n,...,12n+14n}

Ogni passaggio richiede tempo previsto per riuscire e dimezza lo spazio di ricerca, producendo un totale di numero previsto di passaggi.O ( registro n )2=O(1)O(logn)

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.