Küçük alanda olasılık sırasına göre vektörler üzerinde tekrarlama


12

Bir göz önünde boyutlu vektör burada . Her biliyoruz ve bağımsız olduğunu varsayalım . Bu olasılıkları kullanarak, çıktı boyutunda alt çizginin alt alanını kullanarak, büyük olasılıkla en az olasılıkla (bağlar için keyfi seçimlerle) ikili boyutlu vektörler üzerinde tekrarlamanın etkili bir yolu var mı? nvvi{0,1}ipi=P(vi=1)vin

Örneğin . En olası vektör ve en düşük olasılık . p={0.8,0.3,0.6}(1,0,1){0,1,0}

Çok küçük için, vektörün her birini olasılığı ile etiketleyebilir ve basitçe sıralayabiliriz, ancak bu elbette yine de alt doğrusal boşluk kullanmaz.n2n

Bu sorunun yakın bir çeşidi daha önce /cs/24123/how-to-iterate-over-vectors-in-order-of-probability adresinde sorulmuştur .


Orada da takip sorusunu sormamanın bir nedeni var mı? Burada asıl mesele bunu alt doğrusal alanda yapmak mı?
Suresh Venkat

@SureshVenkat Evet, sorun tamamen alt doğrusal alanla (çıktı boyutunda) ilgilidir. Soruyu çok zor olabileceğini düşündüğüm için buraya sordum.
Lembik

Bunu uzay ve zamanda çözmek SUBSET-SUM'a benzer teknikler gerektiriyor gibi görünmektedir (hangi alt kümelerin toplamlarının farklı toplamları neredeyse iptal ettiğini çabucak bilmek). Bu nedenle, hızlı bir çözüme sahip olmak pek olası değildir. poly(n)
Geoffrey Irving

@GeoffreyIrving Sizce bu sezgi daha resmi hale getirilebilir mi?
Lembik

Yanıtlar:


9

Aşağıda yaklaşık zaman ve boşluk kullanan bir algoritma verilmiştir .2 n / 22n2n/2

İlk olarak, öğenin tüm alt kümelerinin toplamlarını sıralama sorununa bakalım .n

Bu alt sorunu düşünün: uzunluğunda iki sıralı listeniz var ve listelerdeki sayıların çift toplamlarının sıralı bir listesini oluşturmak istiyorsunuz. Bunu kabaca zamanda (çıktı boyutu), ancak alt doğrusal boşlukta yapmak istersiniz. boşluğu elde edebiliriz . Öncelik sırasını koruyoruz ve toplamları artan sırayla öncelik sırasından çıkarıyoruz.O ( m, 2 ), O ( m )mO(m2)O(m)

Listeleri olalım ve , artan sırada sıralanır. Biz almak toplamlar , ve öncelik sıraya koydu.b 1b m m a i + b 1 i = 1 ma1amb1bmmai+b1i=1m

Şimdi, kalan en küçük toplam öncelik kuyruğundan , ise toplam toplamını öncelik kuyruğuna . Alan, her zaman en fazla toplamı içeren öncelik kuyruğu tarafından yönetilir . Ve her öncelik sırası işlemi için kullandığımız için zaman . Bu, alt problemi zamanı ve uzayında yapabileceğimizi gösterir . j < m a i + b j + 1 m O ( m 2 log m ) O ( log m ) O ( m 2 log m ) O ( m )ai+bjj<mai+bj+1mO(m2logm)O(logm)O(m2logm)O(m)

Şimdi, tüm alt kümelerinin toplamları sıralamak listesi nereye biz sadece bu altrutinini kullanarak, sayılar öğelerin ilk yarısının alt kümelerinin toplamları setidir ve liste alt kümelerine toplamının kümesidir öğelerin ikinci yarısı. Bu listeleri aynı algoritma ile özyineli olarak bulabiliriz.a i b inaibi

Şimdi orijinal sorunu ele alacağız. Let koordinatlarının kümesi , ve koordinatlarının kümesi . Sonra S00S11

iS0p(vi=0)iS1p(vi=1)=1inp(vi=0)iS1p(vi=1)p(vi=0)=1inp(vi=0)exp(iS1logp(vi=1)p(vi=0)).

Bu sayıları sıralamak sayılarını sıralamakla aynıdır , bu nedenle alt kümelerinin toplamlarını sıralama sorununu . öğeler.iS1logp(vi=1)logp(vi=0)n


Poli zaman / mekan çözeltisini mantıksız kılacak makul bir azalma var mı?
Lembik

Muhtemelen süreden daha az süren bir çözüm elde edemezsiniz , çünkü çıktı boyutu budur (ve benim çözümüm zaman alır). Yine de uzay için iyi bir alt sınırım yok. 2nn2n
Peter Shor

Teşekkür ederim. Elbette poli zamanı demek değil, çıktı boyutu ve poli alanında doğrusal bir şey demek istedim.
Lembik

4

Bunu uzayında yapabiliriz çalışma süresini umursamıyorsak).O(n)

  1. Belirli bir dizeye için , uzay hesaplayabildiği sayıda göre çok daha yüksektir şeritlerinin ; yani, st : tüm üzerinden gidin ve st sayısını sayın . Not bu dizge sıra numarası olan çıkış.x{0,1}nO(n)r(x)xxp(x)>p(x)x{0,1}nxp(x)>p(x)r(x)x
  2. Her için , bulabildiğimiz ile alan içinde : gidip bütün , her biri için hesaplama , durdurma ve çıkış ise .kxr(x)=kO(n)x{0,1}nxr(x)xr(x)=k
  3. Şimdi her için geçin , her için ile yazdırın .k02n1kxr(x)=k

(Ayrıca olası bağlara da dikkat etmeliyiz, ancak bu zor değil.)


Teşekkür ederim. Ancak bu oldukça yavaş bir algoritma :)
Lembik

0

Düzenleme: Bu cevap yanlış. Ayrıntılar için yorumlara bakın. ~ gandaliter

Çıktıdaki doğrusal anlamına gelir . Bence bariz algoritma elbette çıktıdan ayrı olarak sadece boşluğunu kullanıyor .O(2n)O(n)

  1. Çiftlerini içeren listeyi al bunu, ve sıralama, önce en büyük.(i,pi)|0.5pi|

  2. Bu tür çiftler ve kısmen doldurulmuş vektör bir listesini alır iki kat özyinelemeli fonksiyon tanımlanır , değerini belirler olarak ise , ve Aksi belirtilmediği taktirde ve Recurses (listenin kuyruğu kullanarak ve ), sonra çevirir ve tekrarlanır. Liste yerine çıkışlar boşaltmaya ise .v i 1 p i > 0,5 0 v v i vvvi1pi>0.50vviv

  3. Sıralanan listede bu özyinelemeli işlevi ve boş bir vektörü çağırın.

Sezgi, önce vektördeki en belirli elemanların (olasılıkları ve en yakın olanların) değerlerini ayarlamanız ve vektörü bu şekilde doldurmanız ve olasılıkları en yakın olanlarla bitirmenizdir . Tüm vektörün alabileceği her olası değer, olasılık sırasına göre çıkarılır.1 0.5010.5

Çalışma süresi , bu da çıktının uzunluğu olduğu için alt sınırdır. Uzay karmaşıklığı çünkü sıralama bundan daha fazlasını gerektirmez ve özyinelemeli uzunluk vektörün uzunluğu, yani . Bunun da alt sınır olduğuna inanıyorum çünkü algoritmanın çalışmasında her zaman adımı için bellekte farklı bir durum olmalı ve zaman karmaşıklığı . zaman adımlarını numaralandırmak için bellekteki durumları gereklidir . Bu nedenle, bu algoritma en kötü durum karmaşıklığı için idealdir.O ( n ) n, O ( 2 , n ) O ( n, ) O ( 2 N )O(2n)O(n)nO(2n)O(n)O(2n)


Diğer yanıt, öncelik sırası gerektiren ve bu nedenle alanı kullandığından kesinlikle farklıdır . Θ(2n)
Lembik

Teşekkürler. Açıkça yeterince dikkatle okumadım! Cevabımı düzenledim.
gandaliter

3
Bu çözümün çalıştığından emin misiniz? Ben çift özyineleme (pseudocode yardımcı olur!) Ayrıntılarını anlayamadım ama bunun nasıl çalıştığını göremiyorum. Özellikle, çözümünüz yerel görünmektedir: ayarlanmışsa , şimdi yanıtını . Ancak asıl cevaplar bu şekilde görünmemelidir. Aslında, çözümünüzü anladığım kadarıyla, tüm olduğu en basit durumda bile başarısız gibi görünüyor . 2 n - 1 v 1 = 1 p i = 0,5v1=12n1v1=1pi=0.5
mobius hamur tatlısı

Haklısın, bu işe yaramıyor. Üzgünüm!
gandaliter
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.