+ ViÖc t×m kiÕm sÏ dõng nÕu t×m thÊy phần tử k đó trong dãy hoặc phạm vi t×m kiÕm b»ng rçng kh«ng cßn trang sách nào để tìm nữa.. đó nếu vẫn chưa tìm thấy..[r]
(1)Bµi 4: bµi to¸n vµ thuËt to¸n (tiÕt 6) Người soạn: Nguyễn Thị Huê SV líp: SP Tin K40 Ngµy so¹n: 25/9/2008 Giáo viên hướng dẫn: Nguyễn Văn Trường I Mục đích – Yêu cầu - HiÓu vµ thùc hiÖn ®îc thuËt to¸n t×m kiÕm nhÞ ph©n - Biết cách xây dựng thuật toán đó - Hình thành kĩ tư logic để giải các bài toán và vấn đề thùc tÕ II C«ng t¸c chuÈn bÞ Giáo viên chuẩn bị bảng phụ mô tả sơ đồ khối thuật toán tìm kiếm nhị phân III Néi dung ổn định tổ chức lớp (1 phút) SÜ sè: V¾ng: Cã phÐp: Kh«ng phÐp: KiÓm tra bµi cò (6 phót) * C©u hái: Cho d·y sè nguyªn sau vµ kho¸ k= 27, em h·y thùc hiÖn thuËt toán tìm kiếm và đưa kết dạng mảng mô phỏng? D·y sè: 7, 5, 23, 27, 17, 32, * §¸p ¸n: B¶ng m« pháng: A 23 27 17 32 i - - Ai = k Sai Sai Sai Sai §óng - - ? -1Lop10.com (2) KÕt qu¶ thùc hiÖn thuËt to¸n: Th«ng b¸o chØ sè cÇn t×m: i = Bµi míi Hoạt động GV Hoạt động HS Đặt vấn đề: Bài toán tìm kiếm phổ biÕn thùc tÕ VÝ dô: t×m thuª bao danh b¹ ®iÖn tho¹i, t×m häc sinh danh s¸ch, … Ta còng cã thÓ t×m kiÕm theo nhiÒu c¸ch kh¸c ë tiÕt trước các em đã tìm hiểu thuật to¸n t×m kiÕm tuÇn tù, tiÕp theo chóng ta cïng t×m hiÓu mét thuËt to¸n t×m kiÕm n÷a: t×m kiÕm nhÞ ph©n - C¸c em h·y më SGK trang 42 Bµi 4: Bµi to¸n vµ thuËt to¸n Bµi to¸n ®îc ph¸t biÓu nh sau: (tiÕt 6) Bµi to¸n : “D·y A gåm N sè nguyªn Mét sè vÝ dô vÒ thuËt to¸n kh¸c nhau: a1,a2,…,aN ®îc s¾p xÕp VÝ dô (tiÕp): ThuËt tãn t×m t¨ng dÇn vµ sè nguyªn k CÇn biÕt cã kiÕm nhÞ ph©n hay kh«ng chØ sè i (1<=i<=N) mµ ai=k Nếu có hãy cho biết số đó” Em hãy xác định Input và Output - Xác định: bµi to¸n? + Input: D·y t¨ng gåm N sè nguyªn kh¸c a1, a2,…, aN vµ sè nguyªn k; + Output: ChØ sè i mµ ai=k hoÆc th«ng b¸o kh«ng cã sè h¹ng nµo cña d·y cã gi¸ trÞ b»ng k; - Em nµo cã thÓ m« t¶ ng¾n gän c¸ch - Tr¶ lêi më trang s¸ch cña m×nh? -2Lop10.com Thêi gian (3) Ngoµi c¸ch nh trªn, ta còng cã thÓ lµm nh sau: Em më mét trang bÊt k× sách Nếu trang đó đúng là trang 42 thì thôi Nếu số trang đó nhỏ 42 thì lại mở từ trang trước đó trở đầu sách, ngược lại thì mở từ trang sau đó trở cuối sách - Với cách làm đó em thì có thực - Trả lời: Cách đó không thể làm trên viết bình với bình thường vì không đánh số trang thường không? - ViÖc t×m trang 42 còng gÇn gièng víi ý tưởng thuật toán tìm kiếm nhị phân Để xem ý tưởng đó nào, chóng ta sÏ cïng ®i t×m hiÓu ý tưởng thuật toán tìm kiếm nhị phân - Ghi bµi: ®îc ph¸t biÓu nh sau: Sö dông tÝnh chÊt cña mét d·y sè t¨ng Sö dông tÝnh chÊt d·y A t¨ng Ta t×m c¸ch thu hÑp ph¹m vi t×m kiÕm So s¸nh aGiua víi k Víi Giua sau mçi lÇn so s¸nh kho¸ k víi phÇn tö [(Dau + Cuoi)/2] Dau 1, tìm kiếm Phần tử tìm kiếm thường Cuoi N ®îc chän lµ phÇn tö ë gi÷a + NÕu aGiua = k th× Giua lµ chØ sè Víi Giua=[(Dau+Cuoi)/2]; Dau vµ cÇn t×m, kÕt thóc t×m kiÕm Cuoi là số tương ứng phần tử + Nếu aGiua > k thì tìm kiếm tiếp ®Çu vµ cuèi d·y t×m kiÕm Ban ®Çu trªn d·y a1, a2,…, aGiua-1 + NÕu aGiua < k th× t×m kiÕm tiÕp khëi t¹o Dau=1, Cuoi=N + §Çu tiªn, ta xÐt phÇn tö ë gi÷a, so trªn d·y aGiua +1 , aGiua+2, …, aN + Qu¸ tr×nh kÕt thóc t×m thÊy sánh với k Nếu đúng k thì dừng + NÕu phÇn tö gi÷a lín h¬n k, ta thùc chØ sè i cho = k hoÆc ph¹m hiÖn l¹i c«ng viÖc t×m kiÕm víi c¸c vi t×m kiÕm b»ng rçng phần tử từ đầu đến phần tử gần phần tử -3Lop10.com (4) gi÷a nhÊt (t×m ë phÇn ®Çu cuèn s¸ch) + NÕu phÇn tö gi÷a nhá h¬n k th× thùc hiÖn l¹i viÖc t×m kiÕm víi c¸c phÇn tö từ phần tử sau phần tử đến phÇn tö cuèi (t×m ë phÇn sau cuèn s¸ch) + ViÖc t×m kiÕm sÏ dõng nÕu t×m thÊy phần tử k đó dãy phạm vi t×m kiÕm b»ng rçng (kh«ng cßn trang sách nào để tìm nữa) - ThuËt to¸n ®îc gäi lµ “T×m kiÕm nhÞ ph©n” bëi ta thùc hiÖn viÖc t×m kiÕm b»ng c¸ch chia d·y t×m kiÕm thành dãy (nhị phân), sau đó lại t×m kiÕm trªn mét hai d·y - Quan s¸t vµ ghi bµi đó chưa tìm thấy - Từ ý tưởng trên, ta có cách biểu Bước 1: Nhập N, các phần tử a1, diÔn thuËt to¸n ë d¹ng liÖt kª nh sau: a2,…, aN vµ kho¸ k; (nêu lên các bước) Bước 2: Dau1, CuoiN; Bước 3: Giua[(Dau+Cuoi)/2]; Bước 4: Nếu aGiua=k thì thông b¸o chØ sè Giua råi kÕt thóc; Bước 5: NÕu aGiua>k th× CuoiGiua- 1, chuyển đến bước 7; Bước 6: DauGiua+1; Bước 7: Nếu Dau>Cuoi thì th«ng b¸o d·y A kh«ng cã phµn tö nµo cã gi¸ trÞ b»ng k, råi kÕt -4Lop10.com (5) thóc; Bước 8: Quay lại bước 3; - VD 1: N=7, k=5 D·y sè: 2, 4, 5, 21, i A 21 43 47 52 Dau 1 1, vµ Cuoi lµ phÇn tö cuèi cïng: Cuoi 3 Cuoi N (tøc Cuoi = 7) Giua aGiua 21 aGiua > < = 43, 47, 52 + Chän Dau lµ phÇn tö ®Çu tiªn: Dau + XÐt phÇn tö ë gi÷a: Giua [(Dau+Cuoi)/2], tøc Giua = 4; ThÊy aGiua=21 > k = Thùc hiÖn t×m kiÕm vµ k LÇn duyÖt nöa ®Çu cña d·y: CuoiGiua-1; tøc Cuoi=3; + L¹i Th«ng b¸o chØ sè cÇn t×m xÐt phÇn tö gi÷a: i=Giua=3 Giua[(Dau+Cuoi)/2]; tøc Giua = 2; aGiua=4 < k = 5; Thùc hiÖn t×m kiÕm nöa sau cña d·y: DauGiua + 1; tøc Dau=3 + XÐt tiÕp phÇn tö ë gi÷a: Giua[(Dau+Cuoi)/2]; tøc Giua = 3; aGiua=5 = k ; Th«ng b¸o chØ sè cÇn t×m i=Giua=3 råi kÕt thóc t×m kiÕm - Đưa sơ đồ khối thuật toán và - Quan sát sơ đồ giáo viên gi¶i thÝch §ång thêi gi¶i thÝch sù tương đương sơ đồ khối và các bước liệt kê - NhËn xÐt: thuËt to¸n, viÖc t×m kiÕm thùc chÊt lµ lÆp mét sè lÇn thao t¸c: + Chän phÇn tö ë gi÷a lµm phÇn tö t×m kiÕm -5Lop10.com (6) + So s¸nh phÇn tö t×m kiÕm víi k + Căn vào kết so sánh để thu hẹp phạm vi tìm kiếm kết luận đã t× thÊy (kh«ng t×m thÊy) NhËp N, a1, a2,…, aN vµ k Dau1; CuoiN Giua [(Dau+Cuoi)/2] § aGiua = k S §a Giua råi kÕt thóc § aGiua > k S DauGiua+1 S Cuoi Giua-1 Dau>Cuoi § Th«ng b¸o d·y kh«ng cã sè h¹ng nµo cã gi¸ trÞ b»ng k råi kÕt thóc - Hướng dẫn HS tìm hiểu các VD - Nghe gi¶ng vµ ghi bµi - VD 2: N=8, k=23 D·y sè: 3, 5, 9, 12, 16, 17, 19, 24 B¶ng m« pháng nh sau (kÕt hîp víi -6Lop10.com (7) sơ đồ các bước liệt kê) i A 12 16 17 19 24 Dau 8 Cuoi 8 8 Giua aGiua 12 17 19 24 aGiua < < < > vµ k LÇn duyÖt NhËn thÊy r»ng: Dau>Cuoi nªn ph¹m vi t×m kiÕm b»ng rçng, th«ng b¸o: kh«ng t×m thÊy phÇn tö nµo b»ng 23 d·y + VD 3: N=5, k=36 D·y sè: 9, 10, 29, 36, 42 HS tù lµm - Lµm VD GV nhËn xÐt bµi cña HS IV Cñng cè (1 phót) - So víi thuËt to¸n t×m kiÕm tuÇn tù, ë thuËt to¸n t×m kiÐm nhÞ ph©n cÇn lu ý: + D·y sè ban ®Çu lµ d·y t¨ng + Sè lÇn duyÖt Ýt h¬n - BTVN: Học các cách biểu diễn bài toán tìm kiếm liệt kê và sơ đồ khối Mỗi học sinh lấy ví dụ dãy tăng dần và khoá k, sau đó mô thuật to¸n t×m kiÕm nhÞ ph©n b»ng b¶ng -7Lop10.com (8) V nhận xét giáo viên hướng dẫn: -8Lop10.com (9)