1. Trang chủ
  2. » Công Nghệ Thông Tin

Bài giảng phân tích thiết kế thuật toán chương 4 cấu trúc dữ liệu và giải thuật lưu trữ ngoài

53 872 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

Thông tin cơ bản

Định dạng
Số trang 53
Dung lượng 1,07 MB

Nội dung

CHƯƠNG 4: CẤU TRÚC DỮ LIỆU VÀ GIẢI THUẬT LƯU TRỮ NGOÀI Nguyễn Văn Linh Khoa Công nghệ Thông tin & Truyền thông ĐẠI HỌC CẦN THƠ nvlinh@cit.ctu.edu.vn Nguyễn Văn Linh NỘI DUNG • • • • Mục tiêu Mô hình đánh giá xử lý Sắp xếp Lưu trữ thông tin tập tin: – – – – Tập tin Tập tin bảng băm Tập tin mục Tập tin B-cây Nguyễn Văn Linh MỤC TIÊU • Biết mô hình xử lý • Hiểu tiêu chuẩn để đánh giá giải thuật xử lý Vận dụng việc cải tiến giải thuật xử lý • Hiểu giải thuật xếp trộn để xếp phương pháp cải tiến tốc độ xếp trộn • Hiểu cách thức tổ chức lưu trữ giải thuật tìm kiếm, xen, xoá thông tin tập tin tuần tự, tập tin mục, tập tin bảng băm • Vận dụng cách thức tổ chức lưu trữ giải thuật tìm kiếm, xen, xoá thông tin tập tin B-cây Nguyễn Văn Linh Tại phải xử lí • Trong giải thuật mà đề cập từ trước tới nay, giả sử số lượng liệu vào nhỏ để chứa hết nhớ (main memory) • Nhưng điều xảy ta muốn xử lý phiếu điều tra dân số toàn quốc hay thông tin quản lý đất đai nước chẳng hạn? • Trong toán vậy, số lượng liệu vượt khả lưu trữ nhớ • Ðể giải toán phải dùng nhớ để lưu trữ xử lý • Các thiết bị lưu trữ băng từ, đĩa từ có khả lưu trữ lớn đặc điểm truy nhập hoàn toàn khác với nhớ • Chúng ta cần tìm cấu trúc liệu giải thuật thích hợp cho việc xử lý liệu lưu trữ nhớ Nguyễn Văn Linh Mô hình xử lí • Hệ điều hành chia nhớ thành khối (block) có kích thước nhau, kích thước thay đổi tùy thuộc vào hệ điều hành nói chung từ 512 bytes đến 4096 bytes • Có thể xem tập tin bao gồm nhiều mẩu tin lưu khối • Mỗi khối lưu số nguyên vẹn mẩu tin • Kiểu liệu tập tin kiểu thích hợp cho việc biểu diễn liệu lưu nhớ Bộ nhớ Ghi Đọc Bộ nhớ đệm Mỗi lần truy xuất mẩu tin Nguyễn Văn Linh Ghi Đọc Mỗi lần truy xuất khối Bộ nhớ Đánh giá giải thuật xử lý • Ðối với nhớ thời gian tìm khối để đọc vào nhớ lớn so với thời gian thao tác liệu khối • Chúng ta tập trung vào việc xét số lần đọc khối vào nhớ số lần ghi khối nhớ ngoài, ta gọi chung phép truy xuất khối (block access) • Nếu số lần truy xuất khối giải thuật có hiệu • Để cải tiến giải thuật, ta tìm cách tăng kích thước khối (Vì kích thước khối cố định) mà phải tìm cách giảm số lần truy xuất khối Nguyễn Văn Linh Sắp xếp • Sắp xếp xếp liệu tổ chức thành tập tin lưu nhớ • Mỗi tập tin bao gồm nhiều mẩu tin, mẩu tin bao gồm nhiều trường, có trường khoá • Tương tự xếp trong, xếp tổ chức lại mẩu tin cho khóa chúng thứ tự tương ứng với quy luật xếp Nguyễn Văn Linh Sắp xếp trộn: Khái niệm đường • Ðường độ dài k tập hợp k mẩu tin thứ tự theo khoá • Cho tập tin chứa mẩu tin r1,r2, ,rn, ta nói tập tin tổ chức thành đường có độ dài k ta chia tập tin thành đoạn k mẩu tin liên tiếp đoạn đường, đoạn cuối đủ k mẩu tin, trường hợp ta gọi đoạn đuôi (tail) • Ví dụ: Tập tin gồm 14 mẩu tin có khóa số nguyên tổ chức thành đường độ dài đuôi có độ dài Nguyễn Văn Linh 13 26 27 12 14 17 23 25 Sắp xếp trộn: Giải thuật • Ðể xếp tập tin F có n mẩu tin ta sử dụng tập tin F1, F2, G1 G2 • Phân phối mẩu tin tập tin cho F luân phiên vào hai tập tin F1 F2 Như hai tập tin xem tổ chức thành đường độ dài • Bước 1: Ðọc đường, đường độ dài từ hai tập tin F1, F2 trộn lại thành đường độ dài ghi luân phiên vào hai tập tin G1, G2 Ðổi vai trò F1 cho G1, F2 cho G2 • Bước 2: Ðọc đường, đường độ dài từ hai tập tin F1, F2 trộn lại thành đường độ dài ghi luân phiên vào hai tập tin G1, G2 Ðổi vai trò F1 cho G1, F2 cho G2 • Quá trình tiếp tục sau i bước độ dài đường 2i Nếu 2i ≥ n giải thuật kết thúc, lúc tập tin G2 rỗng tập tin G1 chứa mẩu tin Nguyễn Văn Linh Sắp xếp trộn: Đánh giá giải thuật • Giải thuật kết thúc 2i ≥ n, tức sau i bước với i ≥ logn • Mỗi bước phải đọc từ tập tin ghi vào tập tin, tập tin có trung bình n/2 mẩu tin • Giả sử khối lưu trữ b mẩu tin tập tin lưu n/(2b) khối • Mỗi bước cần đọc ghi tập tin, nên bước truy xuất 2n/b khối mà cần logn bước tổng cộng cần: Nguyễn Văn Linh 2n logn b Tập tin mục (index file): Tổ chức • Tập tin tập tin mục thưa (sparse index) • Tập tin bao gồm khối lưu mẩu tin thứ tự theo giá trị khóa • Tập tin mục thưa bao gồm khối chứa cặp (x,p) x khoá mẩu tin khối tập tin chính, p trỏ, trỏ đến khối Nguyễn Văn Linh Tập tin mục: Ví dụ Các khối tập tin lưu trữ tối đa mẩu tin, khối tập tin mục lưu trữ tối đa cặp khoá – trỏ TT mục (3, ) (10, ) (23, ) (28, ) TT B1 Nguyễn Văn Linh 10 11 16 B2 23 25 27 B3 (42, ) (48, ) 28 31 38 B4 42 46 B5 • 48 52 60 B6 Tập tin mục: Tìm mẩu tin • Ðể tìm mẩu tin r có khoá x, ta phải tìm cặp (z,p) với z giá trị lớn z ≤ x Mẩu tin r có khoá x tồn nằm khối trỏ p • Chẳng hạn để tìm mẩu tin r có khoá 46 tập tin biểu diễn hình sau: TT mục (3, ) (10, ) (23, ) (28, ) TT B1 Nguyễn Văn Linh 10 11 16 B2 23 25 27 B3 (42, ) (48, ) 28 31 38 B4 42 46 B5 • 48 52 60 B6 Tập tin mục: Thêm mẩu tin • • • • • • • • • Giả sử tập tin lưu khối B1, B2, , Bm Dùng thủ tục tìm kiếm để xác định khối Bi Nếu tìm thấy thông báo “mẩu tin tồn tại”, ngược lại, Bi nơi chứa mẩu tin r Nếu Bi chỗ trống xen r vào vị trí Bi Chỉnh lại tập tin mục mẩu tin trở thành mẩu tin khối Bi Nếu Bi không chỗ trống để xen ta phải xét khối Bi+1 để chuyển mẩu tin cuối khối Bi thành mẩu tin khối Bi+1 xen mẩu tin r vào vị trí khối Bi Ðiều chỉnh lại tập tin mục cho phù hợp với trạng thái Bi+1 Quá trình dẫn đến việc ta phải xét khối Bm, Bm hết chỗ yêu cầu hệ thống cấp thêm khối Bm+1, chuyển mẩu tin cuối Bm sang Bm+1, mẩu tin cuối Bm-1 sang Bm… Xen mẩu tin r vào khối Bi cập nhật lại tập tin mục Việc cấp phát thêm khối Bm+1 đòi hỏi phải xen thêm cặp khoá-con trỏ vào khối cuối tập tin mục, khối hết chỗ xin cấp thêm khối để xen cặp khóa-con trỏ Nguyễn Văn Linh Ví dụ thêm mẩu tin Xen mẩu tin r với khóa x = 24 vào tập tin biểu diễn hình sau: TT mục (3, ) (10, ) (23, ) (28, ) TT B1 10 11 16 B2 23 25 27 B3 (42, ) (48, ) 28 31 38 B4 42 46 B5 • 48 52 60 B6 Cấu trúc tập tin sau thêm mẩu tin r sau: TT mục (3, ) (10, ) (23, ) (27, ) TT B1 Nguyễn Văn Linh 10 11 16 B2 23 24 25 B3 (38, ) (48, ) 27 28 31 B4 38 42 46 B5 • 48 52 60 B6 Tập tin mục: Xoá mẩu tin • Tìm r, không tìm thấy thông báo “Mẩu tin không tồn tại” • Ngược lại ta xoá mẩu tin r khối chứa • Nếu mẩu tin bị xoá mẩu tin khối phải cập nhật lại giá trị khoá tập tin mục • Trong trường hợp khối trở nên rỗng sau xoá mẩu tin giải phóng khối xoá cặp (khoá, trỏ) khối tập tin mục • Việc xoá tập tin mục dẫn đến việc giải phóng khối tập tin Nguyễn Văn Linh Tập tin mục: Đánh giá • Ta thấy việc tìm mẩu tin đòi hỏi phải đọc số nhỏ khối (một khối tập tin số khối tập tin mục) • Tuy nhiên việc xen thêm mẩu tin, nói, phải đọc ghi tất khối tập tin • Ðây nhược điểm tập tin mục Nguyễn Văn Linh Cây tìm kiếm m-phân • Cây tìm kiếm m-phân (m-ary tree) tổng quát hoá tìm kiếm nhị phân nút có m nút • Giả sử n1 n2 hai nút đó, n1 bên trái n2 tất n1 có giá trị nhỏ giá trị nút n2 Nguyễn Văn Linh B-cây • B-cây bậc m tìm kiếm m-phân cân có tính chất sau: – Nút gốc có hai nút con, – Mỗi nút, trừ nút gốc nút lá, có từ m/2 đến m nút – Các đường từ gốc tới có độ dài Nguyễn Văn Linh Tập tin B-cây:Tổ chức • Mỗi nút khối đĩa, mẩu tin tập tin lưu trữ nút B-cây lưu theo thứ tự khoá • Giả sử nút lưu trữ nhiều b mẩu tin • Mỗi nút nút có dạng (p0,k1,p1,k2,p2, ,kn,pn), với pi (0 ≤ i ≤ n) trỏ, trỏ tới nút thứ i nút ki giá trị khóa Các khoá nút thứ tự, tức k1 < k2 < < kn • Tất khoá trỏ p0 nhỏ k1 • Tất khoá nằm trỏ pi (0 < i < n) lớn ki nhỏ ki+1 • Tất khoá nằm trỏ pn lớn kn Nguyễn Văn Linh Tập tin B-cây: Ví dụ Cho tập tin bao gồm 20 mẩu tin với giá trị khóa số nguyên tổ chức thành B-cây bậc với nút chứa nhiều mẩu tin L1 GOC • 18 • • P1 10 12 10 L2 12 14 16 L3 Nguyễn Văn Linh P2 • • 18 20 L4 22 28 34 22 24 26 28 30 32 34 36 L5 L6 L7 38 38 40 42 L8 Tập tin B-cây: Tìm mẩu tin • Băt đầu gốc đến nút chứa r (nếu r tồn tập tin) • Tại bước,đưa nút (p0, k1, p1, , kn, pn) vào nhớ xác định mối quan hệ x với giá trị khóa ki – Nếu ki ≤ x < ki+1 (0 < i < n) xét tiếp nút trỏ pi – Nếu x < k1 ta xét tiếp nút trỏ p0 – Nếu x ≥ kn ta xét tiếp nút trỏ pn • Quá trình dẫn đến việc xét nút • Trong nút ta tìm mẩu tin r với khóa x tìm kiếm tìm kiếm nhị phân Nguyễn Văn Linh Tập tin B-cây: Thêm mẩu tin • Tìm r Việc tìm kiếm dẫn đến nút L • Nếu tìm thấy thông báo “Mẩu tin tồn tại”, ngược lại L nút mà ta xen r vào • Nếu khối L chỗ cho r ta thêm r vào cho thứ tự khối L giải thuật kết thúc • Nếu L không chỗ cấp phát khối L' • Dời b/2 mẩu tin nằm cuối khối L sang L' xen r vào L L' cho việc xen đảm bảo thứ tự khoá khối • Giả sử nút P cha L • Xen đệ quy để xen vào P khóa k’ trỏ p’ tương ứng L’ • Trong trường hợp trước xen k' p’, P có đủ m ta phải cấp thêm khối P’ chuyển số P sang P’ xen vào P P’ cho P P’ có m/2 • Việc chia cắt P => phải xen khóa trỏ vào nút cha P • Quá trình dẫn tới nút gốc phải chia cắt nút gốc, trường hợp phải tạo nút gốc mà hai hai nửa nút gốc cũ • Khi chiều cao B-cây tăng lên Nguyễn Văn Linh Kết xen 23 GỐC 18 P1 10 28 • • P2 12 • 10 12 14 16 18 20 22 23 24 26 L1 L2 L3 L4 L5 L’5 Nguyễn Văn Linh 22 P’2 • 24 • 34 • 28 30 32 L6 40 • 34 36 40 42 L7 • L8 Thank you [...]... F1 và F2 được các đường độ dài 2 và ghi luân phiên vào trong hai tập tin G1, G2 G1 2 31 96 98 54 85 30 39 8 10 8 G2 5 13 10 40 9 65 13 90 69 77 22 Nguyễn Văn Linh 10 Sắp xếp trộn: Ví dụ: Bước 2 Ðổi vai trò của F1 và G1, F2 và G2 cho nhau, ta được 2 tập tin F1 và F2 mới: F1 2 31 96 98 54 85 30 39 8 10 8 F2 5 13 10 40 9 65 13 90 69 77 22 10 Trộn các đường độ dài 2 của F1 và F2 được các đường độ dài 4 và. .. 31 40 96 39 54 65 98 85 90 8 8 10 10 22 69 77 Sắp xếp trộn: Ví dụ: Bước 4 Ðổi vai trò của F1 và G1, F2 và G2 cho nhau, ta được 2 tập tin F1 và F2 mới: F1 2 5 F2 9 13 30 10 13 31 40 96 39 54 65 98 8 8 10 10 22 69 77 85 90 Trộn các đường độ dài 8 của F1 và F2 được các đường độ dài 16 và ghi luân phiên vào trong hai tập tin G1, G2 G1 2 5 9 10 13 13 30 G2 8 8 10 10 22 69 Nguyễn Văn Linh 77 31 39 40 54 65... trong các tập tin F[1], F[2], F[3] thành các đường độ dài 9 và ghi vào trong các tập tin F [4] , F[5] và F[6] F [4] 2 5 10 13 31 40 54 96 98 F[5] 8 9 10 13 30 39 65 85 90 F[6] 8 10 22 Nguyễn Văn Linh 69 77 Ví dụ về sắp xếp trộn nhiều đường: Bước 2 Đổi vai trò các tập tin F[1], F[2] và F[3] cho F [4] ,F[5] và F[6] tương ứng F [4] 2 5 10 13 31 40 54 96 98 F[5] 8 9 10 13 30 39 65 85 90 F[6] 8 10 22 69 77 Trộn... và ghi luân phiên vào trong hai tập tin G1, G2 G1 2 5 13 31 9 54 65 85 8 10 69 G2 10 40 96 98 13 30 39 90 8 10 22 Nguyễn Văn Linh 77 Sắp xếp trộn: Ví dụ: Bước 3 Ðổi vai trò của F1 và G1, F2 và G2 cho nhau, ta được 2 tập tin F1 và F2 mới: F1 2 5 13 31 9 54 65 85 8 10 69 F2 10 40 96 98 13 30 39 90 8 10 22 77 Trộn các đường độ dài 4 của F1 và F2 được các đường độ dài 8 và ghi luân phiên vào trong hai tập... 3 của F1 và F2 được các đường độ dài 6 và ghi luân phiên vào trong hai tập tin G1, G2: G1 2 G2 9 5 13 10 40 Nguyễn Văn Linh 31 96 98 8 10 13 30 39 54 65 85 8 10 22 69 77 90 Ví dụ về sắp xếp trộn cải tiến: Bước 2 Ðổi vai trò của F1 và G1, F2 và G2 cho nhau, ta được hai tập tin F1 và F2 mới: F1 2 F2 9 5 13 10 40 31 96 98 8 10 13 30 39 54 65 85 8 10 22 69 77 90 Trộn các đường độ dài 6 của F1 và F2 được... dài 12 và ghi luân phiên vào trong hai tập tin G1, G2: G1 2 5 9 10 13 31 40 54 65 85 96 G2 8 8 10 10 13 22 30 39 69 77 90 Nguyễn Văn Linh 98 Ví dụ về sắp xếp trộn cải tiến: Bước 3 Ðổi vai trò của F1 và G1, F2 và G2 cho nhau, ta được hai tập tin F1 và F2 mới: F1 2 5 9 10 13 31 40 54 65 85 96 F2 8 8 10 10 13 22 30 39 69 77 90 98 Trộn các đường độ dài 12 trong 2 tập tin F1 và F2 được 1 đường ghi vào trong... F1 và G1, F2 và G2 cho nhau, ta được 2 tập tin F1 và F2 mới: F1 2 5 9 10 13 13 30 F2 8 8 10 10 22 69 31 39 40 54 65 85 90 96 98 77 Trộn các đường độ dài 16 của F1 và F2 được các đường độ dài 23 và ghi vào trong tập tin G1 G1 2 5 8 8 G2 Nguyễn Văn Linh 9 10 10 10 13 13 22 30 31 39 40 54 65 69 77 85 90 96 98 Sắp xếp trộn cải tiến • Sắp xếp trộn bắt đầu từ các đường độ dài 1 cho nên phải sau logn bước giải. .. như sau: 2 31 13 5 98 96 10 40 54 85 65 9 30 39 90 13 10 8 69 77 8 10 22 • Ðể bắt đầu ta phân phối các mẩu tin của F luân phiên vào hai tập tin F1 và F2 được tổ chức thành các đường có độ dài 1 F1 2 13 98 10 54 65 30 90 10 69 8 F2 31 5 96 40 85 9 39 13 8 77 10 Nguyễn Văn Linh 22 Sắp xếp trộn: Ví dụ: Bước 1 Từ 2 tập tin F1 và F2 F1 2 13 98 10 54 65 30 90 10 69 8 F2 31 5 96 40 85 9 39 13 8 77 10 22 Trộn... F[1], F[2], F[3] thành đường độ dài 23 và ghi vào trong các tập tin F [4] còn các tập tin F[5] và F[6] đều rỗng F [4] 2 5 8 8 9 10 10 10 13 13 22 30 31 39 40 54 65 69 77 85 90 96 98 Nguyễn Văn Linh Lưu trữ thông tin trong tập tin • Chúng ta sẽ coi một tập tin như là một chuỗi tuần tự các mẩu tin, mỗi mẩu tin bao gồm nhiều trường (field) • Các mẩu tin có độ dài cố định và khảo sát các thao tác trên tập tin... độ dài k.h và ghi luân phiên vào trong h tập tin F[h+1], F[h+2], , F[m] Ðổi vai trò của F[i] và F[h+i]] cho nhau (với 1≤ i ≤ h) • Bước 2: Trộn các đường độ dài kh của h tập tin F[1], F[2], , F[h] thành một đường độ dài k.h2 và ghi luân phiên vào trong h tập tin F[h+1], F[h+2], , F[m] Ðổi vai trò của F[i] và F[h+i]] cho nhau (với 1 ≤ i ≤ h) • Sau i bước thì độ dài mỗi đường là k.hi và giải thuật kết ... chẳng hạn? • Trong toán vậy, số lượng liệu vượt khả lưu trữ nhớ • Ðể giải toán phải dùng nhớ để lưu trữ xử lý • Các thiết bị lưu trữ băng từ, đĩa từ có khả lưu trữ lớn đặc điểm truy nhập hoàn toàn... cách thức tổ chức lưu trữ giải thuật tìm kiếm, xen, xoá thông tin tập tin B-cây Nguyễn Văn Linh Tại phải xử lí • Trong giải thuật mà đề cập từ trước tới nay, giả sử số lượng liệu vào nhỏ để chứa... cấu trúc liệu giải thuật thích hợp cho việc xử lý liệu lưu trữ nhớ Nguyễn Văn Linh Mô hình xử lí • Hệ điều hành chia nhớ thành khối (block) có kích thước nhau, kích thước thay đổi tùy thuộc vào

Ngày đăng: 04/04/2016, 12:15

TỪ KHÓA LIÊN QUAN

w