it-swarm.dev

Bir karma ve sözlük arasındaki fark nedir?

Hash ve Dictionary arasındaki fark nedir?

Komut dosyası arka planından geldiğimde, benzer olduklarını hissediyorum, ancak tam farkları öğrenmek istedim. Google çalışanları bana pek yardımcı olmadı.

48
Sairam

Hash, programcının arayüzü uygulama ile karıştırdığı ( ve = tam adı yazmak için çok tembeldi, yani bir kısaltmaya başvurmak yerine HashTable, Hash).

Dictionary arayüzün “doğru” adı ((= - ADT ), yani (genellikle benzersiz) anahtarları (mutlaka benzersiz olmayan) değerlerle eşleyen ilişkilendirilebilir bir kapsayıcı.

Karma tablo one oldukça iyi erişim özellikleri sağlayan (çalışma zamanı açısından) böyle bir sözlüğün olası uygulamasıdır ve bu nedenle genellikle varsayılan uygulamadır.

Böyle bir uygulamanın iki önemli özelliği vardır:

  1. anahtarlar hashable ve eşitlik karşılaştırılabilir olmalı olmalıdır.
  2. girişler sözlükte belirli bir sırada görünmez.

(Bir anahtarın yıkanabilir olması, daha sonra bir dizide dizin olarak kullanılan bir anahtardan sayısal bir değer hesaplayabileceğimiz anlamına gelir.)

Sözlük veri yapısının tuşlara ordering empoze eden alternatif uygulamalar vardır - buna genellikle a sıralanmış sözlük denir (ve genellikle başka verimli uygulamalar olsa da bir arama ağacı).


Özetlemek gerekirse: a sözlük anahtarları değerlerle eşleştiren bir ADT'dir. Bu ADT'nin hash tablosu olan birkaç olası uygulaması vardır. Hash yanlış adlandırmadır, ancak bağlamda karma tablo olarak uygulanan bir sözlüğe eşdeğerdir.

94
Konrad Rudolph

"Sözlük" kavramın adıdır. Bir karma tablo olası bir uygulamadır.

8
dan_waterworth

Sözlük, hızlı aramalar/eklemeler için kullanılan herhangi bir veri yapısı uygulaması için verilen toplu terimdir. Bu, karma tablo, atlama listeleri, rb ağacı vb.

7
aufather

A sözlük, bir ilişkilendirilebilir dizi öğesinin doğrudan içindeki değere başvurmak için bir anahtar kullanır.

yani (KEY => VALUE)

A hash daha çok bellekte (veya daha kolay bir dizi) hesaplamak için hash işlevi kullanan bir hash tablos olarak tanımlanır. değer olacaktır. Karma, TUŞ'u girdi olarak alır ve çıktı olarak bir değer verir. Ardından bu değeri bellek veya dizi dizinine takın.

yani KEY => HASH FUNCTION => VALUE

Sanırım biri doğrudan diğeri değil. Karma işlevleri de mükemmel olmayabilir ve bazen yanlış değere başvuran bir dizin sağlayabilir. Ancak bu düzeltilebilir.

Bakmak için en iyi yer: Wikipedia ( ilişkisel dizi ve karma tablosu )

5
Ross