Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 14 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
14
Dung lượng
1,36 MB
Nội dung
V D V Thuậttoántìmkiếm Hai bạn chó (Bi và Bông) chơi trốn tìm, Bông đã trốn vào một trong những chiếc mũ của ông già Nôen trên. Hãy chỉ ra các cách tìm chiếc mũ mà Bông đang trốn? Cho biết có những cách nào? Bông trốn đâu nhỉ ? C1: Tìmkiếm tuần tự ( mở từng mũ) C2: Do các mũ đã sắp xếp lớn dần, hai mũ đầu nhỏ hơn người của Bông nên chỉ tìm hai mũ sau thôi! 1. ThuËt to¸n t×m kiÕm tuÇn tù Xét một bàitoántìmkiếm đơn giản sau : Cho dãy A gồm N số nguyên khác nhau: a 1 ,a 2 ….a N và một số nguyên k.Cần biết có hay không chỉ số i(1<=i<=N) mà a i =k. Nếu có hãy cho biết số đó. INPUT: Dãy A gồm N số nguyên a 1 , a 2 , , a N đôi một khác nhau và số nguyên k. OUTPUT: Chỉ số i mà a i = k hoặc thông báo không có số hạng nào của dóy A cú giỏ tr bằng k. 1. Thuậttoántìmkiếm tuần tự Xác định bài toán: 54321I 5125118924175A Mô phỏng thuậttoántìmkiếm tuần tự Mô phỏng thuậttoántìmkiếm tuần tự Với k = 2 và dãy A gồm 10 số hạng như sau: Tại vị trí i = 5 có a 5 = 2 = k Với k = 6 và dãy A gồm 10 số hạng như sau: A 5 7 1 4 2 9 8 11 25 51 I 1 2 3 4 5 6 7 8 9 10 11 Với mọi i từ 1 10 không có a i có giá trị bằng 6 5 ý tưởng: Lần lượt từ số hạng thứ nhất, ta so sánh giá trị số hạng đang xét với khoá (k) cho đến khi có sự trùng nhau, nếu đã xét tới số hạng cuối cùng mà không có sự trùng nhau thì có nghĩa là dãy A không có số hạng nào có giá trị bằng k. Cách 1: Liệt kê các bước Cách 1: Liệt kê các bước Bước 1: Nhập N, các số hạng a Bước 1: Nhập N, các số hạng a 1 1 , a , a 2 2 , , a , , a N N và giá trị khoá k; và giá trị khoá k; Bước 2: i Bước 2: i 1; 1; Bước 3: Nếu a Bước 3: Nếu a i i = k thì thông báo chỉ số i, rồi kết thúc; = k thì thông báo chỉ số i, rồi kết thúc; Bước 4: i Bước 4: i i+1; i+1; Bước 5: Nếu i > N thì thông báo dãy A không có số Bước 5: Nếu i > N thì thông báo dãy A không có số hạng nào có giá trị bằng k, rồi kết thúc; hạng nào có giá trị bằng k, rồi kết thúc; Bước 6: Quay lại B3. Bước 6: Quay lại B3. Nhập N, a 1 , a 2 , ., a N và k i 1 a i = k ? Đưa ra i rồi kết thúc Đ S Đ i i + 1 i > N ? 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 Cách 2 Vẽ sơ đồ khối 2. Thuậttoántìmkiếm nhị phân ý tưởng: Sử dụng tính chất dãy A đã sắp xếp tăng, ta tìm cách thu hẹp nhanh phạm vi tìmkiếm bằng cách so sánh k với số hạng ở giữa dãy (a giữa ), khi đó chỉ xảy ra một trong ba trường hợp: Quá trình trên được lặp đi lặp lại cho đến khi tìm được OUTPUT. - Nếu a giữa = k => tìm được chỉ số i, kết thúc; - Nếu a giữa > k => do dãy A đã được sắp xếp tăng nên việc tìmkiếm thu hẹp chỉ xét từ a1 a giữa - 1; - Nếu a giữa < k => do dãy A đã được sắp xếp tăng nên việc tìmkiếm thu hẹp chỉ xét từ a giữa + 1 a N . Thuậttoántìmkiếm nhị phân Xác định bài toán: INPUT: Dãy A l dóy tng gồm N số nguyên a 1 , a 2 , , a N đôI một khác nhau và m t số nguyên k. OUTPUT: Chỉ số i mà a i = k hoặc thông báo không có số hạng nào của dóy A cú giỏ tr bằng k. Liệt kê các bước Liệt kê các bước Bước 1: Nhập N, các số hạng a Bước 1: Nhập N, các số hạng a 1 1 , a , a 2 2 , , a , , a N N và giá trị khoá k; và giá trị khoá k; Bước 2: Đầu Bước 2: Đầu 1, Cuối 1, Cuối N; N; Bước 3: Giữa Bước 3: Giữa [(Đầu + Cuối)/2]; [(Đầu + Cuối)/2]; Bước 4: Nếu a Bước 4: Nếu a Giữa Giữa = k thì thông báo chỉ số Giữa = k thì thông báo chỉ số Giữa rồi kết thúc; rồi kết thúc; Bước 5: Nếu a Bước 5: Nếu a Giữa Giữa > k thì đặt Cuối = Giữa - 1 rồi > k thì đặt Cuối = Giữa - 1 rồi chuyển sang bước 7; chuyển sang bước 7; Bước 6: Đầu Bước 6: Đầu Giữa + 1; Giữa + 1; Bước 7: Nếu Đầu >= Cuối thì thông báo dãy A không có Bước 7: Nếu Đầu >= Cuối 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ố hạng có giá trị bằng k, rồi kết thúc; Bước 8: Quay lại bước 3. Bước 8: Quay lại bước 3. [...]... 4 5 6 9 21 22 30 31 33 9 i 1 2 3 4 5 6 6 7 8 9 10 Lượt thứ nhất: agiữa là a5 = 9; 9 < vùng tìmkiếm thu hẹp trong phạm vi từ a6 a10; Lượt thứ hai: agiữa là a8 = 30; 30 > vùng tìmkiếm thu hẹp trong phạm vi từ a6 a7; Lượt thứ ba: agiữa là a6 = 21; 21= 21 Vậy số cần tìm là i = 6 Mô phỏng thuậttoántìmkiếm nhị phân Với k = 25 và dãy A gồm 10 số hạng như sau: A 2 4 5 6 9 21 22 30 31 33 i 1 2 3 4. .. =8,cui=7 iu ny vụ lý Kt lun trong dóy khụng cú s hng no cú giỏ tr l 25 c 3 CNG C V DN Dề HS bit c thut toỏn tỡm kim : + Thut toỏn tỡm kim tun t + Thut toỏn tỡm kim nh phõn HS v nh lm bi tp s 7 trang 44 sgk .Xem trc bi 5 : Ngụn ng lp trỡnh . cú giỏ tr bằng k. 1. Thuật toán tìm kiếm tuần tự Xác định bài toán: 543 21I 51251189 241 75A Mô phỏng thuật toán tìm kiếm tuần tự Mô phỏng thuật toán tìm kiếm. a 5 = 2 = k Với k = 6 và dãy A gồm 10 số hạng như sau: A 5 7 1 4 2 9 8 11 25 51 I 1 2 3 4 5 6 7 8 9 10 11 Với mọi i từ 1 10 không có a i có giá trị bằng