Đánh giá :

Một phần của tài liệu Bài giảng cấu trúc dữ liệu (Trang 76 - 80)

4.3 .Xung đột và cách xử lý xung đột

4.3.4. Đánh giá :

Khi xây dựng bảng băm nếu chúng ta biết trƣớc số mục dữ liệu sẽ đƣợc chèn vào bảng thì mô hình băm theo địa chỉ mở với hệ số tải < ½ sẽ cho kết quả tốt nhất.

Mặt khác nếu chúng ta không biết trƣớc có bao nhiêu mục dữ liệu đƣợc chèn vào bảng thì phƣơng pháp móc nối trực tiếp có hiệu quả hơn.

72

Khi hệ số tải tăng sử dụng phƣơng pháp băm theo địa chỉ mở sẽ gặp những bất lợi chủ yếu trong thực thi. Nhƣng đối với phƣơng pháp móc nối hiệu quả của nó chỉ bị giảm tuyến tính khi hệ số tải tăng. Do đó nếu không chắc chắn về hệ số tải thì phƣơng pháp đƣợc lựa chọn là phƣơng pháp móc nối.

4.4.4.Kết luận :

Bảng băm là một cấu trúc dữ liệu thích hợp cho việc lƣu trữ và tìm kiếm dữ liệu không có trật tự. Tuy phải xử lý xung đột nhƣng hầu hết các thao tác của bảng băm đều dễ thực hiện và các thao tác này có hiệu quả gần nhƣ không đổi trong hầu hết các trƣờng hợp.

Hàm băm ánh xạ các khố dữ liệu vào trong các ơ có sẵn của bảng. Một bảng băm có hiệu quả khi chúng ta chọn đƣợc một hàm băm tốt. Vấn đề cốt yếu là :

 Sử dụng bảng băm có kích thƣớc là một số nguyên tố.

 Sử dụng hàm băm có thể đảm bảo các khoá đƣợc phân bố đều trong bảng.Tuy nhiên

ngay cả trong trƣờng hợp chúng ta chọn đƣợc hàm băm tốt nhất thì hiện tƣợng xung đột vẫn có thể xảy ra.

Băm theo địa chỉ mở là một trong các phƣơng pháp giải quyết xung đột. Trong đó :

 Phƣơng pháp dò tuyến tính : sử dụng nếu các ơ đƣợc duyệt tồn bộ và tìm vị trí thành

công. Nhƣng phƣơng pháp này có thể gây ra hiện tƣợng bó cụm.

 Phƣơng pháp dò căn bậc 2 : Phƣơng pháp này tốt hơn do có thể giảm xác suất xảy ra

hiện tƣợng bó cụm.

 Hệ số tải nên < ½ để tránh làm giảm hiệu quả thực hiện của phƣơng pháp.

Móc nối cũng là một biện pháp xử lý xung đột hiệu quả. Xong phƣơng pháp này đòi hỏi không gian lƣu trữ lớn.

4.5. Bài tập áp dụng

1. Tạo các bảng băm chứa các số nguyên theo từng loại giải quyết xung đột 2. Tạo các bảng băm chứa họ tên sinh viên theo từng loại giải quyết xung đột 3. Tạo từ điển đơn giản

Một số đề thi tham khảo

Đề 1

Câu 1: Cho biểu thức (a+b-c)*(d-e*f)-(x+y)/z

Hãy vẽ cây nhị phân tƣơng ứng và suy ra dạng tiền tố và dạng hậu tố của biểu thức đó.

Câu 2:

a) Khai báo cấu trúc dƣ̃ liê ̣u danh sách liên kết đơn chƣ́a các thông tin về nhân sƣ̣ gồm có các trƣờng thông tin:

 Họ và tên

 Thâm niên công tác (tính theo năm)  Hê ̣ số lƣơng

 Lƣơng cơ bản.

b) Viết hàm thêm một bản ghi chƣ́a thông tin nhân sƣ̣ của một ngƣời vào cuối danh sách đã khai báo ở phần a.

73 c) Viết hàm tính xem có bao nhiêu nhân viên phải đóng thuế thu nhâ ̣p biết r ằng lƣơng

của một ngƣời trong một tháng đƣợc tính bằng công thức: hê ̣ số lƣơng * lƣơng cơ bản

+ thâm niên * 200 (ngàn đồng) và ngƣời đóng thuế thu nhập là ngƣời có thu nhập 1

năm lớn hơn 1000000000.

Đề 2

Câu 1:

a) Chèn các khóa sau lần lƣợt vào một cây tìm kiếm nhi ̣ phân rỗng: 20, 5, 1 17, 30, 24, 7, 18, 23, 9, 32, 25. Xóa khỏi cây các nút chứa các khóa sau: 24, 10, 7.

b) Khai báo cấu trúc cây nhi ̣ phân chƣ́a các thông tin nhƣ ở phần a của câu 2 và viết hàm

duyê ̣t cây theo thƣ́ tƣ̣ trƣớc.

Chuyển biểu thƣ́c trung tố sau thành cây biểu thƣ́c : x*y + z*(t-u). Trong đó z, y, z, t, u là các biến (toán hạng).

Câu 2:

Khai báo danh sách liên kết đơn chƣ́a các trƣờng thông tin về một khách hàng nhƣ

sau:

 Mã khách hàng,

 Họ và tên khách hàng,

 Số điê ̣n thoa ̣i của khách hàng (13 chƣ̃ số).

a) Viết hàm có input là danh sách đã đƣợc khai báo ở phần a và một xâu sdt là một phần số điê ̣n thoa ̣i trong trƣờng điê ̣n thoa ̣i của một khác h hàng nào đó. Viết hàm trả về nút đầu tiên trong danh sách liên kết có phần đầu trƣờng số điê ̣n thoa ̣i trùng với xâu sdt. b) Viết hàm sắp xếp danh sách khách hàng trên theo chiều tăng dần của tên khách hàng.

Đề 3

Câu 1:

a) Hãy chèn các khóa sau vào một cây tìm kiếm nhị phân rỗng mà các nút chứa các số

nguyên: 17, 4, 19, 27, 7, 18, 8, 30, 15. Xóa khỏi cây lần lƣợt các nút chứa các khóa : 19, 8, 17.

b) Chuyển biểu thƣ́c trung tố sau thành biểu thƣ́c tiền tố: 12 – 7*(3+9 – 2*5).

c) Hãy khai báo cấu trúc cây tìm kiếm nhị phân chứa các trƣờng thông tin về sinh viên nhƣ sau:

 Mã sinh viên,

 Họ và tên,

 Điểm trung bình.

trong đó mã sinh viên là trƣờng khóa.

Viết hàm chèn thêm một sinh viên vào cây vừa khai báo.

Câu 2:

a) Khai báo danh sách liên kết đơn chƣ́a các số thƣ̣c.

b) Viết hàm đảo ngƣợc danh sách liên kết đơn chƣ́a các số thƣ̣c đƣợc khai báo ở phần a. c) Viết hàm sắp xếp danh sách số thƣ̣c trên theo chiều tăng dần.

Đề 4:

Câu 1:

a) Hãy chèn các khóa sau vào một cây tìm kiếm nhị phân rỗng mà các nút chứa các số

nguyên: 20, 17, 29, 15, 80, 6, 19, 51, 32. Xóa khỏi cây lần lƣợt các nút chứa các khóa: 29, 20, 17.

b) Chuyển biểu thƣ́c trung tố sau thành biểu thƣ́c hâ ̣u tố: 5 * ( 2 + 3 ) – 2 * ( 15 - 10 ) + 21.

c) Hãy khai báo cấu trúc cây tìm kiếm nhị phân chứa các trƣờng thông tin về nhân sự nhƣ sau:

 Họ và tên

74  Lƣơng

trong đó mã nhân viên là trƣờng khóa.

Viết hàm tính trung bình cộng lƣơng của các nhân viên trong một cây vừa khai báo.

Câu 2:

a) Khai báo danh sách liên kết đơn chƣ́a các trƣờng thông tin về hàng hóa nhƣ sau:  Tên mă ̣t hàng

 Giá mặt hàng

 Số lƣợng còn trong kho

b) Hãy cài đặt hàm sắ p xếp danh sách trên theo chiều tăng dần của giá mă ̣t hàng , nếu cùng giá thì theo tên.

c) Viết hàm nhâ ̣n input là một danh sách đƣợc khai báo nhƣ trên và hai số nguyên dƣơng

x < y, in ra tên các mă ̣t hàng có số lƣợng còn trong kho lớn hơn x và nhỏ hơn y.

Đề 5:

Câu 1:

a) Khai báo danh sách liên kết đơn chƣ́a các trƣờng thông tin về phần mềm nhƣ sau:  Tên phần mềm

 Dung lƣợng (tính bằng Mb)

 Đi ̣a chỉ download

b) Hãy cài đặt hàm thêm một phần tử vào cuối danh sách trên.

c) Viết hàm tính dung lƣợng trung bình của các phần mềm trong danh sách liên kết trên.

Câu 2:

a) Hãy chèn các khóa sau vào một cây tìm kiếm nhị phân rỗng mà các nút chứa các số

nguyên: 19, 7, 1, 9, 25, 21, 70, 30, 8. Xóa khỏi cây nút gốc. Đƣa ra kết quả duyê ̣t cây theo thƣ́ tƣ̣ trƣớc và thƣ́ tƣ̣ sau.

b) Chuyển biểu thƣ́c hâ ̣u tố sau thành biểu thƣ́c tiền tố và tính giá tri ̣ của nó:

11 2 3 * + 4 5 * 8 + 7 / +

c) Hãy khai báo cấu trúc cây tìm kiếm nhị phân chƣ́a các trƣờng thông tin về nhân sƣ̣ nhƣ sau:

 Họ và tên

 Mã nhân viên

 Lƣơng

trong đó mã nhân viên là trƣờng khóa.

75

TÀI LIỆU THAM KHẢO.

1. Đinh Mạnh Tƣờng, Cấu trúc dữ liệu và thuật toán, NXB Đại học Quốc gia Hà nội, 2002

2. Đỗ Xuân Lôi, Cấu trúc dữ liệu và giải thuật, NXB Khoa học và Kỹ thuật, 1997

3. Nguyễn Quốc Lƣợng, Hoàng Đức Hải ,Cấu trúc dữ liệu + giải thuật = chƣơng

trình, NXB Giáo dục, 1996

4. Hoare, C.A.R, Note on date Structuring in structured Programming Dahl, Dijkstra, and Hoare, pp 83-174.

Một phần của tài liệu Bài giảng cấu trúc dữ liệu (Trang 76 - 80)