Tải bản đầy đủ (.pdf) (3 trang)

Chương 3 Các phương pháp tìm kiếm và sắp xếp potx

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (746.79 KB, 3 trang )

Các phương pháp sắp xếp
và tìm kiếm
Các phương pháp sắp xếp
và tìm kiếm
Chương 3
Các phương pháp sắp xếp
4
Đệ qui
1
Tìm kiếm đệ qui
2
Các phương pháp tìm kiếm
3
Nội dung
N
N


i dung
i dung
3/11/2010
www.lhu.edu.vn
Chương
Chương
3 C
3 C
á
á
c phương
c phương
phá


phá
p t
p t
ì
ì
m ki
m ki
ế
ế
m v
m v
à
à
s
s


p x
p x
ế
ế
p
p
 Tìm kiếm và sắp xếp dữ liệu là hai thao tác
thường xuyên được thực hiện trong khai thác
thông tin
 Tùy thuộc vào cấu trúc lưu trữ của dữ liệu các
thuật toán được xây dựng có mức độ hiệu quả
khác nhau
 Có thể chia thành hai nhóm: các thuật toán thao

tác trên bộ nhớ chính (RAM) và trên bộ nhớ
ngoài (các ổ đĩa)
V
V


n đ
n đ


t
t
ì
ì
m ki
m ki
ế
ế
m v
m v
à
à
s
s


p x
p x
ế
ế

p d
p d


li
li


u
u
3/11/2010
www.lhu.edu.vn
Chương
Chương
3 C
3 C
á
á
c phương
c phương
phá
phá
p t
p t
ì
ì
m ki
m ki
ế
ế

m v
m v
à
à
s
s


p x
p x
ế
ế
p
p
Kh
Kh
á
á
i ni
i ni


m
m
 Một đối tượng X gọi là được
đ
đ


nh ngh

nh ngh
ĩ
ĩ
a đ
a đ


qui
qui nếu
trong phát biểu của X có dùng chính đối tượng X
Ví dụ: “Người giàu là người có nhiều tài sản hoặc có cha
mẹ là người giàu” – trực tiếp
“Gà  Trứng  Gà” – gián tiếp
 Định nghĩa bằng đệ quy có ưu điểm:
 Sáng sủa
 Dễ hiểu
 Nêu bật được vấn đề
Đ
Đ


qui
qui
3/11/2010
www.lhu.edu.vn
Chương
Chương
3 C
3 C
á

á
c phương
c phương
phá
phá
p t
p t
ì
ì
m ki
m ki
ế
ế
m v
m v
à
à
s
s


p x
p x
ế
ế
p
p
Kh
Kh
á

á
i ni
i ni


m
m
 Một chương trình đệ qui là chương trình gọi đến
chính nó trong các câu lệnh, chương trình đệ qui
bắt buộc phải có điều kiện dừng
 Nhược điểm của đệ qui
 Không phải bài toán nào cũng dùng đệ qui được
 Sử dụng nhiều bộ nhớ để lưu trữ tạm thời các biến
trong lúc chạy đệ qui
Đ
Đ


qui
qui
3/11/2010
www.lhu.edu.vn
Chương
Chương
3 C
3 C
á
á
c phương
c phương

phá
phá
p t
p t
ì
ì
m ki
m ki
ế
ế
m v
m v
à
à
s
s


p x
p x
ế
ế
p
p
Kh
Kh
á
á
i ni
i ni



m
m
 Một định nghĩa đệ qui thường có 2 thành phần
 Thành phần cố định (điều kiện dừng) : không có lời
gọi đệ qui
Ví dụ: 0! = 1! = 1
 Thành phần đệ qui : ứng với tham số có lời gọi đệ
qui đến tham số khác, dần tiến về thành phần cố định
Ví dụ: n! = n*(n-1)! Nếu n > 1
Đ
Đ


qui
qui
3/11/2010
www.lhu.edu.vn
Chương
Chương
3 C
3 C
á
á
c phương
c phương
phá
phá
p t

p t
ì
ì
m ki
m ki
ế
ế
m v
m v
à
à
s
s


p x
p x
ế
ế
p
p
 Một hàm đệ quy về căn bản luôn gồm 2 phần.
 Phần dừng: Chứa các tác động của hàm ứng với 1 số
giá trị ban đầu của tham số
 Phần hạ bậc: Chứa lời gọi thực hiện hàm với tham số
có phạm vi nhỏ hơn.
H
H
à
à

m đ
m đ


qui
qui
Ví dụ: Xây dựng hàm tính n! theo đệ
qui.
long giaithua(int n)
{
if (n == 0 || n == 1) return 1;
else return (n * giaithua(n-1));
}
Ví dụ: Tính UCLN(x,y) theo thuật toán
Euclide
int ucln(int x, int y)
{
if (y == 0) return x;
else return (ucln(y, x % y));
}
3/11/2010
www.lhu.edu.vn
Chương
Chương
3 C
3 C
á
á
c phương
c phương

phá
phá
p t
p t
ì
ì
m ki
m ki
ế
ế
m v
m v
à
à
s
s


p x
p x
ế
ế
p
p
Xây d
Xây d


ng d
ng d



n c
n c
á
á
c th
c th
à
à
nh ph
nh ph


n c
n c


a m
a m


t l
t l


i gi
i gi



i hay m
i hay m


t c
t c


u
u
h
h
ì
ì
nh b
nh b


ng c
ng c
á
á
ch th
ch th


t
t



t c
t c


c
c
á
á
c kh
c kh


năng
năng
.
.
V
V
í
í
d
d


: li
: li


t kê c
t kê c

á
á
c dãy nh
c dãy nh


phân c
phân c
ó
ó
đ
đ


d
d
à
à
i n bit
i n bit
V
V


i n=3
i n=3


T
T

ì
ì
m ki
m ki
ế
ế
m đ
m đ


qui
qui
Bit 2 Bit 1 Bit 0
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Một “cấu hình”
3 bit ~ 8 khả năng
3/11/2010
www.lhu.edu.vn
Chương
Chương
3 C
3 C
á

á
c phương
c phương
phá
phá
p t
p t
ì
ì
m ki
m ki
ế
ế
m v
m v
à
à
s
s


p x
p x
ế
ế
p
p
/* Xác định thành phần xi bằng đệ quy */
void Try( int i )
{ int j;

If (i > N) < ghi nhận 1 cấu hình>;
else
{
for (j thuộc tập khả năng đề cử )
if < chấp nhận khả năng ( j )> then
{
< Xác định xi theo khả năng ( j ) >
<Ghi nhận khả năng ( j ) đã được chọn cho xi >;
Try( i+1);
< bỏ việc ghi nhận khả năng ( j ) đã chọn cho xi >;
}
}
}
H
H
à
à
m t
m t
ì
ì
m ki
m ki
ế
ế
m đ
m đ


qui

qui
3/11/2010
www.lhu.edu.vn
Chương
Chương
3 C
3 C
á
á
c phương
c phương
phá
phá
p t
p t
ì
ì
m ki
m ki
ế
ế
m v
m v
à
à
s
s


p x

p x
ế
ế
p
p
 Ví dụ: Liệt kê các dãy nhị phân có độ dài n.
 CTDL: Mảng byte: char X[20]; chứa dãy nhị phân tối đa 20 bit
 Khả năng đề cử cho 1 thành phần (1 bit) X[i] là: 0 và 1
void Try(int i)
{ int j;
if ( i > n ) InKetqua;
else
for (j =0; j<2; j++)
{ X[i] = j;
Try( i + 1 );
}
}
3/11/2010
www.lhu.edu.vn
Chương
Chương
3 C
3 C
á
á
c phương
c phương
phá
phá
p t

p t
ì
ì
m ki
m ki
ế
ế
m v
m v
à
à
s
s


p x
p x
ế
ế
p
p
 Bài toán Tháp Hà Nội
 Bài toán liệt kê hoán vị
 Bài toán 8 quân Hậu
 Bài toán Mã đi tuần
M
M


t s

t s


v
v
í
í
d
d


cơ b
cơ b


n v
n v


đ
đ


qui
qui
3/11/2010
www.lhu.edu.vn
Chương
Chương
3 C

3 C
á
á
c phương
c phương
phá
phá
p t
p t
ì
ì
m ki
m ki
ế
ế
m v
m v
à
à
s
s


p x
p x
ế
ế
p
p
 Sinh viên chia nhóm thực hiện: mỗi nhóm từ 3-5

người
 Bốc thăm 2 trong số các thuật toán để tìm hiểu
và Seminar
C
C
á
á
c thu
c thu


t to
t to
á
á
n t
n t
ì
ì
m ki
m ki
ế
ế
m v
m v
à
à
s
s



p x
p x
ế
ế
p
p
 Yêu cầu tìm hiểu
 Ý tưởng thuật toán
 Ví dụ minh họa
 Cài đặt chương trình
 Nhận xét đánh giá
 Tài liệu tham khảo
 Yêu cầu Seminar
 Tạo Slide PowerPoint
 Trình bày trong 15 phút
 Trao đổi thảo luận
 Trả lời thắc mắc

×