Perso in un concerto "unidirezionale"


16

Tu e un amico ci siete persi a vicenda sulla linea per un concerto, e nessuno dei due è sicuro di chi di voi sia più avanti. Formalmente, ognuno ha una coordinata intera e può solo camminare verso una coordinata più alta o rimanere in posizione.

Supponendo che tu e il tuo amico seguiate esattamente lo stesso algoritmo (e no, non potreste dire "se (nome ==" R B ") fate qualcosa :)), e la distanza iniziale tra voi due era (che non è a te noto).x

Qual è l'algoritmo che minimizza la distanza percorsa fino a quando tu e il tuo amico vi incontrate?


Puoi presumere che sia il tuo amico che te stesso si stiano muovendo alla stessa velocità costante.


Un semplice algoritmo di esempio sarebbe qualcosa del tipo:

  1. Allo stadio (a partire da ):n0

    • Cammina passi verso destra wp 13n12 o attendere3nunità di tempo in caso contrario.

Per vedere questo algoritmo fa incontrare gli amici con probabilità 1, considera cosa succede in fase (log3X+1) . Anche se l'amico che era X passo avanti camminava sempre e l'altro rimaneva sempre in posizione, la distanza tra i due sarebbe:

X+1+3+9+...+3log3X=2X+X-123X

Pertanto, al log3X+1 iterazione, l'amico che sceglie di camminare coprirà la distanza di 3log3X+1=3X , quindi con probabilità 14 , l'amico che sta dietro raggiungerà e si incontreranno.


Un semplice ottimizzazione (per ridurre piedi) sarebbe, invece di camminare 3X gradini, piedi cX gradini, dove c è dato da:

2+1c1=c

Quindi la ottimale per questo algoritmo èc c=3+522.618

Sfortunatamente, mentre questo algoritmo garantisce che gli amici incontreranno la probabilità 1, la distanza percorsa prevista è infinita, cosa che vorrei evitare, se possibile.

Esiste un algoritmo più efficiente?


Quando dici "distanza percorsa a piedi", intendi nel peggiore dei casi, dove l'algoritmo è probabilistico, o supponi anche una certa distribuzione sugli input? Inoltre, hai bisogno che il tuo algoritmo sia sempre corretto o che sia wp 1 corretto? (o meno?) - nota che l'algoritmo che presenti qui potrebbe non arrestarsi mai (ma wp 0)
Shaull

Questo è simile al problema della ricerca lineare ( en.wikipedia.org/wiki/Linear_search_problem ).
Yuval Filmus,

2
@Shaull - poiché entrambi gli amici stanno seguendo lo stesso algoritmo, deve essere probabilistico o non si incontreranno mai. L'aspettativa è oltre la randomizzazione dell'algoritmo.
RB

Nel tuo algoritmo intendi camminare unità di tempo a destra con velocità costante C ? Camminare 2 n passi potrebbe non parlare 2 ^ n volta. 2nC2n
吖 奇 说 ARCHY SHUō

@ 0a-archy: supponiamo che entrambi si muovano alla stessa velocità (lascia che sia di 1 per questa materia). L'idea dell'algoritmo che ho dato è che passi2npassi o aspetti un tempo equivalente, quindi ogni iterazione inizia contemporaneamente per entrambi i giocatori. passounità di tempo2n
RB

Risposte:


4

Al passaggio , disegna un numero casuale q uniformemente tra 1 , 2 e 3Kq123 .

  • se , cammina 2 k - 1 , aspetta 2 k + 1 , cammina 2 k - 1q=12K-12K+12K-1
  • se , aspetta 2 k - 1 , cammina 2 k - 1 , aspetta 2 k , cammina 2 k - 1 , aspetta 2 k - 1q=22K-12K-12K2K-12K-1
  • se , attendi 2 k , cammina 2 k , attendi 2 kq=32K2K2K

Ad ogni passaggio , entrambi gli amici eseguiranno 2 k passaggi. Se k < log 2 ( x ) + 1 , non si incontreranno durante quel passaggio, tuttavia se k > = log 2 ( x ) + 1 , si incontreranno se e solo se non disegnano lo stesso numero. La probabilità che ciò non accada è solo 1 /K2KK<log2(X)+1K> =log2(X)+1 ad ogni passo.1/3

Quindi la distanza percorsa a piedi è (limitata da):

2(k=0log2(x)2k+3log2(x)k=log2(x)+1(23)k)

Che è finito, ed equivale, se la mia matematica di tovaglioli deve essere attendibile, a .2log2(x)+3216x

A proposito, se è la variabile casuale che rappresenta la distanza percorsa, abbiamo ancora D > 0 , P ( d > D ) > 0 , ovvero la distanza non è limitata e può finire per essere arbitrariamente alta. Fortunatamente questa probabilità svanisce abbastanza velocemente da garantire che la somma infinita D = 0 P ( d = D ) D = E [ d ] sia una proprietà molto più forte e penso che non sia possibile trovare una soluzione che la soddisfi.dD>0,P(d>D)>0D=0P(d=D)D=E[d] converge. Avere un limite superiore finito per d

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.