Rastgele Seçim


14

Rasgele seçim algoritması şu şekildedir:

Girdi: (basitlik için ayrı) sayılardan oluşan bir dizisi ve bir sayıAk [ n ]nk[n]

Çıktı: "rütbe unsuru" (yani, pozisyon bir ise sıralama)A k AkAkA

Yöntem:

  • bir öğe varsa , onu döndürünA
  • Rastgele olarak eşit bir öğesi ("pivot") seçinp
  • Setleri hesaplamak veR = { a A : a > p }L={aA:a<p}R={aA:a>p}
  • Eğer , nin sıra öğesini .k L|L|kkL
  • Aksi takdirde, rütbe elemanıR,k|L|R

Bana şu soru soruldu:

Diyelim ki , böylece medyanı arıyorsunuz ve sabit olsun. İlk özyinelemeli çağrıda, medyanı içeren kümenin en fazla boyutuna sahip olma olasılığı nedir ?α ( 1 / 2 , 1 ) α nk=n/2α(1/2,1)αn

Bana "Seçilen pivot array ve çarpı orijinal dizi arasında olmalıdır" gerekçesiyle , olduğu söylendi1 - α α2α11αα

Neden? Şöyle , her türlü eleman eksen olarak seçilir yarısından fazlasını orijinal elemanların daha büyük veya daha küçüktür. Medyan her zaman daha büyük alt dizide bulunur, çünkü bölümlenmiş alt dizideki elemanlar her zaman pivottan daha azdır.α(0.5,1)

Pivot orijinal dizinin ilk yarısında (yarısından daha az) yer alıyorsa, medyan kesinlikle ikinci büyük yarıda olacaktır, çünkü medyan bulunduğunda, dizinin orta konumunda olmalıdır ve pivottan önceki her şey yukarıda belirtildiği gibi daha küçüktür.

Pivot orijinal dizinin ikinci yarısındaysa (elemanların yarısından fazlası), medyan kesinlikle ilk büyük yarıyı alacaktır, aynı nedenle pivottan önceki her şey daha küçük olarak kabul edilir.

Misal:

3 4 5 8 7 9 2 1 6 10

Ortanca 5'tir.

Seçilen pivotun 2 olduğu varsayılır. Böylece ilk yinelemeden sonra, olur:

1 2 .... büyük kısım ....

Sadece 1ve 2ilk yinelemeden sonra değiştirilir. 5 sayısı (ortanca) hala ilk büyük yarıda (pivot 2'ye göre). Mesele şu ki, medyan her zaman daha büyük yarıda yatar, nasıl daha küçük bir alt dizide kalma şansı olabilir?


Dersinizde oturmadık, lütfen yöntemi açıklayın.
Raphael

Hangi hassas algoritmadan bahsettiğinizi bilmeden, sorunuz okunamıyor. Birden fazla kapasitede kullanıyorsunuz ; Düzenlemeye çalıştım ama anlamı yakaladığımdan emin değilim. Sorunun açık olması için lütfen gözden geçirin. O zamana kadar kapatmak için oylama. .5
Raphael

Deterministik Yöntemin aksine Randomize Yöntem kullanılarak Seçim Algoritması.
Amumu

Bir öğeyi rastgele seçmenin birçok yolu vardır.
Raphael

2
@Amumu: Algoritmayı tanımlamak için düzenledim. Böyle bir forumda, herkes ne hakkında konuştuğunuzu bilemez ve seçim için analiz edilmesi daha kolay olan çok farklı rastgele bir yaklaşım vardır.
Louis

Yanıtlar:


12

Dizinizde öğe olduğunu varsayalım . Belirttiğiniz gibi, medyan her zaman ilk bölümden sonra daha büyük kısımdadır. Küçük parçanın boyutu en az ise büyük parçanın boyutu en fazla . Bu, en küçük veya en büyük öğelerinden biri olmayan bir pivot seçtiğinizde olur . Çünkü kötü pivotlar biri isabet olasılığı sadece bu yüzden, sen bu ayrık kümelerdir biliyorum ve .α N ( 1 - α ) n ( 1 - α ) n α > 1 / 2 2 - 2 α 1 - 2 + 2 α = 2 α - 1nαn(1α)n(1α)nα>1/222α12+2α=2α1


Cevap için teşekkürler. Hala net olmayan birkaç şeyim var. Peki, α> 1/2 'nin ayrık setlerle ne ilgisi var? Alt dizi boyutundan bağımsız olarak her zaman bu yöntemle ayrık setlerimiz olduğunu düşündüm.
Amumu

Çünkü , yani . ( 1 - α ) n < n - ( 1 - α ) n,1α<1/2(1α)n<n(1α)n
Louis

Son bir şey: Kötü / iyi pivotun bununla ne ilgisi var? Bildiğim kadarıyla, iyi pivot genellikle 25-75 aralığındadır (orijinal dizileri% 25-75 arasında böler) ve kötü olan bu aralığın dışındadır ve daha kötüsü genellikle orijinalin başında veya sonundadır dizi. Ama bu?
Amumu

2
Burada, pivotun büyük bölümünü istediğinizden daha büyük yaparsa, " boyutu " diyorum . Kötü dediğiniz şey karşılık gelir . Sorunun amacı, eğitmeninizin beklenen çalışma süresinin sırasının değiştirilerek değiştirilmediğini görmesini istediğinden şüpheleniyorum . α = 3αnO ( ) αα=3/4O()α
Louis
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.