Dynamic programming giaûi baøi toaùn baèng caùch keát hôïp caùc lôøi giaûi cuûa caùc baøi toaùn con. (ôû ñaây “programming” khoâng coù nghóa laø laäp trình). So saùnh dynamic programming vaø “chiavaøtrò” (divideandconquer) Giaûi thuaät chiavaøtrò chia baøi toaùn thaønh caùc baøi toaùn con ñoäc laäp , giaûi chuùng baèng ñeä quy, keát hôïp chuùng ñeå coù lôøi giaûi cho baøi toaùn ban ñaàu. Giaûi thuaät dynamic programming caùc baøi toaùn con khoâng ñoäc laäp vôùi nhau: chuùng coù chung caùc baøi toaùn con nhoû hôn. giaûi moãi baøi toaùn con chæ moät laàn, vaø ghi nhôù lôøi giaûi ñoù trong moät baûng ñeå truy caäp khi caàn ñeán.
Dynamic Programming 13.9.2004 Ch 1: Dynamic Programming Giới thiệu ° ∆ψναµιχ προγ ραµµινγ — — ° giải toán cách kết hợp lời giải toán (ở “programming” nghóa lập trình) Σο σανη δψναµιχ προγ ραµµινγ ϖα “ χηια−ϖα− τρ∫ ” ( διϖιδε−ανδ−χονθυερ) — Giải thuật chia-và-trò ° ° ° — chia toán thành toán độc lập , giải chúng đệ quy, kết hợp chúng để có lời giải cho toán ban đầu Giải thuật dynamic programming ° ° 13.9.2004 toán không độc lập với nhau: chúng có chung toán nhỏ giải toán lần, ghi nhớ lời giải bảng để truy cập cần đến Ch 1: Dynamic Programming Bài toán tối ưu ° Βαι τοαν το〈ι υ — — ° có nhiều lời giải lời giải có trò Τµ λι γ ιαι χο τρ∫ το〈ι υ ( χχ τιε∑υ ηαψ χχ 〉 αι) 13.9.2004 Ch 1: Dynamic Programming Nguyên tắc cuûa dynamic programming ° Μο τ γ ιαι τηυα τ δψναµιχ προγ ραµµινγ 〉 χ ξαψ δνγ θυα βο〈ν βχ: Ξαχ 〉 ∫ νη χα〈υ τρυχ χυα µο τ λι γ ιαι το〈ι υ ∇ ∫ νη νγ η⌠α 〉 ε θυψ χηο γ ια τρ∫ χυα µο τ λι γ ιαι το〈ι υ Τνη γ ια τρ∫ χυα µο τ λι γ ιαι το〈ι υ τ δι λεν ( “ βοττοµ−υπ ” ) Ξαψ δνγ λι γ ιαι το〈ι υ τ χαχ τηονγ τιν 〉 α⌡ τνη 13.9.2004 Ch 1: Dynamic Programming Nhân chuỗi ma trận ° ° ° ° Χηο µο τ χηυοι µα τρα ν 〈Α 1, Α 2, , Α ν 〉 Ξαχ 〉 ∫ νη τχη Α 1Α ⋅ ⋅ ⋅ Α ν δα τρεν γ ιαι τηυα τ ξαχ 〉 ∫ νη τχη χυα ηαι µα τρα ν Βιε∑υ διεν χαχη τνη τχη χυα µο τ χηυοι µα τρα ν βανγ χαχη “〉 ατ γ ι⌡α νγ οαχ ” ( πα ’ ρεντηεσιζε ) χαχ χαπ µα τρα ν σε⌡ 〉 χ νηαν ϖι νηαυ Μο τ τχη χυα µο τ χηυοι µα τρα ν λα φ υλλψ παρεντηεσιζεδ νε〈υ νο λα — — ma trận tích hai tích chuỗi ma trận fully parenthesized khác, đặt ngoặc ς δυ: µο τ ϖαι τχη χυα χηυοι µα τρα ν 〉 χ φ υλλψ παρεντηεσιζεδ — — — A (AB) ((AB)C) 13.9.2004 Ch 1: Dynamic Programming Chuỗi ma trận fully parenthesized ° ς δυ: Χηο µο τ χηυοι µα τρα ν 〈Α , Α , Α , Α 〉 Τχη Α 1Α 2Α 3Α χο τηε∑ 〉 χ (A1(A2(A3A4))) φ υλλψ παρεντηεσιζεδ τηεο 〉 υνγ χαχη κηαχ νηαυ: (A1((A2A3)A4)) ((A1A2)(A3A4)) ((A1(A2A3))A4) (((A1A2)A3)A4) 13.9.2004 Ch 1: Dynamic Programming Nhân hai ma trận ° Τχη χυα ηαι µα τρα ν Α ϖα Β ϖι — — A coù chiều p × q B có chiều q × r λα µο τ µα τρα ν Χ χο χηιε◊υ λα π × ρ MATRIX-MULTIPLY(A, B) if columns[A] ≠ rows[B] then error “các chiều không tương thích” else for i ← to rows[A] for j ← to columns[B] C[i, j] ← for k ← to columns[A] C[i, j] ← C[i, j] + A[i, k]⋅ B[k, j] return C ° Τηι γ ιαν 〉 ε∑ τνη Χ τψ λε ϖι σο〈 πηεπ νηαν ϖο ηνγ τηχ τηι τρονγ δονγ 7, τχ λα π × θ × ρ 13.9.2004 Ch 1: Dynamic Programming Phí tổn để nhân chuỗi ma trận ° ° Νηα ν ξετ: Π η το∑ν νηαν µο τ χηυοι µα τρα ν τυψ τηυο χ ϖαο χαχη 〉 ατ γ ι⌡α νγ οαχ ( παρεντηεσιζατιον) ς δυ: Χηο χηυοι µα τρα ν 〈Α , Α , Α 〉 τρονγ 〉 ο χαχ χηιε◊υ ( διµενσιον) χυα 10 ì 100, 100 ì , ϖα × 50 Χο 〉 υνγ χαχη 〉 ε∑ 〉 ονγ νγ οαχ ηοαν τοαν τχη Α 1Α 2Α : — Caùch 1: ((A1A2)A3) ° Tính A1A2 cần 10 ⋅ 100 ⋅ = 5000 phép nhân vô hướng Kế nhân A1A2 với A3 cần 10 ⋅ ⋅ 50 = 2500 phép nhân vô hướng ° Tổng cộng: 7500 phép nhân vô hướng Cách 2: (A1(A2A3)) ° — ° ° ° 13.9.2004 Tính A2A3 cần 100 ⋅ ⋅ 50 = 25000 phép nhân vô hướng Kế nhân A1 với A2A3 cần 10 ⋅ 100 ⋅ 50 = 50000 phép nhân vô hướng Tổng cộng: 75000 phép nhân vô hướng Ch 1: Dynamic Programming Bài toán nhân chuỗi ma trận ° ° ° Χηο χηυοι µα τρα ν 〈Α , Α , , Α ν 〉 γ ο◊µ ν µα τρα ν, τρονγ 〉 ο χηιε◊υ χυα Α ι λα π ι−1 × π ι , ϖι ι = , ,…, ν Βαι τοαν: Ξαχ 〉 ∫ νη µο τ 〉 ονγ νγ οαχ ηοαν τοαν χηο τχη Α 1Α 2⋅ ⋅ ⋅ Α ν σαο χηο σο〈 πηεπ νηαν ϖο ηνγ λα το〈ι τηιε∑υ Γιαι βαι τοαν τρεν βανγ χαχη ϖετ χαν? 13.9.2004 Ch 1: Dynamic Programming Đếm số cách đóng ngoặc ° ° ° Χηο µο τ χηυοι γ ο◊µ ν µα τρα ν 〈Α , Α , Α , , Α ν 〉 Νηα ν ξετ: ταο ρα µο τ χαχη 〉 ονγ νγ οαχ βανγ χαχη ταχη ( σπλιτ) γ ι⌡α Α κ ϖα Α κ+ , ϖι κ = 1, 2, , ν − 1, ταο ρα ηαι χηυοι χον Α 1Α ⋅ ⋅ ⋅ Α κ ϖα Α κ+ ⋅ ⋅ ⋅ Α ν , σαυ 〉 ο 〉 ονγ νγ οαχ µοι χηυοι χον Γ οι Π( ν) λα σο〈 χαχ χαχη 〉 ονγ νγ οαχ χηο µο τ χηυοι ν µα τρα ν — — n = có cách đóng ngoặc (không cần dấu ngoặc tường minh) Vậy P(1) = n ≥ từ nhận xét ta có n −1 P ( n) = ∑ P ( k ) P ( n − k ) k =1 Τ 〉 ο χηνγ µινη 〉 χ: ° ) = Ω(4πη / n νγ) πηαπ ϖετ χαν δυψε τ θυα τα〈τ ςα P ψ (nδυνγ χα χαχ χαχη 〉 ονγ νγ οαχ 〉 ε∑ τµ µο τ 〉 ονγ νγ οαχ το〈ι υ χα◊ν τηι γ ιαν χηαψ λυ⌡ψ τηα 13.9.2004 n 3/ Ch 1: Dynamic Programming 10 Thực thi APPROX-VERTEX-COVER b c d a e f b c d a e f b c d a e f 21.5.2004 g g g b c d a e f b c d a e f b c d a e f Chương 37 Approximation Algorithms g g g 387 Phân tích APPROX-VERTEX-COVER Νηα ν ξετ: Τηι γ ιαν χηαψ χυα Α ΠΠΡΟΞ −ς ΕΡΤΕΞ −Χ ΟςΕΡ λα Ο( Ε) ∇ ∫ νη λψ Α ΠΠΡΟΞ −ς ΕΡΤΕΞ −Χ ΟςΕΡ λα µο τ γ ιαι τηυα τ 2−ξα〈π ξ τρονγ τηι γ ιαν 〉 α τηχ 21.5.2004 Chương 37 Approximation Algorithms 388 ° ° Bài toán người bán hàng rong với bất đẳng thức tam giác Χηο µο τ 〉 ο◊ τη∫ 〉 α◊ψ 〉 υ ϖο ηνγ Γ = ( ς, Ε) χυνγ ϖι µο τ ηαµ χηι πη χ : Ε → Ζ + Τµ µο τ χηυ τρνη ηαµιλτον ( µο τ τουρ) χυα Γ ϖι πη το∑ν νηο νηα〈τ ∇ ιε◊υ κιε ν: Η αµ χηι πη χ: Ε → Ζ + τηοα µα⌡ν βα〈τ 〉 ανγ τηχ ταµ γ ιαχ 21.5.2004 APPROX-TSP-TOUR(G, c) c(u,một w) ≤ đỉnh c(u, v)r + ∀u, v, w ∈ V chọn ∈ c(v, V[G] w), làm đỉnh “gốc” nuôi lớn khung nhỏ T cho G từ gốc r dùng giải thuật MST-PRIM(G, c, r) gọi L danh sách đỉnh thăm viếng phép duyệt theo kiểu tiền thứ tự Chương 37 return chu trình hamilton H viếng Approximation Algorithms đỉnh theo thứ tự L 389 Thực thi APPROX-TSP-TOUR lên ví dụ a d a d e f b c e g f b g c h h (a) (b) Cây khung nhỏ T tính MST-PRIM, đỉnh a đỉnh gốc 21.5.2004 Chương 37 Approximation Algorithms 390 Thực thi APPROX-TSP-TOUR lên ví dụ (tieáp) a d a d e f b c e g f b g c h h (c) (d) Duyeät T a Tua H có từ kết Thứ tự đỉnh duyệt duyệt theo kiểu kiểu hoàn toàn là: a, b, c, b, h, tiền thứ tự mà APPROXb, a, d, e, f, e, g, e, d, a Thứ tự TSP-TOUR tìm Chi phí đỉnh duyệt kiểu tiền tua H khoảng 21.5.2004 391 thứ tự là: a, b, c, h, d, e, f,Chương g 37 chừng 19,074 Approximation Algorithms Thực thi APPROX-TSP-TOUR lên ví dụ (tiếp) a d e f b g c h (e) Tua tối ưu H∗ , có chi phí 14,715 21.5.2004 Chương 37 Approximation Algorithms 392 Bài toán người bán hàng rong với bất đẳng thức tam giác • • • ∇ ∫ νη λψ 37.2 Α Π Π ΡΟΞ −ΤΣΠ−Τ ΟΥΡ λα µο τ γ ιαι τηυα τ 2−ξα〈π ξ τηι γ ιαν 〉 α τηχ χηο βαι τοαν νγ ι βαν ηανγ ρονγ ϖι βα〈τ 〉 ανγ τηχ ταµ γ ιαχ Χηνγ µινη A)α= ∑ c(u, v) Χηο Α ⊆ Ε, 〉 ∫ νη νγc(η⌠ ( u , v )∈ A ° ° ° Γοι Η ∗ λα µο τ τυα το〈ι υ, γ οι Η λα τυα µα Α Π Π ΡΟΞ −ΤΣΠ−Τ ΟΥΡ τµ 〉 χ Χα◊ν χηνγ µινη: χ( Η ) ≤ 2χ( Η ∗ ) ( ∗) Τα χο χ( Τ) ≤ χ( Η ∗ − ε) ≤ χ( Η ∗ ) ϖ νε〈υ ξοα 〉 ι βα〈τ χ χανη ε ναο χυα Η ∗ τη 〉 χ µο τ χαψ κηυνγ , µα Τ λαι λα χαψ κηυνγ νηο νηα〈τ 21.5.2004 Chương 37 Approximation Algorithms 393 ° ° ° • Bài toán người bán hàng rong với bất đẳng thức tam giác Χηνγ µινη ( τιε〈π) χ( Ω) = 2χ( Τ) , ϖι Ω λα κε〈τ θυα µο τ δυψε τ ηοαν τοαν χαψ Τ τ 〉 νη ρ, ϖ µοι χανη χυα Τ 〉 χ 〉 ι θυα ηαι λα◊ν χ( Ω) ≤ 2χ( Η ∗ ) , τ τρεν ϖα ϖ ( ∗) Νηνγ Ω κηονγ πηαι λα τυα ϖ µοι 〉 νη 〉 χ τηαµ ηαι λα◊ν, δο 〉 ο “ τρανη τηαµ µοι 〉 νη λα◊ν τη ηαι ” ( = δυψε τ χαψ τηεο κιε∑υ τιε◊ν τη τ) 〉 ε∑ χο 〉 χ τυα Η , χηι πη κηονγ τανγ ϖ βα〈τ 〉 ανγ τηχ ταµ γ ιαχ, δο 〉 ο χ( Η ) ≤ χ( Ω) ≤ 2χ( Η ∗ ) 21.5.2004 Chương 37 Approximation Algorithms 394 Bài toán người bán hàng rong tổng quát • • • ° ∇ ∫ νη λψ Νε〈υ Π ≠ ΝΠ ϖα ρ ≥ , τη κηονγ το◊ν ται γ ιαι τηυα τ ξα〈π ξ τηι γ ιαν 〉 α τηχ ϖι τ σο〈 ξα〈π ξ ρ χηο βαι τοαν νγ ι βαν ηανγ ρονγ το∑νγ θυατ Χηνγ µινη Χηνγ µινη βανγ πηαν χηνγ Γ ια σ χο µο τ σο〈 νγ υψεν ρ ≥ ϖα µο τ γ ιαι τηυα τ ρ−ξα〈π ξ τηι γ ιαν 〉 α τηχ Α χηο βαι τοαν νγ ι βαν ηανγ ρονγ το∑νγ θυατ Η νγ χηνγ µινη: Σε⌡ δυνγ Α 〉 ε∑ γ ιαι βαι τοαν χηυ τρνη Η αµιλτον Η Α Μ −ΧΨΧΛ Ε τρονγ τηι γ ιαν 〉 α τηχ ς Η Α Μ −ΧΨΧΛ Ε λα ΝΠ −〉 α◊ψ 〉 υ ϖα τηεο γ ια τηιε〈τ Π ≠ ΝΠ νεν Α κηονγ χηαψ τρονγ τηι γ ιαν 〉 α τηχ, µαυ τηυα∑ν! 21.5.2004 Chương 37 Approximation Algorithms 395 Bài toán người bán hàng rong tổng quát • ° • • • Χηνγ µινη ( τιε〈π) Γοι Γ = ( ς, Ε) λα µο τ τηχ τηε∑ ( ινστανχε) χυα βαι τοαν χηυ τρνη ηαµιλτον Τ Γ 〉 ∫ νη νγ η⌠α 〉 ο◊ τη∫ Γ ’ = ( ς, Ε ’) λα 〉 ο◊ τη∫ 〉 α◊ψ 〉 υ τρεν ς, ϖι ηαµ χηι πη χ( υ, ϖ) = νε〈υ ( υ, ϖ) ∈ Ε = ρ| ς| + τρονγ χαχ τρνγ ηπ κηαχ Χαχ βιε∑υ διε∑ν χυα Γ ’ ϖα χ χο τηε∑ τνη 〉 χ τ µο τ βιε∑υ διεν χυα Γ τρονγ τηι γ ιαν 〉 α τηχ τηεο | ς| ϖα | Ε| 21.5.2004 Chương 37 Approximation Algorithms 396 Bài toán người bán hàng rong toồng quaựt ( ) οι Η ∗ λα τυα το〈ι υ χυα Γ ’, γ οι Η λα τυα µα Α τµ 〉 χ, τα χο χ( Η ) ≤ ρ⋅ χ( Η ∗ ) Π ηαν βιε τ ηαι τρνγ ηπ: — — • ° Trường hợp c(H ) > ρ| V| ρ| V| < c(H ) ≤ ρ⋅ c(H∗ ) ⇒ | V| < c(H∗ ) Vậy H∗ phải chứa cạnh ∉ E Suy G chu trình hamilton Trường hợp c(H ) ≤ ρ| V| c(H ) < ρ| V| + = chi phí cạnh ∉ E Do H chứa cạnh G, từ suy H chu trình hamilton G ςα ψ τα χο τηε∑ δυνγ γ ιαι τηυα τ Α 〉 ε∑ γ ιαι βαι τοαν χηυ τρνη ηαµιλτον τρονγ τηι γ ιαν 〉 α τηχ Μ αυ τηυαν ϖι γ ια τηιε〈τ Π ≠ ΝΠ ! 21.5.2004 Chương 37 Approximation Algorithms 397 Bài toán che phủ tập ° Μο τ τηχ τηε∑ ( Ξ, F ) χυα βαι τοαν χηε πηυ τα π γ ο◊µ µο τ τα π η⌡υ ηαν Ξ ϖα µο τ ηο F χαχ τα π χον χυα Ξ σαο χηο X = S S ∈F X= S S ∈C Μο τ τα π χον C ⊆ F 〉 χ γ οι λα χηε πηυ Ξ νε〈υ ° Βαι τοαν χηε πηυ τα π λα τµ µο τ τα π χον C ⊆ F , ϖι | C | λα νηο νηα〈τ, σαο χηο C χηε πηυ Ξ 21.5.2004 Chương 37 Approximation Algorithms 398 ° ° Dạng đònh toán che phủ taäp ∆ανγ βαι τοαν θυψε〈τ 〉 ∫ νη χηο βαι τοαν χηε πηυ τα π λα τµ µο τ χηε πηυ σαο χηο κχη τηχ χυα νο ≤ κ, ϖι κ λα µο τ τηαµ σο〈 χυα µο τ τηχ τηε∑ χυα βαι τοαν θυψε〈τ 〉 ∫ νη Βαι τοαν θυψε〈τ 〉 ∫ νη χηο βαι τοαν χηε πηυ τα π λα ΝΠ−〉 α◊ψ 〉 υ 21.5.2004 Chương 37 Approximation Algorithms 399 ° Một giải thuật xấp xỉ cho toán che phủ tập Μο τ γ ιαι τηυα τ ξα〈π ξ χηο βαι τοαν χηε πηυ τα π — dùng phương pháp greedy GREEDY-SET-COVER(X, F ) 21.5.2004 U ←X C ←∅ while U ≠ ∅ chọn S ∈ F cho | S ∩ U | lớn U ← U −S C ← C ∪ {S} return C Chương 37 Approximation Algorithms 400 Phân tích GREEDY-SET-COVER Γ οι σο〈 〉 ιε◊υ ηοα τη δ λα Η δ : d i δ Τνη χηα〈τ:i =1 Η Hd = ∑ ≤ λν δ + ∇ ∫ νη λψ Γ ΡΕΕ ∆Ψ −Σ ΕΤ −Χ ΟςΕΡ λα µο τ γ ιαι τηυα τ ρ( ν) − ξα〈π ξ τηι γ ιαν 〉 α τηχ, ϖι ρ( ν) = Η ( µαξ{| Σ | : Σ ∈ F }) Νηα ν ξετ: µαξ{| Σ | : Σ ∈ F } ≤ | Ξ | Η ε λυα ν Γ ΡΕΕ ∆Ψ −Σ ΕΤ −Χ ΟςΕΡ λα µο τ γ ιαι τηυα τ ( λν | Ξ | + 1) −ξα〈π ξ τηι γ ιαν 〉 α τηχ 21.5.2004 Chương 37 Approximation Algorithms 401 ... ραµµινγ — — ° giải toán cách kết hợp lời giải toán (ở “programming” nghóa lập trình) Σο σανη δψναµιχ προγ ραµµινγ ϖα “ χηια−ϖα− τρ∫ ” ( διϖιδε−ανδ−χονθυερ) — Giải thuật chia -và- trò ° ° ° —... thành toán độc lập , giải chúng đệ quy, kết hợp chúng để có lời giải cho toán ban đầu Giải thuật dynamic programming ° ° 13.9.2004 toán không độc lập với nhau: chúng có chung toán nhỏ giải toán lần,... sử dụng bảng chung mà triệu gọi giải thuật đệ quy truy cập để ° ° 13.9.2004 ghi kết sau giải toán đọc kết toán giải Ch 1: Dynamic Programming 24 Memoize giải thuật RECURSIVE-MATRIX-CHAIN ° °