Nội dung
Cấu trúc dữ liệu và thuật toán
Thuật toán và các đặc trưng của thuật toán
Diễn đạt thuật toán
Kiểu dữ liệu, ADT, cấu trúc dữ liệu
Phân tích và thiết kế thuật toán
Thiết kế thuật toán
Phân tích thuật toán
Một số lớp các thuật toán
65 trang |
Chia sẻ: phuongt97 | Lượt xem: 686 | Lượt tải: 0
Bạn đang xem trước 20 trang nội dung tài liệu Bài giảng Cấu trúc dữ liệu và giải thuật - Chương 1: Tổng quan - Nguyễn Thị Khiêm Hòa, để xem tài liệu hoàn chỉnh bạn click vào nút DOWNLOAD ở trên
Chương 1: Tổng quan
Giảng viên: Ths. Nguyễn Thị Khiêm Hòa
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
Nội dung
Cấu trúc dữ liệu và thuật toán
Thuật toán và các đặc trưng của thuật toán
Diễn đạt thuật toán
Kiểu dữ liệu, ADT, cấu trúc dữ liệu
Phân tích và thiết kế thuật toán
Thiết kế thuật toán
Phân tích thuật toán
Một số lớp các thuật toán
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
2
Mục tiêu
Tìm hiểu các nội dung:
Thiết kế và phân tích được thuật toán.
Hiểu rõ về kiểu dữ liệu, kiểu dữ liệu trừu
tượng, cấu trúc dữ liệu.
Đánh giá độ phức tạp của thuật toán.
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
3
Giải bài toán bằng máy tính
Giải quyết một bài toán:
Mục tiêu
Phương pháp
Giải quyết bài toán tin học cần phải:
Tổ chức biểu diễn các đối tượng thực tế
Xây dựng trình tự các thao tác xử lý trên các
đối tượng dữ liệu đó
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
4
Giải bài toán bằng máy tính
Cấu trúc dữ liệu
+ Thuật toán
Chương trình
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
5
Kiểu dữ liệu trừu tượng _ADT
Kiểu dữ liệu
Kiểu dữ liệu trừu tượng
ADT - abstract data type
Kiểu dữ liệu trừu tượng: T =
V: Values - miền giá trị
O: Operators – các thao tác
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
6
Cấu trúc dữ liệu
Cấu trúc dữ liệu (Data structure): Cách tổ
chức dữ liệu cho bài toán
Có một số cấu trúc dữ liệu riêng của ngôn
ngữ lập trình được gọi là CTDL tiền định.
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
7
Đánh giá cấu trúc dữ liệu
Phản ánh đúng thực tế
Phù hợp với thao tác
Tiết kiệm tài nguyên hệ thống
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
8
Cấu trúc lưu trữ (trong/ngoài)
Cách biểu diễn tối ưu của cấu trúc dữ liệu
trên bộ nhớ (trong/ngoài) của máy tính được
gọi là cấu trúc lưu trữ.
Có nhiều cấu trúc lưu trữ khác nhau cho cùng
một cấu trúc dữ liệu
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
9
Thuật toán
Định nghĩa
Lý thuyết thuật toán quan tâm đến những
vấn đề sau:
Giải được bằng thuật toán
Tối ưu hóa thuật toán
Triển khai thuật toán
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
10
Thuật toán
Đặc trưng của thuật toán
Tính xác định
Tính hữu hạn (Tính dừng)
Tính đúng đắn
Tính phổ dụng
Tính khả thi
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
11
Diễn đạt thuật toán
Dạng lưu đồ (sơ đồ khối)
Dạng ngôn ngữ tự nhiên (Ngôn ngữ liệt
kê từng bước)
Ngôn ngữ lập trình
Dạng mã giả
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
12
Diễn đạt thuật toán
Các ký hiệu biểu diễn thuật toán bằng sơ đồ
khối
Nút thao tác
Nút điều khiển: trong đó ghi điều
kiện cần kiểm tra trong quá trình tính
toán.
Nút khởi đầu ,kết thúc
Cung
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
13
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
14
Diễn đạt thuật toán
Ví dụ 1: Thuật toán xác định n là số nguyên tố
Bước 1: Nhập n
Bước 2: Nếu n ≤ 1 n ko nguyên tố dừng
Bước 3: Nếu n ≥ 2, gán i 2
Bước 4: Nếu i ≥ √n hay n chia hết cho i bước 6
Bước 5: Gán i i+1, trở lại bước 4
Bước 6:
Nếu i > √n n nguyên tố dừng
Ngược lại, n không là nguyên tố dừng
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
15
Diễn đạt thuật toán
Ví dụ 2: Thuật toán tìm phần tử thứ n
của dãy số Fibonacci
Bước 1: Nhập n
Bước 2: Nếu n=1 hay n=2 fn=1 dừng
Bước 3: Nếu n > 2, gán a1, b1, i1
Bước 4: Gán ca+b, ab, bc
Bước 5:
Nếu i = n - 2 fn=c dừng
Ngược lại i i+1, quay lại bước 4
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
16
Diễn đạt thuật toán
Ví dụ 3: Tìm phần tử lớn nhất trong mảng A
Thuật toán Tim_max(A, n)
Input: Mảng A, gồm n số nguyên
Output: Giá trị lớn nhất của A
Max A[0]
for i 1 to n 1 do
if A[i] Max then
Max A[i]
return Max
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
17
Mối quan hệ giữa
Cấu trúc dữ liệu và thuật toán
Đối tượng xử lý của thuật toán chính là
dữ liệu
Với một cấu trúc dữ liệu, sẽ có những
thuật toán tương ứng.
Thuật toán thường thay đổi khi cấu trúc
dữ liệu thay đổi.
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
18
Thiết kế thuật toán
Từ bài toán đến chương trình
Thiết kế Lập trình #include
Bài toán
thực tế
Giải thuật Chương trình
Kỹ thuật thiết kế giải •Ngôn ngữ lập
thuật: Chia để trị, quy trình:
hoạch động, back •PASCAL, C/C++,
tracking v.v JAVA,
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
19
Thiết kế thuật toán
Module hoá và việc giải quyết bài
toán
Chiến thuật chia để trị (divide-conquer):
Để thực hiện chiến thuật này, thường có
hai cách thiết kế:
Từ trên xuống (Top-Down Design).
Tinh chỉnh từng bước
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
20
Thiết kế thuật toán
Tinh chỉnh từng bước:
Biểu diễn ý tưởng bằng ngôn ngữ tự nhiên
Chi tiết hóa các công việc nhỏ hơn dùng mã
giả rồi đến ngôn ngữ lập trình
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
21
Thiết kế thuật toán
Ví dụ: Bài toán sắp xếp một dãy n số, theo thứ tự
tăng dần
Chọn số bé nhất trong n số để vào vị trí thứ 1
Chọn số bé nhất trong n-1 số còn lại để vào vị
trí thứ 2
Chọn số bé nhất trong 2 số còn lại để vào vị trí
thứ n-1
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
22
Thiết kế thuật toán
Tinh chế 1:
For (i= 1, i <= n-1, i++)
{ - Chọn số bé nhất trong các số xi, xi+1, , xn
- Đổi chỗ cho xi
}
Tinh chế 2:
For (i= 1, i <= n-1, i++)
{ - min = x[i]
- So sánh min với các số từ xi+1 -> xn .
Nếu x[j] > min thì min = x[j] với j [i+1,n]
- đổi chổ x[i] và min
} Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
23
Thiết kế thuật toán
for (i= 1; i <= n-1; i++)
{ min =x[i]; vt =i;
for(j = i+1; j <=n; j++)
if (x[j] < min)
{
min = x[j] ;
vt =j;
}
if (vt!=i)
{
x[vt] = x[i];
x[i] = min
}
} Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
24
Phân tích thuật toán
Khi xây dựng thuật toán cần đặt ra các yêu cầu:
Tính đúng đắn
Tính đơn giản
Không gian
Thời gian
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
25
Phân tích thuật toán
Giải quyết bài toán
Phải đứng trước việc lựa chọn giải thuật nào?
Dựa trên cơ sở nào để lựa chọn ?
Có hai mục tiêu trái ngược
Thuật toán dễ hiểu, cài đặt và gỡ lỗi.
Thuật toán sử dụng hiệu quả tài nguyên máy tính,
đặc biệt chạy càng nhanh càng tốt.
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
26
Đánh giá độ phức tạp thuật toán
Độ phức tạp không gian (Space complexity)
Dung lượng bộ nhớ mà thuật toán đòi hỏi
Độ phức tạp thời gian (Time complexity)
Thời gian thực hiện thuật toán
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
27
Phân tích thời gian thực hiện thuật toán
Thời gian thực hiện giải thuật phụ thuộc
vào các yếu tố sau:
Dữ liệu vào
Tốc độ thực hiện các phép toán của máy tính
(phần cứng máy tính)
Trình biên dịch
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
28
Phân tích thời gian thực hiện thuật toán
Định nghĩa:
Phép toán cơ bản là phép toán có thể thực hiện
với thời gian bị chặn bởi một hằng số không phụ
thuộc vào kích thước dữ liệu
Để tính toán thời gian thực hiện thuật
toán ta đếm số phép toán cơ bản mà
thuật toán thực hiện.
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
29
Các loại thời gian tính
Ký hiệu: T(n)
Thời gian tính tốt nhất
Thời gian tính trung bình
Thời gian tính xấu nhất
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
30
Ký hiệu tiệm cận
, O,
Được sử dụng để mô tả thời gian tính
của thuật toán.
Được xác định đối với các hàm nhận
giá trị nguyên không âm.
Dùng để so sánh tốc độ tăng của hai
hàm
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
31
Ký hiệu O
Ký hiệu O (big-Oh): hàm f(n) và g(n), ta
nói:
f(n) = Ο(g(n)), nếu tồn tại các hằng số dương c
và no sao cho f(n) ≤ cg(n) khi n ≥ no.
Ký hiệu này dùng để chỉ chặn trên của một
hàm
Ý nghĩa: Tốc độ tăng của hàm f(n) không
lớn hơn hàm g(n). Hay có thể nói g(n) là
cận trên tiệm cận của f(n)
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
32
Ký hiệu O
f(n) = 2n + 6
Ví dụ :
f(n) = 2n+6, c g(n) = 4n
g(n) = n và c = 4,
n0=3
f(n)= O(n)
g(n) = n
N = 3
0 n
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
33
Ký hiệu Ω
Định nghĩa Ω:
f(n) = Ω(g(n)), nếu tồn tại các hằng số
dương c và no sao cho f(n) ≥ cg(n) khi n ≥ no
f(n) = Ω(g(n)) g(n) = Ο(f(n))
Ta nói g(n) là cận dưới tiệm cận cho f(n)
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
34
Ký hiệu
Định nghĩa
f(n) = (g(n)), nếu tồn tại các hằng số dương
c1, c2 và n0 sao cho c1.g(n) f(n) c2. g(n) với
mọi n> n0
Ta nói g(n) là đánh giá tiệm cận đúng cho
f(n)
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
35
Biểu diễn đồ thị đánh giá thời gian tính
của thuật toán
f (n)O(g(n)) f (n)(g(n))
cg(n) f(n)
f(n)
cg(n)
n0 n0
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
36
Biểu diễn đồ thị đánh giá thời gian tính
của thuật toán
f (n)(g(n))
c2g(n)
f(n)
c1g(n)
n0
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
37
Liên hệ giữa , O,
Hai hàm bất kỳ f(n) và g(n),
f(n) = (g(n)) khi và chỉ khi
f(n) = O(g(n)) và f(n) = (g(n))
Nghĩa là:
(g(n)) = O(g(n)) (g(n))
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
38
Thời gian tính của thuật toán
O(f(n)): là thời gian tính xấu nhất.
(f(n)) : là thời gian tính tốt nhất.
(f(n)) : là thời gian tính trung bình.
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
39
Một số qui tắc về ký hiệu O lớn
f = O(f)
f = O(g) và g = O(h) thì f = O(h)
f = O(g) và h=O(r) thì fh = O(gr)
f =O(g) và h=O(r) thì f+h = O(g+r)
f =O(g) thì af = O(g) với mọi a>0.
f là đa thức bậc k thì f(n) là O(nk)
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
40
Một số qui tắc về ký hiệu O lớn
O(c) = O(1), c là hằng số
O(lg2 n) = O(ln n) = O(log n)
Ví dụ:
2n là O(n)
3n + 5 là O(n) thay vì 3n + 5 là O(3n)
4n2 + 5n + 7 là O(?)
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
41
Xác định độ phức tạp tính toán
T1(n) và T2(n) là thời gian thực hiện của hai giai
đoạn chương trình P1 và P2 mà
T1(n) = O(f(n)); T2(n) = O(g(n))
Qui tắc tổng:
Thời gian thực hiện đoạn P1 rồi P2 tiếp theo sẽ là
T1(n) + T2(n) = O(max(f(n),g(n))).
Qui tắc nhân:
Thời gian thực hiện P1 và P2 lồng nhau sẽ là:
T1(n)T2(n) = O(f(n)*g(n))
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
42
Các qui tắc tổng quát
Các phép gán, đọc, viết, goto là các phép
toán sơ cấp:
Thời gian thực hiện là: O(1)
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
43
Các qui tắc tổng quát
Lệnh lựa chọn: if-else có dạng
if () T0(n) = O(1)
lệnh 1 T1(n) = O(f(n))
else
lệnh 2 T2(n) = O(g(n))
Thời gian tính của lệnh if-else là O(max(f(n),g(n)))
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
44
Các qui tắc tổng quát
Câu lệnh switch được đánh giá tương tự
như lệnh if-else.
Các lệnh lặp: for, while, do-while
Cần đánh giá số tối đa các lần lặp, giả sử đó
là L(n)
Tiếp theo đánh giá thời gian chạy của mỗi lần
lặp là Ti(n), (i=1,2,..., L(n))
Mỗi lần lặp, chi phí kiểm tra điều kiện lặp,là
T0(n).
L(n)
Chí phí lệnh lặp là:
T0 n+ Ti n
i1
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
45
Một số ví dụ
Ví dụ: Tìm giá trị x có trong mảng A chứa
n số thực không?
i = 0;
while (i < n && x != A[i])
i++;
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
46
Một số ví dụ
Ví dụ 1: for (i=0; i<n; i++)
for (j=0; j<n; j++) O(n2)
k++;
Ví dụ 2: for (i=0; i<n; i++)
k++;
for (i=0; i<n; i++) O(n2)
for (j=0; j<n; j++)
k++;
Ví dụ 3: for (int i=0; i<n-1; i++)
for (int j=0; j<i; j++)
O(n2)
int k+=1;
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
47
Một số ví dụ
int MaxSubSum1(const int a[], int n) {
int maxSum=0;
for (int i=0; i<n; i++)
for (int j=i; j<n; j++)
{
int thisSum=0;
for (int k=i; k<=j; k++) 3
thisSum+=a[k]; O(n )
if (thisSum>maxSum)
maxSum=thisSum;
}
return maxSum;
}
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
48
Một số ví dụ
int MaxSubSum2(const int a[], int n) {
int maxSum=0;
for (int i=0; i<n; i++)
{
thisSum=0;
for (int j=i; j<n; j++)
{ 2
thisSum+=a[j]; O(n )
if (thisSum>maxSum)
maxSum=thisSum;
}
}
return maxSum;
}
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
49
Một số ví dụ
int MaxSubSum4(const int a[], int n)
{
int maxSum=0, thisSum=0;
for (int j=0; j<n; j++)
{
thisSum+=a[j];
if (thisSum>maxSum) O(n)
maxSum=thisSum;
else if (thisSum<0)
thisSum=0;
}
return maxSum;
}
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
50
Một số ví dụ
Sum=0
for (i=0;i<N;i++)
for (j=0;j<N*N;++) O(N3)
Sum++;
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
51
Một số ví dụ
Ví dụ: sắp xếp dãy
void BubbleSort(int a[], int n)
{ int i,j,temp;
for(i= 0; i<n-1; i++) (1)
for(j=n-1; j>i; j--) (2)
if (a[j] < a[j-1]) (3)
{
temp=a[j-1]; (4)
a[j-1] = a[j]; (5)
a[j] = temp; (6)
}
}
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
52
Một số ví dụ
Lệnh (3), (4), (5) và (6) đều tốn O(1)
Vòng lặp (2) thực hiện (n-i) lần, mỗi lần O(1) do đó
vòng lặp (2) tốn O((n-i)*1) = O(n-i).
Vòng lặp (1), i chạy từ 1 đến n-1, thời gian thực hiện
của vòng lặp (1) là n-1
Độ phức tạp của giải thuật là
n1 n(n 1)
T(n) (n i) O(n2 )
i1 2
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
53
Phân tích các hàm đệ quy
Công thức đệ quy cho nhiều thuật toán dựa
trên chia để trị có dạng:
T(n) = O(1) nếu n≤ c
T(n) = aT(n/b) + D(n) + C(n) nếu n>c
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
54
Phân tích các hàm đệ quy
Ví dụ: Hàm tính giai thừa
int Fact(int n)
{
if (n <= 1)
return 1;
else
return n * Fact(n-1);
}
Với n <= 1, ta có T(1) = O(1).
Với n > 1, ta có T(n) = 0(1) + T(n-1)
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
55
Phân tích các hàm đệ quy
Ta có quan hệ đệ quy sau:
T(1) = O(1)
T(n) = T(n-1) + O(1) với n > 1
Thay các ký hiệu O(1) bởi các hằng số
dương a và b tương ứng, ta có
T(1) = a
T(n) = T(n-1) + b với n > 1
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
56
Phân tích các hàm đệ quy
Sử dụng các phép thế T(n-1) = T(n-2) +
b, T(n-2) = T(n-3) + b,..., ta có
T(n) = T(n-1) + b
= T(n-2) + 2b
= T(n-3) + 3b
...
= T(1) + (n-1)b
= a + (n-1)b
Từ đó, ta suy ra T(n) = O(n).
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
57
Phân tích các hàm đệ quy
Gọi T(n) là thời gian chạy của hàm đệ quy F
Khi đó, thời gian chạy của các lời gọi hàm ở trong
hàm F sẽ là T(m) (với m < n)
Trước hết, phải đánh giá thời gian chạy của hàm
F trên dữ liệu nhỏ nhất n = 1, giả sử T(1) = a
(điều kiện dừng)
Sau đó, đánh giá thời gian chạy của các câu lệnh
trong thân của hàm F
Tìm ra quan hệ đệ quy biểu diễn thời gian chạy
của hàm F thông qua lời gọi hàm
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
58
Sự phân lớp của giải thuật
Độ phức tạp
O(1) độ phức tạp hằng số
O(logn) độ phức tạp logarit
O(n) độ phức tạp tuyến tính
O(nlogn) độ phức tạp nlogn
O(nb) độ phức tạp đa thức
O(bn) độ phức tạp mũ
O(n!) độ phức tạp giai thừa
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
59
Sự phân lớp của giải thuật
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
60
Đánh giá độ phức tạp trong ba trường hợp
Ví dụ: Thuật toán tìm kiếm tuần tự
int sequenceSearch(int x, int a[], int n)
{
for (int i=0;i<n;i++)
{
if (x==a[i])
return i;
}
return -1;
}
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
61
Đánh giá độ phức tạp trong ba trường hợp
Tốt nhất: phần tử đầu tiên là phần tử cần
tìm, số lượng phép so sánh là 2 T(n) ~
O(2) = O(1)
Xấu nhất: so sánh đến phần tử cuối cùng,
số lượng phép so sánh là 2n T(n) ~ O(n)
Trung bình: so sánh đến phần tử thứ i, cần
2i phép so sánh, vậy trung bình cần
(2+4+6++2n)/n=2(1+2++n)/n=n+1
T(n) ~ O(n)
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
62
Kiến thức Toán học bổ trợ về Tổng các chuỗi
N
S(N) 1+ 2 ++ N i N(1+ N) / 2
i1
N N(N +1)(2N +1) N 3
Tổng các BP: i2 for large N
6 3
i1
Logarithms:
a
x = b logx b = a
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
63
Kiến thức Toán học bổ trợ về Tổng các chuỗi
N N k+1
ik for large N and k -1
i1 | k +1|
N AN +1 1
Ai
i0 A1
Đặc biệt khi A = 2
20 + 21 + 22 + + 2N = 2N+1 - 1
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
64
Q&A
Khoa Công Nghệ Thông Tin - Trường Đại học Ngân hàng TP.HCM
65
Các file đính kèm theo tài liệu này:
- bai_giang_cau_truc_du_lieu_va_giai_thuat_chuong_1_tong_quan.pdf