Tiểu luận môn học THIẾT KẾ VÀ PHÂN TÍCH THUẬT TOÁN PHƯƠNG PHÁP THAM LAM

46 990 4
Tiểu luận môn học THIẾT KẾ VÀ PHÂN TÍCH THUẬT TOÁN PHƯƠNG PHÁP THAM LAM

Đ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

Thuật toán tham lam ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KHOA HỌC o0o TIỂU LUẬN MÔN HỌC THIẾT KẾ VÀ PHÂN TÍCH THUẬT TOÁN Đề tài: PHƯƠNG PHÁP THAM LAM Thầy giáo hướng dẫn: TS. Hoàng Quang Nhóm học viên thực hiện: 1. Võ Thị Ngọc Huệ 2. Lê Thị Nha Trang 3. Phạm Văn Trung 4. Trần Thanh Vũ Lớp Cao học Khoa Học Máy Tính – Khóa 2014 Trang 1 Thuật toán tham lam LỜI NÓI ĐẦU Giải thuật cho những bài toán tối ưu thường đi qua một số bước, với một tập hợp các chọn lựa tại mỗi bước. Với nhiều bài toán tối ưu hoá có thể sử dụng phương pháp đơn giản và hiệu quả hơn phương pháp qui hoạch động. Phương pháp tham lam luôn chọn phương án tốt nhất vào thời điểm hiện tại. Nó chọn tối ưu cục bộ với hy vọng rằng lựa chọn này sẽ dẫn đến một kết quả tối ưu toàn cục. Trong chương này sẽ chỉ ra những bài toán tối ưu mà có thể được giải quyết bằng phương pháp tham lam. Trước khi đọc chương này chúng ta nên đọc kỹ về phần quy hoạch động. Phương pháp tham lam không phải luôn mang lại các kết quả tối ưu, nhưng có nhiều bài toán nó có thể giải quyết được. Trong khuôn khổ đề tài này, nhóm chúng tôi xin đưa ra các phần như sau: - Phần 1: giới thiệu bài toán chọn hoạt động, đối với vấn đề này thì phương pháp tham lam là hiệu quả để đưa ra kết quả. Ta sẽ đi đến một phương pháp tham lam bởi việc xét đến đầu tiên là một giải pháp quy hoạch động và sau đó chỉ ra rằng ta có thể luôn đưa ra những lựa chọn tham lam để đi đến một kết quả tối ưu. - Phần 2 nhắc lại những yếu tố cơ bản của phương pháp tham lam, đưa ra một một cách tiếp cận trực tiêp hơn để chứng minh phương pháp tham lam đúng hơn dựa trên quy hoạch động đã đề cập ở phần 1. - Phần 3 giới thiệu một ứng dụng quan trọng của kỹ thuật tham lam: một mô hình của các chuẩn nén dữ liệu. Trang 2 Thuật toán tham lam - Phần 4 ta nghiên cứu kỹ một số lý thuyết tổng hợp cơ sở được gọi là "matroids" mà đối với vấn đề này phương pháp tham lam luôn đưa ra kết quả tối ưu. - Phần 5 minh hoạ ứng dụng của việc sử dụng maitroids trong một bài toán lập lịch làm việc với thời hạn cuối cùng và số tiền phạt. Phương pháp tham lam là khá mạnh và làm việc tốt với nhiều bài toán. Những chương sau sẽ giới thiệu nhiều phương pháp mà có thể được xem như các ứng dựng của phương pháp tham lam, bao gồm các giải thuật cây khung nhỏ nhất, thuật toán Dijktra về tìm đường đi ngắn nhất xuất phát từ một đỉnh và thuật toán heuristic phủ tập hợp tham lam của Chvátal . Thuật toán cây khung nhỏ nhất là một ví dụ cổ điển của phương pháp tham lam. Mặc dù nội dung của tiểu luận được dịch từ Chương 16 trong cuốn Introdution To Algorithms, đây là một cuốn sách được viết khá công phu và kỹ lưỡng của nhóm tác giả Thomas H. Cormen, Charles E. Leiserson và Ronald L. Rivest. Tuy nhiên, vì thời gian thực hiện tiểu luận có hạn, đồng thời còn nhiều hạn chế trong vấn đề ngôn ngữ, nên chắc chắn tiểu luận sẽ có nhiều sai sót. Rất mong sự góp ý của Thầy và các bạn lớp Cao học ngành Khoa Học Máy Tính khóa 2007 để chúng tôi hoàn chỉnh tiểu luận. Xin chân thành cảm ơn TS. Hoàng Quang đã tận tụy giúp đỡ chúng tôi hoàn thành tiểu luận này. Trang 3 Thuật toán tham lam MỤC LỤC LỜI NÓI ĐẦU 2 MỤC LỤC 4 PHẦN 1: BÀI TOÁN CHỌN HOẠT ĐỘNG 5 1.1.Giới thiệu bài toán 5 1.2. Cấu trúc con tối ưu của bài toán chọn hoạt động: 6 1.3. Giải pháp đệ quy: 8 1.4. Biến đổi một giải pháp quy hoạch động thành một giải pháp tham lam: 8 1.5. Giải pháp tham lam đệ quy 10 1.6. Giải pháp tham lam lặp: 11 1.7. Các bài tập liên quan: 14 PHẦN 2: CÁC THÀNH PHẦN CỦA CHIẾN LƯỢC THAM LAM 16 2.1. Tính lựa chọn tham lam: 17 2.2. Cấu trúc con tối ưu 18 2.3. Thuật toán tham lam mâu thuẫn với quy hoạch động 19 2.4. Các bài tập liên quan: 21 PHẦN 3: CÁC MÃ HUFFMAN 23 3.1. Mã tiền tố: 23 3.2. Xây dựng mã Huffman: 25 3.3. Tính đúng đắn của giải thuật Huffman 27 3.4. Các bài tập liên quan: 30 PHẦN 4: CƠ SỞ LÝ THUYẾT CỦA PHƯƠNG PHÁP THAM LAM 32 4.1. Matroid: 32 4.2. Giải thuật tham lam trên một matroid trọng số 34 4.3. Các bài tập liên quan: 38 PHẦN 5: BÀI TOÁN LẬP LỊCH LÀM VIỆC 39 5.1. Bổ đề 16.12 40 5.2. Định lý 16.13 41 5.3. Các bài tập liên quan: 42 CÁC BÀI TẬP TỔNG HỢP 43 CÁC CHÚ Ý TRONG ĐỀ TÀI 46 Trang 4 Thuật toán tham lam PHẦN 1: BÀI TOÁN CHỌN HOẠT ĐỘNG 1.1. Giới thiệu bài toán Bài toán sắp xếp lịch cho nhiều hoạt động với ý nghĩa để có thể sử dụng chung một tài nguyên (mỗi thời điểm chỉ có một hoạt động sử dụng tài nguyên chung), với mục tiêu là sắp xếp sao càng có nhiều hoạt động tương thích sử dụng tài nguyên càng tốt. Giả sử ta có một tập hợp S = {a 1, a 2, a n } là tập các hoạt động muốn sử dụng tài nguyên, ví dụ một hội trường, chỉ mỗi một hoạt động tại mỗi thời điểm. Mỗi hoạt động a i sẽ có thời điểm bắt đầu là s i và thời điểm kết thúc là f i, với điều kiện 0 ≤ s i < f i < ∞. Nếu hoạt động a i được chọn, thì nó sẽ độc chiếm tài nguyên trong khoảng thời gian [s i, f i ). Hoạt động a i và a j được gọi là tương thích lẫn nhau nếu như khoảng thời gian [s i, f i ) và [a j, f j ) là không giao nhau (Ví dụ a i và a j là tương thích nếu s i ≥ f j hoặc s j ≥ f i ). Trong bài toán chọn hoạt động ta phải chọn tập con lớn nhất của các hoạt động tương thích lẫn nhau. Chẳng hạn, xem tập S của các hoạt động sau, mà ta có thể sắp xếp tăng dần theo thời điểm kết thúc. i 1 2 3 4 5 6 7 8 9 10 11 S i 1 3 0 5 3 5 6 8 8 2 12 F i 4 5 6 7 8 9 10 11 12 13 14 Ta sẽ thấy một cách ngắn gọn là tại sao nó thuận lợi để xem xét các hoạt động trong trình tự sắp xếp. Chẳng hạn như, một tập con {a 3, a 9, a 11 } bao gồm những hoạt động tương thích lẫn nhau. Nó không phải là tập con lớn nhất, vì một tập con {a 1 , a 4, a 8 , a 11 } là lớn hơn. Thật ra {a 1 , a 4, a 8 , a 11 } là tập con lớn nhất của các hoạt động tương thích lẫn nhau; một tập con lớn nhất khác là {a 2 , a 4, a 9 , a 11 }. Ta sẽ giải quyết bài toán này trong một vài bước. Ta bắt đầu bởi việc đưa ra công thức của giải pháp quy hoạch động đối với bài toán này trong đó ta tổng hợp các giải pháp tối ưu đối với hai bài toán con để thiết lập giải pháp tối ưu của bài toán gốc. Ta có các lựa chọn khi quyết định các bài toán để sử dụng trong một giải pháp tối ưu. Sau đó, ta sẽ nhận thấy rằng ta chỉ cần một lựa chọn duy nhất - lựa chọn tham lam - và sau khi ta lựa chọn chỉ còn một bài toán con, một bài toán con còn lại sẽ rỗng. Dựa trên những nhận xét này, ta sẽ xây dựng một giải thuật tham lam đệ quy để giải quyết bài toán lập lịch hoạt Trang 5 Thuật toán tham lam động. Ta sẽ hoàn thành quá trình xây dựng giải thuật tham lam bởi việc biến đổi giải thuật đệ quy sang giải thuật lặp. Mặc dù những bước ta thực hiện trong phần này thể hiện mối liên quan nhiều hơn là tiêu biểu cho sự phát triển của phương pháp tham lam, chúng minh hoạ cho mối quan hệ của phương pháp tham lam và quy hoạch động. 1.2. Cấu trúc con tối ưu của bài toán chọn hoạt động: Như đã đề cập ở trên, ta bắt đầu bằng phương quy hoạch động để giải quyết bài toán lựa chọn hoạt động. Như ở chương 15, bước đầu tiên là tìm ra cấu trúc con tối ưu và sau đó sử dụng nó để xây dựng một giải pháp tối ưu cho bài toán từ các giải pháp tối ưu cho các bài toán con. Ta nhận thấy rằng ở chương 15 ta cần định nghĩa một không gian thích hợp của bài toán con. Ta hãy bắt đầu bằng việc định nghĩa các tập hợp: S ij = {a k ∈S : f i ≤ s k < f k ≤ s j } Sao cho S ij là một tập con của các hoạt động trong tập S mà có thể bắt đầu sau khi hoạt động a i kết thúc và kết thúc trước hoạt động a j bắt đầu. Thật ra, S ij chứa tất cả các hoạt động tương thích với a i và a j và cũng tương thích với tất cả các hoạt động hoàn thành không trễ hơn a i và tất cả các hoạt động bắt đầu không sớm hơn a j bắt đầu. Để thuận tiện trong việc biểu diễn bài toán, không mất tính tổng quát, ta thêm vào những hoạt động giả sử a 0 và a n+1 với qui ước rằng f 0 = 0 và S n+1 = ∞. Sau đó S = S 0.n+1 , và phạm vi của i và j được cho bởi 0 ≤ i, j ≤n+1. Ta có thể giới hạn hơn nữa phạm vi của i và j như sau. Giả sử rằng các hoạt động đó được sắp xếp theo một thứ tự tăng dần của thời điểm kết thúc: f 0 ≤ f 1 ≤ f 2 ≤ ≤f n ≤ f n+1 . (16.1) Ta dễ dàng thấy rằng S ij = Ø với i ≥ j. Tại sao? Giả sử rằng tồn tại hoạt động a k ∈ S ij sao cho i ≥ j, vì vậy a i kế tiếp a j trong thứ tự sắp xếp. Sau đó ta sẽ có f i ≤ s k < f k ≤ s j < f j . Vì vậy, f i < f j, điều này mâu thuẫn với giả thiết rằng a i kế tiếp a j trong thứ tự sắp xếp. Ta có thể kết luận rằng, ta sắp xếp các hoạt động theo thứ tự tăng dần của thời điểm kết thúc, phạm vi của các bài toán con của ta là chọn một tập con cực đại của các hoạt động tương thích lẫn nhau từ S ij với 0 ≤ i < j ≤ n+1, biết rằng tất cả các S ij khác là đều rỗng. Trang 6 Thuật toán tham lam Để nhận ra được cấu trúc con của bài toán chọn hoạt động, ta xét một bài toán con khác rỗng S ij , và giả sử rằng một giải pháp đối với S ij tồn tại một hoạt động a k, mà f i ≤ s k < f k ≤ s j. Việc chọn hoạt động a k sẽ phát sinh ra hai bài toán con, S ik (những hoạt động mà bắt đầu sau khi a i kết thúc và kết thúc trước khi a k bắt đầu) và S kj (những hoạt động mà bắt đầu sau khi a k kết thúc và kết thúc trước khi a j bắt đầu), mỗi hoạt đó bao gồm một tập con của các hoạt động trong S ij . Giải pháp của ta đối với bài toán S ij là tổng hợp hai giải pháp cho hai bài toán con S ik và S kj, ứng với hoạt động a k . Vì vậy số các hoạt động trong giải pháp đối với S ij của ta là kích thước của bài toán S ik , cộng với kích thước của bài toán S kj , cộng với một (cho a k ). Cấu trúc con tối ưu của bài toán này là như sau. Nếu A ij là giải pháp tối ưu cho bài toán có chứa các hoạt động a k. Thì giải pháp A ik cho S ik và A kj cho S kj được sử dụng trong S ij cũng tối ưu. Lý luận cắt và dán thông thường áp dụng. Thật vậy, nếu tồn tại một giải pháp A' ik cho S ik chứa nhiều hoạt động hơn A ik , ta có thể thay A ik bởi A' ik trong A ij , ta sẽ tìm ra một giải pháp khác đối với S ij có nhiều hoạt động hơn A ij . Điều này trái với giả thiết ta co rằng A ij là giải pháp tối ưu đối với S ij . Tương tự, nếu ta có một giải pháp A' kj đối với S kj với nhiều hoạt động hơn A kj , ta có thể thay thế A kj bởi A' kj để đưa ra một giải pháp cho S ij với nhiều hoạt động hơn A ij . Bây giờ ta sử dụng cấu trúc con tối ưu để chỉ ra rằng có thể xây dựng một giải pháp tối ưu cho bài toán từ những giải pháp tối ưu đối với những bài toán con. Ta đã thấy rằng giải pháp nào đó cho bài toán con khác rỗng S ij có chứa hoạt động a k , và giải pháp tối ưu bất kỳ đó chứa trong nó những giải pháp tối ưu đối với bài toán con S ik và S kj . Vì vậy, ta có thể xây dựng một tập con cực đại của những hoạt động tương thích lẫn nhau trong S ij bởi việc phân chia bài toán thành hai bài toán con (tìm tập con lớn nhất của các hoạt động tương thích lẫn nhau trong S ik và S kj ), tìm ra những tập con lớn nhất A ik và A kj của những hoạt động tương thích lẫn nhau đối với những bài toán con này, và thành lập tập con lớn nhất A ij của các hoạt động tương thích lẫn nhau như: A ij = A ik U {a k } U A kj (16.2) Giải pháp tối ưu cho bài toán chính là giải pháp cho S 0,n+1. Trang 7 Thuật toán tham lam 1.3. Giải pháp đệ quy: Bước thứ hai trong việc phát triển giải pháp quy hoạch động là định nghĩa một cách đệ quy giá trị của giải pháp tối ưu. Đối với những bài toán chọn hoạt động, gọi c[i,j] là số các hoạt động trong tập con lớn nhất chứa các hoạt động tương thích lẫn nhau trong S ij . Ta có c[i,j] = 0 khi S ij = Ø, hoặc c[i,j] = 0 khi i ≥ j. Xét một tập con S ij khác rỗng. Như ta đã thấy, nếu a k được sử dụng trong tập con lớn nhất các hoạt động tương thích lẫn nhau của S ij , Ta cũng sử dụng các tập con lớn nhất của các hoạt động tương thích lẫn nhau cho các bài toán con S ik và S kj. Dùng công thức (16.2), ta có công thức c[i,j] = c[i,k] + c[k,j] + 1. Công thức đệ quy này cho thấy rằng ta biết giá trị của k, mà ta không biết. Ta có i-j-1 giá trị có thể chấp nhận cho k, cụ thể là k = i+1, , j-1. Vì tập con lớn nhất của S ij phải dùng một trong những giá trị này của k, ta phải kiểm tra tất cả chúng để tìm ra giá trị tốt nhất. Vì vậy công thức đệ quy đầy đủ của c[i,j] trở thành: (16.3) 1.4. Biến đổi một giải pháp quy hoạch động thành một giải pháp tham lam: Tại điểm này, nó sẽ là một bài tập dễ hiểu lập một cái bảng, từ dưới lên, thuật toán quy hoạch động dựa trên công thức (16.3). Thực ra, bài tập 16.1-1 yêu cầu bạn thực hiện điều này. Có hai sự xác định then chốt, tuy nhiên, điều này cho phép ta đơn giản hoá giải pháp của ta. a. Định lý 16.1: Xét một bài toán con khác rỗng S ij ,và nếu a m là một hoạt động trong S ij có thời điểm kết thúc sớm nhất: f m = min{f k : a k ∈ S ij }. Thì: 1. Hoạt động a m được sử dụng trong một tập con lớn nhất nào đó của các hoạt động tương thích lẫn nhau của S ij . 2. Bài toán con S im là rỗng, do đó nếu chọn a m thì chỉ còn duy nhất bài toán con khác rỗng S mj. Trang 8 Thuật toán tham lam b. Chứng minh: Ta chứng minh phần hai trước vì đơn giản hơn. Giả sử rằng S im là khác rỗng, do đó có một hoạt động a k nào đó sao cho f i ≤ s k < f k ≤ s m < f m . Mà a k cũng nằm trong S ij và nó có thời gian kết thúc sớm hơn a m, điều này mâu thuẫn với việc chọn a m Ta kết luận rằng S im là rỗng. Để chứng minh phần thứ nhất, ta giả sử rằng, A ij là một tập con lớn nhất của các hoạt động tương thích lẫn nhau của S ij, và ta sắp xếp các hoạt động của A ij theo thứ tự tăng dần của thời điểm kết thúc. Gọi a k là hoạt động đầu tiên trong A ij. Nếu a k = a m , thì ta đã chứng minh được, chỉ ra rằng a m được sử dụng trong tập con lớn nhất nào đó của các hoạt động tương thích lẫn nhau của S ij . Nếu a k ≠ a m , ta xây dựng tập con A’ ij = A ij – {a k } ∪ {a m } . các hoạt động trong A’ ij thì tách rời nhau, các hoạt động trong A ij thì, a k là hoạt động kết thúc đầu tiên trong A ij, và fm ≤ fk. Chú ý rằng A’ ij có số hoạt động giống như A ij, ta thấy rằng A’ ij cũng là một tập con lớn nhất của các hoạt động tương thích lẫn nhau của S ij mà có chứa a m. Tại sao định lý 16.1 có giá trị? Quay về phần 15.3 cấu trúc con tối ưu làm thay đổi cách nhiều bài toán được sử dụng trong giải pháp tối ưu để đến bài toán gốc và trong nhiều cách chọn ta có xác định những bài toán con để sử dụng. Trong giải pháp quy hoạch động, hai bài toán con được sử dụng trong giải pháp tối ưu, và có j-i-1 cách chọn khi giải quyết bài toán con S ij. Định lý 16.1 giảm cả số lượng lớn đáng kể này: chỉ duy nhất một bài toán con được sử dụng trong giải pháp tối ưu (một bài toán con khác thì là rỗng), và khi giải quyết bài toán con S ij, ta cần xem duy nhất một cách chọn: một cách với thời gian kết thúc sớm nhất trong S ij . May mắn thay, ta có thể dễ dàng xác định đây là hoạt động nào. Cùng với việc giảm số các bài toán con và số cách chọn, định lý 16.1 cung cấp một lợi ích khác: ta có thể giải quyết mỗi bài toán con theo kiểu từ trên xuống (top-down), hơn là kiểu từ dưới lên (bottom-up) sử dụng điển hình trong quy hoạch động. Để giải quyết bài toán con S ij , ta chọn hoạt động a m trong S ij với thời gian kết thúc sớm nhất và thêm vào giải pháp này một tập của các hoạt động dùng trong giải pháp tối ưu đối với bài toán con S ij . Bởi vì ta biết rằng, có chọn a m, ta sẽ được sử dụng một giải pháp nào đó cho S mj trong giải pháp tối ưu của ta cho S ij , ta không cần giải quyết S mj trước việc giải quyết S ij . Để Trang 9 Thuật toán tham lam giải quyết S ij, ta có thể chọn a m trước tiên như hoạt động trong S ij với thời điểm kết thúc sớm nhất và sau đó giải quyết S mj . Cũng chú ý rằng có một mô hình đối với những bài toán con mà ta giải quyết. Bài toán ban đầu của ta là S =S 0,n+1 . Giả sử rằng chọn a m1 là hoạt động trong S 0,n+1 với thời điểm kết thúc sớm nhất. (Từ việc sắp xếp các hoạt động theo thứ tự thời điểm kết thúc tăng dần và f 0 = 0, ta phải có m 1 = 1.) Bài toán con tiếp theo là S m1,n+1. Bây giờ giả sử rằng ta chọn a m2 là hoạt động trong S m1,n+1 với thời điểm kết thúc sớm nhất. (Nó không cần thiết trong trường hợp m 2 = 2). Bài toán con tiếp theo là S m2,n+1. Tiếp theo, ta thấy rằng mỗi bài toán con sẽ có dạng S i m ,n+1 cho số hoạt động m i nào đó. Tóm lại, mỗi bài toán con gồm có các hoạt động cuối cùng để kết thúc, và một số các hoạt động biến đổi từ bài toán con này đến bài toán con khác. Cũng có một mô hình đối với các hoạt động mà ta chọn. Bởi vì ta luôn luôn chọn hoạt động với thời điểm kết thúc sớm nhất trong S i m ,n+1, thời điểm kết thúc của các hoạt động được chọn qua tất cả các bài toán con sẽ làm gia tăng nghiêm trọng thời gian. Tuy nhiên, ta có thể xem như mỗi hoạt động là một toàn diện, trong việc sắp xếp tăng dần của thời điểm kết thúc. Hoạt động a m mà ta chọn khi giải quyết một bài toán con thì luôn là một hoạt động với thời điểm kết thúc sớm nhất mà có thể được lập lịch hợp lý. Hoạt động được chọn như vậy là chọn lựa “tham lam” trong hướng này, qua trực giác, nó để lại nhiều cơ hội có thể cho những hoạt động còn lại để lập lịch. Đó là, lựa chọn tham lam là một cách mà cực đại hoá số lượng đáng kể của thời gian còn lại chưa lập lịch. 1.5. Giải pháp tham lam đệ quy Bây giờ ta đã thấy cách tổ chức hiệu quả giải pháp quy hoạch động, và cách xử lý nó theo phương pháp từ trên xuống, ta xem một giải thuật mà nó hoạt động một cách thuần tuý trong thuật toán tham lam, kiểu từ trên xuống. Dễ hiểu, một giải thuật đệ quy như là thủ tục RECURSIVE-ACTIVITY-SELECTOR. Nó lấy thời điểm bắt đầu và kết thúc của các hoạt động, được trình bày như các mảng s và f, xem như những chỉ số bắt đầu i và n mà nó định nghĩa bài toán con S i,n+1 nó là để giải quyết. (Tham số n chỉ hoạt động thực tế cuối cùng a n trong bài toán con và không chỉ hoạt động không có thật a n+1 mà nó cũng ở Trang 10 [...]... hơn, ta thiết kế thuật toán tham lam theo chuỗi các bước: 1 Tìm lựa chọn sao cho bước tiếp theo chỉ việc giải quyết một bài toán con 2 Chứng minh rằng với sự lựa chọn tham lam tại mỗi bước ta luôn tìm được một giải pháp tối ưu của bài toán ban đầu 3 Chỉ ra rằng, với sự lựa chọn tham lam tại mỗi bước, giải pháp tối ưu của bài toán con còn lại kết hợp với sự lựa chọn tham lam này sẽ đi đến một giải pháp. .. không cần thiết cho rằng đi đến một bài toán con bằng cách thực hiện lựa chọn tham lam trong bài toán tối ưu Tất cả ta thật sự Trang 18 Thuật toán tham lam cần làm là cho rằng một giải pháp tối ưu đối với bài toán con, kết hợp với lựa chọn tham lam vừa được thực hiện, mang lại một giải pháp tối ưu đối với bài toán ban đầu Sự phối hợp hoàn toàn sử dụng phương pháp quy nạp đối với các bài toán con để... lựa chọn tham lam tại mỗi bước tạo ra một giải pháp tối ưu 2.3 Thuật toán tham lam mâu thuẫn với quy hoạch động Bởi vì thuộc tính cấu trúc con tối ưu được khai thác cả trong chiến lược tham lam và quy hoạch động Một mặt ta có thể có khuynh hướng phát sinh một giải thuật quy hoạch động cho một bài toán khi chỉ một giải thuật tham lam là đủ, hoặc ta có thể lầm lẫn khi nghĩ rằng giải thuật tham lam sẽ làm... Trong giải thuật tham lam, ta thực hiện cách chọn bất kỳ dường như tốt nhất ngay lập tức và sau đó giải quyết bài toán con xuất hiện sau khi lựa chọn được thực hiện Lựa chọn được thực hiện bởi một thuật toán tham lam có lẽ phụ thuộc vào các lựa chọn cho đến giờ, nhưng nó không thể phụ thuộc vào những lựa chọn Trang 17 Thuật toán tham lam bất kỳ trong tương lai hay những giải pháp cho các bài toán con... Thuật toán tham lam PHẦN 4: CƠ SỞ LÝ THUYẾT CỦA PHƯƠNG PHÁP THAM LAM Có một lý thuyết rất hay về giải thuật tham lam mà ta sẽ tóm tắt trong phần này Lý thuyết này rất hữu ích trong việc xác định khi phương pháp tham lam dẫn đến những giải pháp tối ưu Nó liên quan đến cấu trúc tổ hợp đã biết như “matroids” Mặc dù lý thuyết này không áp dụng cho tất cả các trường hợp mà phương pháp tham lam đã áp dụng... tại mỗi bước của giải thuật đệ quy, lựa chọn tham lam là một trong những lựa chọn sẽ dẫn đến kết quả tối ưu 4 Chỉ ra rằng sau mỗi lần chọn tham lam thì một trong những bài toán con sẽ rỗng 5 Xây dựng giải thuật đệ quy cho chiến lược tham lam 6 Biến đổi giải thuật đệ quy thành giải thuật lặp Qua các bước này, ta đã thấy chi tiết cơ bản nguồn gốc quy hoạch động của thuật toán tham lam Trong thực tế, tuy... đóng góp O(nlgn) vào thời gian chạy thuật toán Vì vậy, tổng thời gian chạy của giải thuật Huffman trên tập hợp gồm n ký tự là O(nlgn) 3.3 Tính đúng đắn của giải thuật Huffman Để chứng minh thuật toán tham lam Huffman là đúng, ta chỉ ra rằng bài toán xác định mã tiền tố tối ưu thể hiện lựa chọn tham lam và những tính chất cấu trúc con Bổ đề tiếp theo chỉ ra thuộc tính lựa chọn tham lam có a Bổ đề 16.2:... thích mà lấn lên những hoạt động còn lại khác ít nhất và luôn luôn lựa chọn hoạt động còn lại với thời điểm bắt đầu sớm nhất Trang 15 Thuật toán tham lam PHẦN 2: CÁC THÀNH PHẦN CỦA CHIẾN LƯỢC THAM LAM Thuật toán tham lam có được một giải pháp tối ưu cho một bài toán bằng cách thực hiện một chuỗi các lựa chọn Đối với mỗi quyết định chỉ ra trong thuật toán, sự lựa chọn này dường như tốt nhất tại thời điểm... minh rằng bài toán có các thuộc tính này, sau đó ta thuận lợi trong cách xây dựng một thuật toán tham lam cho nó 2.1 Tính lựa chọn tham lam: Thành phần then chốt trước tiên là tính lựa chọn tham lam: một giải pháp tôi ưu toàn cục có thể đạt được bằng cách lựa chọn tối ưu cục bộ (tham lam) Nói một cách khác, khi có nhiều sự lựa chọn thì ta lựa chọn phương án nào tốt nhất ở hiện tại trong bài toán hiện tại,... với một lựa chọn tham lam có nghĩa Điều đó là, ta có thể bỏ qua chỉ số dưới thứ hai và định nghĩa các bài toán con của công thức Si = {ak ∈ S : fi ≤ Sk} Sau đó, ta có thể chứng minh rằng một lựa chọn tham lam (hoạt động đầu tiên a m để kết thúc Si ), kết hợp với một giải pháp tối ưu để đi đến tập Trang 16 Thuật toán tham lam còn lại Sm của các hoạt động tương thích, mang lại một giải pháp tối ưu đối . Thuật toán tham lam ĐẠI HỌC HUẾ TRƯỜNG ĐẠI HỌC KHOA HỌC o0o TIỂU LUẬN MÔN HỌC THIẾT KẾ VÀ PHÂN TÍCH THUẬT TOÁN Đề tài: PHƯƠNG PHÁP THAM LAM Thầy giáo hướng dẫn: TS. Hoàng Quang Nhóm học. mỗi bước. Với nhiều bài toán tối ưu hoá có thể sử dụng phương pháp đơn giản và hiệu quả hơn phương pháp qui hoạch động. Phương pháp tham lam luôn chọn phương án tốt nhất vào thời điểm hiện tại dựng của phương pháp tham lam, bao gồm các giải thuật cây khung nhỏ nhất, thuật toán Dijktra về tìm đường đi ngắn nhất xuất phát từ một đỉnh và thuật toán heuristic phủ tập hợp tham lam của

Ngày đăng: 11/04/2015, 22:47

Từ khóa liên quan

Mục lục

  • TRƯỜNG ĐẠI HỌC KHOA HỌC

  • THIẾT KẾ VÀ PHÂN TÍCH THUẬT TOÁN

  • LỜI NÓI ĐẦU

  • MỤC LỤC

  • PHẦN 1: BÀI TOÁN CHỌN HOẠT ĐỘNG

    • 1.1. Giới thiệu bài toán

    • 1.2. Cấu trúc con tối ưu của bài toán chọn hoạt động:

    • 1.3. Giải pháp đệ quy:

    • 1.4. Biến đổi một giải pháp quy hoạch động thành một giải pháp tham lam:

    • 1.5. Giải pháp tham lam đệ quy

    • 1.6. Giải pháp tham lam lặp:

    • 1.7. Các bài tập liên quan:

    • PHẦN 2: CÁC THÀNH PHẦN CỦA CHIẾN LƯỢC THAM LAM

      • 2.1. Tính lựa chọn tham lam:

      • 2.2. Cấu trúc con tối ưu

      • 2.3. Thuật toán tham lam mâu thuẫn với quy hoạch động

      • 2.4. Các bài tập liên quan:

      • PHẦN 3: CÁC MÃ HUFFMAN

        • 3.1. Mã tiền tố:

        • 3.2. Xây dựng mã Huffman:

        • 3.3. Tính đúng đắn của giải thuật Huffman

        • 3.4. Các bài tập liên quan:

        • PHẦN 4: CƠ SỞ LÝ THUYẾT CỦA PHƯƠNG PHÁP THAM LAM

          • 4.1. Matroid:

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

Tài liệu liên quan