Bài giảng Phân tích thuật toán

346 7 0
Bài giảng Phân tích thuật toán

Đ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

Phân tích thuật toán Nguyễn Mạnh Hiển hiennm@tlu edu vn mailto hiennm@wru vn Nội dung 1 Phân tích thuật toán là gì? 2 Các ký hiệu tiệm cận 3 Tốc độ tăng của các hàm 4 Các ví dụ phân tích thuật toán 1[.]

Phân tích thuật tốn Nguyễn Mạnh Hiển hiennm@tlu.edu.vn Nội dung Phân tích thuật tốn gì? Các ký hiệu tiệm cận Tốc độ tăng hàm Các ví dụ phân tích thuật tốn Phân tích thuật tốn gì? Phân tích thuật tốn • Nhằm xác định thời gian chạy (độ phức tạp) thuật tốn dạng hàm f kích thước đầu vào n − VD: Thời gian tìm phần tử x dãy n phần tử f(n) = n • Đơn vị thời gian: − Không phải giờ, phút, giây − Mà thao tác bản, VD: cộng, nhân, so sánh − Mỗi thao tác có thời gian chạy (một lượng thời gian nhỏ khơng phụ thuộc vào kích thước đầu vào n) Đếm số thao tác • Nhận diện thao tác thuật tốn • Xác định thao tác T chiếm nhiều thời gian chạy so với thao tác lại − Thao tác T thường xuất vịng lặp • Đếm số lần thực thao tác T, thu hàm thời gian chạy f(n) Ví dụ đếm số thao tác Ví dụ 1: In phần tử (C++) Ví dụ 3: Kiểm tra tính xếp (C++) for (i = 0; i < n; i++) cout cho f(n)  cg(n) n  n0 cg(n) f(n) f(n) bị chặn g(n) theo nghĩa tiệm cận n0 Ký hiệu  f(n) = (g(n))  c > n0 > cho cg(n)  f(n) n  n0 f(n) cg(n) n0 f(n) bị chặn g(n) theo nghĩa tiệm cận Thuật tốn tham lam • Thuật tốn tham lam xây dựng lời giải bước nhỏ, bước định nông cạn (tham lam) để tối ưu hóa tiêu chuẩn cục • Ví dụ, thuật tốn Dijkstra tìm đường ngắn đồ thị, bước chọn đỉnh kề với đám mây (tập S) gần với đỉnh nguồn s để thêm vào đám mây • Trong số trường hợp, thuật tốn tham lam tìm lời giải tối ưu • Trong trường hợp khác, thuật tốn tham lam tìm lời giải gần Bài tốn lập lịch khoảng • Cơng việc j bắt đầu thời điểm sj kết thúc thời điểm fj • Hai cơng việc tương thích với chúng khơng chồng lên • Mục tiêu: Tìm tập lớn bao gồm cơng việc tương thích lẫn Lập lịch khoảng: thuật toán tham lam (1) Kiểu tham lam: Xét công việc theo trình tự tự nhiên Chọn cơng việc tương thích với cơng việc chọn trước • [Thời gian bắt đầu sớm nhất] Xét công việc theo thứ tự tăng dần sj • [Thời gian kết thúc sớm nhất] Xét công việc theo thứ tự tăng dần fj • [Khoảng ngắn nhất] Xét công việc theo thứ tự tăng dần fj – sj • [Ít đụng độ nhất] Đối với công việc j, đếm số cơng việc cj đụng độ với Lập lịch theo thứ tự tăng dần cj Lập lịch khoảng: thuật toán tham lam (2) Kiểu tham lam: Xét cơng việc theo trình tự tự nhiên Chọn cơng việc tương thích với cơng việc chọn trước Lập lịch khoảng: thuật toán theo thời gian kết thúc sớm Lập lịch khoảng: phân tích thuật tốn theo thời gian kết thúc sớm (1) Định lý: Thuật toán theo thời gian kết thúc sớm trả lời giải tối ưu Chứng minh (bằng phản chứng): • Giả sử thuật tốn khơng tối ưu • Gọi i1, i2, …, ik tập công việc chọn thuật tốn • Gọi j1, j2, …, jm tập công việc lời giải tối ưu với i1 = j1, i2 = j2, …, ir = jr với r giá trị lớn Lập lịch khoảng: phân tích thuật tốn theo thời gian kết thúc sớm (2) Định lý: Thuật toán theo thời gian kết thúc sớm trả lời giải tối ưu Chứng minh (bằng phản chứng): • Giả sử thuật tốn khơng tối ưu • Gọi i1, i2, …, ik tập cơng việc chọn thuật tốn • Gọi j1, j2, …, jm tập công việc lời giải tối ưu với i1 = j1, i2 = j2, …, ir = jr với r giá trị lớn Quy hoạch động (Dynamic Programming) Quy hoạch động • Tham lam: Xây dựng lời giải lớn dần, tối ưu hóa (nơng cạn) tiêu chuẩn cục • Chia để trị: Phân rã tốn thành toán độc lập, giải toán con, kết hợp lời giải toán để lập thành lời giải cho toán tổng thể ban đầu • Quy hoạch động: Phân rã toán thành chuỗi toán chồng lên nhau, xây dựng lời giải cho toán ngày lớn dần Bài toán lập lịch khoảng có trọng số • Cơng việc j bắt đầu sj, kết thúc fj, có trọng số vj • Hai cơng việc tương thích với chúng khơng chồng lên • Mục tiêu: Tìm tập có trọng số lớn bao gồm cơng việc tương thích lẫn Thuật tốn theo thời gian kết thúc sớm • Thuật tốn tham lam: − Xét công việc theo thứ tự tăng dần thời gian kết thúc − Thêm công việc vào tập tương thích với cơng việc chọn trước • Nhắc lại: Thuật tốn tham lam tất trọng số • Nhận xét: Thuật toán tham lam thất bại với phiên có trọng số Lập lịch khoảng có trọng số • Gắn nhãn cơng việc theo thời gian kết thúc: f1  f2  …  fn • Gọi p(j) số i lớn nhỏ j cho cơng việc i tương thích với cơng việc j • Ví dụ: p(8) = 5, p(7) = 3, p(2) = Quy hoạch động: hai lựa chọn • Kí hiệu OPT(j) giá trị lời giải tối ưu cho tốn bao gồm cơng việc 1, 2, …, j • Trường hợp 1: OPT chọn công việc j − Thu thập giá trị vj − Khơng thể dùng việc khơng tương thích { p(j) + 1, p(j) + 2, …, j – } − Phải bao gồm lời giải tối ưu cho tốn bao gồm cơng việc cịn lại 1, 2, …, p(j) • Trường hợp 2: OPT khơng chọn công việc j − Phải bao gồm lời giải tối ưu cho tốn bao gồm cơng việc lại 1, 2, …, j – 𝑂𝑃𝑇(𝑗) = ൝ max 𝑣𝑗 + 𝑂𝑃𝑇 𝑝 𝑗 , 𝑂𝑃𝑇 𝑗 − j = ngược lại Lập lịch khoảng có trọng số: tìm giá trị tối ưu • Lưu trữ lại kết tốn • Tra cứu cần Lập lịch khoảng có trọng số: tìm lời giải

Ngày đăng: 02/10/2023, 13:38

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

Tài liệu liên quan