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

Tin hoc 10: Bai 4 Thuat toan tim kiem

14 8K 70
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

Tiêu đề Thuật Toán Tìm Kiếm
Chuyên ngành Tin Học
Thể loại Bài học
Định dạng
Số trang 14
Dung lượng 1,36 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

V D V Thuật toán tìm kiếm Í DỤ VỀ Thuật toán tìm kiếm Ụ VỀ Thuật toán tìm kiếm Ề Thuật toán tìm kiếmHai 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 ôn

Trang 1

V D V Thuật toán tìm kiếm Í DỤ VỀ Thuật toán tìm kiếm Ụ VỀ Thuật toán tìm kiếm Ề 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!

Trang 2

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:

có hãy cho biết số đó.

Trang 3

INPUT: Dãy A gồm N số nguyên a 1 , a 2 ,…, a, 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:

Trang 4

5 4

3 2

1 I

51 25

11 8

9 2

4 1

7 5

A

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:

Víi mäi i tõ 1 10 kh«ng cã a i cã gi¸ trÞ b»ng 6

5

Trang 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

Trang 6

C¸ch 1: LiÖt kª c¸c b íc

B íc 1: NhËp N, c¸c sè h¹ng a 1 , a 2 , ,…, a…, a, a , a N

vµ gi¸ trÞ kho¸ k;

B íc 2: i 1;

B íc 3: NÕu a i = 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.

Trang 7

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 ãy A không

có số hạng có giá trị bằng k, rồi kết thúc

Vẽ sơ đồ khối

Trang 8

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

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

Trang 9

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 tăng gồm N số nguyên

a1, a2, …, a , aN đôI một khác nhau và m t số ột số nguyên k.

báo không có số hạng nào của dóy A cú giỏ

tr bằng k ị bằng k.

Trang 10

Liệt kê các b ớc

B ớc 1: Nhập N, các số hạng a 1 , a 2 , ,…, a…, a, a , a N

và giá trị khoá k;

B ớc 2: Đầu 1, Cuối N;

B ớc 3: Giữa [(Đầu + Cuối)/2];

B ớc 4: Nếu a Giữa = k thì thông báo chỉ số Giữa

rồi kết thúc;

B ớc 5: Nếu a Giữa > k thì đặt Cuối = Giữa - 1 rồi

chuyển sang b ớc 7;

B ớc 6: Đầu Giữa + 1;

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;

B ớc 8: Quay lại b ớc 3.

Trang 11

SƠ ĐỒ KHỐI

Dau← 1;Cuoi ←N

aGiua = k ?

Đưa ra Giua

rồi kết thúc

Đúng

Sai

Cuoi← Giua - 1

aGiua>k

Đúng

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

Sai

Giua← [(Dau + Cuoi)/2]

Dau← Giua + 1 Dau> Cuoi

Sai

Đúng

Nhập N và a1,a2,

…aN;k

Trang 12

M« pháng thuËt to¸n t×m kiÕm nhÞ ph©n

 Víi k = vµ d·y A gåm 10 sè h¹ng nh sau:

L ît thø nhÊt : a gi÷a lµ a 5 = 9; 9 <

vïng t×m kiÕm thu hÑp trong ph¹m vi tõ a 6 a 10 ;

L ît thø hai: a gi÷a lµ a 8 = 30; 30 >

vïng t×m kiÕm thu hÑp trong ph¹m vi tõ a 6 a 7 ;

L ît thø ba: a gi÷a lµ a 6 = 21; 21= 21

 VËy sè cÇn t×m lµ i = 6.

10 9

8 7

6 5

4 3

2 1

i

33 31

30 22

21 9

6 5

4 2

66

21 9

30

6 21

21

Trang 13

M« pháng thuËt to¸n t×m kiÕm nhÞ ph©n

10 9

8 7

6 5

4 3

2 1

i

33 31

30 22

21 9

6 5

4 2

66 21

L ît thø tư

 vïng t×m kiÕm thu hÑp trong ph¹m vi vïng t×m kiÕm thu hÑp trong ph¹m vi đầu =7,cuối=7 đầu =7,cuối=7 u =7,cu i=7 u =7,cu i=7 ối=7 ối=7

Kết luận trong dãy không có số hạng nào có giá trị là 25 cả.

u =8,cu i=7

đầu =7,cuối=7 u =8,cu i=7 ối=7

8

30 21

22

Trang 14

3 CỦNG CỐ VÀ DẶN DÒ

HS biết được thuật toán tìm kiếm :

+ Thuật toán tìm kiếm tuần tự

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

.HS về nhà làm bài tập số 7 trang 44 sgk .Xem trước bài 5 : Ngôn ngữ lập trình.

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

TỪ KHÓA LIÊN QUAN

w