1. Trang chủ
  2. » Giáo Dục - Đào Tạo

Truy hồi thông tin và tìm kiếm web

346 108 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ấu trúc

  • CTDL-01-Phan tich thuat toan.pdf

  • CTDL-02-Vector.pdf

  • CTDL-03-Danh sach lien ket.pdf

  • CTDL-04-Ngan xep va Hang doi.pdf

  • CTDL-05-Cay.pdf

  • CTDL-06-Cay nhi phan tim kiem.pdf

  • CTDL-07-Cay AVL.pdf

  • CTDL-08-Bang bam.pdf

  • CTDL-09-Hang doi uu tien.pdf

  • CTDL-10-Sap xep.pdf

  • CTDL-11-Do thi.pdf

  • CTDL-12-Cac ky thuat thiet ke thuat toan.pdf

Nội dung

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 ... trí tìm x mid − Nếu khơng cịn phần tử để xét, báo cáo khơng tìm x Tìm kiếm nhị phân – ví dụ Giả sử x = 11 ta phải tìm x mảng a bên a 11 15 20  x = 8? a 11 15 20  x = 15? a 11 15 20  x = 11? Tìm. .. chạy: t(n) = n = O(n) Tìm kiếm nhị phân • Cho mảng a xếp tăng dần • Tìm x mảng a: − So sánh x với phần tử mảng a[mid] − Nếu x < a[mid], tìm x nửa bên trái mảng − Nếu x > a[mid], tìm x nửa bên phải... else return mid } return –1 } Tìm kiếm nhị phân – phân tích • Nếu n = 1, phép so sánh x với phần tử mảng • Nếu n > 1, phép so sánh x với phần tử mảng, sau thời gian tìm x nửa (trái phải) mảng •

Ngày đăng: 23/12/2020, 23:51

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w