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

12 2.1K 21
Thuật toán tìm kiếm nhị phân

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

Thông tin tài liệu

Baøi Toaùn Tìm Kieám Nhò Phaân 07/05/13 www.brainybetty.com 2 KIỂM TRA BÀI CŨ KIỂM TRA BÀI CŨ A. Kiểm Tra Bài Cũ  1/ Hãy trình bày ý tưởng của bài toán tìm kiếm tuần tự? Trả lời : Lần lượt so sánh từng số hạng trong dãy A với khóa cần tìm cho đến khi hoặc tìm thấy một số hạng bằng khóa hoặc dãy đã xét hết và không có giá trò nào bằng khóa. 2/ Cho dãy A = 3 6 7 9 11 14 18 20 và k = 18 a) Hãy cho biết dãy A có tính chất gì? Trả lời : Dãy A là một dãy có thứ tự không giảm b) Máy tính sẽ thực hiện đến lần thứ mấy thì sẽ tìm thấy được k trong dãy A? Trả lời : Đến lần thứ 7 thì sẽ tìm được k trong dãy A 07/05/13 www.brainybetty.com 3 BÀI TOÁN TÌM KIẾM NHỊ PHÂN BÀI TOÁN TÌM KIẾM NHỊ PHÂN A. Kiểm Tra Bài Cũ  B. Mục Đích Yêu Cầu MỤC ĐÍCH YÊU CẦU MỤC ĐÍCH YÊU CẦU - Biết một bài toán có thể được giải bằng nhiều thuật toán khác nhau - Hiểu được ý tưởng của bài toán tìm kiếm nhò phân - Biết trình bày thuật toán theo hai cách liệt kê và sơ đồ khối 07/05/13 www.brainybetty.com 4 1 2 3 4 5 6 7 8 A. Kiểm Tra Bài Cũ  B. Mục Đích Yêu Cầu C. Nội Dung NỘI DUNG NỘI DUNG 1. Xét ví dụ : 1. Xét ví dụ : - Giả sử, có một tấm bìa được kẽ các ô vuông bằng nhau trên cả hai mặt tấm bìa và được đánh số thứ tự trên một mặt. Mặt còn lại tiến hành điền vào các giá trò số khác nhau theo thứ tự từ nhỏ đến lớn,theo chiều từ trái sang phải. - Có hai học sinh đố nhau. Làm cách nào để cắt ra được một ô vuông có giá trò bất kỳ, sao cho số lần cắt là ít nhất (với điều kiện là học sinh cắt bìa không được nhìn thấy giá trò các số ghi trên mỗi ô vuông) 3 6 7 11 15 20 25 30 Mặt 1 : Mặt 2 : BÀI TOÁN TÌM KIẾM NHỊ PHÂN BÀI TOÁN TÌM KIẾM NHỊ PHÂN - Giả sử cần cắt ra ô vuông có giá trò là : 15 07/05/13 www.brainybetty.com 5 BÀI TOÁN TÌM KIẾM NHỊ PHÂN BÀI TOÁN TÌM KIẾM NHỊ PHÂN 1 2 3 4 5 6 7 8 A. Kiểm Tra Bài Cũ  B. Mục Đích Yêu Cầu C. Nội Dung 1. Xét ví dụ :  5 6 7 81 2 3 4 3 6 7 11 15 20 25 30 Học sinh 1 : Học sinh 2 : 5 6 7 8 Kiểm tra ô vuông có giá trò cần cắt  5 6 7 8 Học sinh 1 : Học sinh 2 : Kiểm tra ô vuông có giá trò cần cắt 15 20 25 30 5 6  Học sinh 1 : 5 6 Học sinh 2 : 15 Đưa ra ô vuông có chứa giá trí cần cắt 07/05/13 www.brainybetty.com 6 BÀI TOÁN TÌM KIẾM NHỊ PHÂN BÀI TOÁN TÌM KIẾM NHỊ PHÂN A. Kiểm Tra Bài Cũ  B. Mục Đích Yêu Cầu C. Nội Dung 2. Xác đònh bài toán : • Input : • Output : 2. Xác đònh bài toán :  Input  Output Dãy A là dãy tăng gồm N số nguyên khác nhau a 1 , a 2 , . , a N và một số nguyên k Chỉ số i mà a i = k hoặc thông báo không tìm thấy k trong dãy A 1. Xét ví dụ : 07/05/13 www.brainybetty.com 7 BÀI TOÁN TÌM KIẾM NHỊ PHÂN BÀI TOÁN TÌM KIẾM NHỊ PHÂN A. Kiểm Tra Bài Cũ  B. Mục Đích Yêu Cầu C. Nội Dung 3. Ý tưởng : Sử dụng tính chất dãy A là dãy tăng, ta chia đôi dãy thành hai dãy con, phạm vi tìm kiếm sẽ được thu hẹp sau mỗi lần so sánh khóa với số hạng được chọn. Ta chọn số hạng a Giữa để so sánh với k, trong đó: 2. Xác đònh bài toán :  Input  Output - Nếu a Giữa = k 3. Ý tưởng : Giua = [(N + 1) / 2] thì đưa ra Giua, rồi kết thúc - Nếu a Giữa > k- Nếu a Giữa > k thì phạm vi tìm kiếm được thu hẹp lại trên nữa dãy đầu so với dãy ban đầu - Nếu a Giữa < k- Nếu a Giữa < k thì phạm vi tìm kiếm được thu hẹp lại trên nữa dãy sau so với dãy ban đầu 1. Xét ví dụ : 07/05/13 www.brainybetty.com 8 BÀI TOÁN TÌM KIẾM NHỊ PHÂN BÀI TOÁN TÌM KIẾM NHỊ PHÂN A. Kiểm Tra Bài Cũ  B. Mục Đích Yêu Cầu C. Nội Dung 2. Xác đònh bài toán :  Input  Output 3. Ý tưởng : 1. Xét ví dụ : 4. Thuật toán : 4. Thuật toán : a) Liệt kê :  Liệt kê Bước 1 : Nhập N, các số hạng a 1 , a 2 , . , a N và khóa k Bước 2 : Dau ← 1 , Cuoi ← N Bước 3 : Giua ← [(Dau+Cuoi)/2] Bước 4 : Nếu a Giua = k thì thông báo chỉ số Giua, rồi kết thúc. Bước 5 : Nếu a Giua > k thì Cuoi = Giua - 1, rồi chuyển đến bước 7 Bước 6 : Dau ← Giua + 1 Bước 7 : Nếu Dau > Cuoi thì thông báo dãy A không có số hạng có giá trò bằng k, rồi kết thúc Bước 8 : Quay lại bước 3 07/05/13 www.brainybetty.com 9 A. Kiểm Tra Bài Cũ  B. Mục Đích Yêu Cầu C. Nội Dung 2. Xác đònh bài toán :  Input  Output 3. Ý tưởng : 1. Xét ví dụ : 4. Thuật toán :  Liệt kê Bước 1 : Nhập N, các số hạng a 1 , a 2 , . , a N và khóa k Bước 2 : Dau ← 1 , Cuoi ← N Bước 3 : Giua ← [(Dau+Cuoi)/2] Bước 4 : Nếu a Giua = k thì thông báo chỉ số Giua, rồi kết thúc. Bước 5 : Nếu a Giua > k thì Cuoi = Giua-1, rồi chuyển đến bước 7 Bước 6 : Dau ←Giua + 1 Bước 7 : Nếu Dau > Cuoi thì thông báo dãy A không có số hạng có giá trò bằng k, rồi kết thúc Bước 8 : Quay lại bước 3 Đưa ra vò trí Giua, rồi kết thúc Nhập N; dãy a 1 ,. . . ,a N ; K Dau  1 ; Cuoi  N Giua  [ (Dau + Cuoi)/2 ] A Giua = K? A Giua >K? Dau  Giua + 1 Cuoi  Giua -1 Thông báo K không có trong dãy số A , rồi kết thúc Dau > Cuoi? Bước 1 : Nhập N, các số hạng a 1 , a 2 , . , a N và khóa k Bước 2 : Dau ← 1 , Cuoi ← N Bước 3 : Giua ← [(Dau+Cuoi)/2] Bước 4 : Nếu a Giua = k thì thông báo chỉ số Giua, rồi kết thúc. Đ S Bước 5 : Nếu a Giua > k thì Cuoi = Giua-1, rồi chuyển đến bước 7 Đ S Bước 6 : Dau ←Giua + 1 Bước 7 : Nếu Dau > Cuoi thì thông báo dãy A không có số hạng có giá trò bằng k, rồi kết thúc Đ S Bước 8 : Quay lại bước 3 b) Sơ đồ khối :  Sơ đồ khối  Mô phỏng Đưa ra vò trí Giua rồi kết thúc Nhập N; dãy a 1 ,. . . ,a N ; K Dau  1 ; Cuoi  N Giua  [ (Dau + Cuoi)/2 ] A Giua = K? A Giua >K? Dau  Giua + 1 Cuoi  Giua -1 Thông báo K không có trong dãy số A , rồi kết thúc Dau > Cuoi? Đ S Đ S S 2221 30 31 3396542 N = 10 K = 21 GiuaDau Cuoi 76 8 9 1054321 Nhập N; dãy a 1 ,. . . ,a N ; K Dau  1 ; Cuoi  N Giua  [ (Dau + Cuoi)/2 ] A Giua = K? K = 21 A Giua >K? 76 8 9 1054321 Dau  Giua + 1 Dau 76 8 9 10 Dau Cuoi Dau > Cuoi? Giua  [ (Dau + Cuoi)/2 ] Giua A Giua = K? 2221 30 31 33 S A Giua >K? 76 8 9 10 Cuoi  Giua -1 Cuoi S Dau > Cuoi? 76 Dau Cuoi Giua  [ (Dau + Cuoi)/2 ] Giua A Giua = K? 2221 Đưa ra vò trí Giua rồi kết thúc Giua = 6 2221 30 31 3396542 2221 30 31 33 21 [...]... Xác đònh bài toán :  Input  Output 3 Ý tưởng : 4 Thuật toán :  Liệt kê  Sơ đồ khối  Mô phỏng D Củng Cố 07/05/13 3/ 2/ Cho so sánh 3 i gian thự nhiệnigiữ để có toán 1/ Hãy dãy biếtthờ6u 7 9n11c 14 18có a thuậtthể s tìm cho A = điề kiệ cầ phả 20 dụnkiếm tuần t tìm tìm m nhò phân ? n g thuật toán và kiế kiếm nhò phâ Trả lời :y mô phỏng việc thực hiện tìm kiếm nhò a) Hã phân, với khóa cần tìm k = 6 ?... phỏng việc thực hiện tìm kiếm nhò a) Hã phân, với khóa cần tìm k = 6 ? Dãyiđã cho phải lànmột dãym của thuật Thờ gian thực hiệ tìm kiế có thứ tự toán nhò phân nhanh hơn thuật toán tuần tự, b) Hã mô kể ng việc phé hiện tìm sánh hạn chếángphỏsố lượngthực p toán so kiếm nhò phân, toákhó trong thuậtvới n a cần tìm k = 15 ? Kính chúc sức khỏe q thầy cô Các em học sinh học tập tiến bộ . BÀI TOÁN TÌM KIẾM NHỊ PHÂN BÀI TOÁN TÌM KIẾM NHỊ PHÂN - Giả sử cần cắt ra ô vuông có giá trò là : 15 07/05/13 www.brainybetty.com 5 BÀI TOÁN TÌM KIẾM NHỊ. www.brainybetty.com 6 BÀI TOÁN TÌM KIẾM NHỊ PHÂN BÀI TOÁN TÌM KIẾM NHỊ PHÂN A. Kiểm Tra Bài Cũ  B. Mục Đích Yêu Cầu C. Nội Dung 2. Xác đònh bài toán : • Input :

Ngày đăng: 05/07/2013, 01:25

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan