Bài tập chương 4- Tìm kiếm cơ bản searching - Cấu trúc dữ liệu và giải thuật | Trường Đại học Bách khoa Hà Nội

Khi tìm kiếm thì bạn sẽ thực hiện tìm kiếm nhị phân trên phần thứ nhất trước sau đó mới tìm sang phần còn lại. 80% thời gian bạn chỉ cần tìm trên phần thứ nhất là đủ. Hãy đánh giá cách làm này bằng cách tính số lượng phép so sánh.Tài liệu được sưu tầm, giúp bạn ôn tập và đạt kết quả cao. Mời bạn đọc đón xem!

Bài tập chương 4
Tìm kiếm cơ bn searching
Bài 1. Viết li hàm tìm kiếm tun t để có th đếm đưc s lượng phép so sánh cn thiết trong quá trình
tìm kiếm (đi vi danh ch móc ni).
Bài 2. V cây nh phân tìm kiếm đi vi các dãy khóa sau
a) 3, 5, 12, 24, 26, 37, 40, 42, 57, 76
b) 45, 47, 53, 59, 60, 68, 81, 85, 87, 92, 95
c) Alan, Ann, Bill, Jack, Jane, Jim, John, Ken, Mac, Tom
d) About, Answer, Black, Color, Divide, Frank, Goal, Home, Inn, Learn, Main, Neat
Bài 3. Áp dng tìm kiếm nh phân vào danh sách móc ni đơn có ưu và nhưc đim gì? Ti sao?
Bài 4. Ci tiến hàm tìm kiếm nh phân đ có th đếm đưc s lượng phép so sánh khi tìm kiếm mt khóa
Bài 5. Gi s bạn có mt danh sách vi 10,000 tên ngưi đưc sp xếp theo th t và đưc lưu trong
mt mng. Tuy nhiên ch có 20% trong tng s đó thưng xuyên đưc truy cp. Do đó bn chia
danh sách đó thành 2 phn:
a. 20% nhng tên thưng xuyên đưc tìm ,
b. và phn danh sách còn li.
Khi tìm kiếm thì bn s thc hin tìm kiếm nh phân trên phn th nht trưc sau đó mi tìm sang
phn còn li. 80% thi gian bn ch cn tìm trên phn th nht là đ. Hãy đánh giá cách làm này
bằng cách tính s lượng phép so sánh
Bài 6. Cho mt ma trn trong đó các hàng và các ct đu đã đưc sp xếp, hãy xây dng thut toán đ
tìm kiếm trên ma trn đó
Ví d 1 ma trn 3x4 sau
Bài 7. Cho mt mng các xâu ký t đã được sp th t, và gia các xâu ký t đó có xut hin thêm mt
s xâu rng. Hãy xây dng thut toán hiu qu để tìm xem mt xâu ký t có xut hin trong mng
các xâu ký t đó không.
Ví d.
Mng xâu ký t : [“at”, “”, “”, “”, “ball”, “”, “”, “car”, “”, “”, “dad”, “”, “”]
Vi xâu cn tìm là “ball” thì s tr v giá tr ch s 4 (xâu đu tiên trong dãy có ch s là 0)
Vi xâu cn tìm là “CAR” thì s tr v giá tr -1 (không tìm thy)
Bài 8. Gi s ta sa đi thut toán tìm kiếm nh phân, thay vì chia dãy thành 2 na thì ta chia dãy thành
1/3 và 2/3 so vi dãy ban đu. Và mi ln ta s so sánh vi phn t nằm 1/3 dãy. Hãy xác đnh s
phép sonh ca thut toán trong trưng hp này.
Bài 9. Cho mt dãy s nguyên gm 2𝑛 (𝑛 1) phn t. Hãy viết chương trình chia dãy này thành 𝑛 cp s
sao cho tng ln nht ca các cp s này là nh nht có th.
Ví d. Cho dãy s {1,4,3,6}.
Các cp s có th là {(1,4),(3,6)}, {(1,3),(4,6)}, {(1,6),(3,4)}
Tng ca các cp là (5, 9), (4, 10), và (7, 7)
Và 7 là tng ln nht ca cp th 3, nó là giá tr tng nh nht trong 3 cách ghép cp có th. Cách ghép
cp tha mãn là {(1,6),(3,4)}
Bài 10. Ta đnh nghĩa mode ca tp hp là phn t có tn s xut hin ln nht
Ví d vi tp hp (4, 6, 2, 4, 3, 1) thì có mode là 4
Tp hp (4, 6, 2, 3, 1, 6) thì có mode 6
Hãy viết chương trình đ tìm mode ca tp hp. Giá tr các phn t trong tp hp đưc nhp vào t bàn
phím.
Chú ý. Các tp hp có th không có mode, ví d các tp hp sau không tn ti mode
{1,2,7,6,5}, hoc {1,3,1,5,5,7,6,7}
Bài 11. Cho mt tp S gm 𝑛 > 0 phn t kiu nguyên, và mt s nguyên 𝑥. Hãy viết chương trình đ kim
tra xem trong S có tn ti hai phn t mà có tng đúng bng 𝑥 không.
Bài 12. Cài đt thut toán interpolation search
Tham kho thêm ti:
http://en.wikipedia.org/wiki/Interpolation_search
http://www.auto.tuwien.ac.at/~blieb/woop/inter.html
Bài 13.
| 1/2

Preview text:

Bài tập chương 4
Tìm kiếm cơ bản – searching
Bài 1. Viết lại hàm tìm kiếm tuần tự để có thể đếm được số lượng phép so sánh cần thiết trong quá trình
tìm kiếm (đối với danh sách móc nối).
Bài 2. Vẽ cây nhị phân tìm kiếm đối với các dãy khóa sau
a) 3, 5, 12, 24, 26, 37, 40, 42, 57, 76
b) 45, 47, 53, 59, 60, 68, 81, 85, 87, 92, 95
c) Alan, Ann, Bil , Jack, Jane, Jim, John, Ken, Mac, Tom
d) About, Answer, Black, Color, Divide, Frank, Goal, Home, Inn, Learn, Main, Neat
Bài 3. Áp dụng tìm kiếm nhị phân vào danh sách móc nối đơn có ưu và nhược điểm gì? Tại sao?
Bài 4. Cải tiến hàm tìm kiếm nhị phân để có thể đếm được số lượng phép so sánh khi tìm kiếm một khóa
Bài 5. Giả sử bạn có một danh sách với 10,000 tên người được sắp xếp theo thứ tự và được lưu trong
một mảng. Tuy nhiên chỉ có 20% trong tổng số đó là thường xuyên được truy cập. Do đó bạn chia
danh sách đó thành 2 phần:
a. 20% những tên thường xuyên được tìm ,
b. và phần danh sách còn lại.
Khi tìm kiếm thì bạn sẽ thực hiện tìm kiếm nhị phân trên phần thứ nhất trước sau đó mới tìm sang
phần còn lại. 80% thời gian bạn chỉ cần tìm trên phần thứ nhất là đủ. Hãy đánh giá cách làm này
bằng cách tính số lượng phép so sánh
Bài 6. Cho một ma trận trong đó các hàng và các cột đều đã được sắp xếp, hãy xây dựng thuật toán để
tìm kiếm trên ma trận đó Ví dụ 1 ma trận 3x4 sau
Bài 7. Cho một mảng các xâu ký tự đã được sắp thứ tự, và giữa các xâu ký tự đó có xuất hiện thêm một
số xâu rỗng. Hãy xây dựng thuật toán hiệu quả để tìm xem một xâu ký tự có xuất hiện trong mảng
các xâu ký tự đó không. Ví dụ.
Mảng xâu ký tự : [“at”, “”, “”, “”, “ball”, “”, “”, “car”, “”, “”, “dad”, “”, “”]
Với xâu cần tìm là “ball” thì sẽ trả về giá trị chỉ số 4 (xâu đầu tiên trong dãy có chỉ số là 0)
Với xâu cần tìm là “CAR” thì sẽ trả về giá trị là -1 (không tìm thấy)
Bài 8. Giả sử ta sửa đổi thuật toán tìm kiếm nhị phân, thay vì chia dãy thành 2 nửa thì ta chia dãy thành
1/3 và 2/3 so với dãy ban đầu. Và mỗi lần ta sẽ so sánh với phần tử nằm ở 1/3 dãy. Hãy xác định số
phép so sánh của thuật toán trong trường hợp này.
Bài 9. Cho một dãy số nguyên gồm 2𝑛 (𝑛 ≥ 1) phần tử. Hãy viết chương trình chia dãy này thành 𝑛 cặp số
sao cho tổng lớn nhất của các cặp số này là nhỏ nhất có thể.
Ví dụ. Cho dãy số {1,4,3,6}.
Các cặp số có thể là {(1,4),(3,6)}, {(1,3),(4,6)}, {(1,6),(3,4)}
Tổng của các cặp là (5, 9), (4, 10), và (7, 7)
Và 7 là tổng lớn nhất của cặp thứ 3, nó là giá trị tổng nhỏ nhất trong 3 cách ghép cặp có thể. Cách ghép
cặp thỏa mãn là {(1,6),(3,4)}
Bài 10. Ta định nghĩa mode của tập hợp là phần tử có tần số xuất hiện lớn nhất
Ví dụ với tập hợp (4, 6, 2, 4, 3, 1) thì có mode là 4
Tập hợp (4, 6, 2, 3, 1, 6) thì có mode là 6
Hãy viết chương trình để tìm mode của tập hợp. Giá trị các phần tử trong tập hợp được nhập vào từ bàn phím.
Chú ý. Các tập hợp có thể không có mode, ví dụ các tập hợp sau không tồn tại mode
{1,2,7,6,5}, hoặc {1,3,1,5,5,7,6,7}
Bài 11. Cho một tập S gồm 𝑛 > 0 phần tử kiểu nguyên, và một số nguyên 𝑥. Hãy viết chương trình để kiểm
tra xem trong S có tồn tại hai phần tử mà có tổng đúng bằng 𝑥 không.
Bài 12. Cài đặt thuật toán interpolation search Tham khảo thêm tại:
• http://en.wikipedia.org/wiki/Interpolation_search
• http://www.auto.tuwien.ac.at/~blieb/woop/inter.html Bài 13.