Hareketli bir hedefi kovalamak için algoritma


20

Sorgulayabileceğimiz ve sıfırlayabileceğimiz bir kara kutu f sahip olduğumuzu varsayalım . Biz yeniden zaman f , durum fS ve f setinden rastgele homojen seçilen bir eleman olarak ayarlanır

{0,1,...,n1}
burada n sabittir ve verilen için bilinir f. Sorgu için f , bir elemanın x dan (tahmin)
{0,1,...,n1}
belirtilir ve döndürülen değer . Buna ek olarak, durum f_S arasında f bir değer ayarlanır f_S'= f_S \ am k , k, rastgele homojen seçilir ((- \ {0, 1, 2, ..., \ lfloor n / 2 \ rfloor f_S - x) \ mod n) \}(fSx)modnfSffS=fS±kk
{0,1,2,...,n/2((fSx)modn)}

Her bir sorgu ile aynı şekilde rasgele tahminler yaparak, f_S = x elde etmeden önce n ^ 2 - n (kanıt olmadan belirtilir) ile n tahminin yapılması beklenir .fS=xn2n

Bir algoritma daha iyisini yapmak için tasarlanabilir mi (yani, tahmin sayısında daha az sapma ile daha az tahmin yapmak)? Ne kadar iyi yapabilirdi (yani, optimum algoritma nedir ve performansı nedir)?

Bu soruna etkili bir çözümün, karanlık bir odada bir tavşanda (dairesel bir yolda atlamakla sınırlı) çekim yapmak için önemli maliyet tasarrufu etkileri olabilir.


Tavşan vurmanın bilgisayar bilimi olup olmadığından emin değilim.
Dave Clarke

6
@DaveClarke Ama tavşanları vurabilirseniz, tavşanların durma problemini çözdünüz.
Patrick87

@DaveClarke Uydular da uzaya atılmaz, ancak uydunun konumunun hesaplanmasıdır. Bu soru kriptanalizden tamamen farklı değildir.
Gilles 'SO- kötü olmayı bırak'

Yanıtlar:


13

Her şeyden önce,

Buna ek olarak, durum arasında bir değer ayarlanır , rastgele homojen seçilirfSffS=fS±kk

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

aslında demek istiyorsun

Buna ek olarak, durum arasında bir değer ayarlanır , burada rastgele homojen seçilirfSffS=fS+kmodnk

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

Aksi takdirde, nin her zaman geçerli olduğu ve tam olarak nasıl davrandığı tam olarak .fS{0,...,n1}fS±k

Bunu kullanarak, sorun temel olarak "olabildiğince eksik" olarak ortaya çıkar. Tavşanı ne kadar yaklaştırırsak, o kadar büyük şerbetçiotu yaptıklarını gözlemleyin; uç durumda . Bu, ve , temelde tavşanın konumunu yeniden tamamen rasgele düzgün bir sıçrama ile sonuçlanır . Öte yandan, mümkün olduğunca kötü , tavşan aslında hiç hareket etmiyor (!) Ve kara kutu aslında bizi güncelliyor bu gerçeği. Bu nedenle, arkanı dönüp tavşanı vurabiliriz.fSx=±1modn(n/2±1)(n/2±1)fSxmodn=n/2

Her çekimde gittikçe artan bir şekilde kayıp için bir prosedür bulmakla kalıyoruz. Basit bir "ikili arama" öneriyorum. (Yuvarlamayı rahatlıkla atlayacağım.) Kabaca aşağıdaki gibi ilerler:

  1. cevabı kadar rastgele bir konumda sıfırlayın ve çekim yapınBu beklenti içinde sabit bir adım gerektirir.(fSxmodn){14n,...,34n}.
  2. Şimdi, tavşanın geçmiş pozisyonu olduğunu ve her iki yönde adımdan daha fazla hareket etmediğini biliyoruz . Bu, temel olarak bir sonraki yinelemede arama alanımızı yarıya indirir, çünkü tavşan konumunda konumundafS14nfS{(fS14n)modn,...,fS,...,(fS+14n)modn}
  3. : konumunda . Olasılık , adım 1 ve 2'de tavşanın atladığı konumu . Bu durumda arama alanını bir kez daha yarıya indirdik. Olasılık ile tavşan bu aralıkta atlamadı, ancak bildiğimiz için , adım (2) ile aynı varsayımlara sahibiz ve bu nedenle hiçbir şey kaybetmeyin.fSn/2modn1/2fS{fS18n,...,fS,...,fS+18n}1/2fSxmodn=fSfS+n/2modn{12n14n,...,12n+14n}

Her adımın başarılı olması için beklenen süreye ihtiyacı vardır ve arama alanını yarıya indirir ve toplam beklenen adım sayısını verir.2=O(1)O(logn)

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.