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

PHÂN TÍCH KHẤU HAO (GIẢI THUẬT SLIDE) (chữ biến dạng do slide dùng font VNI times, tải về xem bình thường)

48 30 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

PHÂN TÍCH KHẤU HAO Phân tích khấu hao ° ° Gọi T(n) thời gian cần thiết để thực thi chuỗi n thao tác lên cấu trúc liệu – Ví dụ: thực thi chuỗi PUSH, POP, MULTIPOP lên stack Phân tích khấu hao (amortized analysis): – Thời gian thực thi chuỗi thao tác lấy trung bình số thao tác thực thi, T(n)/n , gọi phí tổn khấu hao (Đây định nghóa phí tổn khấu hao, định nghóa khác trình bày phần sau.) Ch 2: Amortized Analysis Sơ lược ° Ba phương pháp để xác định phí tổn khấu hao: – gộp chung (the aggregate method) – kế toán (the accounting method) – (the potential method) ° Sẽ minh họa phương pháp thông qua việc phân tích cấu trúc liệu: – stack – đếm nhị phân dài k bits – bảng động Ch 2: Amortized Analysis Cấu trúc liệu stack ° Các thao tác lên stack S – PUSH(S, x) – POP(S) – MULTIPOP(S, k) MULTIPOP(S, k) while not STACK-EMPTY(S) and k ≠ POP(S) k ← k −1 Ch 2: Amortized Analysis Cấu trúc liệu stack (tiếp) ° Minh họa thao tác MULTIPOP top → 23 33 45 78 MULTIPOP(S, 4) top → 78 Ch 2: Amortized Analysis MULTIPOP(S, 7) Bộ đếm nhị phân dài k bit ° Bộ đếm nhị phân dài k-bit (k-bit binary counter) – mảng A[0 k − 1] bit – có độ dài, length[A], k Ch 2: Amortized Analysis Bộ đếm nhị phân dài k bit (tiếp) ° Dùng đếm để trữ số nhị phân x: x = A[k − 1]⋅ 2k − + … + A[0]⋅ 20 – INCREMENT: coäng vào trị có đếm (modulo 2k) INCREMENT(A) 1 1 0 – Thuû tuïc INCREMENT INCREMENT(A) i ←0 while i < length[A] and A[i] = A[i] ← i ←i + if i < length[A] then A[i] ← Ch 2: Amortized Analysis Phân tích stack ° ° ° Bài toán: xác định thời gian chạy chuỗi n thao tác lên stack (ban đầu stack trống) Giải phân tích “thô sơ”: — Phí tổn trường hợp xấu M ULTIPOP O(n) Vậy phí tổn trường hợp xấu thao tác lên stack O(n) — Do phí tổn chuỗi n thao tác O(n2) Nhận xét: Chận O(n2) tìm thô Tìm chận tốt hơn! – Dùng phân tích khấu hao Ch 2: Amortized Analysis Phương pháp gộp chung ° Định nghóa: Trong phương pháp gộp chung (aggregate) phân tích khấu hao, gộp chung thời gian mà chuỗi n thao tác cần trường hợp xấu (worst case) thành T(n) – Chi phí khấu hao (amortized cost) thao tác định nghóa chi phí trung bình cho thao tác, tức T(n)/n Ch 2: Amortized Analysis Phương pháp gộp chung: phân tích stack ° ° Phân tích chuỗi n thao tác lên stack S (mà bắt đầu stack trống), chuỗi gồm loại thao tác – PUSH(S, x) – POP(S) – MULTIPOP(S, k) Dùng phương pháp gộp chung để xác định chi phí khấu hao thao tác – Mỗi đối tượng popped tối đa lần sau pushed Số PUSH tối đa n, số lần POP gọi, kể từ M ULTIPOP, n – Vậy phí tổn chuỗi n thao tác PUSH, POP, MULTIPOP O(n) – Do phí tổn khấu hao thao tác O(n)/n = O(1) Ch 2: Amortized Analysis 10 Phân tích chuỗi TABLE-INSERT phương pháp gộp chung ° Dùng phương pháp gộp chung để xác định chi phí khấu hao INSERT – Chi phí ci thao tác thứ i i i − = 2j ° trường hợp lại – Chi phí n thao tác TABLE-INSERT ° n + tổng 2j từ j = đến lg n ≤ n + 2n = 3n Vậy chi phí khấu hao INSERT laø 3n / n = ° ° Ch 2: Amortized Analysis 34 Phân tích chuỗi TABLE-INSERT phương pháp kế toán ° Dùng phương pháp kế toán để xác định chi phí khấu hao TABLE-INSERT – Chi phí khấu hao TABLE-INSERT – Trả sau: ° đồng để trả cho chi phí thực cho riêng ° đồng để trả trước cho nó di chuyển lúc bảng nới rộng ° đồng để trả trước cho item khác bảng mà không tiền trả trước (vì di chuyển) Ch 2: Amortized Analysis 35 Phân tích chuỗi TABLE-INSERT phương pháp ° Dùng phương pháp để phân tích chuỗi gồm n thao tác INSERT lên bảng – Định nghóa Φ Φ(T) = 2num[T] − size[T] – Nhận xét ° Ngay sau nới rộng (dòng T ABLEINSERT thực thi xong) • num[T] = size[T] / ∀ Φ(T) = ° Ngay trước nới rộng num[T] = size[T] ∀ Φ(T) = num[T] ° Φ(0) = 0, Φ(T) ≥ Vì tổng chi phí khấu hao n thao tác TABLE-INSERT chận lên tổng chi phí thực Ch 2: Amortized Analysis 36 Phân tích chuỗi TABLE-INSERT phương pháp (tiếp) – Xác định chi phí khấu hao thao tác ° Giả sử thao tác thứ i không gây nới rộng Ta có sizei = sizei −1 Chi phí khấu hao thao tác c^i = ci + Φi − Φi−1 • = + (2numi − sizei ) − (2numi−1 − sizei−1) = + (2numi − sizei ) − (2(numi − 1) − sizei )) = Ch 2: Amortized Analysis 37 Phân tích chuỗi TABLE-INSERT phương pháp – Xác định chi phí khấu hao thao tác (tiếp) ° Giả sử thao tác thứ i gây nới rộng Ta có sizei / = sizei−1 = numi − Chi phí khấu hao thao tác c^i = ci + Φi − Φi−1 = numi + (2numi − sizei) − (2numi−1 − sizei−1) = numi +(2numi −(2numi −2)) −(2(numi −1)−(numi −1)) = numi + − (numi − 1) =3 Ch 2: Amortized Analysis 38 Xóa item khỏi bảng ° ° ° ° Thêm thao tác “Xóa item khỏi bảng”: TABLEDELETE – Hệ số sử dụng bảng trở nên nhỏ Nhắc lại định nghóa hệ số sử dụng α(T) = num[T] / size[T] Ta muốn – giử hệ số sử dụng cao, tức chận số – chi phí bù trừ thao tác lên bảng chận số Giả sử chi phí đo số lần chèn hay xoá item sơ đẳng Ch 2: Amortized Analysis 39 Chiến lược nới rộng thu nhỏ bảng ° ° Một chiến lược tự nhiên cho nới rộng thu nhỏ bảng – Gấp đôi bảng chèn item vào bảng đầy – Giảm nửa bảng xóa item khỏi bảng đầy nửa bảng Phân tích – Chiến lược bảo đảm α(T) ≥ 1/2 Ch 2: Amortized Analysis 40 Chiến lược nới rộng thu nhỏ bảng ° Phân tích (tiếp) – Tuy nhiên phí tổn khấu hao thao tác lớn: ° Lấy n có dạng 2m ° Xét chuỗi n thao tác (I insert D delete) I … I (n/2 lần), kế laø I D D I I D D I I … (n/2 lần) ° Chuỗi n thao tác có phí tổn Θ(n2), phí tổn khấu hao thao tác Θ(n) Ch 2: Amortized Analysis 41 Chiến lược nới rộng thu nhỏ bảng (tiếp) ° Cải tiến chiến lược cách cho phép hệ số sử dụng trở nên nhỏ 1/2: – Nếu α(T) = 1, thao tác TABLE-INSERT gấp đôi bảng – Nếu α(T) = 1/4, thao tác TABLE-DELETE giảm nửa bảng Ch 2: Amortized Analysis 42 Chiến lược thu nhỏ bảng (tiếp) thực thi TABLE-DELETE α(T) = 1/4 bảng = 1/2 bảng cũ Ch 2: Amortized Analysis 43 Phương pháp ° Dùng phương pháp để phân tích chuỗi gồm n thao tác TABLE-INSERT TABLE-DELETE lên bảng – Định nghóa Φ bảng Φ(T) = num[T] − size[T] α(T) ≥ 1/2 = size[T] / − num[T] neáu α(T) < 1/2 Ch 2: Amortized Analysis 44 Phương pháp (tiếp) – Nhận xét: ° Φ(bảng trống) = 0, Φ(T) ≥ ° Nếu hệ số sử dụng 1/2 Φ(T) = ° Nếu hệ số sử dụng Φ(T) = num[T] – Đủ để trả phí tổn có nới rộng bảng chèn item ° Hệ số sử dụng 1/4 Φ(T) = num[T] – Đủ để trả phí tổn có thu nhỏ bảng xoá item Ch 2: Amortized Analysis 45 Phân tích chuỗi TABLE-INSERT TABLE-DELETE ° Xác định chi phí khấu hao thao tác – Nếu thao tác thứ i TABLE-INSERT, ta phân biệt trường hợp: ° α i−1 ≥ 1/2 – theo Section 18.4.1, c^i nhiều ° αi−1 < 1/2, ta phân biệt trường hợp: – trường hợp αi < 1/2 c^i = ci + Φi − Φi−1 =0 – trường hợp αi ≥ 1/2 c^i = ci + Φi − Φi−1 =3 – Vậy chi phí khấu hao thao tác T ABLE-INSERT nhiều Ch 2: Amortized Analysis 46 Phân tích chuỗi TABLE-INSERT TABLE-DELETE ° Xác định chi phí khấu hao thao tác (tiếp) – Nếu thao tác thứ i TABLE-DELETE, numi = numi−1 − 1, ta phân biệt trường hợp: ° αi−1 < 1/2 Có hai trường hợp – không gây thu nhỏ: sizei = sizei−1 c^i = ci + Φi − Φi−1 =2 – gây thu nhỏ: ci = numi + 1, sizei / = sizei−1 / = numi + c^i = ci + Φi − Φi−1 =1 ° αi−1 ≥ 1/2 Bài tập 18.4-3 – Vậy chi phí khấu hao T ABLE-DELETE chận số Ch 2: Amortized Analysis 47 Phân tích chuỗi TABLE-INSERT TABLE-DELETE ° (tiếp) Kết luận: Vì chi phí khấu hao thao tác TABLE-INSERT TABLE-DELETE chận số, nên thời gian chạy cho chuổi gồm n thao tác lên bảng động laø O(n) Ch 2: Amortized Analysis 48 ... pháp năng: phân tích đếm nhị phân dài k bits ° ° Phân tích chuỗi thao tác lên đếm nhị phân dài k-bit Dùng phương pháp để xác định chi phí khấu hao thao tác – Định nghóa Φ đếm sau thao tác INCREMENT... tích đếm nhị phân ° ° Phân tích chuỗi thao tác INCREMENT lên đếm nhị phân dài k-bit mà trị ban đầu Dùng phương pháp kế toán để xác định chi phí khấu hao INCREMENT – Quy phí tổn khấu hao đồng để... (aggregate) phân tích khấu hao, gộp chung thời gian mà chuỗi n thao tác cần trường hợp xấu (worst case) thành T(n) – Chi phí khấu hao (amortized cost) thao tác định nghóa chi phí trung bình cho thao

Ngày đăng: 29/03/2021, 08:23

Xem thêm:

TỪ KHÓA LIÊN QUAN

Mục lục

    PHÂN TÍCH KHẤU HAO

    Phân tích khấu hao

    Cấu trúc dữ liệu stack

    Cấu trúc dữ liệu stack (tiếp)

    Bộ đếm nhò phân dài k bit

    Bộ đếm nhò phân dài k bit (tiếp)

    Phân tích một stack

    Phương pháp gộp chung

    Phương pháp gộp chung: phân tích stack

    Phương pháp gộp chung: phân tích bộ đếm nhò phân

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

TÀI LIỆU LIÊN QUAN