SORU
28 HAZİRAN 2009, Pazar


Java hashmap gerçekten O(1)?

Re Java hashmaps ve O(1) arama yaptıkları zaman ÇOK ilginç bazı iddialar gördüm. Biri bunun neden böyle olduğunu açıklayabilir mi? Bu hashmaps kadar almış olduğum karma algoritmalar herhangi birinden çok farklı olmadığı sürece, her zaman çarpışmalar içeren bir veri kümesi bulunmalıdır.

Bu durumda, arama O(1) yerine O(n) olur.

Birinin olup olmadığını açıklayabilirOnlar bunu başarmak nasıl O(1) ve öyleyse?

CEVAP
28 HAZİRAN 2009, Pazar


Bir HashMap, belirli bir özelliği, diyelim ki, dengeli ağaçlar aksine, onun davranış olasılıklı olmasıdır. Bu durumda en kötü durum olasılığı açısından karmaşıklığı hakkında konuşmak genellikle en yararlı olayını meydana gelen olacaktır. Karma bir harita için, ne dersin tam göster olur saygı ile bir çarpışma durumunda. Bir çarpışma çok kolay tahmin etmektir.

pçarpışma= n / kapasite

Elemanları bile mütevazı bir sayı ile karma bir harita en az bir çarpışma yaşama olasılığı oldukça çok. Büyük O gösterimi bir şey daha zorlayıcı bize gidelim. Herhangi bir keyfi sabit k için inceleyin.

O(n) = O(k) * n)

Bu özellik, karma harita performansını artırmak için kullanabiliriz. En fazla 2 çarpışma olasılığı düşünmemiz yerine.

pçarpışma x 2= (n / kapasite)2

Bu çok daha düşüktür. Ekstra bir çarpışma işleme maliyeti Büyük O performans için önemsiz olduğundan, aslında algoritma değiştirmeden performansını artırmak için bir yol bulduk! Bu generalzie edebiliriz

pçarpışma x k= (n / kapasite)k

Ve şimdi hesap bizden daha çarpışmalar bazı rasgele sayı göz ardı etmek ve yok denecek kadar sonunda daha küçük çarpışma olasılığı edebiliriz. Tüm algoritma gerçek uygulama değiştirmeden doğru k seçerek keyfi minik bir seviyeye olasılık, sen de yapabilirsin.

Karma-göster O(1) erişimi olduğunu söyleyerek bu konuyu konuşuyoruzyüksek olasılıkla

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Google Developers

    Google Devel

    23 AĞUSTOS 2007
  • RiceBunny

    RiceBunny

    16 ŞUBAT 2006
  • RobertDuskin

    RobertDuskin

    12 HAZİRAN 2008