1. Trang chủ
  2. » Luận Văn - Báo Cáo

Bài giảng Thiết kế và đánh giá thuật toán: Chia để trị - TS. Lê Nguyên Khôi

21 0 0

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

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Trong lĩnh vực Công Nghệ Thông Tin nói riêng, yêu cầu quan trọng nhất của người học đó chính là thực hành. Có thực hành thì người học mới có thể tự mình lĩnh hội và hiểu biết sâu sắc với lý thuyết. Với ngành mạng máy tính, nhu cầu thực hành được đặt lên hàng đầu. Tuy nhiên, trong điều kiện còn thiếu thốn về trang bị như hiện nay, người học đặc biệt là sinh viên ít có điều kiện thực hành. Đặc biệt là với các thiết bị đắt tiền như Router, Switch chuyên dụng

Thiết Kế & Đánh Giá Thuật Toán Chia Để Trị TS Lê Nguyên Khôi Trường Đại Học Công Nghệ - ĐHQGHN Nội Dung Kỹ thuật thiết kế  Sắp xếp gộp  Tính lũy thừa  Tìm kiếm nhị phân  Tính số Fibonacci  Tháp Hanoi  Nhân ma trận  Thuật toán Strassen  Kỹ Thuật Thiết Kế Chia Để Trị  Chia toán lớn thành toán nhỏ Bài toán nhỏ đơn giản, giải trực tiếp  Nếu không tiếp tục chia nhỏ toán   Gộp lời giải toán Sắp Xếp Gộp (Merge Sort)    Chia: chia đôi mảng Trị: Sử dụng đệ quy xếp mảng Gộp: gộp mảng với thời gian tuyến tính MergeSort (, 1, ) if  = return MergeSort (, 1, /2 ) MergeSort (, /2 + 1, ) Merge (, 1, /2 , /2 + 1, ) () = 2 (/2) + Θ() chia gộp # toán độ lớn toán Định Lý Tổng Quát – (nhắc lại)  =  / + () Nếu   ∈ (  ) với số  >  ∈ (  ) Nếu   ∈ (  )  ∈ (  log ) Nếu   ∈ "( # ) với số  >   thỏa mãn  / ≤ %() với % <  ∈ (()) Sắp xếp gộp:  = 2,  = ⇒   = ( ) =  ⇒ trường hợp ⇒ () ∈ ( log ) Tính Lũy Thừa Tính *  , với  ∈ ℕ Thuật toán đơn giản: () Thuật toán áp dụng chia để trị: */) ×  */)  * = , (*0)/)  × (*0)/) ×   chẵn  lẻ () = (/2) + (1) ⇒ () ∈ (log ) Tính Lũy Thừa Thuật tốn áp dụng chia để trị: */) ×  */)  *  = , (*0)/)  × (*0)/) ×  PowerN(, ) if  = return if  % 2 = return PowerN else * , ) return PowerN(,  chẵn  lẻ * ×PowerN(, ) ) *0 ) ) ×PowerN(, *0 )× )  () = 2 (/2) + (1) ⇒ () ∈ () ⇒ SAI !!!! Tính Lũy Thừa Thuật tốn áp dụng chia để trị: */) ×  */)  *  = , (*0)/)  × (*0)/) ×  PowerN(, ) if  = return if  % 2 =  chẵn  lẻ * ← PowerN , ) return × else *0 ← PowerN(, ) ) return × ×  () = (/2) + (1) ⇒ () ∈ (log ) Tìm Kiếm Nhị Phân Tìm phần tử dãy xếp  Chia: Kiểm tra phần tử  Trị: Sử dụng đệ quy tìm kiếm mảng tương ứng  Gộp: hiển nhiên Ví dụ: Tìm 9 12 15 Tìm Kiếm Nhị Phân – Phân Tích () = 1 (/2) + (1) # bài-toán-con chia gộp độ lớn toán Áp dụng Định Lý Tổng Quát   = ( = 4 = ⇒ trường hợp ⇒  ∈    log  = (log ) Tính Số Fibonacci   = 0,1 5* = , 5*0 +5*)  ≥ 1 13 21 … Thuật toán đệ quy: 7(8 * ) (thời gian hàm mũ), với = (1 + 5)/2 – golden ratio 10 Tính Số Fibonacci Thiết kế Bottom-up:  Tính 54 , 50 , 5) , …, 5* theo thứ tự, số sau tổng hai số trước   Thời gian chạy: () 5* = * / làm trịn Tính lũy thừa: (log )  Tuy nhiên cách không đáng tin cậy, dễ có lỗi làm trịn tính toán với số thực 11 Tháp Hanoi  Chuyển chồng đĩa từ A sang B sử dụng C trung gian Đĩa to đĩa nhỏ move(, , ;, ? =  ∙ ; với A, B = 1, 2, … ,  * %>? = C >D ∙ D? DE0 13 Nhân Ma Trận – Mã Giả for A ← to  for B ← to  %>? ← for F ← to  %>? ← %>? + >D ∙ D? Thời gian chạy (G ) 14 Nhân Ma Trận – Chia-Để-Trị Ý tưởng:  ×  MT = × MT (/2) × (/2) MT-con H J H = M + N I =  + ℎ J = %M + LN K = % + Lℎ I  = K % M  ∙ L N  ℎ < =∙; nhân cộng * * ( ) × ( ) MT-con ) ) * * ( ) × ( ) MT-con ) ) 15 Nhân Ma Trận – Phân Tích () = 8 (/2) + # bài-tốn-con ) ( ) chia gộp độ lớn toán      Q (  = = ⇒ trường hợp ⇒ () ∈ (G ) Không tốt !!! G  16 Nhân Ma Trận – Thuật Tốn Strassen  Nhân × ma trận với phép nhân R0 =  · (– ℎ) R) = ( + ) · ℎ RG = (% + L) · M RV = L · (N– M) RU = ( + L) · (M + ℎ) RW = (– L) · (N + ℎ) RX = (– %) · (M +  ) H = RU + RV – R) + RW I = R0 + R) J = RG + RV K = RU + R0 – RG – RX nhân, 18 cộng/trừ 17 Nhân Ma Trận – Thuật Toán Strassen Chia: Chia  ; thành (/2) × (/2) ma trận  Trị: Thực hiên đệ quy phép nhân (/2) × (/2) ma trận   Gộp: Tạo ma trận < sử dụng + – (/2) × (/2) ma trận () = 7 (/2) + () ) 18 Thuật Toán Strassen – Phân Tích () = 7 (/2) + () )   = ( X = ).Q0 ⇒ () ∈ ( X ) log = 2.81 trông không nhỏ Tuy nhiên, nên nhớ khác biệt số mũ Do thời gian chạy bị ảnh hưởng nhiều Trên thực thế, thuật toán Strassen’s tốt thuật tốn nhân ma trận thơng thường với  ≥ 32 19 Tổng Kết Chia để trị phương pháp thiết kế thuật toán  Thuật tốn chia để trị phân tích dựa quy nạp phương pháp định lý tổng quát  Thông thường phương pháp chia để trị hiệu  20

Ngày đăng: 02/07/2023, 05:27

Xem thêm: