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

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

Đang tải... (xem toàn văn)

Thông tin tài liệu

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). . 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ị:. đ ể ể 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. 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ị

Ngày đăng: 09/07/2014, 17:20

Từ khóa liên quan

Tài liệu cùng người dùng

Tài liệu liên quan