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

Cấu trúc dữ liệu và giải thuật (phần 2) pptx

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 (214.42 KB, 10 trang )

Cơ s
Cơ s


to
to
á
á
n h
n h


c
c
1. Cận trên, cận dưới:
• └X┘ Giá trị nguyên lớn nhất, nhỏ hơn hoặc
bằng X. Ví dụ: └2.5┘=2; └-7.3┘=-8
• ┌X┐ Giá trị nguyên nhỏ nhất, lớn hơn hoặc
bằng X. . Ví dụ: └2.5┘=3; └-7.3┘=-7
2. Logarithms: Giải thuật tăng chậm hơn sự tăng
N
• log
2
N = lgN; log
10
N = logN
• X>Y  log
B
X> log
B
Y


Cơ s
Cơ s


to
to
á
á
n h
n h


c
c
• log
B
1=0
• log
B
B=1
• log
B
(X*Y)= log
B
X+ log
B
Y
• log
B
X

Y
=Y*log
B
X
• log
A
X= log
B
X/ log
B
A
3. Cây nhị phân:
• Khái niệm: Cây nhị phân là cây mà mỗi nút có
tối đa 2 cây con
Cơ s
Cơ s


to
to
á
á
n h
n h


c
c
• Bậc của cây:
- Cây nhị phân có N

nút:
+ S

b

c ít nh

t:

lgN

+ S

b

c t

i
đ
a: N-1
- Ví dụ: Cây nhị phân có 15 nút, có ít nhất là
└lg15┘=└3.9┘=3 bậc
- Ở bậc K, có 2
K
nút
Cơ s
Cơ s


to

to
á
á
n h
n h


c
c
4. Xác suất:
5. Phép tổng: Thường được tính trong vòng lặp
6. Sự tăng
của hàm số
Cơ s
Cơ s


to
to
á
á
n h
n h


c
c
7. Phân loại sự tăng:
• Omega lớn: g(x) thuộc Ω(f), g(n)>=cf(n), mọi
n>=n0

• O lớn: Một hàm g(N) được gọi là O(f(N)) nếu
tồn tại hai hằng số c0 và N0 sao cho g(N) nhỏ
hơn c0 với mọi N>N0
• Theta lớn: Theta(f) = Ω(f) ∩ O(f)
Thu
Thu


t to
t to
á
á
n chia đ
n chia đ


tr
tr


1. Khái niệm: Giải thuật chia để trị (divide and
conquer) là phân rã vấn đề thành những vấn đề
con để giải quyết, sau đó kết hợp lại
2. Giải thuật đệ qui: Để giải quyết 1 vấn đề, giải
thuật gọi lại chính nó 1 hay nhiều lần để giải
quyết những vấn đề con
3. Giải thuật chia để trị: Gồm 3 bước
- Phân chia
- Trị
- Kết hợp

Thu
Thu


t to
t to
á
á
n chia đ
n chia đ


tr
tr


 Ví dụ: Tính n!
int factorial (int n)
{ if (n == 0) return 1;
else return n * factorial(n - 1);
}
 Tính tối ưu của giải thuật đệ qui?
int factorial (int n)
{ int c, fact = 1;
for (c = 1; c<= n; c++)
fact*= c;
return fact;
}
Thu
Thu



t to
t to
á
á
n chia đ
n chia đ


tr
tr


www.hoasen.edu.vn 18
 Chương tr
ình
đệ
qui chi
ế
m nhi

u vùng
nh
ớ hơn chương tr
ình không
đệ qui
,
đồ
ng th


i chi
ế
m nhi

u th

i gian h
ơ
n do
v

a ph

i c

t và l

y các tr

t
ừ ngăn xế
p,
v

a ph

i th

c hi


n tính toán
Cây đệ qui tính giai thừa
Hàm đệ qui Hàm không đệ qui
-Không có biến cục bộ
-Cần 1 ngăn xếp để chứa n con số
n,n-1,n-2,…,2,1
-2 biến cục bộ
Thu
Thu


t to
t to
á
á
n chia đ
n chia đ


tr
tr


Bài tập:
1. Viết thuật toán đệ qui và không đệ qui để tính dãy
số Fibonacci
int Fib (int n)
{ if (n=1) || (n=2) return 1;
else return Fib(n-1)+Fib(n-2);

}
2. Tìm ước số chung lớn nhất của 2 số m, n. Ví dụ:
GCD(15,9)=3, GCD(51,34)=17
Duy
Duy


t cây đ
t cây đ


qui
qui
• Cây nhị phân với các thứ tự duyệt cây như sau:
Duyệt theo thứ tự trước (NLR)
Duyệt theo thứ tự giữa (LNR)
Duyệt theo thứ tựï sau (LRN).

×