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

bài tập lớn cấu trúc dữ liệu và giải thuật đề tài GIẢI THUẬT THAM LAM

39 1,2K 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

Thông tin cơ bản

Định dạng
Số trang 39
Dung lượng 535,09 KB

Nội dung

TRƯỜNG ĐẠI HỌC HÀNG HẢI VIỆT NAM KHOA CÔNG NGHỆ THÔNG TIN -*** - BÁO CÁO BÀI TẬP LỚN CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT Đề tài: GIẢI THUẬT THAM LAM LỚP : CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT (NO2) Người hướng dẫn: NGUYỄN HẠNH PHÚC Sinh viên thực hiện: TRẦN TRUNG KIÊN (52040) ĐẶNG MINH QUANG (51243) NGUYỄN HỮU ĐỨC(52026) HẢI PHÒNG- 2015 THUẬT TOÁN THAM LAM MỤC LỤC THUẬT TOÁN THAM LAM GIỚI THIỆU GIẢI THUẬT THAM LAM I Tổng quan thuật toán tham lam I.1 Sơ lược giải thuật tham lam Khái niệm Giải thuật tham lam (tiếng Anh: Greedy algorithm) thuật toán giải toán theo kiểu metaheuristic để tìm kiếm lựa chọn tối ưu địa phương bước với hy vọng tìm lựa chọn tối ưu toàn cục Chiến lược tham lam chiến lược xây dựng thuật toán tìm nghiệm tối ưu cục cho toán tối ưu nhằm đạt nghiệm tối ưu toàn cục cho toán (trong trường hợp tổng quát) Trong trường hợp cho nghiệm đúng, lời giải chiến lược tham lam thường dễ cài đặt có hiệu cao (độ phức tạp thuật toán thấp) Chẳng hạn áp dụng giải thuật tham lam với toán “hành trình người bán hàng” ta có giải thuật sau: "Ở bước đến thành phố gần thành phố nhất" Giải thuật tham lam có năm thành phần: a Một tập hợp ứng viên (candidate), để từ tạo lời giải b Một hàm lựa chọn, để theo lựa chọn ứng viên tốt để bổ sung vào lời giải c Một hàm khả thi (feasibility), dùng để định ứng viên dùng để xây dựng lời giải d Một hàm mục tiêu, ấn định giá trị lời giải lời giải chưa hoàn chỉnh e Một hàm đánh giá, ta tìm lời giải hoàn chỉnh Đặc trưng chiến lược tham lam Phương pháp tham lam kỹ thuật thiết kế thường dùng để giải toán tối ưu Phương pháp tiến hành nhiều bước Tại bước, theo chọn lựa (xác định hàm chọn), tìm lời giải tối ưu cho toán nhỏ tương ứng Lời giải toán THUẬT TOÁN THAM LAM bổ sung dần bước từ lời giải toán Lời giải xây dựng có lời giải tối ưu toán? Các lời giải theo phương pháp tham lam thường chấp nhận theo điều kiện đó, chưa tối ưu Cho trước tập A gồm n đối tượng, ta cần phải chọn tập S A Với tập S chọn thỏa mãn yêu cầu toán, ta gọi nghiệm chấp nhận Một hàm mục tiêu gắn nghiệm chấp nhận với giá trị Nghiệm tối ưu nghiệm chấp nhận mà hàm mục tiêu đạt giá trị nhỏ (lớn nhất)  Đặc trưng tham lam phương pháp thể bước việc xử lí tuân theo chọn lựa trước, không kể đến tình trạng không tốt xảy thực lựa chọn lúc đầu I.2 Lý thuyết Matroids Lý thuyết Matroids, lý thuyết cho phép xác định thuật toán tham lam đưa phương án tối ưu Nó liên quan đến cấu trúc tổ hợp biết “Matroids” Lý thuyết Matroids ông Hasser Whitney đưa báo “ On the abstract properties of linear dependence” Lý thuyết không áp dụng cho tất trường hợp (ví dụ, không áp dụng cho toán lựa chọn hoạt động toán mã Huffman), áp dụng số trường hợp mang tính thực tế ví dụ: toán tìm khung nhỏ Lý thuyết phát triển mở rộng để áp dụng cho nhiều ứng dụng Các định nghĩa liên quan đến lý thuyết trên: Định nghĩa Matroids Một matroid mà có thứ tự M=(S,l), thỏa mãn: – S tập hữu hạn khác rỗng (tập không rỗng hữu hạn) – ℓ họ khác rỗng tập (độc lập) S, thỏa mãn: B∈l A⊆B A∈l (ta nói l di truyền) Lưu ý : tập rỗng thiết phải phần tử l – M thỏa mãn tính chất trao đổi (exchange) A∈l, B∈l |A|= w(y) với y ∈B  x∉B : xây dựng tập A Cấu trúc tập A sau: Bắt đầu với A={x} Do cách chọn x, nên A tập độc lập Sử dụng thuộc tính trao đổi , lặp lại việc tìm phần tử B cho thêm vào A |A|=|B| giữ tính độc lập A THUẬT TOÁN THAM LAM Lúc A=B-{y}∪ {x} với y∈ B, vậy: w(A)= w(B)-w(y)+w(x)>=w(B) Vì B tối ưu, A phải tối ưu, x ∈ A Bổ đề Bổ đề 2: Với matroid M=(S,l) Nếu x∈S mở rộng tập độc lập A S x mở rộng ∅ Chứng minh: • • x mở rộng A ⇒ A∪{x} độc lập l di truyền ⇒ {x} độc lập Hệ 1: Matroid M=(S,l) Nếu x∈S mà x không mở rộng ∅ x không mở rộng tập độc lập A S Bổ đề 3: Matroid có tính cấu trúc tối ưu Gọi x phần tử S chọn hàm Greedy Vấn đề lại việc tìm tập độc lập có trọng số cực đại (chứa x) tìm tập độc lập có trọng số cực đại matroid có trọng số M’=(S’,l’) với điều kiện :  S’ = {y∈S | {x,y}∈l,  l’ = {B⊆S-{x} | B∪{x}∈S},  Hàm trọng số cho M’ hàm trọng số cho M giới hạn S’ (gọi M’ rút gọn M x) Tính đắn thuật toán tham lam Matroids: Nếu M=(S,l) matroid có trọng số với hàm trọng số w hàm Greedy(S, l,w) trả tập tối ưu Chứng minh: • Hệ → phần tử bị bỏ lúc đầu không hữu dụng → sau không cần xét lại chúng • Bổ đề → phần tử x chọn, Greedy thêm x vào A tồn tập tối ưu chứa x • Bổ đề → bái toán lại tìm tập tối ưu matroid M’ (M’ rút gọn M x) THUẬT TOÁN THAM LAM I.3 Nguyên tắc - Đặc điểm thuật toán tham lam Mục đích phương pháp tham lam (Greedy) xây dựng toán giải nhiều lớp toán khác nhau, đưa định dựa vào thuật toán có, tương lai không xem xét lại định khứ Do thuật toán tham lam có ưu điểm: • • Dễ đề xuất Thời gian tính nhanh Thuật toán tham lam có đặc điểm sau đây: Lời giải toán tập hữu hạn S phần tử thoả mãn điều kiện đó, ta phải giải toán cách tối ưu Nói cách khác, nghiệm S phải xây dựng cho hàm mục tiêu f(S) có giá trị tốt (lớn hay nhỏ nhất) Các bước giải toán sau: • • • • • Có tập ứng cử viên C để chọn cho thành phần nghiệm bước Xuất phát từ lời giải rỗng S, bước thuật toán, ta lựa chọn ứng cử viên C để bổ sung vào lời giải S có Xây dựng hàm Select(C) bước chọn để lựa chọn ứng cử viên có triển vọng để đưa vào lời giải S Xây dựng hàm Feasible(S ∪ x) để kiểm tra tính chấp nhận ứng cử viên x đưa vào tập nghiệm S Cuối có tập S ,xây dựng hàm Solution(S) để kiểm tra tính chấp nhận lời giải S I.4 Điều kiện để toán áp dụng giải thuật tham lam Các dạng tìm phương án tối ưu toán người du lịch, toán túi… Chúng thuộc lớp toán tối ưu tổ hợp trường hợp riêng toán tối ưu Các toán tối ưu tổ hợp có nhiều ứng dụng thực tiễn việc ứng dụng trở nên tốt nhiều người ta nghiên cứu thuật toán tối ưu cài đặt máy tính điện tử Một thuật toán để giải toán thuật toán tham lam Thuật toán tham ăn (Greedy algorithms) dùng để giai toán mà định đâu lựa chọn tốt 10 THUẬT TOÁN THAM LAM  • • Phương pháp tham lam chọn đồ vật với tổng giá trị 19 Trong phương án tối ưu chọn đồ vật với tổng giá trị 39 phương pháp chưa cho lời giải xác Greedy 2: ưu tiên lựa chọn vật có giá trị trước Các đồ vật xếp đồ vật theo thứ tự không tăng giá trị (giá trị giảm dần) Lần lượt xét đồ vật theo thứ tự , chất đồ xét vào túi dung lượng lại túi đủ chứa (tức tổng khối lượng đồ vật xếp vào túi khối lượng đồ vật xét không vượt khả túi) +Ví dụ: STT Khối lượng Giá trị 16 12 10 Khối lượng tối đa túi Thuật toán tham lam chọn đồ vật với giá trị 16 Trong phương án tối ưu chọn đồ vật với tổng giá trị 22  • • Phương pháp chưa cho lời giải xác Greedy 3: ưu tiên lựa chọn vật có tỉ số giá trị/khối lượng lớn trước Sắp xếp đồ vật theo thứ tự không tăng giá trị đơn vị khối lượng (vi/wi) Lần lượt xét đồ vật theo thứ tự sắp, chất đồ vật xét vào túi dung lượng lại túi đủ chứa Ví dụ: STT Khối lượng Giá trị Đơn giá 1 6 2 10 3 12 25 THUẬT TOÁN THAM LAM Khối lượng tối đa túi Phương pháp tham lam chọn đồ vật với tổng giá trị 16 Trong phương án tối ưu chọn đồ vật với tổng giá trị 22  Phương án không đem lại lời giải tối ưu Tính tối ưu thuật toán toán túi dạng phân số: Bài toán túi dạng phân số: Thuật toán: X[n]: mảng chứa đồ vật lấy V: giá trị lớn túi Procedure GreedyKnapsack(); Begin {Sắp xếp đồ vật theo tỷ lệ vi/wi giảm dần} Sap_xep(); w:=W; i:=1; While(w>=wi) X[i]=1; w:=w – wi; i:=i+1; V:=V+vi; End; V:=V+ vi(w/wi); End; Chứng minh tính tối ưu: Cách 1: Chứng minh trực tiếp Cách 2: Chứng minh dựa vào tính chất thuật toán tham lam Tính chất lựa chọn tham lam: cần tồn phương án tối ưu chứa lựa chọn tham lam.s Giả sử k đồ vật có tỉ lệ vk/wk lớn nhất, S giải pháp tối ưu, giá trị S V(S) Bằng phản chứng: Giả sử S không chứa k Tổng giá trị S V(S)= Nếu số phần vật k lại không chọn đó, với j S, xj , j k, thay j S k, với khối lượng x jwj =xkwk (để không vượt khối lượng túi), ta nhận giải pháp S ’ tốt S.Do mâu thuẫn với giả thiết S tối ưu 26 THUẬT TOÁN THAM LAM  • Vây S phải chứa k Tính chất cấu trúc tối ưu: Nếu S giải pháp tối ưu chứa lựa chọn tham lam c tồn giải pháp S’ cho toán không chứa c Giả sử S giải pháp tối ưu chứa đồ vật k có tỉ lệ v k/wk với khối lượng lớn (p=max(W,wk lại)) Khi S’=S-{k} giải pháp cho toán không chứa k với khối lượng túi giảm p Bằng phản chứng, giả sử S ’ không tối ưu Khi tồn S ’’ tốt S’ giải pháp tối ưu cho toán không chứa k Vậy, S’ {k} với k có khối lượng p tốt giải pháp S cho toán ban đầuà mẫu thuẫn với giả thiết Vậy S’ phương án tối ưu cho toán Đánh giá độ phức tạp thuật toán Quá trình xếp làm theo QuickSort mất: O(nlogn) Quá trình lặp n đồ vật : O(n)  Vậy tổng độ phức tạp thuật toán là: O(nlogn) 27 THUẬT TOÁN THAM LAM III.5 Các tập ví dụ Bài toán 1: Cho n việc cần phải hoàn thành, việc thực đơn vị thời gian Việc i đem lại wi tiền thưởng hoàn thành hạn Tìm cách thực công việc để có lợi nhuận cao mà thời gian thực cho trước Ví dụ: Tạo file có dạng: //số lượng công việc 12 //thời gian giới hạn 20 //tên công việc- lương - số tháng hoàn thành 40 50 40 90 3x 60 7 10 30 Code giải thuật tham lam với Dev-Cpp dùng cho tập này: #include #include #include #include typedef struct{ char ten[100]; float gt,tg,tp; }dv; void sx( dv a[], int m) //hàm xếp theo tỉ lệ giá trị/thời gian { int i,j; dv dc; 28 THUẬT TOÁN THAM LAM for( i=0; i< m; i++) for(j=i+1; j[...]... đó thu nhỏ bài toán đã cho về một bài toán con nhỏ hơn Sự khác biệt giữa thuật toán tham lam và giải thuật quy hoạch động : Giải thuật quy hoạch động duyệt hết và luôn đảm bảo tìm thấy lời giải Tại mỗi bước của thuật toán, quy hoạch động đưa ra quyết định dựa trên các quyết định của bước trước, và có thể xét lại đường đi của bước trước hướng tới lời giải Giải thuật tham lam quyết định sớm và thay đổi... pháp (để tối ưu hóa) 11 THUẬT TOÁN THAM LAM II THUẬT TOÁN THAM LAM II.1 Mục tiêu nghiên cứu thuật toán tham lam Mục tiêu nghiên cứu : Làm rõ về bản chất và tìm hiểu sự ứng dụng của thuật toán trong thực tế.Trên cơ sở lý thuyết nghiên cứu được áp dụng vào chương trình: bài toán cái túi II.2 Các thành phần của chiến lược tham lam Thuật toán tham lam có 5 thành phần: 1 2 3 4 5 Một tập hợp các ứng viên (candidate),... đổi đường đi thuật toán theo quyết định đó, và không bao giờ xét lại các quyết định cũ Đối với một số bài toán, đây có thể là một thuật toán không chính xác 2 Cấu trúc con tối ưu Một bài toán được gọi là "có cấu trúc tối ưu", nếu một lời giải tối ưu của bài toán này chứa lời giải tối ưu của bài toán con của nó  Chứng minh: 12 THUẬT TOÁN THAM LAM - Theo tính chất lựa chọn tham lam, tồn tại giải pháp tối... tham lam a1 Theo tính chất cấu trúc con tối ưu, X-{a 1} là giải pháp tối ưu của bài toán con không chứa a1 - Áp dụng cho bài toán con không chứa a1, theo tính chất lựa chọn tham lam, X-{a1} là giải pháp tối ưu chứa lựa chọn tham lam a 2 Theo tính chất cấu trúc con tối ưu, X-{a1,a2} là giải pháp tối ưu cho bài toán con không chứa a1 và a2 - Tiếp tục như thế, cuối cùng ta có: X-{a1,a2,…,an}= ∅ Vậy giải. .. thực hiện thuật toán tham lam Một số chiến lược tham lam: Tham lam thường đề cập đến hai chiến lược tối ưu cục bộ cơ bản: Chọn phương án tốt trước (‘chọn miếng ngon trước’)à lý do gọi là thuật toán tham lam Chiến lược này thường được áp dụng khi xây dựng dần từng 13 THUẬT TOÁN THAM LAM phần của nghiệm tối ưu Thuật toán sẽ đánh giá các lựa chọn theo một tiêu chuẩn nào đó và sắp xếp từ nhỏ tới lớn Rồi... bằng cây nhị phân: 17 THUẬT TOÁN THAM LAM Mã chiều dài cố định Mã tiền tố bất định (mã tiền tố tối ưu) Xây dựng mã Huffman Huffman đã đề xuất một giải thuật tham lam để xây dựng một mã nhị phân tiền tố tối ưu được gọi là giải thuật mã hóa Huffman (Huffman code) 2 Nội dung - Ý tưởng giải quyết bài toán • Giả sử C là tập n ký tự và mỗi ký tự c∈C có tần số xuất hiện là f[c] • Giải thuật Huffman xây dựng... bằng một vòng lặp để duyệt Nên chi phí cho thuật toán xác định bởi hai vòng lặp lồng nhau , nên T(n) là O(n2) III.2 .Bài toán mã Huffman 1 Mô tả bài toán Mã Huffman là kỹ thuật được dùng phổ biến và rất hữu hiệu cho việc nén dữ liệu (data compression) tiết kiệm từ 20% đến 90% phụ thuộc vào đặc điểm của dữ liệu được nén Xét bài toán mã hóa ký tự Giải thuật tham lam Huffman sử dụng bảng tần suất xuất hiện... được giải pháp S ’ tốt hơn S.Do đó mâu thuẫn với giả thiết S tối ưu 26 THUẬT TOÁN THAM LAM  • Vây thì S phải chứa k Tính chất cấu trúc con tối ưu: Nếu S là giải pháp tối ưu chứa lựa chọn tham lam c thì tồn tại giải pháp S’ cho bài toán con không chứa c Giả sử S là giải pháp tối ưu chứa đồ vật k có tỉ lệ v k/wk với khối lượng lớn nhất có thể (p=max(W,wk còn lại)) Khi đó S’=S-{k} là giải pháp cho bài. .. TOÁN THAM LAM VÀ BÀI TOÁN CÁI TÚI 1 Mô tả bài toán Bài toán cái túi (hay còn gọi là bài toán sắp xếp ba lô) là một bài toán tối ưu tổ hợp Bài toán được đặt tên từ vấn đề chọn những gì quan trọng có thể nhét vừa vào một cái túi (với một giới hạn khối lượng) để mang theo một chuyến đi Một số cách phát biểu nội dung bài toán: Một kẻ trộm đột nhập vào một cửa hiệu tìm thấy có n mặt hàng có khối lượng và. .. một bài toán con 2 Chứng minh: với sự lựa chọn Tham lam tại mỗi bước → luôn tìm được 1 giải pháp tối ưu (cho bài toán ban đầu) 3 Chỉ ra: 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 tối ưu (cho bài toán ban đầu) II.5 Chứng minh tính đúng đắn 1 Lập luận biến đổi (Exchange Argument) Giả sử cần chứng minh thuật ...THUẬT TOÁN THAM LAM MỤC LỤC THUẬT TOÁN THAM LAM GIỚI THIỆU GIẢI THUẬT THAM LAM I Tổng quan thuật toán tham lam I.1 Sơ lược giải thuật tham lam Khái niệm Giải thuật tham lam (tiếng... toán, thuật toán không xác Cấu trúc tối ưu Một toán gọi "có cấu trúc tối ưu", lời giải tối ưu toán chứa lời giải tối ưu toán  Chứng minh: 12 THUẬT TOÁN THAM LAM - Theo tính chất lựa chọn tham lam, ... ta muốn tìm tập A∈ℓ độc lập cho w(A) lớn Ta gọi tập độc lập có trọng số THUẬT TOÁN THAM LAM lớn tập tối ưu matroid Bởi trọng số w(x) phần tử x∈S số dương, tập tối ưu tập độc lập lớn Ví dụ: Trong

Ngày đăng: 30/12/2015, 12:46

TỪ KHÓA LIÊN QUAN

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

w