Các so sánh lý thuyết

Một phần của tài liệu Cấu trúc dữ liệu trong C ++ - Chương 13 (Trang 30 - 31)

Hình 12.13 cho thấy các giá trị của các biểu thức trên với các trị khác nhau của hệ số tải λ.

Chúng ta có thể thấy được một vài kết luận từ bảng này. Trước hết, rõ ràng là bảng băm nối kết cần ít lần thử hơn bảng băm địa chỉ mở. Mặt khác, việc duyệt các danh sách liên kết thường chậm hơn là truy xuất mảng, điều này làm giảm ưu điểm của bảng băm nối kết, nhất là trong những trường hợp mà việc so sánh khóa có thể được thực hiện rất nhanh. Phương pháp nối kết trở nên hợp lý khi các phần tử có kích thước lớn và thời gian cần để so sánh các khóa là nhiều. Ngoài ra, nó còn tỏ ra có lợi thế khi việc tìm kiếm không thành công thường xảy ra, do những lúc quá trình tìm kiếm gặp được một danh sách rỗng hoặc một danh sách thật ngắn và có thể kết thúc nhanh với rất ít lần so sánh khóa.

Đối với việc tìm kiếm thành công trong bảng băm địa chỉ mở, phương pháp thử tuyến tính đơn giản không làm chậm quá trình tìm kiếm đi nhiều so với các phương pháp giải quyết đụng độ phức tạp khác, ít nhất là cho đến khi bảng gần

như đầy. Tuy nhiên, đối với việc tìm kiếm không thành công, hiện tượng gom tụ nhanh chóng làm cho phép thử tuyến tính suy thoái thành quá trình tìm kiếm tuần tự. Vì thế, chúng ta có thể kết luận rằng nếu việc tìm kiếm thường thành công, và hệ số tải vừa phải, thì phép thử tuyến tính sẽ đáp ứng được; còn trong những trường hợp khác, nên sử dụng những phương pháp giải quyết đụng độ khác như phương pháp thử bậc hai chẳng hạn.

Một phần của tài liệu Cấu trúc dữ liệu trong C ++ - Chương 13 (Trang 30 - 31)

Tải bản đầy đủ (PDF)

(34 trang)