SORU
8 NİSAN 2009, ÇARŞAMBA


Nasıl karma bir tablo işe yarıyor mu?

Benim gibi bir ahmak için düz İngilizce bir karma tablo nasıl çalıştığı hakkında bir açıklama arıyorum! Örneğin anahtarı alır biliyorum, hesaplar karma (nasıl?) ve sonra gerçekleştirir değeri saklanır, ama bu benim bilgi vermiyor nerede bu dizi içinde bulunduğu çalışmak için modül falan.

Herkes süreci açıklamak olabilir.

Düzenleme:Özellikle hashcodes, ama karma tablo nasıl çalıştığı hakkında genel bir bakış nasıl hesaplandığını hakkında aramıyorum.

CEVAP
8 NİSAN 2009, ÇARŞAMBA


İşte uzun lafın kısası bir açıklama.

Hadi kitap kütüphane doldurmak istiyorum ve sadece orada bunları kabul, ama onlara ihtiyacınız olduğunda bunları kolayca tekrar bulmak mümkün olmak istiyorum.

Bu yüzden, eğer bir kitap okumak isteyen kişi kitabın adı ve Önyükleme için tam adını biliyorsa, o zaman o sürer hepsi bu siz karar verin. Başlığı ile, kişi, kütüphanecinin yardımıyla kitabı kolay ve hızlı bir şekilde gitmek gerekir.

Bunu nasıl yapabilirsin? Açıkçası her kitabı nereye koyduğunuzu liste filan devam edebilirsin, ama o zaman kütüphane arama listesi arama gerekir aynı sorun var. Verilen listede arama için daha küçük ve daha kolay olurdu, ama yine de diğer kütüphane bir ucu (veya liste) sırayla aramak istemiyorum.

İstediğiniz bir şey ile başlık kitabı mı doğru yerde anda, bu yüzden tüm yapmanız gereken sadece yürüyüş için doğru raf ve al kitabı.

Ama bu nasıl yapılabilir? Sen doldurduğunuzda kitaplığı doldurmak ve bir sürü iş kütüphane kadar zaman sağduyu biraz ile.

Sadece bir uçtan diğerine kitaplığı doldurmak için başlamak yerine, zekice bir yöntem bulmak. Kitabın adı alırsın, raf sayıda tükürüyor olan küçük bir bilgisayar programı aracılığıyla çalıştırmak ve o rafta bir slot numarası. Bu kitap değil.

Güzellik bu program daha sonra, ne zaman bir kişi geri gelirse okuma kitabı, yem başlığı ile programı bir kez daha, ve geri aynı raf sayısı ve slot sayı olduğunu aslında verilen, ve bu kitapta yer almaktadır.

Program, diğerleri var zaten bahsedilen adlı karma algoritma veya hash hesaplama ve genelde işe yarar alarak verileri fed içine (başlık kitabın bu durumda) ve hesaplar bir dizi.

Basitlik için, sadece bir dizi içine her harf ve Sembol dönüştürür ve onları toplayan söylüyorlar. Gerçekte çok daha karmaşık, ama bu konuyu şimdilik bırakalım.

Böyle bir algoritma güzelliği aynı giriş tekrar tekrar beslersen, aynı sayıyı çıkartırken her zaman koruyacaktır.

Tamam, bu yüzden bir hash tablosu nasıl çalışıyor temelde.

Teknik şeyler izler.

Birinci boyutu var. Genellikle, bu tür karma bir algoritma çıktı bazı çok sayıda, genellikle çok tablo var boşluk çok daha büyük bir dizi içinde. Örneğin, diyelim ki kütüphanede tam bir milyon kitap için bir oda var demek. Hash hesaplama çıkışı çok yüksek olan 0 bir milyar aralığında olabilir.

Ne yapacağız Peki? Kullandığımız bir şey aradı modülü hesaplama, hangi temelde diyor ki, eğer saydın numarasını istediğini (yani bir milyar numarası) ama burada kalmak istediğine içinde çok daha küçük aralığı, her seferinde sınırı daha küçük aralığı başladı 0 ama seni takip etmek ne kadar büyük sıra geldin.

Karma algoritmanın çıkış 0-20 aralığında ve belirli bir başlık değeri 17 olsun " derler. Kütüphane boyutu sadece 7 kitap ise, tekrar başlatın 7, geldiğinde 1, 2, 3, 4, 5, 6, Kont ve 0. Beri ihtiyacımız sayısı 17 defa, bizde 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, 4, 5, 6, 0, 1, 2, 3, ve son Sayı 3.

Modül hesaplama böyle yapılmaz tabii ki, bölünme ve bir kalanı ile bitti. 7 ile 17 bölünmesi kalan 3 (7 14 17 2 defa gider ve 17 ve 14 arasındaki fark 3).

Böylece, yuvaya kitap 3 numara koymak.

Bu bir sonraki soruna yol açar. Çarpışmalar. Beri algoritması vardır hiçbir şekilde alanı dışında kitapları olan ve dolgu kütüphane tam olarak (veya karma tablo) olacak kaçınılmaz sona hesaplama bir kaç kez kullanıldı önce. Raf ve kitap koymak istediğiniz slot sayısı geldiğinde kütüphane anlamda, zaten bir kitap var.

Çeşitli çarpışma işleme yöntemleri var, dahil olmak üzere çalışan veri içine başka bir hesaplama almak başka bir yerde bu tablo, ya da sadece bulmak için bir alanı kapatmak için sendin verilen (yani hemen yanında bir önceki kitabı). Bu kitap daha sonra bulmaya çalıştığınızda yapmak için biraz araştırma anlamına gelir, ama sadece kitaplığı bir uçtan başlayarak daha hala daha iyi.

Son olarak, bir noktada, kütüphane izin verdiğinden daha kütüphaneye daha fazla kitap koymak isteyebilirsiniz. Diğer bir deyişle, daha büyük bir kütüphane inşa etmek gerekir. Beri tam olarak hangi noktada kütüphane hesaplanırken kullanarak kesin ve geçerli boyutu Kütüphanesi, gider takip edersen, yeniden kütüphane olabilir olmam için yeni noktalar bulmak için tüm kitaplar bu yana hesaplama yaptığını bulmak için noktalar değişti.

Bu açıklama biraz daha aşağı kova ve işlevleri:) daha Dünya'ya umarım

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • Bokeh

    Bokeh

    9 HAZİRAN 2014
  • DrePwn

    DrePwn

    22 Temmuz 2011
  • Jucyber Tutoriais

    Jucyber Tuto

    8 EYLÜL 2009