Jawaban:
Hash
adalah struktur data dengan nama yang sangat buruk di mana programmer telah membingungkan antarmuka dengan implementasi ( dan terlalu malas untuk menulis nama lengkap, yaitu HashTable
alih-alih menggunakan singkatan, Hash
).
Dictionary
adalah nama "benar" dari antarmuka (= ADT ), yaitu wadah asosiatif yang memetakan kunci (biasanya unik) ke nilai (tidak harus unik).
Tabel hash adalah salah satu implementasi yang memungkinkan dari kamus yang menyediakan karakteristik akses yang cukup baik (dalam hal runtime) dan oleh karena itu seringkali merupakan implementasi standar.
Implementasi semacam itu memiliki dua sifat penting:
(Untuk kunci yang bisa hashable berarti kita dapat menghitung nilai numerik dari kunci yang selanjutnya digunakan sebagai indeks dalam array.)
Terdapat implementasi alternatif dari struktur data kamus yang memaksakan pemesanan pada kunci - ini sering disebut kamus yang diurutkan (dan biasanya diimplementasikan dalam istilah pohon pencarian, meskipun ada implementasi efisien lainnya).
Untuk meringkas: kamus adalah ADT yang memetakan kunci nilai. Ada beberapa kemungkinan implementasi ADT ini, di mana tabel hash adalah satu. Hash
adalah nama yang salah tetapi dalam konteks itu setara dengan kamus yang diimplementasikan dalam hal tabel hash.
Hash
kelas dengan tabel hash, karena Ruby 1.9 Hash
mempertahankan perintah penyisipan sementara tabel hash tidak. Jadi, di Ruby 1.9, namanya Hash
bahkan tidak mencerminkan implementasi lagi.
"Kamus" adalah nama konsep. Hashtable adalah implementasi yang mungkin.
Kamus adalah istilah kolektif yang diberikan untuk implementasi struktur data apa pun yang digunakan untuk pencarian / penyisipan cepat. Ini dapat dicapai / diimplementasikan dengan menggunakan berbagai struktur data seperti tabel hash, daftar lompatan, rb tree dll. Tabel hash adalah struktur data spesifik yang berguna untuk banyak tujuan termasuk mengimplementasikan kamus.
Sebuah kamus menggunakan kunci untuk referensi nilai langsung di dalam sebuah array asosiatif .
yaitu (KEY => VALUE)
Sebuah hash lebih sering digambarkan sebagai tabel hash yang menggunakan fungsi hash untuk menghitung posisi dalam memori (atau lebih mudah array) di mana nilai akan. Hash akan mengambil KUNCI sebagai input dan memberikan nilai sebagai output. Kemudian colokkan nilai itu ke dalam memori atau indeks array.
yaitu KEY => HASH FUNCTION => VALUE
Saya kira satu langsung sedangkan yang lain tidak. Fungsi hash mungkin juga tidak sempurna dan terkadang menyediakan indeks yang merujuk nilai yang salah. Tapi itu bisa diperbaiki.
Tempat terbaik untuk melihat: Wikipedia ( array asosiatif dan tabel hash )
unordered_map
untuk menunjukkan apa yang mereka lakukan dan bukan apa yang mereka lakukan.