Tin hoc 10: Bai 4 Thuat toan tim kiem

14 8K 70
Tin hoc 10: Bai 4 Thuat toan tim kiem

Đ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

V D V Thuật toán tìm kiế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ìm kiế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ài toán tìm kiế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ật toán tìm kiếm tuần tự Xác định bài toán: 54321I 5125118924175A 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 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ật toán tìm kiế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ìm kiế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ìm kiế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ìm kiếm thu hẹp chỉ xét từ a giữa + 1 a N . Thuật toán tìm kiế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ìm kiếm thu hẹp trong phạm vi từ a6 a10; Lượt thứ hai: agiữa là a8 = 30; 30 > vùng tìm kiế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ật toán tìm kiế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

Ngày đăng: 14/06/2013, 01:26

Từ khóa liên quan

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

  • Đang cập nhật ...

Tài liệu liên quan