Bài giảng phân tích và thiết kế giải thuật Chương 2 : Phân tích độ phức tạp của một số giải thuật sắp thứ tự và tìm kiếm

56 875 4
Bài giảng phân tích và thiết kế giải thuật  Chương 2 : Phân tích độ phức tạp của một số giải thuật sắp thứ tự và tìm kiếm

Đ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

Chương 2Phân tích độ phức tạp của một số giải thuật sắp thứ tự và tìm kiếm 1. Vài phương pháp sắp thứ tự căn bản2. Quicksort3. Xếp thứ tự dựa vào cơ số4. Xếp thứ tự bằng phương pháp trộn5. Xếp thứ tự ngoạ Nguyên tắc về sắp thứ tựXét những phương pháp sắp thứ tự một tập tin gồm các mẩu tin (record) có chứa khóa (key). Khóa mà là một phần của mẩu tin, được dùng để điều khiển việc sắp thứ tự

Chương Phân tích độ phức tạp số giải thuật thứ tự tìm kiếm Nội dung Vài phương pháp thứ tự Quicksort Xếp thứ tự dựa vào số Xếp thứ tự phương pháp trộn Xếp thứ tự ngoại Vài phương pháp tìm kiếm Nguyên tắc thứ tự Xét phương pháp thứ tự tập tin gồm mẩu tin (record) có chứa khóa (key) Khóa mà phần mẩu tin, dùng để điều khiển việc thứ tự Mục tiêu: xếp mẩu tin cho trị khóa chúng có thứ tự theo qui luật thứ tự Nếu tập tin thứ tự chứa nhớ giải thuật thứ tự gọi thứ tự nội (internal sorting) Việc thứ tự tập tin lưu nhớ phụ gọi thứ tự ngoại (external sorting) Hai nhóm phương pháp thứ tự Chúng ta quan tâm đến thời gian tính tốn giải thuật thứ tự Một nhóm gồm phương pháp địi hỏi thời gian tính tốn tỉ lệ với N2 để thứ tự N phần tử Các phương pháp tiên tiến thứ tự N phần tử thời gian chạy tỉ lệ với NlgN Một đặc tính phương pháp thứ tự tính ổn định (stability) Một phương pháp thứ tự gọi ổn định bảo toàn thứ tự tương đối phần tử trị khóa tập tin Nhóm phương pháp Với nhóm này, có hai phương pháp thứ tự chọn để khảo sát: - thứ tự phương pháp chọn (selection sort) - thứ tự phương pháp chèn (insertion sort) Với mục đích tập trung vào khía cạnh giải thuật, ta làm việc với phương pháp mà thứ tự mảng số nguyên theo thứ tự lớn dần số Sắp thứ tự phương pháp chọn Ý tưởng: “Trước tiên tìm phần tử nhỏ mảng hốn đổi với phần tử vị trí thứ mảng, tìm phần tử nhỏ thứ nhì mảng hốn đổi với phần tử vị trí thứ nhì mảng, toàn mảng thứ tự.” 390 205 182 45 235  45 205 182 390 235 45  182 205 390 235 45 182  205 390 235 45 182 205  235 390 Giải thuật thứ tự phương pháp chọn procedure selection; var i, j, min, t: integer; begin for i :=1 to N-1 begin :=i; for j :=i+1 to N if a[j] v begin a[j] := a[j-1]; // pull down j:= j-1 end; a[j]:=v; end; end; 10 Xếp thứ tự ngoại p.p trộn (External Sortmerge) Kỹ thuật thông dụng để thứ tự ngoại giải thuật thứ tự ngoại phương pháp trộn (external sort-merge algorithm) Phương pháp thứ tự ngoại gồm bước: - tạo run - trộn run M: số trang (page) đệm nhớ (memorybuffer) 42 Xếp thứ tự ngoại p.p trộn (tt.) Trong bước 1, số run có thứ tự tạo cách sau: i = 0; repeat read M blocks of the file, or the rest of the file, whichever is smaller; sort the in-memory part of the file; write the sorted data to the run file Ri; i = i+1; until the end of the file Trong bước 2, run trộn lại 43 Trộn run  Trường hợp đặc biệt: Giả sử số run, N, N < M Ta dành trang đệm cho run dành chỗ nhớ lại chứa trang kết xuất Giải thuật phần trộn run sau: read one block of each of the N files Ri into a buffer page in memory; repeat choose the first record (in sort order) among all buffer pages; write the tuple to the output, and delete it from the buffer page; if the buffer page of any run Ri is empty and not end-of-file(Ri) then read the next block of Ri into the buffer page; until all buffer pages are empty 44 Trộn run (trường hợp tổng quát) Tác vụ trộn khái quát hóa phép trộn hai đường (two-way merge) dùng giải thuật thứ tự nội phương pháp trộn Nó trộn N run, gọi trộn nhiều đường (n-way merge)  Trường hợp tổng quát: Về tổng quát, tập tin lớn sức chứa đệm N>M khơng thể dành trang đệm cho run bước trộn Trong trường hợp này, trộn phải trải qua nhiều chuyến (passes) Vì có M-1 trang đệm dành cho đầu vào, trộn tiếp nhận M-1 runs đầu vào 45 Trộn run [trường hợp tổng quát] (tt.) Chuyến trộn làm việc sau: M-1 run trộn lại thành run cho chuyến Rồi M-1 runs trộn theo cách tương tự tất run giải Tại điểm này, tổng số run giảm thừa số M-1 Nếu số run giảm  M, chuyến thực thi với run tạo chuyến làm đầu vào Mỗi chuyến làm giảm tổng số run thừa số M – Các chuyến lặp lại nhiều cần thiết tổng số run nhỏ M; chuyến cuối tạo kết tập tin có thứ tự 46 Một thí dụ thứ tự ngoại p.p trộn Giả sử: i) mẩu tin chiếm vừa khối ii) đệm chiếm trang Trong giai đoạn trộn, hai trang dùng làm đầu vào trang dùng để chứa kết Giai đoạn trộn đòi hỏi hai chuyến 47 g 24 a 19 d 31 c 33 b 14 e 16 r 16 d 21 m3 p d a 14 a 19 d 31 g 24 b 14 c 33 e 16 d 31 m r 16 a 14 d 17 p Tạo run a b c d e g 19 14 33 31 16 24 a 14 d d 21 m3 p r 16 trộn pass-1 a 14 a 19 b 14 c 33 d d 21 d 31 e 16 g 24 m3 p r 16 trộn pass-1 48 Độ phức tạp xếp thứ tự ngoại Hãy tính số truy đạt khối (block accesses) giải thuật thứ tự ngoại phương pháp trộn br : tổng số khối tập tin Trong giai đoạn tạo run, khối đọc ghi, đem lại tổng số 2br, truy đạt khối Tổng số run ban đầu Tổng số chuyến trộn: br/M log M-1(br/M) Trong chuyến trộn, khối tập tin đọc lần ghi lần 49 Độ phức tạp xếp thứ tự ngoại(tt) Tổng số truy đạt đĩa cho giải thuật thứ tự ngoại phương pháp trộn là: 2br + 2br logM-1(br/M) = tạo run 2br( logM-1 (br/M) +1) chuyến trộn 50 Tìm kiếm Phương pháp đơn giản để tìm kiếm lưu trữ mẩu tin mảng, để tìm kiếm mẩu tin, duyệt qua toàn mảng cách type node = record key, info: integer end; var a: array [0 maxN] of node; N: integer; procedure initialize; begin N: = end; function seq_search (v: integer, x: integer): integer; begin a[N+1].key: = v; /*sentinel */ if xr); if v = a[x].key then binarysearch: = x else binarysearch: = N+1 end; 55 Độ phức tạp giải thuật tìm kiếm chia đơi Hệ thức truy hồi giải thuật là: CN  CN/2 + Tính chất: Tìm kiếm chia đơi khơng địi hỏi nhiều lgN + so sánh cho tìm kiếm thành cơng hay khơng thành cơng 56 ... trí thứ mảng, tìm phần tử nhỏ thứ nhì mảng hốn đổi với phần tử vị trí thứ nhì mảng, tồn mảng thứ tự. ” 390 20 5 1 82 45 23 5  45 20 5 1 82 390 23 5 45  1 82 205 390 23 5 45 1 82  20 5 390 23 5 45 1 82 205... 1 82 45 23 5  20 5 390 1 82 45 23 5  1 82 205 390 45 23 5  45 1 82 205 390 23 5 45 1 82  20 5 23 5 390 Giải thuật thứ tự phương pháp chèn procedure insertion; var i; j; v:integer; begin for i: =2 to N... Trong giải thuật thứ tự dựa vào số, giả sử tồn hàm bits(x,k,j :integer):integer mà trả j bit xuất cách k bit kể từ mốc bên phải số x 27 Giải thuật thứ tự hoán vị số Phương pháp giải thuật thứ tự

Ngày đăng: 21/06/2014, 20:15

Từ khóa liên quan

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

Tài liệu liên quan