1. Trang chủ
  2. » Giáo án - Bài giảng

Thuật toán tìm kiếm

19 655 2
Tài liệu đã được kiểm tra trùng lặp

Đ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

Thông tin cơ bản

Định dạng
Số trang 19
Dung lượng 1,89 MB

Nội dung

Số nguyên K được gọi là khoá tìm kiếm.. gọi tắt là khoá Làm thế nào để giải được bài toán này nhỉ?. Các em cần xây dựng thuật toán tìm kiếm tuần tự để giải bài toán này 1.. ý tưởng: Lầ

Trang 1

NỘI DUNG

TIếT CT: 14

Hai bạn chó (Bi và Bông) chơi trốn tìm, Bông đã trốn và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 Xác định BT

2 ý tưởng

3 Thuật toán

Ví dụ

Trang 2

NỘI DUNG

Gv:

TIếT CT: 14

Xét bài toán tìm kiếm đơn giản:

Cho dãy A gồm N số nguyên khác nhau: a1, a2, , aN và một số nguyên k Cần biết có hay không chỉ số i (1 i ≤ ≤ N ) mà ai = k Nếu có hảy cho biết chỉ số đó.

Số nguyên K được gọi là khoá tìm kiếm (gọi tắt là khoá)

Làm thế nào

để giải được bài toán này

nhỉ ?

Có 2 cách ư chọn cách nào đây ?

Các em cần xây dựng thuật toán tìm kiếm tuần tự

để giải bài toán này

1 Xác định BT

2 ý tưởng

3 Thuật toán

Ví dụ

bACK

Trang 3

NỘI DUNG

TIếT CT: 14

Chỉ số i mà ai = k (1 i N) hoặc thông báo không có số hạng nào của A bằng k.

Dãy A gồm N số nguyên khác nhau a1, a2, ,

aN và số nguyên k.

INPUT:

OUTPUT:

1 Xác định bài toán:

1 Xác định BT

2 ý tưởng

3 Thuật toán

Ví dụ

Trang 4

NỘI DUNG

Gv:

TIếT CT: 14

2 ý 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

1 Xác định BT

2 ý tưởng

3 Thuật toán

Ví dụ

BTVN

Trang 5

NỘI DUNG

TIếT CT: 14

Cách 1 : Liệt kê các bước

Bước 1: Nhập N, các số hạng a1, a2, , aN

và giá trị khoá k;

Bước 2: i 1;

Bước 3: Nếu ai = k thì thông báo chỉ số i, rồi kết thúc;

Bước 4: i i+1;

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;

Bước 6: Quay lại B3.

3 Thuật toán:

1 Xác định BT

2 ý tưởng

3 Thuật toán

Ví dụ

Trang 6

NỘI DUNG

Gv:

TIếT CT: 14

Nhập N, a 1 , a 2 , , a N

và k

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

i 1

a i =

k ?

Đưa ra i rồi kết thúc

Đ

S

Đ

i i + 1

i >

N ?

Vẽ sơ đồ khối

3 2

1 i

13 21

6 8

9 5

A

S

Moõ phoỷng thuaọt toaựn: K = 8 vaứ daừy

1 Xác định BT

2 ý tưởng

3 Thuật toán

Ví dụ

Trang 7

NỘI DUNG

TIếT CT: 14

1 XáC ĐịNH BàI TOáN

; , ,

, 2

a

- Output : Chỉ số i mà a i = k

hoặc thông

giá trị bằng k.

1 Xác định BT

2 ý tưởng

Thảo luận

3 Thuật toán

Ví dụ

BTVN

-Input : Một số nguyên k và d y A là ã d y tăng ã

gồm N số nguyên đôi một khác nhau:

Trang 8

NỘI DUNG

Gv:

TIếT CT: 14

7

1 Xác định BT

2 ý tưởng

Thảo luận

3 Thuật toán

Ví dụ

BTVN

Tìm thấy tại vị

trí thứ 7

Trang 9

NỘI DUNG

TIếT CT: 14

7

1 Xác định BT

2 ý tưởng

Thảo luận

3 Thuật toán

Ví dụ

BTVN

Tìm thấy tại vị

trí thứ 3

Trang 10

NỘI DUNG

Gv:

TIếT CT: 14

Do d y A là ã d y tăng ã , ta thu hẹp nhanh phạm vi tìm kiếm sau mỗi lần so sánh khoá k với số hạng được chọn Muốn vậy, ta chọn số hạng aGiữa ở "giữa d y" để so sánh với ã k .

Trong đó: Giữa

2 ý tưởng

Khi đó, chỉ xảy ra một trong ba trường hợp sau:

Nếu aGiữa = k thì Giữa là chỉ số cần tìm Kết thúc.

Nếu aGiữa > k thì tìm kiếm trên d y ã a1, a2, , aGiữa - 1

Nếu aGiữa < k thì tìm kiếm trên d y ã aGiữa+1, aGiữa+2, , aN





 +

=

2

1

N

Quá trình trên sẽ được lặp lại một số lần cho đến khi hoặc đ tìm thấy ã khoá k trong d y A hoặc ã phạm vi tìm kiếm

(A): a1, a2, a3, a4, a5, a6, a7, a8, a9

1 Xác định BT

2 ý tưởng

Thảo luận

3 Thuật toán

Ví dụ

BTVN

Trang 11

NỘI DUNG

TIếT CT: 14

Câu hỏi : Làm thế nào để tìm được số hạng

(A): a1, a2, a3, a4, a5, a6, a7, a8, a9

1 Xác định BT

2 ý tưởng

Thảo luận

3 Thuật toán

Ví dụ

BTVN

ợc chỉ số Giữa của d y đang xét ã

Muốn tìm được chỉ số Giữa , ta cần có 2 biến chỉ số: Đầu (Đầu d y) và ã Cuối (Cuối d y), khi đó: ã

Trang 12

NỘI DUNG

Gv:

TIếT CT: 14

THảO LUậN NHóM

Yêu cầu : Dựa theo ý tưởng của thuật toán tìm kiếm nhị phân đ xét, các em h y ã ã trình bày các bư

ớc tìm số k trong d y số A sau: ã

1, 3, 4, 6, 7, 10, 15

1 Xác định BT

2 ý tưởng

Thảo luận

3 Thuật toán

Ví dụ

BTVN

Trang 13

NỘI DUNG

TIếT CT: 14

3 THUậT TOáN (Mô tả bằng sơ đồ khối)

Nhập N và a 1 , a 2 ,…, a N ; k

aGiữa = k?

Đưa ra Giữa rồi kết thúc

aGiữa > k?

Đầu > Cuối

Đầu 1; Cuối N

Giữa [(ẹaàu + Cuoỏi )/ 2]

Cuối Giữa - 1

Đầu Giữa + 1

S

S

S

(A): a1, a2, a3, a4, a5, a6, a7, a8, a9

1 Xác định BT

2 ý tưởng

Thảo luận

3 Thuật toán

Ví dụ

BTVN

Trang 14

NỘI DUNG

Gv:

TIếT CT: 14

Đầu = 1 Cuối = 8

3 THUậT TOáN (Mô tả bằng sơ đồ khối)

Nhập N và a 1 , a 2 ,…, a N ; k

aGiữa = k?

Đưa ra Giữa rồi kết thúc

aGiữa > k?

Đầu > Cuối

D y A ã không có

số hạng có giá trị bằng k

Kết thúc

Đầu 1; Cuối N

Giữa [(ẹaàu + Cuoỏi )/ 2]

Cuối Giữa - 1

Đầu Giữa + 1

S

S

Đ

S

VD : Tìm số k = 10 trong d y số A sau: ã

2, 3, 4, 6, 8, 9, 10, 12 ( N = 8 )

, 5 , 7

1 Xác định BT

2 ý tưởng

Thảo luận

3 Thuật toán

Ví dụ

BTVN

Trang 15

NỘI DUNG

TIếT CT: 14

BàI TậP Về NHà

* Bài 1 : Dùng thuật toán tìm kiếm nhị phân để tìm số k = 14

trong d y số A sau: ã

1, 3, 5, 7, 9, 10 , 12, 14, 16 ( N = 9 ) (Lưu ý: trình bày rõ các bước cùng với các chỉ số Đầu, Giữa, Cuối)

* Bài 2: H y so sánh những ưu điểm và nhược điểm của hai ã thuật toán tìm kiếm mà em đ được học? ( ã Tìm kiếm tuần tự

và tìm kiếm nhị phân )

1 Xác định BT

2 ý tưởng

Thảo luận

3 Thuật toán

Ví dụ

BTVN

Trang 16

NỘI DUNG

Gv:

TIếT CT: 14

Nhóm 1 : Tìm số k = 6.

1 Xác định BT

2 ý tưởng

3 Thuật toán

Ví dụ

BTVN

Thảo luận

Cu i ố 7

Gi a ữ 4

a Gi a ữ 6

trong d y A ã

Trang 17

NỘI DUNG

TIếT CT: 14

Nhóm 2 : Tìm số k = 3.

1 Xác định BT

2 ý tưởng

3 Thuật toán

Ví dụ

BTVN

Thảo luận

a Gi a ữ 6 3

Trang 18

NỘI DUNG

Gv:

TIếT CT: 14

1 Xác định BT

2 ý tưởng

3 Thuật toán

Ví dụ

BTVN

Thảo luận

Nhóm 3 : Tìm số k = 15.

Kết quả : Tìm thấy số k = 15 tại vị trí thứ Giữa = 7

trong d y A ã

Trang 19

NỘI DUNG

TIếT CT: 14

1 Xác định BT

2 ý tưởng

3 Thuật toán

Ví dụ

BTVN

Thảo luận

Nhóm 4 : Tìm số k = 13

Ngày đăng: 03/08/2013, 01:28

TỪ KHÓA LIÊN QUAN

w