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... 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... Phép tổng: Thường được tính tro
Trang 1Cơ s ở toán h ọ 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
• log2N = lgN; log10N = logN
• X>Y logBX> logBY
Trang 2Cơ s ở toán h ọ c
• logB1=0
• logBB=1
• logB(X*Y)= logBX+ logBY
• logBXY =Y*logBX
• logAX= logBX/ logBA
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
Trang 3Cơ s ở toán h ọ c
- 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
Trang 4Cơ s ở toán h ọ 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ố
Trang 5Cơ s ở toán h ọ 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)
Trang 6Thu ậ t toán chia đ ể 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
Trang 7Thu ậ t toán chia đ ể 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;
}
Trang 8Thu ậ t toán chia đ ể 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
n,n-1,n-2,…,2,1
Trang 9Thu ậ t toán chia đ ể 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)
}
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
Trang 10Duy ệ t cây đ ệ 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)