“Patolojik olmayan veriler” ne anlama geliyor?


14

Coursera'da bir algoritma dersi aldım. Videoda hash tablolarıyla ilgili profesör

Doğru olan, patolojik olmayan veriler için, düzgün bir şekilde uygulanan bir karma tabloda sabit zamanlı işlemler elde edeceğinizdir.

"Patolojik olmayan veriler" ne anlama geliyor? Bazı örnekler verebilir misiniz?

Yanıtlar:


15

Patolojik verilerin, amaçladığınız hesaplama için işleri bir şekilde yanlış yapan veriler olduğu varsayılır. Gerçek kullanımlarda yeterince nadir olduğunda patolojik olarak adlandırılabilir , böylece işler çoğu zaman iyi çalışır. Bu bazen matematiksel olarak daha kesin hale getirilebilir (örneğin olasılıklarla), ancak patolojik sözcüğün genellikle gayri resmi olarak kullanılması.

Örneğin, domates salatası ve ketçap, patolojik insanlar dışında mükemmel bir besindir, yani domateslere alerjisi olan kişiler. Aslında bazı durumlarda öldürebilir. Ancak domateslere alerjisi olan insanlar çok nadirdir, bu nedenle patolojik durumlar dışında domates yemeklerinin mükemmel olduğu düşünülür.

Optimal olanın üstünde en kötü durum karmaşıklığına sahip olmakla birlikte, ortalama olarak en kötü durum optimal algoritmasından daha iyi veya daha iyi olan birçok algoritma vardır. Eğer varsa quicksort karşılaştırmak ve birleştirme sıralaması , çabuk zamanı birleştirme sıralaması ise en kötü durumda. Ancak insanlar genellikle hızlı sıralama kullanır, çünkü ikisi de ortalama zamanıdır ve alan karmaşıklığı hızlı sıralama için ve birleştirme sıralaması için .O(n2)O(nlgn)O(nlgn)O(lgn)O(n)

Quicksort'un ortalama olarak iyi olması, zaman karmaşıklığının aslında sadece patolojik (kötü ama nadir görülen) vakalarda ortaya çıkmasıyla ilişkilendirilebilir.O(n2)


1
Sıralamada bir yana, hızlı sıralama olmasa da, birleştirme işleminin sabit olması da önemli olabilir .
wchargin

11

Patolojik veriler, algoritmanın kötü performans göstermesini sağlayacak verilerdir. Karma tablolar için patolojik veriler, çarpışmalara neden olan verilerdir. Bu elbette kullanılan hash fonksiyonuna bağlıdır.

Örneğin, hash fonksiyonu bir arada karakterleri ekler: hash("abcd") = 'a' + 'b' + 'c' + 'd'. Sonra patolojik veriler şöyle görünür:

{"abcd", "dcba", "cbda", ...}. Herhangi bir "abcd"irade permütasyonu aynı konuma getirilir, böylece ilk etapta kaçınmaya çalıştığınız bağlantılı bir listeyle sonuçlanırsınız.

Patolojik olmayan veriler patolojik olmayan verilerdir.


-1

Bunu düşünmenin başka bir yolu: karma anahtarları, verileri içeren ayrı "kutular" gibidir. verinin "dengeli" tüm bölmeler arasında eşit bir şekilde dağılması beklenir / umulur. patolojik olmayan veriler için her bölme kabaca aynı miktarda veri içerir / içerir. eğer veriler patolojik ise (wrt anahtar karma algoritması), daha az sayıda bölmede "birikir" ve bazı bölmelerin çok daha azı vardır. çöp kutuları daha büyük doldurulduğunda arama süresi artar (ve verim ayrılmamış bir listeye bakma süresi azalır / buna yaklaşır). sadece anahtar karma algoritmasının değiştirilmesinin, verileri "patolojik" olandan "patolojik olmayan" ya da tam tersi hale getirebileceğini, dolayısıyla karma algoritmanın önemini not edin.

ayrıca "yolbilimsel-patolojik olmayan" ayrımının uygulanabileceği birçok temel algoritma vardır, temelde "patolojik" veriler algoritmayı daha kötü durumda gerçekleştirir (örneğin, kavram aynı zamanda sıralama algoritmaları ile birlikte kullanılır). gördüğünüz gibi istatistiksel bir kavram. aynı problem için, bir algoritma için "patolojik" olan veri bir diğeri için "yolbilimsel" olmayabilir. vb.

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.