Saya mengambil kelas algoritma di Coursera. Profesor dalam video tentang tabel hash mengatakan itu
Apa yang benar adalah bahwa untuk data non-patologis, Anda akan mendapatkan operasi waktu konstan dalam tabel hash yang diterapkan dengan benar.
Apa yang dimaksud dengan "data non-patologis"? Bisakah Anda memberikan beberapa contoh?
sumber
Data patologis adalah data yang akan membuat algoritma berkinerja buruk. Untuk tabel hash, data patologis adalah data yang menyebabkan tabrakan. Itu tentu saja tergantung pada fungsi hash yang digunakan.
Misalnya, jika fungsi hash Anda menambahkan karakter bersama-sama:
hash("abcd") = 'a' + 'b' + 'c' + 'd'
. Kemudian data patologis terlihat seperti:{"abcd", "dcba", "cbda", ...}
. Permutasi"abcd"
hash akan ke posisi yang sama sehingga Anda akan berakhir dengan daftar tertaut yang Anda coba hindari di tempat pertama.Data non-patologis adalah data yang tidak patologis.
sumber
cara lain untuk berpikir tentang ini: kunci hash seperti "tempat sampah" terpisah yang berisi data. orang akan berharap / berharap bahwa data didistribusikan secara merata di antara semua tempat sampah, "seimbang". untuk data nonpathologis setiap nampan memiliki / berisi jumlah data yang kira-kira sama. jika datanya patologis (wrt key hashing algoritme), semuanya "menumpuk" dalam lebih sedikit nampan, dan beberapa nampan memiliki jauh lebih sedikit. ini tidak efisien karena waktu pencarian meningkat (dan efisiensi menurun / menyatu dengan pencarian daftar yang tidak disortir) ketika tempat sampah diisi lebih besar. perhatikan bahwa hanya mengubah algoritma hashing kunci dapat mengubah data dari "patologis" menjadi "non patologis" atau sebaliknya, karenanya pentingnya algoritma hashing.
juga ada banyak algoritma lain di mana perbedaan "patologis dan non-patologis" dapat diterapkan, dengan pada dasarnya data "patologis" membuat algoritma bekerja dalam kasus yang lebih buruk (misalnya konsep ini juga digunakan dengan algoritma pengurutan). seperti yang Anda lihat itu adalah konsep statistik. juga untuk masalah yang sama, data yang "patologis" untuk satu algoritma mungkin tidak "patologis" untuk yang lain. dll.
sumber