SlideShare uma empresa Scribd logo
1 de 28
Baixar para ler offline
PHÂN TÍCH VÀ THIẾT KẾ
          THUẬT TOÁN

                 Phạm Thế Bảo
           ptbao@math.hcmuns.edu.vn
http://www.math.hcmuns.edu.vn/~ptbao/AlgorithmAnalysis/
Nội dung
• Tổng quan về thuật toán và độ phức tạp của thuật toán
• Đánh giá thuật toán bằng:
   –   Công cụ toán học sơ cấp
   –   Thực nghiệm
   –   Hàm sinh
   –   Hoán vị
• Đệ quy và phương pháp đánh giá
• Đánh giá một số thuật toán thông dụng
• Các phương pháp giải quyết bài toán trên máy tính:
   – Trực tiếp
   – Gián tiếp
• Kỹ thuật thiết kế thuật toán:
   –   Chia để trị
   –   Greedy
   –   Quy hoạch động
   –   Tìm kiếm cục bộ (địa phương)
                                 Phạm Thế Bảo
Hình thức kiểm tra
• Thực hành (4 điểm):
  – Làm việc theo nhóm
  – Mỗi nhóm sẽ đánh giá một thuật toán:
     • Chạy 20 loại bộ dữ liệu: 50*i phần tử, với i=1..20
     • Mỗi loại bộ dữ liệu chạy 300*k lần, với k=1..10
     • Mội lần chạy dữ liệu được phát sinh ngẫu nhiên
  – Vẽ đồ thị, tính phương sai độ lệch chuNn
  – Ước lượng độ phức tạp
  – Viết báo cáo
• Lý thuyết (6 điểm)

                            Phạm Thế Bảo
Tài liệu tham khảo
1. Cẩm nang thuật toán – cuốn 1 – Robert Sedgewich –
   Trần Đan Thư.
2. Lập trình = Thuật toán + CTDL, N. Wirth
3. Algorithm Complexity & Communication Problems,
   J.P. Barthélemy, G. Cohen & a. Lobstein, UCL Press,
   London 1996.
4. Elementary Introduction to new Generalized
   Functions, Jean Francois Colombeau, 1991.
5. Algorithm and Complexity, Herbert S.Wilf, 1994.
6. Giải một bài toán trên máy tính như thế nào, Hoàng
   Kiếm, 2003.
7. The Art of Computer Vol. 1, 2, 3, Donald Knuth,
   Addison-Wesley
                       Phạm Thế Bảo
Tổng quan về thuật toán
1. Thuật toán là gì?
Tập hợp hữu hạn các hướng dẫn rõ ràng để giải
   quyết một bài toán (vấn đề).
• Mở rộng (máy tính): một dãy hữu hạn các
   bước không mập mờ và có thể thực thi được,
   quá trình hành động theo các bước này phải
   dừng và cho được kết quả như mong muốn.
2. Tính chất cơ bản của thuật toán:
  – Xác định = không mập mờ + thực thi được
  – Hữu hạn
  – Đúng
                     Phạm Thế Bảo
3. Ví dụ:
  – Một lớp học cần chọn lớp trưởng theo các
    bước:
     1. Lập danh sách sinh viên
     2. Sắp thứ tự
     3. Chọn người đứng đầu làm lớp trưởng
  – Danh sách cần gì?
  – Sắp theo thứ tự nào? (tăng giảm, tiêu chí
    nào)
  – Nếu trùng tiêu chí thì giải quyết ra sao?


                      Phạm Thế Bảo
Sửa lại:
   a) Lập danh sách theo: họ tên, ngày tháng năm sinh,
      điểm các môn, điểm trung bình cuối năm.
   b) Sắp xếp theo ĐTB giảm. Nếu ĐTB bằng nhau
      cùng hạng.
   c) Nếu có 01 HS đứng đầu        chọn, ngược lại chọn
      người có điểm toán cao nhất, nếu không chọn được
         bốc thăm.
• Phân biệt mập mờ và lựa chọn có quyết định:
   – Mập mờ là thiếu thông tin hoặc có nhiều lựa chọn
     nhưng không đủ điều kiện quyết định, ví dụ: bước 1,
     2.
   – Lựa chọn có quyết định là hoàn toàn xác định duy
     nhất trong điều kiện cụ thể của vấn đề, ví dụ bước c.


                         Phạm Thế Bảo
• Tính thực thi được, ví dụ:
  – Tính −1?
  – Chạy xe thẳng từ nhà hát lớn đến nhà thờ đức bà
    theo đường Đồng Khởi?
• Tính dừng, ví dụ:
  –   B1:   nhập n;
  –   B2:   s=0;
  –   B3    i=1;
  –   B4    nếu i=n+1 sang B8, ngược lại sang B5
  –   B5    cộng i vào s
  –   B6    cộng 2 vào i
  –   B7    quay lại B4
  –   B8    Tổng cần tính là s
                      Phạm Thế Bảo
• Đặc trưng khác của thuật toán:
  – Xác định đầu vào/ra
  – Tính hiệu quả: khối lượng tính toán, không gian,
    thời gian.
  – Tính tổng quát
 Ví dụ:
  – giải ax2 + bx + c = 0
  – Cho mảng các số nguyên A, tìm phần tử lớn nhất.
• Các phương pháp biểu diễn thuật toán:
  – Ngôn ngữ tự nhiên
  – Sơ đồ (lưu đồ) khối
  – Mã giả (Pseudo-code)

                      Phạm Thế Bảo
Khái niệm thuật giải
1. Thuật giải là gì?
Các cách giải chấp nhận được nhưng không
   hoàn toàn đáp ứng đầy đủ các tiêu chuẩn
   của thuật toán thường được gọi là các thuật
   giải.
Đây là khái niệm mở rộng của thuật toán dựa
   trên tính xác định và tính đúng đắn.
Ví dụ thuật giải Heuristic:
  –   Nguyên lý vét cạn thông minh
  –   Nguyên lý Greedy (tham lam)
  –   Nguyên lý thứ tự
                      Phạm Thế Bảo
Độ phức tạp của thuật toán
    1. Giới thiệu
           Bài toán         ?
         Kích thước n               {thuật toán giải quyết}
                                                                   Làm sao chọn?

                                                        Cái nào tốt?
Ví dụ:
     • Tìm số nhỏ nhất trong n số cho trước
     • Xác định số nguyên dương m có phải là
          số nguyên tố?                              Dựa trên cái gì?
     • Cho một số nguyên dương gồm n chữ số
          khác không trong hệ 10, hãy xáo trộn
          các số để có số lớn nhất?                       “Thời gian thực hiện”   f(n)

               1. Xáo trộn tổ hợp        2. Sắp xếp giảm dần
                                      Phạm Thế Bảo
Làm sao xác định “thời gian thực hiện” f(n)?
1. Hướng tiệm cận:
  – Lý thuyết
  – Thực nghiệm
2. Công cụ toán học:
  – Kỹ thuật sơ cấp
  – Hàm sinh
  – Hoán vị và nghịch thế




                    Phạm Thế Bảo
Höôùng tieáp caän thöïc nghieäm
Caùc böôùc thöïc hieän:
  1.   Vieát chöông trình caøi ñaët
  2.   Thöïc thi chöông trình vôùi nhieàu boä döõ lieäu
  3.   Ño vaø thoáng keâ thôøi gian
  4.   Xaáp xæ bieåu ñoà
Haïn cheá:
  1. Caàn phaûi caøi ñaët CT vaø ño thôøi gian
  2. Boä döõ lieäu khoâng theå ñaëc tröng heát
  3. Khoù so saùnh 02 thuaät giaûi

                          Phạm Thế Bảo
Ước lượng tiệm cận
1. Ý nghĩa:
Phân lớp cấp độ lớn của các hàm f(n) khi n
   đủ lớn.
Ký hiệu O (big O – O lớn)
2. Định nghĩa:
Cho 2 hàm f,g : N R, ta nói f = O(g) nếu
   ∃n0∈N và M>0, sao cho ⏐f(n)⏐≤M⏐g(n)⏐,
   ∀n≥n0.
                  Phạm Thế Bảo
M*g(n)


                                    f(n)
Running Time




               n0

                    Phạm Thế Bảo
Ước lượng tiệm cận
  Mục đích:
Tìm f(n) được ước lượng dựa trên những hàm
  g(n) đã biết
  Ví duï:
        1,000,001 ≈ 1,000,000
        3n2 ≈ n2
 Ví dụ:
  • Xem f(n)=n và g(n)=n2, ta có f=O(g), vì với
    M=1 và n0=1. Ta có ⏐f(n)⏐≤1.⏐g(n)⏐, ∀n≥1.

                       Phạm Thế Bảo
• Xét f(n)=10000n và g(n)=n2 ta vẫn có f=O(g)
  vì
  – ⏐f(n)⏐≤10000⏐g(n)⏐, ∀n≥1
  – Hay ⏐f(n)⏐≤1.⏐g(n)⏐, ∀n≥10000
• Câu hỏi: g=O(f) ?
  Giả sử g=O(f) thì có M và n0 sao cho
  n2 ≤ M (10000n), ∀n≥ n0 ⇒ n≤ 10000 M ), ∀n≥ n0
    ⇒ vô lý.
• Xét f(n)=10n thì ta thấy
     f = O(n)
     f = O(n2)
     f = O(n3)

                   Phạm Thế Bảo
• Cách viết khác: f∈ O(g)
  Ví dụ: 10n ∈ O(n) ∈ O(n2)
• Tránh lý luận ngụy biện:
      1
        n   2
                = O (n      2
                                ) = n   2
                                            + 1
      2
            1
      ⇒       n   2
                      = n   2
                                + 1         ⇒        S ai
            2
                      1     2
                                ∈ O (n       2
                                                  ) vaø n   2
                                                                + 1∈ O (n   2
• Thực chất           2
                        n                                                       )

  Tránh viết:  O(n2) = n2+1
  Viết hợp lệ:
      n2+1 = O(n2)
      n2+1 ∈ O(n2)
                                      Phạm Thế Bảo
• Thuật toán T có thời gian thực hiện là f(n)
  và f = O(g). Ta nói thuật tóan T có độ
  phức tạp g.
  (hàm g chỉ là một chặn trên của f, vẫn có
  thể có cách ước lượng chặt hơn)
Định nghĩa:
  Ta nói f tương đương g nếu f=O(g) và
  g=O(f), ta viết f ∼ g.
Ví dụ: Thuật toán T, kích thước n, có thời
  gian chạy f (n) = 1 n3 + 100n
                  10

                   Phạm Thế Bảo
• Ta có thể chứng minh:
  f=O(n3) và n3=O(f)
                1
                  n3 + 100n ≤ M n3
               10
       ⇒       n3 + 1000n ≤ 10M n3
       ⇒       1 0 0 0 n ≤ (1 0 M − 1 ) n 3
       ⇒       1 0 0 0 ≤ (1 0 M − 1 ) n   2



Chọn M=1, n0=100 ⇒ f ∼ n3
Ta nói “T có độ phức tạp tương đương n3”



                   Phạm Thế Bảo
• Một số tính chất: xét hai hàm f(n) và g(n)
                                                     f ( n)
  a) Nếu g(n) ≠ 0 khi n đủ lớn và             lim             tồn tại thì
                                              n →∞   g ( n)
     f=O(g).
                    f ( n)
    •   Nếu lim            ≠ 0 khi n đủ lớn thì f∼g
            n →∞    g ( n)
                    f ( n)
    •   Nếu lim            = 0 thì f=O(g) nhưng g≠O(f)
             n →∞   g ( n)
                                                f ( n)
    Ví dụ: f(n) =   (-1)n   n và g(n)=n+7, lim
                                           n →∞ g ( n)
                                                       không tồn tại
        do n chẵn hay lẻ.

                      f ( n)
    Tuy nhiên lim            = 1 ⇒ f∼g
               n →∞   g ( n)



                               Phạm Thế Bảo
b) Nếu f là đa thức bậc ≤ m thì f=O(nm)
c) Nếu f=O(g) và g=O(h) thì f=O(h)
d) Một số công thức:
     1       1                1
   1+ + ... + = ln(n) + C + O( )
     2       n                n
   với C=0.577216 (hằng số Euler)
       1         1
   1 + 2 + ... + 2 = ?
    2

      2         n



                     Phạm Thế Bảo
Phân lớp các hàm
        Dạng O   Tên Phân loại
O(1)                 Hằng
O(log2 (n))         logarit
O( n )
O( 3 n )
                   Căn thức
…
O( m n )
O(n)              Tuyến tính
O(n2)            Bình phương
O(n3)               Bậc ba          Đa thức
…
O(nm)               Đa thức
O(cn), với c>1        Mũ
                                 Độ phức tạp lớn
O(n!)              Giai thừa
                  Phạm Thế Bảo
O(Cn )   O(nc )   O(n lg n)   O(n)
O(n!)




                                             O(lgn)



                                             O(1)
• Ví dụ: xét độ phức tạp khi xét một số nguyên
  dương n có phải là số nguyên tố hay không?
  – Kiểm tra các ước từ 2 đến n-1 ⇒ độ phức tạp là
    O(n)
  – Nếu kiểm tra từ 2 đến n ⇒ độ phức tạp là O( n )
  – Nếu n khoảng vài tỷ và n=2m với m là số bit lưu
    trữ, nếu chọn m là kích thước thuật toán thay cho n
    ⇒ độ phức tạp của thuật toán trên trong hai trường
    hợp là O(2m) và O(2m/2) là hàm mũ.



                       Phạm Thế Bảo
Vai trò của hằng số trong phân tích
• Thuật toán A và B có độ phức tạp
                 1
   2n + α n + O ( )
                 n          α Và β có vai trò như thế nào?
            1
   β n + O( )
            n
• Lý thuyết: do n khá lớn nên không đáng kể
• Thực nghiệm: đôi khi rất quan trọng ⇒ cNn
  thận

                    Phạm Thế Bảo
Sự phụ thuộc/không phụ thuộc vào
             phân bố dữ liệu
• Xét bài toán A có thuật toán T có kích thước n
• Độ phức tạp của T:
    1.    Hoàn toàn xác định theo n.
          Ví dụ: Tìm số lớn nhất của mảng các số nguyên.
    2.    Ngẫu nhiên tùy theo phân bố của dữ liệu nhập.
          Ví dụ: Tìm phần tử x có hay không có trong tập dữ liệu.
•    Cách giải quyết:
    1.    Vận dụng các phép toán cơ bản để giải quyết.
    2.    Ta phải xét :
         a. Trường hợp xấu nhất (chậm nhất): chận trên
         b. Trường hợp tốt nhất (nhanh nhất): chận dưới
         c. Trung bình: vận dụng toán học (xác suất thống kê)
         Ví dụ: QuickSort


                                  Phạm Thế Bảo
Cách tính O
• Quy tắc cộng: Nếu K(n) và H(n) là thời gian thực
  hiện hai đọan chương trình P và Q liên tiếp, với
  K(n)=O(f(n)) và H(n)=O(g(n)) thì thời gian thực
  hiện hai đoạn này là T(n)=O(max(f(n),g(n))).
• Quy tắc nhân: Nếu K(n) và H(n) là thời gian thực
  hiện hai đọan chương trình P và Q lồng vào nhau,
  với K(n)=O(f(n)) và H(n)=O(g(n)) thì thời gian
  thực hiện hai đoạn này là T(n)=O(f(n).g(n)).


                     Phạm Thế Bảo

Mais conteúdo relacionado

Mais procurados

Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Do Ngoc Tuan
 
Thi thử toán hậu lộc 4 th 2012 lần 1 k d
Thi thử toán hậu lộc 4 th 2012 lần 1 k dThi thử toán hậu lộc 4 th 2012 lần 1 k d
Thi thử toán hậu lộc 4 th 2012 lần 1 k dThế Giới Tinh Hoa
 
Bộ sách về phương trình hàm
Bộ sách về phương trình hàmBộ sách về phương trình hàm
Bộ sách về phương trình hàmThế Giới Tinh Hoa
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 2
Giáo trình Phân tích và thiết kế giải thuật - CHAP 2Giáo trình Phân tích và thiết kế giải thuật - CHAP 2
Giáo trình Phân tích và thiết kế giải thuật - CHAP 2Nguyễn Công Hoàng
 
[Math educare] giao trinh toan cao cap a1-giai tich ham mot bien_chuoi so
[Math educare] giao trinh toan cao cap a1-giai tich ham mot bien_chuoi so[Math educare] giao trinh toan cao cap a1-giai tich ham mot bien_chuoi so
[Math educare] giao trinh toan cao cap a1-giai tich ham mot bien_chuoi soNguyen Vietnam
 
[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...
[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...
[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...Nguyen Vietnam
 
Chap1 new (tran dai's conflicted copy 2013 04-02)
Chap1 new (tran dai's conflicted copy 2013 04-02)Chap1 new (tran dai's conflicted copy 2013 04-02)
Chap1 new (tran dai's conflicted copy 2013 04-02)Loc Tran
 
Quy hoach tuyen tinh C3
Quy hoach tuyen tinh C3Quy hoach tuyen tinh C3
Quy hoach tuyen tinh C3Ngo Hung Long
 
Bai tap giai tich 2
Bai tap giai tich 2Bai tap giai tich 2
Bai tap giai tich 2quyet tran
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 7
Giáo trình Phân tích và thiết kế giải thuật - CHAP 7Giáo trình Phân tích và thiết kế giải thuật - CHAP 7
Giáo trình Phân tích và thiết kế giải thuật - CHAP 7Nguyễn Công Hoàng
 
[Vnmath.com] 13-ki-thuat-giai-phuong-trinh-ham
[Vnmath.com] 13-ki-thuat-giai-phuong-trinh-ham[Vnmath.com] 13-ki-thuat-giai-phuong-trinh-ham
[Vnmath.com] 13-ki-thuat-giai-phuong-trinh-hamDuy Duy
 
[Math educare] giao trinh toan cao cap a2-giai tich ham nhieu bien_phuong tri...
[Math educare] giao trinh toan cao cap a2-giai tich ham nhieu bien_phuong tri...[Math educare] giao trinh toan cao cap a2-giai tich ham nhieu bien_phuong tri...
[Math educare] giao trinh toan cao cap a2-giai tich ham nhieu bien_phuong tri...Nguyen Vietnam
 
Tính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tínhTính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tínhChien Dang
 
Math educare] toan a1-giai tich ham mot bien_giai tich ham nhieu bien_phuong ...
Math educare] toan a1-giai tich ham mot bien_giai tich ham nhieu bien_phuong ...Math educare] toan a1-giai tich ham mot bien_giai tich ham nhieu bien_phuong ...
Math educare] toan a1-giai tich ham mot bien_giai tich ham nhieu bien_phuong ...Nguyen Vietnam
 

Mais procurados (20)

Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4
 
Chuong8
Chuong8Chuong8
Chuong8
 
Thi thử toán hậu lộc 4 th 2012 lần 1 k d
Thi thử toán hậu lộc 4 th 2012 lần 1 k dThi thử toán hậu lộc 4 th 2012 lần 1 k d
Thi thử toán hậu lộc 4 th 2012 lần 1 k d
 
Phương trình hàm đa thức
Phương trình hàm đa thứcPhương trình hàm đa thức
Phương trình hàm đa thức
 
Chuong 3
Chuong 3Chuong 3
Chuong 3
 
Bộ sách về phương trình hàm
Bộ sách về phương trình hàmBộ sách về phương trình hàm
Bộ sách về phương trình hàm
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 2
Giáo trình Phân tích và thiết kế giải thuật - CHAP 2Giáo trình Phân tích và thiết kế giải thuật - CHAP 2
Giáo trình Phân tích và thiết kế giải thuật - CHAP 2
 
Timkiem&sapxep
Timkiem&sapxepTimkiem&sapxep
Timkiem&sapxep
 
[Math educare] giao trinh toan cao cap a1-giai tich ham mot bien_chuoi so
[Math educare] giao trinh toan cao cap a1-giai tich ham mot bien_chuoi so[Math educare] giao trinh toan cao cap a1-giai tich ham mot bien_chuoi so
[Math educare] giao trinh toan cao cap a1-giai tich ham mot bien_chuoi so
 
Chuong 1
Chuong 1Chuong 1
Chuong 1
 
[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...
[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...
[Math educare.com] giai tich ham nhieu bien-phep tinh vi phan ham nhieu bien_...
 
Chap1 new (tran dai's conflicted copy 2013 04-02)
Chap1 new (tran dai's conflicted copy 2013 04-02)Chap1 new (tran dai's conflicted copy 2013 04-02)
Chap1 new (tran dai's conflicted copy 2013 04-02)
 
Quy hoach tuyen tinh C3
Quy hoach tuyen tinh C3Quy hoach tuyen tinh C3
Quy hoach tuyen tinh C3
 
Bai tap giai tich 2
Bai tap giai tich 2Bai tap giai tich 2
Bai tap giai tich 2
 
Xác định quy luật biên phi tuyến và nguồn trong quá trình truyền nhiệt
Xác định quy luật biên phi tuyến và nguồn trong quá trình truyền nhiệtXác định quy luật biên phi tuyến và nguồn trong quá trình truyền nhiệt
Xác định quy luật biên phi tuyến và nguồn trong quá trình truyền nhiệt
 
Giáo trình Phân tích và thiết kế giải thuật - CHAP 7
Giáo trình Phân tích và thiết kế giải thuật - CHAP 7Giáo trình Phân tích và thiết kế giải thuật - CHAP 7
Giáo trình Phân tích và thiết kế giải thuật - CHAP 7
 
[Vnmath.com] 13-ki-thuat-giai-phuong-trinh-ham
[Vnmath.com] 13-ki-thuat-giai-phuong-trinh-ham[Vnmath.com] 13-ki-thuat-giai-phuong-trinh-ham
[Vnmath.com] 13-ki-thuat-giai-phuong-trinh-ham
 
[Math educare] giao trinh toan cao cap a2-giai tich ham nhieu bien_phuong tri...
[Math educare] giao trinh toan cao cap a2-giai tich ham nhieu bien_phuong tri...[Math educare] giao trinh toan cao cap a2-giai tich ham nhieu bien_phuong tri...
[Math educare] giao trinh toan cao cap a2-giai tich ham nhieu bien_phuong tri...
 
Tính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tínhTính toán khoa học - Chương 8: Quy hoạch tuyến tính
Tính toán khoa học - Chương 8: Quy hoạch tuyến tính
 
Math educare] toan a1-giai tich ham mot bien_giai tich ham nhieu bien_phuong ...
Math educare] toan a1-giai tich ham mot bien_giai tich ham nhieu bien_phuong ...Math educare] toan a1-giai tich ham mot bien_giai tich ham nhieu bien_phuong ...
Math educare] toan a1-giai tich ham mot bien_giai tich ham nhieu bien_phuong ...
 

Destaque

How To Write a Paragraph
How To Write a ParagraphHow To Write a Paragraph
How To Write a ParagraphBeyza Sürme
 
Benefits Ri Rb Ircc
Benefits Ri Rb IrccBenefits Ri Rb Ircc
Benefits Ri Rb Irccnx122
 
Gershwin
GershwinGershwin
Gershwinmacs19
 
Bandi 2015 per l'Edilizia
Bandi 2015 per l'EdiliziaBandi 2015 per l'Edilizia
Bandi 2015 per l'EdiliziaRomagna Tech
 
Halloween tartessos
Halloween tartessosHalloween tartessos
Halloween tartessosmercecob
 
Het Evangelie in West Papoea
Het Evangelie in West PapoeaHet Evangelie in West Papoea
Het Evangelie in West PapoeaAt Ipenburg
 
Comic explained
Comic explainedComic explained
Comic explainedLynnstyles
 
Sound and Motion Activated (GSM-Based) Monitoring System (Buy or Rent!)
Sound and Motion Activated (GSM-Based) Monitoring System  (Buy or Rent!)Sound and Motion Activated (GSM-Based) Monitoring System  (Buy or Rent!)
Sound and Motion Activated (GSM-Based) Monitoring System (Buy or Rent!)dplsurve
 
Kartka Wielkanocna
Kartka WielkanocnaKartka Wielkanocna
Kartka Wielkanocnajou
 
What really is the right to an Education? Part 1- 2013
What really is the right to an Education? Part 1- 2013What really is the right to an Education? Part 1- 2013
What really is the right to an Education? Part 1- 2013Great Belize Productions Ltd.
 
Technology Careers Pilot Program1207
Technology  Careers  Pilot  Program1207Technology  Careers  Pilot  Program1207
Technology Careers Pilot Program1207nehemiag
 
Dating 101 by Sammy Ali and Adrianna Paniak
Dating 101 by Sammy Ali and Adrianna PaniakDating 101 by Sammy Ali and Adrianna Paniak
Dating 101 by Sammy Ali and Adrianna PaniakAdrianna Paniak
 
50 states olivia
50 states olivia50 states olivia
50 states oliviaolivia1997
 

Destaque (20)

Apresentacao0210 131002113330-phpapp01
Apresentacao0210 131002113330-phpapp01Apresentacao0210 131002113330-phpapp01
Apresentacao0210 131002113330-phpapp01
 
Levels of editing
Levels of editingLevels of editing
Levels of editing
 
150609
150609150609
150609
 
How To Write a Paragraph
How To Write a ParagraphHow To Write a Paragraph
How To Write a Paragraph
 
Rizpah
RizpahRizpah
Rizpah
 
Benefits Ri Rb Ircc
Benefits Ri Rb IrccBenefits Ri Rb Ircc
Benefits Ri Rb Ircc
 
Gershwin
GershwinGershwin
Gershwin
 
Ethnocentrism
EthnocentrismEthnocentrism
Ethnocentrism
 
Bandi 2015 per l'Edilizia
Bandi 2015 per l'EdiliziaBandi 2015 per l'Edilizia
Bandi 2015 per l'Edilizia
 
Halloween tartessos
Halloween tartessosHalloween tartessos
Halloween tartessos
 
Het Evangelie in West Papoea
Het Evangelie in West PapoeaHet Evangelie in West Papoea
Het Evangelie in West Papoea
 
Comic explained
Comic explainedComic explained
Comic explained
 
Questionnaire
QuestionnaireQuestionnaire
Questionnaire
 
Sound and Motion Activated (GSM-Based) Monitoring System (Buy or Rent!)
Sound and Motion Activated (GSM-Based) Monitoring System  (Buy or Rent!)Sound and Motion Activated (GSM-Based) Monitoring System  (Buy or Rent!)
Sound and Motion Activated (GSM-Based) Monitoring System (Buy or Rent!)
 
Kartka Wielkanocna
Kartka WielkanocnaKartka Wielkanocna
Kartka Wielkanocna
 
What really is the right to an Education? Part 1- 2013
What really is the right to an Education? Part 1- 2013What really is the right to an Education? Part 1- 2013
What really is the right to an Education? Part 1- 2013
 
Ambulo
AmbuloAmbulo
Ambulo
 
Technology Careers Pilot Program1207
Technology  Careers  Pilot  Program1207Technology  Careers  Pilot  Program1207
Technology Careers Pilot Program1207
 
Dating 101 by Sammy Ali and Adrianna Paniak
Dating 101 by Sammy Ali and Adrianna PaniakDating 101 by Sammy Ali and Adrianna Paniak
Dating 101 by Sammy Ali and Adrianna Paniak
 
50 states olivia
50 states olivia50 states olivia
50 states olivia
 

Semelhante a pttt 01

Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Do Ngoc Tuan
 
Diophantine equations Phương trình diophant
Diophantine equations Phương trình diophantDiophantine equations Phương trình diophant
Diophantine equations Phương trình diophantBui Loi
 
Mot so chu y khi giai pt
Mot so chu y khi giai ptMot so chu y khi giai pt
Mot so chu y khi giai ptndphuc910
 
Notes for Optimization Chapter 1 and 2
Notes for Optimization Chapter 1 and 2Notes for Optimization Chapter 1 and 2
Notes for Optimization Chapter 1 and 2Vu Pham
 
Thuật toán berlekamp và đa thức chia đường tròn modulo p
Thuật toán berlekamp và đa thức chia đường tròn modulo pThuật toán berlekamp và đa thức chia đường tròn modulo p
Thuật toán berlekamp và đa thức chia đường tròn modulo pBui Loi
 
Ltdh ptluong gia cmoi soanco giai
Ltdh ptluong gia cmoi soanco giaiLtdh ptluong gia cmoi soanco giai
Ltdh ptluong gia cmoi soanco giaiAnh Pham
 
Vận dụng giới hạn dãy số trong giải phương trình hàm.pdf
Vận dụng giới hạn dãy số trong giải phương trình hàm.pdfVận dụng giới hạn dãy số trong giải phương trình hàm.pdf
Vận dụng giới hạn dãy số trong giải phương trình hàm.pdfvongoccuong
 
Tổng quát về tích phân
Tổng quát về tích phân Tổng quát về tích phân
Tổng quát về tích phân Hoàng Hải Huy
 
Ctdl va gt_hồ_sĩ_đàm
Ctdl va gt_hồ_sĩ_đàmCtdl va gt_hồ_sĩ_đàm
Ctdl va gt_hồ_sĩ_đàmvinhduchanh
 
Kỹ thuật lập trình (khoa toán tin học)
Kỹ thuật lập trình (khoa toán tin học)Kỹ thuật lập trình (khoa toán tin học)
Kỹ thuật lập trình (khoa toán tin học)nhok_lovely
 
MATMA - Chuong3 l tso
MATMA - Chuong3 l tsoMATMA - Chuong3 l tso
MATMA - Chuong3 l tsoSai Lemovom
 

Semelhante a pttt 01 (20)

Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4Ctdl+va+gt chuong+1 4
Ctdl+va+gt chuong+1 4
 
Diophantine equations Phương trình diophant
Diophantine equations Phương trình diophantDiophantine equations Phương trình diophant
Diophantine equations Phương trình diophant
 
Mot so chu y khi giai pt
Mot so chu y khi giai ptMot so chu y khi giai pt
Mot so chu y khi giai pt
 
Notes for Optimization Chapter 1 and 2
Notes for Optimization Chapter 1 and 2Notes for Optimization Chapter 1 and 2
Notes for Optimization Chapter 1 and 2
 
Thuật toán berlekamp và đa thức chia đường tròn modulo p
Thuật toán berlekamp và đa thức chia đường tròn modulo pThuật toán berlekamp và đa thức chia đường tròn modulo p
Thuật toán berlekamp và đa thức chia đường tròn modulo p
 
Luận văn: Thác triển chỉnh hình của hàm nhiều biến phức, HAY
Luận văn: Thác triển chỉnh hình của hàm nhiều biến phức, HAYLuận văn: Thác triển chỉnh hình của hàm nhiều biến phức, HAY
Luận văn: Thác triển chỉnh hình của hàm nhiều biến phức, HAY
 
MATMAT- Chuong1
MATMAT- Chuong1MATMAT- Chuong1
MATMAT- Chuong1
 
Ltdh ptluong gia cmoi soanco giai
Ltdh ptluong gia cmoi soanco giaiLtdh ptluong gia cmoi soanco giai
Ltdh ptluong gia cmoi soanco giai
 
Vận dụng giới hạn dãy số trong giải phương trình hàm.pdf
Vận dụng giới hạn dãy số trong giải phương trình hàm.pdfVận dụng giới hạn dãy số trong giải phương trình hàm.pdf
Vận dụng giới hạn dãy số trong giải phương trình hàm.pdf
 
Tổng quát về tích phân
Tổng quát về tích phân Tổng quát về tích phân
Tổng quát về tích phân
 
Ctdl va gt_hồ_sĩ_đàm
Ctdl va gt_hồ_sĩ_đàmCtdl va gt_hồ_sĩ_đàm
Ctdl va gt_hồ_sĩ_đàm
 
Pt04 de qui
Pt04 de quiPt04 de qui
Pt04 de qui
 
Toán Tử Sai Phân Và Ứng Dụng Vào Giải Toán Sơ Cấp.docx
Toán Tử Sai Phân Và Ứng Dụng Vào Giải Toán Sơ Cấp.docxToán Tử Sai Phân Và Ứng Dụng Vào Giải Toán Sơ Cấp.docx
Toán Tử Sai Phân Và Ứng Dụng Vào Giải Toán Sơ Cấp.docx
 
Bat đang thức trong so hoc và m t so Dạng toán liên quan.docx
Bat đang thức trong so hoc và m t so Dạng toán liên quan.docxBat đang thức trong so hoc và m t so Dạng toán liên quan.docx
Bat đang thức trong so hoc và m t so Dạng toán liên quan.docx
 
Kỹ thuật lập trình (khoa toán tin học)
Kỹ thuật lập trình (khoa toán tin học)Kỹ thuật lập trình (khoa toán tin học)
Kỹ thuật lập trình (khoa toán tin học)
 
Gt12cb 65
Gt12cb 65Gt12cb 65
Gt12cb 65
 
Sophuc
SophucSophuc
Sophuc
 
Chuong2 de qui
Chuong2 de quiChuong2 de qui
Chuong2 de qui
 
MATMA - Chuong3 l tso
MATMA - Chuong3 l tsoMATMA - Chuong3 l tso
MATMA - Chuong3 l tso
 
Thpt hoang le kha-MVN 2
Thpt hoang le kha-MVN 2Thpt hoang le kha-MVN 2
Thpt hoang le kha-MVN 2
 

pttt 01

  • 1. PHÂN TÍCH VÀ THIẾT KẾ THUẬT TOÁN Phạm Thế Bảo ptbao@math.hcmuns.edu.vn http://www.math.hcmuns.edu.vn/~ptbao/AlgorithmAnalysis/
  • 2. Nội dung • Tổng quan về thuật toán và độ phức tạp của thuật toán • Đánh giá thuật toán bằng: – Công cụ toán học sơ cấp – Thực nghiệm – Hàm sinh – Hoán vị • Đệ quy và phương pháp đánh giá • Đánh giá một số thuật toán thông dụng • Các phương pháp giải quyết bài toán trên máy tính: – Trực tiếp – Gián tiếp • Kỹ thuật thiết kế thuật toán: – Chia để trị – Greedy – Quy hoạch động – Tìm kiếm cục bộ (địa phương) Phạm Thế Bảo
  • 3. Hình thức kiểm tra • Thực hành (4 điểm): – Làm việc theo nhóm – Mỗi nhóm sẽ đánh giá một thuật toán: • Chạy 20 loại bộ dữ liệu: 50*i phần tử, với i=1..20 • Mỗi loại bộ dữ liệu chạy 300*k lần, với k=1..10 • Mội lần chạy dữ liệu được phát sinh ngẫu nhiên – Vẽ đồ thị, tính phương sai độ lệch chuNn – Ước lượng độ phức tạp – Viết báo cáo • Lý thuyết (6 điểm) Phạm Thế Bảo
  • 4. Tài liệu tham khảo 1. Cẩm nang thuật toán – cuốn 1 – Robert Sedgewich – Trần Đan Thư. 2. Lập trình = Thuật toán + CTDL, N. Wirth 3. Algorithm Complexity & Communication Problems, J.P. Barthélemy, G. Cohen & a. Lobstein, UCL Press, London 1996. 4. Elementary Introduction to new Generalized Functions, Jean Francois Colombeau, 1991. 5. Algorithm and Complexity, Herbert S.Wilf, 1994. 6. Giải một bài toán trên máy tính như thế nào, Hoàng Kiếm, 2003. 7. The Art of Computer Vol. 1, 2, 3, Donald Knuth, Addison-Wesley Phạm Thế Bảo
  • 5. Tổng quan về thuật toán 1. Thuật toán là gì? Tập hợp hữu hạn các hướng dẫn rõ ràng để giải quyết một bài toán (vấn đề). • Mở rộng (máy tính): một dãy hữu hạn các bước không mập mờ và có thể thực thi được, quá trình hành động theo các bước này phải dừng và cho được kết quả như mong muốn. 2. Tính chất cơ bản của thuật toán: – Xác định = không mập mờ + thực thi được – Hữu hạn – Đúng Phạm Thế Bảo
  • 6. 3. Ví dụ: – Một lớp học cần chọn lớp trưởng theo các bước: 1. Lập danh sách sinh viên 2. Sắp thứ tự 3. Chọn người đứng đầu làm lớp trưởng – Danh sách cần gì? – Sắp theo thứ tự nào? (tăng giảm, tiêu chí nào) – Nếu trùng tiêu chí thì giải quyết ra sao? Phạm Thế Bảo
  • 7. Sửa lại: a) Lập danh sách theo: họ tên, ngày tháng năm sinh, điểm các môn, điểm trung bình cuối năm. b) Sắp xếp theo ĐTB giảm. Nếu ĐTB bằng nhau cùng hạng. c) Nếu có 01 HS đứng đầu chọn, ngược lại chọn người có điểm toán cao nhất, nếu không chọn được bốc thăm. • Phân biệt mập mờ và lựa chọn có quyết định: – Mập mờ là thiếu thông tin hoặc có nhiều lựa chọn nhưng không đủ điều kiện quyết định, ví dụ: bước 1, 2. – Lựa chọn có quyết định là hoàn toàn xác định duy nhất trong điều kiện cụ thể của vấn đề, ví dụ bước c. Phạm Thế Bảo
  • 8. • Tính thực thi được, ví dụ: – Tính −1? – Chạy xe thẳng từ nhà hát lớn đến nhà thờ đức bà theo đường Đồng Khởi? • Tính dừng, ví dụ: – B1: nhập n; – B2: s=0; – B3 i=1; – B4 nếu i=n+1 sang B8, ngược lại sang B5 – B5 cộng i vào s – B6 cộng 2 vào i – B7 quay lại B4 – B8 Tổng cần tính là s Phạm Thế Bảo
  • 9. • Đặc trưng khác của thuật toán: – Xác định đầu vào/ra – Tính hiệu quả: khối lượng tính toán, không gian, thời gian. – Tính tổng quát Ví dụ: – giải ax2 + bx + c = 0 – Cho mảng các số nguyên A, tìm phần tử lớn nhất. • Các phương pháp biểu diễn thuật toán: – Ngôn ngữ tự nhiên – Sơ đồ (lưu đồ) khối – Mã giả (Pseudo-code) Phạm Thế Bảo
  • 10. Khái niệm thuật giải 1. Thuật giải là gì? Các cách giải chấp nhận được nhưng không hoàn toàn đáp ứng đầy đủ các tiêu chuẩn của thuật toán thường được gọi là các thuật giải. Đây là khái niệm mở rộng của thuật toán dựa trên tính xác định và tính đúng đắn. Ví dụ thuật giải Heuristic: – Nguyên lý vét cạn thông minh – Nguyên lý Greedy (tham lam) – Nguyên lý thứ tự Phạm Thế Bảo
  • 11. Độ phức tạp của thuật toán 1. Giới thiệu Bài toán ? Kích thước n {thuật toán giải quyết} Làm sao chọn? Cái nào tốt? Ví dụ: • Tìm số nhỏ nhất trong n số cho trước • Xác định số nguyên dương m có phải là số nguyên tố? Dựa trên cái gì? • Cho một số nguyên dương gồm n chữ số khác không trong hệ 10, hãy xáo trộn các số để có số lớn nhất? “Thời gian thực hiện” f(n) 1. Xáo trộn tổ hợp 2. Sắp xếp giảm dần Phạm Thế Bảo
  • 12. Làm sao xác định “thời gian thực hiện” f(n)? 1. Hướng tiệm cận: – Lý thuyết – Thực nghiệm 2. Công cụ toán học: – Kỹ thuật sơ cấp – Hàm sinh – Hoán vị và nghịch thế Phạm Thế Bảo
  • 13. Höôùng tieáp caän thöïc nghieäm Caùc böôùc thöïc hieän: 1. Vieát chöông trình caøi ñaët 2. Thöïc thi chöông trình vôùi nhieàu boä döõ lieäu 3. Ño vaø thoáng keâ thôøi gian 4. Xaáp xæ bieåu ñoà Haïn cheá: 1. Caàn phaûi caøi ñaët CT vaø ño thôøi gian 2. Boä döõ lieäu khoâng theå ñaëc tröng heát 3. Khoù so saùnh 02 thuaät giaûi Phạm Thế Bảo
  • 14. Ước lượng tiệm cận 1. Ý nghĩa: Phân lớp cấp độ lớn của các hàm f(n) khi n đủ lớn. Ký hiệu O (big O – O lớn) 2. Định nghĩa: Cho 2 hàm f,g : N R, ta nói f = O(g) nếu ∃n0∈N và M>0, sao cho ⏐f(n)⏐≤M⏐g(n)⏐, ∀n≥n0. Phạm Thế Bảo
  • 15. M*g(n) f(n) Running Time n0 Phạm Thế Bảo
  • 16. Ước lượng tiệm cận Mục đích: Tìm f(n) được ước lượng dựa trên những hàm g(n) đã biết Ví duï: 1,000,001 ≈ 1,000,000 3n2 ≈ n2 Ví dụ: • Xem f(n)=n và g(n)=n2, ta có f=O(g), vì với M=1 và n0=1. Ta có ⏐f(n)⏐≤1.⏐g(n)⏐, ∀n≥1. Phạm Thế Bảo
  • 17. • Xét f(n)=10000n và g(n)=n2 ta vẫn có f=O(g) vì – ⏐f(n)⏐≤10000⏐g(n)⏐, ∀n≥1 – Hay ⏐f(n)⏐≤1.⏐g(n)⏐, ∀n≥10000 • Câu hỏi: g=O(f) ? Giả sử g=O(f) thì có M và n0 sao cho n2 ≤ M (10000n), ∀n≥ n0 ⇒ n≤ 10000 M ), ∀n≥ n0 ⇒ vô lý. • Xét f(n)=10n thì ta thấy f = O(n) f = O(n2) f = O(n3) Phạm Thế Bảo
  • 18. • Cách viết khác: f∈ O(g) Ví dụ: 10n ∈ O(n) ∈ O(n2) • Tránh lý luận ngụy biện: 1 n 2 = O (n 2 ) = n 2 + 1 2 1 ⇒ n 2 = n 2 + 1 ⇒ S ai 2 1 2 ∈ O (n 2 ) vaø n 2 + 1∈ O (n 2 • Thực chất 2 n ) Tránh viết: O(n2) = n2+1 Viết hợp lệ: n2+1 = O(n2) n2+1 ∈ O(n2) Phạm Thế Bảo
  • 19. • Thuật toán T có thời gian thực hiện là f(n) và f = O(g). Ta nói thuật tóan T có độ phức tạp g. (hàm g chỉ là một chặn trên của f, vẫn có thể có cách ước lượng chặt hơn) Định nghĩa: Ta nói f tương đương g nếu f=O(g) và g=O(f), ta viết f ∼ g. Ví dụ: Thuật toán T, kích thước n, có thời gian chạy f (n) = 1 n3 + 100n 10 Phạm Thế Bảo
  • 20. • Ta có thể chứng minh: f=O(n3) và n3=O(f) 1 n3 + 100n ≤ M n3 10 ⇒ n3 + 1000n ≤ 10M n3 ⇒ 1 0 0 0 n ≤ (1 0 M − 1 ) n 3 ⇒ 1 0 0 0 ≤ (1 0 M − 1 ) n 2 Chọn M=1, n0=100 ⇒ f ∼ n3 Ta nói “T có độ phức tạp tương đương n3” Phạm Thế Bảo
  • 21. • Một số tính chất: xét hai hàm f(n) và g(n) f ( n) a) Nếu g(n) ≠ 0 khi n đủ lớn và lim tồn tại thì n →∞ g ( n) f=O(g). f ( n) • Nếu lim ≠ 0 khi n đủ lớn thì f∼g n →∞ g ( n) f ( n) • Nếu lim = 0 thì f=O(g) nhưng g≠O(f) n →∞ g ( n) f ( n) Ví dụ: f(n) = (-1)n n và g(n)=n+7, lim n →∞ g ( n) không tồn tại do n chẵn hay lẻ. f ( n) Tuy nhiên lim = 1 ⇒ f∼g n →∞ g ( n) Phạm Thế Bảo
  • 22. b) Nếu f là đa thức bậc ≤ m thì f=O(nm) c) Nếu f=O(g) và g=O(h) thì f=O(h) d) Một số công thức: 1 1 1 1+ + ... + = ln(n) + C + O( ) 2 n n với C=0.577216 (hằng số Euler) 1 1 1 + 2 + ... + 2 = ? 2 2 n Phạm Thế Bảo
  • 23. Phân lớp các hàm Dạng O Tên Phân loại O(1) Hằng O(log2 (n)) logarit O( n ) O( 3 n ) Căn thức … O( m n ) O(n) Tuyến tính O(n2) Bình phương O(n3) Bậc ba Đa thức … O(nm) Đa thức O(cn), với c>1 Mũ Độ phức tạp lớn O(n!) Giai thừa Phạm Thế Bảo
  • 24. O(Cn ) O(nc ) O(n lg n) O(n) O(n!) O(lgn) O(1)
  • 25. • Ví dụ: xét độ phức tạp khi xét một số nguyên dương n có phải là số nguyên tố hay không? – Kiểm tra các ước từ 2 đến n-1 ⇒ độ phức tạp là O(n) – Nếu kiểm tra từ 2 đến n ⇒ độ phức tạp là O( n ) – Nếu n khoảng vài tỷ và n=2m với m là số bit lưu trữ, nếu chọn m là kích thước thuật toán thay cho n ⇒ độ phức tạp của thuật toán trên trong hai trường hợp là O(2m) và O(2m/2) là hàm mũ. Phạm Thế Bảo
  • 26. Vai trò của hằng số trong phân tích • Thuật toán A và B có độ phức tạp 1 2n + α n + O ( ) n α Và β có vai trò như thế nào? 1 β n + O( ) n • Lý thuyết: do n khá lớn nên không đáng kể • Thực nghiệm: đôi khi rất quan trọng ⇒ cNn thận Phạm Thế Bảo
  • 27. Sự phụ thuộc/không phụ thuộc vào phân bố dữ liệu • Xét bài toán A có thuật toán T có kích thước n • Độ phức tạp của T: 1. Hoàn toàn xác định theo n. Ví dụ: Tìm số lớn nhất của mảng các số nguyên. 2. Ngẫu nhiên tùy theo phân bố của dữ liệu nhập. Ví dụ: Tìm phần tử x có hay không có trong tập dữ liệu. • Cách giải quyết: 1. Vận dụng các phép toán cơ bản để giải quyết. 2. Ta phải xét : a. Trường hợp xấu nhất (chậm nhất): chận trên b. Trường hợp tốt nhất (nhanh nhất): chận dưới c. Trung bình: vận dụng toán học (xác suất thống kê) Ví dụ: QuickSort Phạm Thế Bảo
  • 28. Cách tính O • Quy tắc cộng: Nếu K(n) và H(n) là thời gian thực hiện hai đọan chương trình P và Q liên tiếp, với K(n)=O(f(n)) và H(n)=O(g(n)) thì thời gian thực hiện hai đoạn này là T(n)=O(max(f(n),g(n))). • Quy tắc nhân: Nếu K(n) và H(n) là thời gian thực hiện hai đọan chương trình P và Q lồng vào nhau, với K(n)=O(f(n)) và H(n)=O(g(n)) thì thời gian thực hiện hai đoạn này là T(n)=O(f(n).g(n)). Phạm Thế Bảo