Sekarang sekitar 4 tahun pengembangan yang saya gunakan, dengar, bicarakan, dan terapkan tabel hash dan fungsi hash. Tapi aku benar-benar tidak pernah mengerti mengapa ini disebut hash?
Saya ingat hari-hari pertama saya memulai pemrograman, istilah ini baik untuk saya istilah yang rumit . Saya tidak pernah tahu apa itu, berdasarkan namanya . Saya hanya memahami secara eksperimental apa yang dilakukannya dan mengapa serta kapan kita harus menggunakannya .
Namun, saya kadang-kadang masih mencoba mencari tahu mengapa itu disebut hash . Saya tidak punya masalah dengan tabel atau fungsi dan sejujurnya, mereka cukup deduktif, istilah yang rasional. Namun, saya pikir kata yang lebih baik dapat digunakan daripada hash, seperti kunci , atau keunikan . Jangan kunci tabel atau tabel keunikan .
Menurut kamus saya, hash berarti:
- Hidangan kentang goreng dan daging (sangat tidak relevan)
- # simbol (tanda nomor AKA, tanda pound, dll.) (masih tidak relevan, mungkin hanya salah tandatangan)
- Terapkan algoritma ke string karakter (masih tidak ada hubungannya dengan keunikan , yang merupakan fitur paling penting dari tabel hash)
- Potong makanan
- Istilah lain untuk ganja
Adakah yang tahu mengapa ini disebut hash?
Jawaban:
Menurut wikipedia, ini merujuk pada fungsi hash . Jika Anda ingin melangkah lebih jauh, halaman wiki untuk fungsi hash mengatakan bahwa penggunaan kata "hash" dalam fungsi hash berasal seperti:
sumber
Di Perancis, tabel hash disebut "table de hachage", kata kerja yang terkait "hacher" berarti memotong / memotong daging (kebanyakan makanan). Kata kerjanya
to hash
memiliki arti yang sama dalam bahasa Inggris.Jadi seperti yang telah ditunjukkan oleh orang lain itu disebut hash, karena Anda memotong input Anda yang Anda potong-potong di berbagai tempat (entri tabel Anda).
sumber
Nomor 3 ada hubungannya dengan itu. Dari Wikipedia :
Jadi tabel hash tidak benar-benar menyimpan nilai berdasarkan kunci; itu menyimpan nilai berdasarkan versi hash kunci itu.
sumber
tabel hash disebut seperti itu karena menggunakan kode hash dan itu terkait dengan "memotong makanan".
Pikirkan seperti ini - Anda mengambil objek cantik yang bagus, seperti buah, lalu hash sehingga mulai terlihat seperti yang lain - hanya angka - tidak ada lagi struktur di dalamnya. Sepotong "potong makanan" digunakan dalam tabel hash untuk mengetahui objek cantik Anda.
Kode hash menemukan ember di tabel tempat objek cantik Anda berada di perusahaan kecil orang lain dengan kode hash yang sama. Di dalam perusahaan kecil ini , objek dipandang menggunakan pemeriksaan kesetaraan - yang diharapkan jauh lebih lambat daripada pencarian hash tapi itu bukan masalah besar karena hanya ada beberapa (sebagian besar objek lain sudah diabaikan berkat hash cepat) .
sumber
Hashing (seperti memotong menjadi potongan-potongan kecil, merobek-robek, dll.) Mengambil input (makanan atau kadang-kadang supervillains) dan mengubahnya menjadi output yang relatif homogen. Yaitu tidak peduli apa yang Anda miliki di awal, pada akhirnya Anda hanya memiliki hash. Dan sesendok hash sekitar sama bermanfaatnya dengan semua hash dalam menentukan, apa inputnya (dengan asumsi hashing machine Anda hashes dengan baik).
Jadi hashing dapat mengurangi objek yang dapat dimakan atau jahat menjadi sesendok hash, di mana dua objek yang berbeda menghasilkan hash yang berbeda, sedangkan dua objek yang sama menghasilkan hash yang sama. Yang berarti jika dua supervillains jatuh ke mesin hashing Anda, cukup membandingkan hash mereka untuk menentukan apakah satu adalah tiruan dari yang lain.
Dalam beberapa hal fungsi hashing dalam ilmu komputer agak mirip. Mereka mengambil seluruh input dari ukuran dan semantik yang berbeda, dan - sangat sederhana - mereka hanya memotongnya menjadi potongan-potongan dan mencampurnya di sekitar dan memotong urutan yang dihasilkan kembali menjadi potongan-potongan dan mencampurnya di sekitar dan seterusnya. Pada akhirnya Anda memiliki sesendok (n byte) dari input yang Anda hash.
sumber