Bir algoritmanın beklenen çalışma süresi ve ortalama çalışma süresi ne anlama gelir?


17

Diyelim ki algoritmaların çalışma zamanlarını analiz etmek istiyoruz. Bazen, girdi boyutu n olduğunda bir algoritmanın çalışma süresini bulmak istediğimizi ve mümkün olan en kötü durumda O (n) ile ifade ettiğimizi söyleriz. Bazen bir algoritma için beklenen zamanı bulmamız gerektiğini söyleyen kitaplar / makaleler görüyorum . Ayrıca bazen ortalama çalışma süresi kullanılır.

"Beklenen süre" nedir? Hangi durumlarda en kötü zaman yerine beklenen zamanı bulmak yararlıdır ?

Edit : Ben beklenen çalışma süresi ve ortalama çalışma süresi arasında ince bir fark olduğunu düşünüyorum ama emin değilim. Bu yazı sayesinde tam farkı bilmek istiyorum.


1
Muhtemelen ortalama kasayı kastediyorlar ..
Martijn Pieters

4
Beklenen değer bir olasılık dağılım fonksiyonunun pozitif sonsuza negatifinin x * f (x) integrali olarak tarif edilmektedir. Beklenen zaman, olası tüm zamanların olasılık dağılımının belirlenmesi ve daha sonra beklenen değerin alınmasıyla elde edilir. Bu işlem daha çok ortalamanın hesaplanması veya ortalamanın hesaplanması olarak bilinir .
Joel Cornett

1
@JoelCornett: Eğer yayınladıysanız bu güzel bir cevap olurdu ..
Martijn Pieters

@MartijnPieters: Hayır, ortalama bir durum girdilerin olasılık dağılımı hakkında bir varsayım yapar, beklenen durum yapmaz.
Jörg W Mittag

@ JörgWMittag: Doğru, girdilerinizin gerçek dünyadaki olasılık dağılımını biliyorsanız, ortalama durumu göz ardı edebilirsiniz. Başka bir deyişle, beklenen durum, algoritmanızın beklenen girdi kümelerinin olasılık dağılımını verdiği zamandır.
Martijn Pieters

Yanıtlar:


15

Beklenen süre, istenen girişi kullanan algoritmanın sadece ortalama, beklenen , çalışma süresidir .

Birkaç milyon kullanıcı kaydınız olduğunu ve bunları sıralamak istediğinizi varsayalım, girdiniz için en uygun olan algoritmayı kullanmak isteyebilirsiniz ve bu nedenle, daha iyi olan bir algoritmanın aksine, beklenen en iyi çalışma süresini verir. en kötü çalışma süresi ancak daha kötü beklenen çalışma süresi.

Bazen, örneğin, bir algoritmanın zaman karmaşıklığı için sabit faktörler o kadar yüksektir ki, daha az zaman karmaşıklığına sahip algoritmaları kullanmak daha mantıklıdır, ancak daha küçük sabit faktörler, küçük girdi ile daha iyi beklenen çalışma süresi sağlar. daha büyük girdilerle korkunç bir şekilde daha iyi performans gösterir.

Belki de daha iyi bir örnek , girişten bağımsız olarak O (n²) en kötü çalışma süresine sahip ancak beklenen ortalama O (n log n) çalışma süresine sahip klasik hızlı sıralama algoritmasıdır . Bunun nedeni, algoritmanın rasgeleleştirmeyi kullanması (veya daha doğrusu uygulamaya bağlı olarak) kullanabilmesidir . Yani bu rastgele bir algoritma . Aynı girişle bile her çağrıda biraz farklı çalışır. Bu nedenle, uygulama için evrensel en kötü durum girişi yoktur, çünkü en kötü durum girişi, algoritmanın verilen girişi bölmek için ekseni seçme biçimine bağlıdır. Ve böylece, en kötü çalışma süresine neden olan önceden tanımlanmış bazı girdiler sağlanamaz. Girişe bakılmaksızın daha iyi beklenen, ortalama çalışma süresini amaçlayan rasgele algoritmalar için bu genellikle geçerlidir.

Her şey eldeki giriş için doğru algoritmayı kullanmakla ilgilidir.


Mükemmel cevap. Teşekkürler . Beklenen ve ortalama arasındaki fark, girdilerin dağılımını bildiğimizde ve algoritmayı çalıştırdığımızda buna "ortalama" denir ve eldeki girişlere izin vermek için rastgele bir sayı üreteci kullandığımızda, beklenen çalışma süresi olarak adlandırılır. Bu önermeye katılıyor musunuz?
Geek

4

Rastgele bir algoritmanın beklenen çalışma süresi, en kötü durum çalışma süresi gibi iyi tanımlanmış bir kavramdır. Bir algoritma rastgele seçilirse, çalışma süresi de rastgele olur, yani çalışma süresinin beklenen değerini tanımlayabiliriz.

Bilinen bir örnek Quicksort'dur: pivotları rastgele seçersek, en kötü çalışma süresi O (n ^ 2) kalsa bile, beklenen çalışma süresinin O (n log n) olduğunu kanıtlayabiliriz. Rasgeleleştirmenin çok güçlü olduğu bir örnek en küçük çevreleyen daire problemidir: en kötü durum çalışma süresi O (n ^ 3), ancak beklenti içinde çalışma süresi sadece O (n) olan basit bir algoritma vardır.

Ortalama çalışma süresi genellikle bir algoritmanın 'çoğu girdi için' davranışı hakkında konuşurken kullanılır. Rastgele bir girdi oluşturmanın bir yolunu tanımlıyoruz, örneğin, bir diziyi rastgele sayılarla dolduruyoruz veya 1'den n'ye kadar sayılara rastgele izin veriyoruz (bu yüzden çoğaltılmıyor) veya bir bozuk para çeviriyoruz ve azalan veya artan bir dizi alıyoruz sayılar. Girdilerin rasgele dağılımı için bir algoritmanın ortalama çalışma süresi, o zaman algoritmanın beklenen çalışma süresidir (bu durumda algoritma rasgele seçilemez, ancak girdi).

Örnek olarak: İlk satırlarda iyi işleyen algoritmaların var olduğu geometrik problemler var, siz girdi satırlarını dağıtmanın çok garip bir yolunu bulana kadar. Çizgilerin rastgele dağıldığını varsayarsanız, bu garip senaryoların oluşma olasılığı çok düşük olabilir, bu nedenle algoritmanız iyi olur.

Kontrast: beklenen çalışma süresi, bir algoritmanın 'kötü şansınız yoksa' nasıl performans gösterdiğiyle ilgilidir - aynı algoritmayı aynı girişte yeniden denemek, ancak farklı rastgele seçimlerle, çok daha hızlı çözülmesine neden olabilir. Ortalama çalışma süresi, bir algoritmanın 'çoğu giriş için' ne kadar iyi performans gösterdiğinden bahseder - aynı algoritmayı aynı girişte tekrar denemek size yardımcı olmaz (belki de algoritmanın rastgele seçilmesi dışında).

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.