Phân tích & Thiết kế giải thuật chương 5

72 1.3K 11
Phân tích & Thiết kế giải thuật chương 5

Đ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

BÀI GIẢNG ĐIỆN TỬ Biên soạn bởi: PGS.TS. Dương Tuấn Anh Khoa Khoa Học và Kỹ Thuật Máy Tính Trường Đ.H. Bách Khoa Đại học Quốc Gia Tp Hồ Chí Minh

Chương Qui hoạch động giải thuật tham lam Qui hoạch động Giải thuật tham lam 1 Qui hoạch động Quy hoạch động (dynamic programming) giải toán cách kết hợp lời giải toán toán xét Phương pháp khả dụng tốn khơng độc lập nhau, tức toán có dùng chung tốn “cháu” (subsubproblem) Qui hoạch động giải toán “cháu” dùng chung lần lưu lời giải chúng bảng sau khỏi phải tính lại gặp lại tốn cháu Qui hoạch động áp dụng cho tốn tối ưu hóa (optimization problem) Bốn bước qui hoạch động Sự xây dựng giải thuật qui hoạch động chia làm bốn bước: Đặc trưng hóa cấu trúc lời giải tối ưu Định nghĩa giá trị lời giải tối ưu cách đệ quy Tính trị lời giải tối ưu theo kiểu từ lên Cấu tạo lời giải tối ưu từ thơng tin tính tốn Thí dụ1: Nhân xâu ma trận Cho chuỗi gồm n matrận, ta muốn tính tích ma trận A1 A … An (5.1) Tích xâu ma trận gọi mở-đóng-ngoặc-đầy-đủ (fully parenthesized ) ma trận đơn tích hai xâu ma trận mở-đóng-ngoặc-đầy-đủ Thí dụ: A1 A2 A3 A4 mở-đóng-ngoặc-đầy-đủ theo cách: (A1(A2(A3A4))) (A1((A2A3)A4) ((A1A2)(A3A4)) (A1(A2A3))A4) (((A1A2)A3)A4) Cách mà ta mở đóng ngoặc xâu ma trận có ảnh hưởng lớn đến chi phí tính tích xâu ma trận A1 10 × 100 A2 100 × A3 × 50 ((A1A2)A3)) thực 10.100.5 + 10.5.50 = 5000 + 2500 = 7500 phép nhân vô hướng (A1(A2A3)) thực 100.5.50 + 10.100.50 = 25000 + 50000 = 75000 phép nhân vơ hướng Thí dụ: Hai chi phí khác biệt Phát biểu toán nhân xâu ma trận Bài tốn tính tích xâu ma trận: '‘Cho chuỗi gồm n matrận, với i = 1, 2, …, n, ma trận Ai có kích thước pi-1 × pi, ta mở-đóng-ngoặc tích cho tối thiểu hóa tổng số phép nhân vơ hướng” Đây tốn tối ưu hóa thuộc loại khó Cấu trúc cách mở đóng ngoặc tối ưu Bước 1: Đặc trưng hóa cấu trúc lời giải tối ưu Dùng Ai j để ký hiệu ma trận kết việc tính Ai Ai+1…Aj Một mở đóng ngoặc tối ưu tích xâu ma trận A1.A2… An Tách xâu vị trí nằm Ak Ak+1 với trị nguyên k, ≤ k < n Nghĩa là, trước tiên ta tính chuỗi ma trận A1 k and Ak+1 n nhân chúng với A1.n Chi phí mở đóng ngoặc tối ưu = chi phí tính Al k + chí phí tính Ak+1 n, + chi phí nhân chúng lại với Diễn tả lời giải cách đệ quy Ở đây, toán ta tốn xác định chi phí tối ưu ứng với mở đóng ngoặc cho chuỗi Ai.Ai+1… Aj với ≤ i ≤ j ≤ n Đặt m[i, j] tổng số tối thiểu phép nhân vô hướng địi hỏi để tính ma trận Ai j Chi phí cách rẻ để tính A1 n ghi m[1, n] Giả sử mở đóng ngoặc tối ưu tách đơi tích chuỗi Ai Ai+l… Aj Ak and Ak+l, với i ≤ k < j Thì m[i, j] với chí phí tối thiểu để tính Ai k Ak+1 j, cọng với chi phí để nhân hai ma trận lại với m[i, j] = m[i, k] + m[k+1, j] + pi-1pkpj Một công thức đệ quy Như vậy, định nghĩa đệ quy cho chi phí tối thiểu mở đóng ngoặc cho Ai Ai+l… Aj sau: m[i, j] = i = j, = {m[i, k] + m[k + 1, j] + pi-1pkpj.} i < j (5.2) Để giúp theo dõi cách tạo lời giải tối ưu, định nghĩa: s[i, j]: trị k tách tích xâu ma trận AiAi+1…Aj để đạt đến mở đóng ngoặc tối ưu Một nhận xét quan trọng Một nhận xét quan trọng ''Sự mở đóng ngoặc xâu A1A2 Ak bên mở đóng ngoặc tối ưu xâu A1A2…An phải mở đóng ngoặc tối ưu'' Như vậy, lời giải tối ưu cho tóan tích xâu ma trận chứa đựng lời giải tối ưu toán Bước thứ hai phương pháp qui hoạch động định nghĩa trị lời giải tối ưu cách đệ quy theo lời giải tối ưu tốn 10 Mã có chiều dài thay đổi Một mã có chiều dài thay đổi (variable-length code) làm việc tốt mã có chiều dài cố định, cho ký tự hay xuất mã ngắn ký tự hay xuất mã dài a = 0, b = 101, f = 1100 Mã đòi hỏi: (45 + 13 + 12.3 + 16.3 + 9.4 + 5.4).1000 = 224000 bits để biểu diễn tập tin, tiết kiệm ≈ 25 % Và mã tối ưu cho tập tin 58 Mã phi-tiền tố (Prefix-code) Ở ta xét cách mã hóa mà khơng có mã ký tự tiền tố (prefix) mã ký tự khác Những cách mã hóa gọi mã phi tiền tố (prefix-free-code) hay mã tiền tố (prefix-code) Có thể chứng minh nén tin tối ưu thực cách mã hóa ký tự mã phi tiền tố Mã phi tiền tố ưa chuộng làm đơn giản mã hóa giải mã - Sự mã hóa đơn giản; ta cần ghép kề mã ký tự lại với biểu diễn ký tự tập tin - Sự giải mã cần biểu diễn thuận tiện cho mã phi tiền tố cho phần đầu mã nhặt cách dễ dàng 59 Mã phi tiền tố nhị phân Biểu diễn cho mã phi tiền tố nhị phân với nút tương ứng với ký tự cho Chúng ta phân giải mã nhị phân cho ký tự lối từ nút rễ đến nút ký tự ấy, mà ứng với “rẽ sang bên trái” nghĩa “rẽ sang bên phải” Mã tối ưu tập tin thường biểu diễn nhị phân đầy đủ (full binary tree) Một nhị phân đầy đủ nhị phân mà nút khơng phải có đủ hai Nếu C tập ký tự mà từ ký tự lấy ra, nhị phân cho mã phi tiền tố tối ưu có |C| nút lá, nút cho ký tự, |C|-1 nút nội 60 100 100 86 58 a:45 14 28 b:13 55 a:45 14 30 25 1 c:12 d:16 e:9 f:5 c:12 b:13 14 d:16 f:5 (a) e:9 (b) Hình 5.7 So sánh hai cách mã hóa 61 Mã phi tiền tố nhị phân (tt.) Cho T tương ứng với mã phi tiền tố, tính tổng số bit cần để mã hóa tập tin Với ký tự c tập ký tự C, dùng f(c) để ký hiệu tần số xuất c tập tin dT(c) chiều dài mã cho ký tự c Thì số bit địi hỏi để mã hóa tập tin B(T) = Σ f(c)dT(c) c∈C Mà coi chi phí nhị phân T 62 Cấu tạo mã Huffman Huffman đề xuất giải thuật tham lam để cấu tạo mã phi tiền tố tối ưu gọi mã Huffman (Huffman code) Giải thuật tạo nhị phân T tương ứng với mã tối ưu theo kiểu từ lên Giải thuật bắt đầu với tập gồm |C| nút thực chuỗi gồm |C| tác vụ trộn để tạo cuối Một hàng đợi có độ ưu tiên Q, lấy trị khóa theo tần số f, dùng để nhận diện hai đối tượng có tần số nhỏ để trộn lại với Kết việc trộn hai đối tượng đối tượng mà tần số tổng tần số hai đối tượng mà trộn 63 (a) f:5 e:9 c:12 b:13 d:16 a:45 (b) c:12 b:13 f:5 (c) d:16 14 f:5 e:9 a:45 25 c:12 b:13 (d) e:9 25 c:12 b:13 (f) 55 0 c:12 b:13 d:16 14 f:5 e:9 d:16 14 e:9 100 30 25 a:45 30 f:5 (e) a:45 d:16 a:45 14 a:45 55 30 25 c:12 b:13 Hình 5.8 Các bước giải thuật tạo mã Huffman d:16 14 f:5 e:9 64 Giải thuật Huffman procedure HUFFMAN(C) ; begin n := |C| ; Q := C ; for i := to n -1 begin z: = ALLOCATE-NODE( ); left[z]: = EXTRACT-MIN(Q); right[z]: = EXTRACT-MIN(Q); f[z] := f[left[z]] + f[right[z]]; INSERT(Q, z); end end Giả sử Q thực heap Cho tập C gồm n ký tự, việc khởi tạo Q thực thi với thời gian O(n) Vòng lặp for thực thi xác gồm n-1 lần, tác vụ làm việc heap địi hỏi O(lgn), vịng lặp đóng góp chi phí O(nlgn) vào thời gian tính tốn Như vậy, độ phức tạp giải thuật HUFFMAN tập n ký tự O(nlgn) 65 Thí dụ 4: Bài tốn tơ màu đồ thị  Cho đồ thị vơ hướng, tìm số màu tối thiểu để tô đỉnh đồ thị cho khơng có hai đỉnh có cạnh nối lại tô màu  Đây tốn tối ưu hóa  Một chiến lược để giải toán dùng giải thuật “tham lam”  Ý tưởng: Đầu tiên ta cố tô cho nhiều đỉnh với màu đầu tiên, dùng màu tô đỉnh chưa tô cho tô nhiều đỉnh tốt Và trình lặp lại với màu khác đỉnh tô màu  Chú ý: Giải thuật tham lam không đem lại lời giải tối ưu cho tốn 66  Để tơ màu đỉnh đồ thị với màu mới, ta thực bước sau:    Chọn đỉnh chưa tơ tơ với màu Duyệt qua danh sách đỉnh cịn chưa tơ Với đỉnh chưa tơ, xét xem có cạnh nối đến đỉnh tô với màu khơng Nếu khơng có cạnh thế, ta tơ đỉnh với màu Thí dụ: Trong hình vẽ, ta tơ đỉnh với màu đỏ, ta tơ đỉnh với màu đỏ 67 Thủ tục SAME_COLOR  Thủ tục SAME_COLOR xác đinh tập đỉnh (biến newclr), mà tất đỉnh tô với màu Thủ tục gọi nhiều lần đỉnh tô màu procedure SAME_COLOR(G, newclr); /* SAME_COLOR assigns to newclr a set of vertices of G that may be given the same color */ begin newclr := ∅; for each uncolored vertex v of G if v is not adjacent to any vertex in newclr then mark v colored and add v to newclr end; 68 procedure G_COLORING(G); procedure SAME_COLOR(G, newclr); /* SAME_COLOR assigns to newclr a set of vertices of G that may be given the same color ; a: adjacency matrix for graph G */ begin newclr := ∅; for each uncolored vertex v of G begin found := false; for each vertex w ∈ newclr if a[v,w] = /*there is an edge between v and w in G */ then found := true; if not found then mark v colored and add v to newclr end end; 69 for each vertex in G mark uncolored; while there is any vertex marked uncolored begin SAME_COLOR(G, newclr); print newclr end  Bậc đỉnh: số cạnh nối đến đỉnh Định lý: Nếu χ(G) số màu tối thiểu để tô đồ thị G ∆G bậc lớn đồ thị G χ(G) ≤ ∆G +1 Độ phức tạp giải thuật tô màu đồ thị  Tác vụ bản: kiểm tra hai đỉnh có cạnh nối hay không Độ phức tạp thủ tục SAME_COLOR: O(n) Nếu m số màu dùng để tô đồ thị thủ tục SAME_COLOR gọi tất m lần Do đó, độ phức tạp tồn giải thuật: m* O(n) Vì m thường số nhỏ, ta nói ⇒ Giải thuật có độ phức tạp tuyến tính 70 Ứng dụng: Xếp lịch thi học kỳ  Mỗi môn thi biểu diễn đỉnh đồ thị  Xếp lịch thi gán ca thi vào mơn thi Các ca thi màu dùng để tô cho đỉnh  Một cạnh nối hai đỉnh có tồn sinh viên lấy hai môn phải thi hai mơn, khơng thể xếp hai mơn thi biểu thị hai đỉnh vào ca thi Ứng dụng: Gán tần số lãnh vực vô tuyến, điện thoại di động (Frequency assignment problem) 71 Một Heuristic cho tốn Tơ Màu đồ thị Đỉnh có bậc lớn tơ trước (Welsh and Powell)  Bậc đỉnh: số cạnh nối đến đỉnh  Lý do: Những đỉnh có nhiều cạnh nối tới khó tơ ta đợi đỉnh láng giềng tô  Giải thuật  Arrange the vertices by decreasing order of degrees  Color a vertex with maximal degree with color  Choose an uncolored vertex with a maximum degree If there is another vertex with the same maximum vertex, choose either of them  Color the chosen vertex with the least possible (lowest numbered) color  If all vertices are colored, stop Otherwise, return to 72 ... 9 357 78 75 157 50 i 1 050 0 51 3 75 350 0 71 25 250 0 1000 43 75 750 26 25 0 50 00 Mảng s j Hình 5. 1 3 1 3 i 3 3 5 14 Một thí dụ tính tích xâu ma trân (tt.) m[2,2] + m[3 ,5] + p.p2 p5 = + 250 0 + 35. 15. 20 =... trận A1 10 × 100 A2 100 × A3 × 50 ((A1A2)A3)) thực 10.100 .5 + 10 .5. 50 = 50 00 + 250 0 = 750 0 phép nhân vô hướng (A1(A2A3)) thực 100 .5. 50 + 10.100 .50 = 250 00 + 50 000 = 750 00 phép nhân vơ hướng Thí... p5 = + 250 0 + 35. 15. 20 = 13000 m[2 ,5] = m[2,3] + m[4 ,5] + p1p2 p5 = 26 25 + 100 + 35. 5.30 = 71 25  m[2,4] + m[5m5] + p p p = 43 75 + + 35. 10.20 = 113 75  = 71 25 ⇒ k = for A2 Bước phương pháp qui

Ngày đăng: 03/03/2014, 09:52

Hình ảnh liên quan

Thủ tục tính hai bảng m và s - Phân tích & Thiết kế giải thuật chương 5

h.

ủ tục tính hai bảng m và s Xem tại trang 12 của tài liệu.
Vì ta định nghĩa m[i, j] chỉ ch oi &lt; j, chỉ phần của bảng mở trên đường chéo chính mới được dùng. - Phân tích & Thiết kế giải thuật chương 5

ta.

định nghĩa m[i, j] chỉ ch oi &lt; j, chỉ phần của bảng mở trên đường chéo chính mới được dùng Xem tại trang 13 của tài liệu.
Mảng s Hình 5.1 - Phân tích & Thiết kế giải thuật chương 5

ng.

s Hình 5.1 Xem tại trang 14 của tài liệu.
Hình 5.2 - Phân tích & Thiết kế giải thuật chương 5

Hình 5.2.

Xem tại trang 25 của tài liệu.
Bảng b có thể được dùng để tạo một LCS của X = &lt;x 1,x2, …xm&gt; and Y = &lt;y1, y2, …, yn&gt; - Phân tích & Thiết kế giải thuật chương 5

Bảng b.

có thể được dùng để tạo một LCS của X = &lt;x 1,x2, …xm&gt; and Y = &lt;y1, y2, …, yn&gt; Xem tại trang 26 của tài liệu.
Một thí dụ dùng giải thuật Floyd (cho đồ thi hình 5.7) - Phân tích & Thiết kế giải thuật chương 5

t.

thí dụ dùng giải thuật Floyd (cho đồ thi hình 5.7) Xem tại trang 39 của tài liệu.
A BCDEFG HI JKLM A  0  1  0  0  0  2 4  0  0  0 0  0  0 - Phân tích & Thiết kế giải thuật chương 5
1 0 0 0 2 4 0 0 0 0 0 0 Xem tại trang 39 của tài liệu.
Công thức này được minh họa bằng hình vẽ sau đây. - Phân tích & Thiết kế giải thuật chương 5

ng.

thức này được minh họa bằng hình vẽ sau đây Xem tại trang 42 của tài liệu.
tục đệ quy được cho ở hình - Phân tích & Thiết kế giải thuật chương 5

t.

ục đệ quy được cho ở hình Xem tại trang 44 của tài liệu.
Hình 5.5 Một thí dụ của bài toán xếp lịch - Phân tích & Thiết kế giải thuật chương 5

Hình 5.5.

Một thí dụ của bài toán xếp lịch Xem tại trang 49 của tài liệu.
Hình 5.6 - Phân tích & Thiết kế giải thuật chương 5

Hình 5.6.

Xem tại trang 54 của tài liệu.
Hình 5.7 So sánh hai cách mã hóa - Phân tích & Thiết kế giải thuật chương 5

Hình 5.7.

So sánh hai cách mã hóa Xem tại trang 61 của tài liệu.

Từ khóa liên quan

Mục lục

  • Chương 4 Qui hoạch động và giải thuật tham lam

  • 1. Qui hoạch động

  • Bốn bước của qui hoạch động

  • Thí dụ1: Nhân xâu ma trận

  • Slide 5

  • Phát biểu bài toán nhân xâu ma trận

  • Cấu trúc của một cách mở đóng ngoặc tối ưu

  • Diễn tả lời giải một cách đệ quy

  • Một công thức đệ quy

  • Một nhận xét quan trọng

  • Tính những chi phí tối ưu

  • Thủ tục tính hai bảng m và s

  • Một thí dụ: Tính tích xâu ma trận

  • Một thí dụ về tính tích xâu ma trân (tt.)

  • Slide 15

  • Bước 4: Tạo một lời giải tối ưu

  • Tính lời giải

  • Các thành phần của quy hoạch động

  • Những bài toán con trùng lắp

  • Thí dụ 2: Bài toán chuỗi con chung dài nhất

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

Tài liệu liên quan