1. Trang chủ
  2. » Tất cả

Hàm băm –bảng băm btth11 hashtable

3 3 0

Đang tải... (xem toàn văn)

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 3
Dung lượng 234,07 KB

Nội dung

ĐH KHTN TP HCM / Khoa CNTT Cấu trúc dữ liệu và giải thuật 1 HƯỚNG DẪN THỰC HÀNH HÀM BĂM – BẢNG BĂM I Mục tiêu – Hiểu rõ bản chất của hàm băm và bảng băm – Vận dụng được các phương pháp xử lý đụng độ –[.]

ĐH KHTN TP.HCM / Khoa CNTT HƯỚNG DẪN THỰC HÀNH HÀM BĂM – BẢNG BĂM I – – – II Mục tiêu Hiểu rõ chất hàm băm bảng băm Vận dụng phương pháp xử lý đụng độ Viết chương trình tra từ điển đơn giản áp dụng phương pháp băm Qui định nộp - Sinh viên nộp tập tin nén, có tên .zip .rar chứa source - - code báo cáo chương trình Sinh viên nộp kèm file báo cáo ghi mức độ hồn thành cơng việc mình, liệu mà test Tất tập lập trình theo command line (tham số dòng lệnh) Kiến trúc thư mục nộp: o MSSV ▪ MSSV_BT1: • Source: chứa file cpp • Header: chứa file h • Test case: chứa file input để test thử • … ▪ MSSV_BT2: … Môi trường làm việc: Visual Studio 2015 môi trường tương đương Không sử dụng hàm bị lỗ hổng bảo mật gets, … Hạn nộp: xem link Moodle Bài giống hay nộp file rác điểm MƠN HỌC Nội dung Chương trình tra từ điển đơn giản Cho trước từ điển Anh-Việt (là tập tin English-Vietnamese Dictionary.dat đính kèm) gồm danh sách từ tiếng Anh nghĩa tiếng Việt tương ứng được lưu theo cấu trúc : Mỗi cặp nằm dòng tập tin từ điển Sinh viên yêu cầu viết chương trình tra từ điển áp dụng phương pháp băm Cấu trúc liệu giải thuật ĐH KHTN TP.HCM / Khoa CNTT Các bước thực Tạo bảng băm T có kích thước M phần tử để lưu địa khóa Tham số M thành phần liệu nhập Chọn hàm băm h(k) = k mod M để biến khóa k thành địa bảng băm Như vậy, giá trị băm h(k) thuộc vào tập hợp { 0, 1, …, M – } gồm số nguyên không âm nhỏ M Để băm khóa từ tiếng Anh dạng chuỗi ký tự trước hết ta phải chuyển đổi chúng thành số nguyên Cách thức thường chọn dựa mã ASCII ký tự chuỗi Bảng mã ASCII gồm 128 ký tự đánh số từ đến 127, chuỗi ký tự xem số hệ đếm số 128 Áp dụng phương pháp chuyển đổi số hệ đếm sang số hệ đếm số 10, chuyển đổi chuỗi ký tự thành số nguyên Chẳng hạn, chuỗi “NOTE” chuyển thành số nguyên sau: “NOTE” → „N‟.1283 + „O‟.1282 + „T‟.128 + „E‟ = 78.1283 + 79.1282 + 84.128 + 69 Vấn đề nảy sinh với cách chuyển đổi với chuỗi ký tự tương đối dài, kết nhận số nguyên cực lớn vượt khả biểu diễn máy tính dẫn đến tượng tràn số Mặc dù vậy, tình ta tính giá trị băm nhờ lợi dụng tính chất hàm mod: Thay chuyển chuỗi thành số mod cho M ta mod cho M sau bước cộng nhân Bằng cách ta làm việc với số nguyên nhỏ M tượng bùng nổ kích thước số khơng xảy unsigned int hash(unsigned char *key, unsigned int M) { // Viết mã nguồn vào } Đọc từ w tập tin từ điển, tính giá trị băm từ viết hàm insert( ) để chèn w vào bảng T Nếu xảy đụng độ giải phương pháp: (1) Nối kết trực tiếp (Lưu ý: với phương pháp ô bảng băm lưu địa phần tử danh sách liên kết) (2) Dò tuyến tính (3) Dị bậc (4) Băm kép Viết hàm lookup( ) để trả nghĩa tiếng Việt từ tiếng Anh - Cấu trúc liệu giải thuật ĐH KHTN TP.HCM / Khoa CNTT Tham số dòng lệnh: MSSV.exe x y input.txt output.txt Trong đó, x tham số M (kích thước bảng băm) y mang giá trị từ đến số thứ tự phương pháp giải đụng độ Ví dụ: 151234.exe 101 input.txt output.txt Ý nghĩa: Tra nghĩa từ tiếng Anh tập tin input.txt ghi nghĩa tiếng Việt tương ứng vào tập tin output.txt Các từ từ điển ánh xạ vào bảng băm có kích thước M = 101 thông qua hàm băm h(k) = k mod M = k mod 101 xảy đụng độ sử dụng phương pháp thứ dị tuyến tính để giải Định dạng tập tin nhập: Mỗi từ ghi dòng số lượng từ trước (sinh viên tự xác định số lượng từ) Định dạng tập tin xuất: Gồm n dòng với n số từ tập tin nhập Nếu từ thứ i (nằm dòng thứ i) tập tin nhập có từ điển dịng thứ i tập tin xuất nghĩa tiếng Việt tương ứng từ đó, khơng có từ điển dịng chuỗi “KHONG TIM THAY” Ví dụ: input.txt Apple Banana asdfg Mango Strawberry output.txt qua tao qua chuoi KHONG TIM THAY qua xoai qua dau tay HẾT Cấu trúc liệu giải thuật ... bước thực Tạo bảng băm T có kích thước M phần tử để lưu địa khóa Tham số M thành phần liệu nhập Chọn hàm băm h(k) = k mod M để biến khóa k thành địa bảng băm Như vậy, giá trị băm h(k) thuộc vào... tập tin từ điển, tính giá trị băm từ viết hàm insert( ) để chèn w vào bảng T Nếu xảy đụng độ giải phương pháp: (1) Nối kết trực tiếp (Lưu ý: với phương pháp ô bảng băm lưu địa phần tử danh sách... tiếng Việt tương ứng vào tập tin output.txt Các từ từ điển ánh xạ vào bảng băm có kích thước M = 101 thông qua hàm băm h(k) = k mod M = k mod 101 xảy đụng độ sử dụng phương pháp thứ dị tuyến

Ngày đăng: 25/03/2023, 13:08

w