BÀI 15: THUẬT TOÁN TÌM KIẾM NHỊ PHÂN | Tin Học 7 | Chủ đề 5: Giải quyết vấn đề với sự trợ giúp của máy tính. - Lớp 7 - Kết Nối Tri Thức Với Cuộc Sống

BÀI 15: THUẬT TOÁN TÌM KIẾM NHỊ PHÂN


Trang 74

Sau bài học này em sẽ:

  • Giải thích được thuật toán tìm kiếm nhị phân.
  • Biểu diễn và mô phỏng được hoạt động của thuật toán tìm kiếm nhị phân trên một bộ dữ liệu vào có kích thước nhỏ.
  • Giải thích được mối liên quan giữa sắp xếp và tìm kiếm, nêu được ví dụ minh hoạ.

Việc kinh doanh mở rộng, số lượng khách hàng của cửa hàng bán giống cây trồng nhà An lên đến hàng trăm người. Việc tìm kiếm tên khách hàng trong danh sách thật khó khăn. Em có gợi ý gì cho bạn An để việc tìm kiếm được dễ dàng hơn không?

1. THUẬT TOÁN TÌM KIẾM NHỊ PHÂN

Khi danh sách khách hàng ngày càng nhiều, để thuận lợi cho việc tìm kiếm, An đã giúp mẹ soạn thảo danh sách khách hàng trên máy tính với tên khách hàng được sắp xếp theo thứ tự chữ cái. Giả sử An cần tìm địa chỉ của khách hàng tên là "Trúc" trong danh sách khách hàng như Hình 15.1.

Khi danh sách đã được sắp xếp, An không cần tìm từ đầu mà so sánh ngay giá trị cần tìm với giá trị của vị trí ở giữa danh sách.

Nếu giá trị cần tìm bằng giá trị ở giữa thì tìm thấy và dừng lại, nếu lớn hơn thì chỉ cần tìm ở nửa sau của danh sách, nếu nhỏ hơn thì tim ở nửa đầu của danh sách. Lặp lại quá trình đó cho đến khi tìm thấy hoặc hết danh sách. Như vậy, tại mỗi bước lặp, thuật toán tìm kiếm thu hẹp danh sách tìm kiếm chỉ còn một nửa. Do đó thuật toán này có tên là tìm kiếm nhị phân (chia đôi).

DANH SÁCH KHÁCH HÀNG
TT Họ đệm Tên Địa chỉ
1 Nguyễn Một
Xóm 1, Nghĩa Lộ, Võng Xuyên
2 Trần Bình Xóm 3, Thư Trai
3 Nguyễn Hoà 69 Ngô Quyền
4 Kiều Thị Liên 75 Lê Văn Tám
5 Hoàng Mai
Số 3, tổ 7, Phúc Hoà
6 Ngô Hoàng Phương
Xóm 6, Lục Xuân, Hoà Hưng
7 Ngô Hà Trang
Phương Độ, Phúc Thọ
8 Thanh Trúc
Xóm 2, Lục Xuân, Hoà Hưng
9 Trần Thanh Tước
48 Hoàng Hoa Thám

Hình 15.1. Danh sách khách hàng

Trang 75

Các bước đề An tìm khách hàng tên "Trúc" trong danh sách ở Hình 15.1 theo thuật toán tìm kiếm phi nhân như sau:

Bước 1. Xét vị trí ở giữa của dãy, đó là vị trí số 5

hinh-anh-bai-15-thuat-toan-tim-kiem-nhi-phan-9198-0

Vị trí ở giữa

1 2 3 4 5 6 7 8 9
An Bình Hòa Liên Mai Phương Trang Trúc Tước

So sánh "Trúc" và "Mai". Vì "T" đứng sau "M" trong bảng chữ cái nên bỏ đi nửa đầu danh sách.

Bước 2. Xét vị trí ở giữa của nửa sau của dây là vị trí số 7

hinh-anh-bai-15-thuat-toan-tim-kiem-nhi-phan-9198-1

                                                                                         Vị trí ở giữa

                                                                                         ↓

1 2 3 4 5 6 7 8 9
An Bình Hòa Liên Mai Phương Trang Trúc Tước

                                                                                         ↑

So sánh "Trúc" và "Trang". Vì "Tru" đứng sau "Tra" trong bảng chữ cái nên bỏ đi nửa đầu danh sách.

Bước 3. Xét vị trí ở giữa của nửa sau còn lại của dãy, đó là vị trí số 8

hinh-anh-bai-15-thuat-toan-tim-kiem-nhi-phan-9198-2

                                                                                                                                                                         Vị trí ở giữa

                                                                                                                                                                        ↓

1 2 3 4 5 6 7 8 9
An Bình Hòa Liên Mai Phương Trang Trúc Tước

                                                                                                                                                                          ↑

So sánh "Trúc" và "Trúc". Vì hai giá trị bằng nhau nên thuật toán kết thúc,

Vì sau bước 3 đã tìm thấy tên khách hàng nên thuật toán kết thúc.

Hoạt động 1: Sắp xếp và tìm kiếm

1. Em hãy cho biết thuật toán tìm kiếm tuần tự phải thực hiện bao nhiêu bước lặp để tìm được khách hàng tên "Trúc" trong danh sách ở Hình 15.1? Em hãy so sánh số bước lập thực hiện của thuật toán tìm kiếm tuần tự với số bước lặp thực hiện của thuật toán tìm kiếm nhị phân.

2. Theo em trước khi thực hiện thuật toán tìm kiếm nhị phân, danh sách khách hàng cần thoả mãn điều kiện gì? Nếu không thoả mãn điều kiện đó, thuật toán tìm kiếm nhị phân có thực hiện được không?

Trang 76

Trong phần mô tả sau đây, ta giả sử danh sách (dây) đã được sắp xếp theo thứ tự từ nhỏ đến lớn và gọi vùng tìm kiếm là đoạn danh sách mà thuật toán tìm kiếm trên đó. Ban đầu, vùng tìm kiếm là toàn bộ danh sách.

Mô tả thuật toán tìm kiếm nhị phân bằng ngôn ngữ tự nhiên:

Bước 1. Nếu vùng tìm kiếm không có phần tử nào thì kết luận không tìm thấy và thuật toán kết thúc.

Bước 2. Xác định vị trí giữa của vùng tìm kiếm. Vị trí này chia vùng tìm kiếm thành hai nửa: nửa trước và nửa sau vị trí giữa.

Bước 3. Nếu giá trị cần tìm bằng giá trị của vị trí giữa thì kết luận "giả trị cần tìm xuất hiện tại vị trí giữa" và kết thúc.

Bước 4. Nếu giá trị cần tìm nhỏ hơn giá trị của vị trí giữa thì vùng tìm kiếm mới được thu hẹp lại, chỉ còn nửa trước của dãy. Ngược lại (nếu giá trị cần tìm lớn hơn giá trị của vị trí giữa) vùng tìm kiếm mới được thu hẹp lại, chỉ còn nửa sau của dãy.

Bước 5. Lặp lại từ Bước 1 đến Bước 4 cho đến khi tìm thấy giá trị cần tìm (Bước 3) hoặc vùng tìm kiếm không còn phần tử nào (Bước 1).

Vị trí giữa của vùng tìm kiếm bằng phần nguyên của (Vị trí đầu + vị trí cuối)/2.

hinh-anh-bai-15-thuat-toan-tim-kiem-nhi-phan-9198-3

a) Vùng tìm kiếm có lẻ phần tử            b) Vùng tìm kiếm có chẫn phần tử

Hình 15.2. Vùng tìm kiếm

Lưu ý: "nửa trước" và "nửa sau" không gồm phần tử giữa.

Thuật toán tìm kiếm nhị phân

• Thực hiện trên danh sách đã được sắp xếp theo thứ tự từ nhỏ đến lớn. Bắt đầu từ vị trí ở giữa danh sách. C

• Tại mỗi bước lặp, so sánh giá trị cần tìm với giá trị của vị trí giữa danh sách, nếu bằng thì dừng lại, nếu nhỏ hơn thì tìm trong nửa trước của danh sách, nếu lớn hơn thì tìm trong nửa sau của danh sách.

• Chừng nào chưa tìm thấy và vùng tìm kiếm còn phần tử thỉ còn tìm tiếp.

Trong trường hợp so sánh kí tự thì kí tự đứng trước là "nhỏ hơn" kí tự đứng sau trong bảng chữ cái.

? Em hãy viết các bước lặp thực hiện thuật toán tìm kiếm nhị phân để tìm khách hàng tên "Hoà" trong danh sách ở Hình 15.1.

2. SẮP XẾP VÀ TÌM KIẾM

Trong ví dụ ở mục 1, khách hàng tên "Trúc" được tìm thấy sau 3 bước lập thực hiện theo thuật toán tìm kiếm nhị phân, trong khi thuật toán tìm kiếm tuần tự phải thực hiện 8 bước lập.

Xét trường hợp có một khách hàng nào đó mà mẹ bạn An quên chưa ghi vào sổ, do đó tên khách hàng không có trong danh sách ở Hình 15.1. Khi phải tìm kiếm tên khách hàng này, thuật toán tìm kiếm tuần tự

Trang 77

cần thực hiện 9 bước lặp để xét hết danh sách và kết luận "Không tìm thấy", trong khi thuật toán tìm kiếm nhị phân chỉ mất 4 bước lặp. Như vậy, trong ví dụ trên, thuật toán tìm kiếm nhị phân thực hiện tìm kiếm nhanh hơn.

Sắp xếp giúp cho việc tìm kiếm được thực hiện nhanh hơn.

Hoạt động 2: Trò chơi tìm số

Chuẩn bị: Hai bạn chơi A, B và 10 tấm thẻ ghi 10 số khác nhau (số đều nhỏ hơn 20). Ví dụ, 10 số trên các thẻ là 1, 2, 3, 5, 6, 8, 9, 11, 15, 16, 18 (các số này chưa được sắp xếp). Yêu cầu: Bạn B sử dụng thuật toán tìm kiếm nhị phân để tìm một số nhỏ hơn 20 trong các tấm thẻ của bạn A.

Cách chơi:

Bước 1. A úp lần lượt 10 chiếc thẻ lên bàn theo thứ tự các số từ bé đến lớn.

Bước 2. B cho A biết con số mình cần tìm.

Bước 3. A chọn thẻ ở vị trí giữa.

Bước 4. Nếu thẻ ở vị trí giữa là B bằng cách nói một trong ba cụm từ: "bằng nhau", "lớn hơn" hoặc "bé hơn" để B biết thẻ đó có giá trị so với số B cần tìm và chỉ rõ vị trí giữa của dãy thẻ.

Bước 5. Tùy vào câu trả lời của A mà B chọn thẻ ở nửa bên trái hoặc nửa bên phải của dãy thẻ.

Bước 6. Lặp lại các bước 3, 4, 5 cho đến khi B tìm thấy số cần tìm hoặc dãy thẻ không còn thẻ nào.

Bước 7. Hoán đổi vị trí của A và B trong lượt chơi tiếp theo.

Em hãy nêu ví dụ trong thực tế cho thấy mối liên quan giữa sắp xếp và tìm kiếm.

LUYỆN TẬP

  1. Cho danh sách tên các nước sau đây: Bolivia, Albania, Scotland, Canada, Vietnam, Iceland, Portugal, Greenland, Germany

a) Em hãy sắp xếp danh sách tên các nước theo thứ tự trong bảng chữ cái.

b) Em hãy tìm tên nước bằng thuật toán tìm kiếm nhị phân trong danh sách đã sắp xếp theo thứ tự bảng chữ cái.

c) Em hãy so sánh số bước lặp của thuật toán tìm kiếm ở phần b với số bước lặp thuật toán tìm kiếm tuần tự.

  1. Em hãy tìm một ví dụ trong thực tế cho thấy mối liên quan giữa sắp xếp và tìm kiếm.

VẬN DỤNG

Em tìm một từ tiếng Anh trong quyển từ điển theo cách nào? Tại sao em lại dùng cách đó?"

Tin tức mới


Đánh giá

BÀI 15: THUẬT TOÁN TÌM KIẾM NHỊ PHÂN | Tin Học 7 | Chủ đề 5: Giải quyết vấn đề với sự trợ giúp của máy tính. - Lớp 7 - Kết Nối Tri Thức Với Cuộc Sống

Tổng số sao của bài viết là: 5 trong 1 đánh giá
Xếp hạng: 5 / 5 sao

Bình Luận

Để Lại Bình Luận Của Bạn

Tin tức mới

Bộ Sách Lớp 7

Giáo Dục Việt Nam

Bộ Sách Giáo Khoa của Nhà Xuất Bản Giáo Dục Việt Nam

Tài liệu học tập

Đây là tài liệu tham khảo hỗ trợ trong quá trình học tập

Global Success & Bộ Giáo Dục - Đào Tạo

Bộ sách Global Success & Bộ Giáo Dục - Đào Tạo là sự kết hợp giữa ngôn ngữ Tiếng Anh theo lối giảng dạy truyền thống và cập nhật những phương thức quốc tế

Chân Trời Sáng Tạo

Bộ sách giáo khoa của Nhà xuất bản Chân Trời Sáng Tạo

Cánh Diều

Bộ sách giáo khoa của Nhà xuất bản Cánh Diều

Kết Nối Tri Thức Với Cuộc Sống

Sách giáo khoa của nhà xuất bản Kết Nối Tri Thức Với Cuộc Sống

Sách Kết Nối Tri Thức Với Cuộc Sống

Lớp 1

Sách giáo khoa dành cho lớp 1

Lớp 6

Sách giáo khoa dành cho lớp 6

Lớp 5

Sách giáo khoa dành cho lớp 5

Lớp 4

Sách giáo khoa dành cho lớp 4

Lớp 2

Sách giáo khoa dành cho lớp 2

Lớp 3

Sách giáo khoa dành cho lớp 3

Lớp 7

Sách giáo khoa dành cho lớp 7

Lớp 8

Sách giáo khoa dành cho lớp 8

Lớp 9

Sách giáo khoa dành cho lớp 9

Lớp 10

Sách giáo khoa dành cho lớp 10

Lớp 11

Sách giáo khoa dành cho lớp 11

Lớp 12

Sách giáo khoa dành cho lớp 12

Liên Kết Chia Sẻ

** Đây là liên kết chia sẻ bới cộng đồng người dùng, chúng tôi không chịu trách nhiệm gì về nội dung của các thông tin này. Nếu có liên kết nào không phù hợp xin hãy báo cho admin.