1. Trang chủ
  2. » Thể loại khác

Tài liệu môn học - Application of Algo. chapter03 GREEDY

33 116 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

Các thuật tốn tham lam Khoa Cơng Nghệ Thơng Tin, Trường Đại Học Thủy Lợi Ngày tháng năm 2017 / 24 Kiến thức chung Bài toán đổi tiền Bài toán lập lịch khoảng thời gian / 24 Các thuật toán tham lam Bài tốn tối ưu Lập trình động, đơi q sức Thuật toán tham lam: sử dụng chiến thuật tham lam cho tối ưu cục với hi vọng thu giải pháp tối ưu tồn cục, khơng phải luôn, nhiều trường hợp, chiến thuật cho kết tốt Các thành phần chiến thuật tham lam Quyết định cấu trúc tối ưu Phát triển giải pháp đệ quy Chứng minh lựa chọn tối ưu lựa chọn tham lam an toàn Chỉ tất trừ toán rỗng sau thực lựa chọn tham lam Phát triển thuật toán đệ quy cài đặt chiến thuật tham lam Chuyển đổi thuật tốn đệ quy thành thuật tốn sử dụng vòng lặp / 24 Những tốn điển hình sử dụng giải pháp tham lam Đổi đồng xu 25, 10, 5, Với 7, 5, nào? Cây khung nhỏ Thuật toán Prim Bắt đầu từ nút nào, lần thêm nút gần với có Thuật tốn Kruskal Sắp xếp cạnh theo trọng số chúng Mỗi lần thêm cạnh cho thêm cạnh khơng tạo chu trình Bài tốn đường ngắn nguồn đơn: Thuật tốn Dijkstra Mã hóa Huffman Trộn tối ưu / 24 Ứng dụng Thuật toán tham lam dùng cho tốn NP-đầy đủ Ví dụ: tơ màu tham lam cho tốn tơ màu đồ thị Khơng qn việc tìm giải pháp tối ưu, chúng thường khơng hoạt động triệt để tồn liệu Các thuật tốn tham lam chấp nhận sớm số lựa chọn, điều ngăn cản chúng tìm giải pháp tổng thể tốt sau Hữu ích chúng nhanh chóng tính đến thường đưa xấp xỉ tốt cho giải pháp tối ưu Lý thuyết Matroid, lý thuyết tổng quát Greedoid, cung cấp tồn lớp thuật tốn Trong định tuyến mạng, cách sử dụng định tuyến tham lam, thông điệp chuyển tiếp tới nút hàng xóm “gần nhất” với nút đích / 24 Kiến thức chung Bài toán đổi tiền Bài toán lập lịch khoảng thời gian / 24 Bài tốn đổi tiền Mục đích Cho mệnh giá tiền: 1,5,10,25,100, đưa cách thức để trả tiền cho khách hàng mà sử dụng số lượng đồng tiền Hình: Đổi 34¢ / 24 Bài toán đổi tiền: Thuật toán Thuật toán Cashier Ở lần lặp, thêm đồng tiền với mệnh giá lớn mà khơng vượt q số tiền phải trả Hình: Đổi 2.89$ / 24 Bài toán đổi tiền: Thuật toán Ở lần lặp, thêm đồng tiền với mệnh giá lớn mà không vượt số tiền phải trả CASHIERS-ALGORITHMS(x, c1 , c2 , , cn ) SORT n coin denominations so that c1 < c2 < < cn S ←∅ % set of coins selected while x > k ← largest coin denomination ck such that ck ≤ x if no such k , return " no solution " else x ← x − ck S ← S ∪ {k} return S Câu hỏi Thuật tốn Cashier có phải tối ưu? / 24 Bài tốn đổi tiền: Thuộc tính giải pháp tối ưu Thuộc tính Số lượng đồng mệnh giá xu (penny) ≤ Chứng minh: Thay đồng mệnh giá xu (penny) đồng mệnh giá xu (nickel) Thuộc tính Số lượng đồng mệnh giá xu (nickel) ≤ Thuộc tính Số lượng đồng mệnh giá 25 xu (quarter) ≤ 10 / 24 Bài toán lập lịch khoảng thời gian: Thuật tốn tham lam Khn mẫu tham lam Xét cơng việc theo trật tự tự nhiên Lấy việc mà tương thích với việc lấy trước 19 / 24 Bài tốn lập lịch khoảng thời gian: Thuật toán ưu-tiên-thời-gian-kết-thúc-sớm-nhất EARLIEST-FINISH-TIME-FIRST(n, s1 , , sn , f1 , , fn ) SORT jobs by finish time so that f1 ≤ ≤ fn A←∅ % set of jobs selected for j =1 to n if job j is compatible with A A ← A ∪ {j} return A Mệnh đề Có thể cài đặt thuật toán ưu-tiên-thời-gian-kết-thúc-sớm-nhất thời gian O(n log n) Lưu vết việc j* vừa thêm vào A Việc j coi tương thích với A sj ≥ fj ∗ Sắp xếp theo thời gian kết thúc tốn khoảng thời gian O(n log n) 20 / 24 Interval Scheduling Demo B C A E D F G H 10 11 10 11 Time Interval Scheduling Demo B C A E D F G H 2 10 11 10 11 Time B Interval Scheduling Demo B C A E D F G H 2 B 10 11 10 11 Time C Interval Scheduling Demo B C A E D F G H 2 10 11 10 11 Time B A Interval Scheduling Demo B C A E D F G H 2 5 B 10 11 10 11 Time E Interval Scheduling Demo B C A E D F G H 2 5 B 10 11 10 11 Time D E Interval Scheduling Demo B C A E D F G H 2 5 B E 10 11 10 11 Time F 7 Interval Scheduling Demo B C A E D F G H 2 5 B 7 E 10 11 10 11 Time G 8 Interval Scheduling Demo B C A E D F G H 2 5 B 9 E 10 11 10 11 Time H Bài tốn lập lịch khoảng thời gian: Phân tích thuật toán ưu-tiên-thời-gian-kết-thúc-sớm-nhất Định lý Thuật toán ưu-tiên-thời-gian-kết-thúc-sớm-nhất tối ưu Chứng minh: [bằng phương pháp mâu thuẫn] Giả sử thuật tốn tham lam khơng tối ưu, xem điều xảy Giả sử i1 , i2 , , ik biểu diễn tập việc lựa chọn thuật toán tham lam Giả sử j1 , j2 , , jm biểu diễn tập việc giải pháp tối ưu với i1 = j1 , i2 = j2 , , ir = jr giá trị lớn r 21 / 24 Bài toán lập lịch khoảng thời gian: Phân tích thuật tốn ưu-tiên-thời-gian-kết-thúc-sớm-nhất Định lý Thuật toán ưu-tiên-thời-gian-kết-thúc-sớm-nhất tối ưu Chứng minh: [bằng phương pháp mâu thuẫn] Giả sử thuật toán tham lam khơng tối ưu, xem điều xảy Giả sử i1 , i2 , , ik biểu diễn tập việc lựa chọn thuật toán tham lam Giả sử j1 , j2 , , jm biểu diễn tập việc giải pháp tối ưu với i1 = j1 , i2 = j2 , , ir = jr giá trị lớn r 22 / 24 Bài toán lập lịch khoảng thời gian: Cài đặt function compatible (a , b ) local a1 , a2 = unpack ( a ) local b1 , b2 = unpack ( b ) return math max ( a1 , b1 ) >= math ( a2 , b2 ) end 10 11 12 13 14 15 16 17 18 19 20 21 22 23 function i n t e r v a l _ s c h e d u l i n g _ p r o b l e m ( requests ) local schedule = {} table sort ( requests , function (a , b ) return a [2] < b [2] end ) while # requests > local i = table remove ( requests ,1) print ( unpack ( i )) table insert ( schedule , i ) for _ , v in ipairs ({ unpack ( requests )}) if not compatible (i , v ) then table remove ( requests , _ ) end end end return schedule end 23 / 24 Bài toán thực tế Bài toán trồng 24 / 24 ... toán lập lịch khoảng thời gian: Phân tích thuật tốn ưu-tiên-thời-gian-kết-thúc-sớm-nhất Định lý Thuật tốn ưu-tiên-thời-gian-kết-thúc-sớm-nhất tối ưu Chứng minh: [bằng phương pháp mâu thuẫn] Giả... Bài tốn lập lịch khoảng thời gian: Phân tích thuật tốn ưu-tiên-thời-gian-kết-thúc-sớm-nhất Định lý Thuật toán ưu-tiên-thời-gian-kết-thúc-sớm-nhất tối ưu Chứng minh: [bằng phương pháp mâu thuẫn]... thời gian: Thuật toán ưu-tiên-thời-gian-kết-thúc-sớm-nhất EARLIEST-FINISH-TIME-FIRST(n, s1 , , sn , f1 , , fn ) SORT jobs by finish time so that f1 ≤ ≤ fn A←∅ % set of jobs selected for

Ngày đăng: 21/12/2017, 11:06

Xem thêm:

TỪ KHÓA LIÊN QUAN

Mục lục

    Bài toán i tin

    Bài toán lp lich khoang thi gian

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

  • Đang cập nhật ...

TÀI LIỆU LIÊN QUAN