Apa yang dimaksud dengan "data non-patologis"?

14

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?

Alexander Myshov
sumber

Jawaban:

15

Data patologis seharusnya merupakan data yang membuat kesalahan dalam beberapa cara untuk perhitungan yang Anda inginkan. Ini bisa disebut patologis ketika cukup langka dalam penggunaan aktual, sehingga segala sesuatunya bekerja OK sebagian besar waktu. Ini kadang-kadang dapat dibuat secara matematis lebih tepat (misalnya dengan probabilitas), tetapi penggunaan kata patologis sering informal.

Sebagai contoh, salad tomat dan saus tomat adalah makanan yang sangat baik, kecuali untuk orang-orang yang patologis, artinya orang-orang yang alergi terhadap tomat. Ini sebenarnya dapat membunuh dalam beberapa kasus. Tetapi orang yang alergi terhadap tomat sangat jarang sehingga hidangan tomat dianggap sangat baik, kecuali dalam kasus patologis.

Ada banyak algoritma yang, walaupun memiliki kompleksitas kasus terburuk di atas yang optimal, rata-rata sama bagus atau lebih baik daripada algoritma optimal terburuk. Jika Anda membandingkan quicksort dan merge sort , quicksort adalah waktu sedangkan sort merge adalah O ( n lg n ) dalam kasus terburuk. Tetapi orang akan sering menggunakan quicksort, karena mereka berdua adalah waktu O ( n lg n ) rata-rata, dan kompleksitas ruang adalah O ( lg n ) untuk quicksort dan O ( n )HAI(n2)HAI(nlgn)HAI(nlgn)HAI(lgn)HAI(n) untuk semacam penggabungan.

HAI(n2)

babou
sumber
1
Selain jenis, penting juga bahwa mergesort stabil sedangkan quicksort tidak.
wchargin
11

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.

saadtaame
sumber
-1

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.

vzn
sumber