Giáo trình cấu trúc dữ liệu nâng cao phần 1

55 1K 1
Giáo trình cấu trúc dữ liệu nâng cao phần 1

Đ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

Tài liệu này dành cho sinh viên, giáo viên khối ngành công nghệ thông tin tham khảo và có những bài học bổ ích hơn, bổ trợ cho việc tìm kiếm tài liệu, giáo án, giáo trình, bài giảng các môn học khối ngành công nghệ thông tin

CẤU TRÚC DỮ LIỆU NÂNG CAO Nội dung chương trình Chương 1: Sắp xếp ngoại Chương 2: Bảng băm Chương 3: Cây đỏ đen Chương 4: B-Tree Trương Hải Bằng - Cấu trúc liệu TÀI NGUYÊN HỌC TẬP Trương Hải Bằng, Giáo trình Cấu trúc liệu , Nhà xuất Đại học quốc gia Tp Hồ Chí Minh, 2005 Trương Hải Bằng, Tài liệu tham khảo bổ sung, Đĩa CD-Rom, Nhà xuất Đại học quốc gia Tp Hồ Chí Minh, 2005 Robert L.Kruse, Alexander J Ryba, Data structures and program Design in C++, Prentice-Hall International, Inc, 1999 Hệ thống tập mẫu Trương Hải Bằng - Cấu trúc liệu HÌNH THỨC THI Lý thuyết: 60% , Thi tự luận Thực hành: 40%, Nộp Bài tập lớn Chương 1: Cài đặt giải thuật xếp ngoại Chương 2: Cài đặt bảng băm(5 phương pháp giải đụng độ) Bài tốn quản lý sinh viên Chương trình từ điển Chương 3: Cây đỏ đen: Cài đặt phép toán Chương 4: B-TREE: Cài đặt phép toán Lưu ý: (Yêu cầu nộp tập cuối khoá): Xây dựng giao diện window, giao diện đồ hoạ- ưu tiên cho cài đặt OOP (C++ Java) Trương Hải Bằng - Cấu trúc liệu CHƯƠNG - SẮP THỨ TỰ NGOẠI Nội dung Phương pháp trộn Run Phương pháp trộn tự nhiên Phương pháp trộn đa lối cân bằng(balanced multiway merging) Phương pháp trộn đa pha(Polyphase Merge) Trương Hải Bằng - Cấu trúc liệu Phương pháp trộn Run Khái niệm bản: Run dãy liên tiếp phần tử thứ tự Ví dụ 12 50 run gồm có phần tử Chiều dài run số phần tử Run Chẳng hạn, run ví dụ có chiều dài Trương Hải Bằng - Cấu trúc liệu Phương pháp trộn Run (tt) Giải thuật: Giải thuật xếp tập tin phương pháp trộn run tóm lược sau: Input: f0 tập tin cần thứ tự Output: f0 tập tin thứ tự Gọi f1, f2 tập tin trộn Các tập tin f0, f1, f2 tập tin (text file) tập tin nhị phân Trương Hải Bằng - Cấu trúc liệu - Phương pháp trộn Run (tt) Bước 1: - Giả sử phần tử f0 là: 24 12 67 33 58 42 11 34 29 31 - Khởi tạo f1, f2 rỗng - Thực phân bố m=1 phần tử từ f0 vào f1 f2: f1: 24 67 58 11 29 f2: 12 33 42 34 31 Trộn f1, f2 thành f0: f0: 12 24 33 67 42 58 11 34 29 31 Trương Hải Bằng - Cấu trúc liệu Phương pháp trộn Run (tt) Bước 2: -Phân bố m=2 phần tử từ f0 vào f1 f2: f1: 12 24 42 58 29 31 f0: 12 24 33 67 42 58 11 34 29 31 f2: 33 67 11 34 - Trộn f1, f2 thành f0: f1: 12 24 42 58 29 31 f0: 12 24 33 67 11 34 42 58 29 31 f2: 33 67 11 34 Trương Hải Bằng - Cấu trúc liệu Phương pháp trộn Run (tt) Bước 3: - Tương tự bước 2, phân bố m=4 phần tử từ f0 vào f1 f2, kết thu sau: f1: 12 24 33 67 29 31 f2: 11 34 42 58 - Trộn f1, f2 thành f0: f0: 11 12 24 33 34 42 58 67 29 31 Trương Hải Bằng - Cấu trúc liệu Phương pháp trộn Run (tt) Bước 4: - Phân bố m=8 phần tử từ f0 vào f1 f2: f1: 11 12 24 33 34 42 58 67 f2: 29 31 - Trộn f1, f2 thành f0: f0: 11 12 24 29 31 33 34 42 58 67 Bước 5: Lặp lại tương tự bước trên, chiều dài m run cần phân bổ lớn chiều dài n f0 dừng Trương Hải Bằng - Cấu trúc liệu 10 Trộn n-đường cân (tt) [BƯỚC 1] S = {f1, f2, … , fn} D = {g1, g2, … , gn} // Chia xoay vòng liệu file fInput cho file thuộc tập nguồn S i = 1; while (!feof(fInput)) { Copy_1_Run(fInput, fi); i = (i % n) + 1; }S tr = S; Drun = {}; nDemRun = 0; Trương Hải Bằng - Cấu trúc liệu 41 Trộn n-đường cân (tt) [BƯỚC 2] a Sdd = Str b Gọi dhh Ỵ D – Drun file đích hành (sẽ nhận run) c Đọc phần tử xfi, fi Ỵ Sdd d Gọi xf0 = MIN { xfi, fi Ỵ Sdd} e Copy xf0 lên dhh Trương Hải Bằng - Cấu trúc liệu 42 Trộn n-đường cân (tt) f Nếu (file f0 hết) { Str = Str – {f0} Sdd = Sdd – {f0} Nếu (Str == {}) { // Xong trình trộn N D nDemRun++; Goto [B3] } ngược lại Nếu (Sdd {}) Goto [B2.d] ngược lại { // Sdd=={}: hết run hành nDemRun++; Drun = Drun + {dhh}; Nếu (Drun==D) Drun= {}; // Xong “lượt” Trương Hải Bằng - Cấu trúc liệu Goto [B2.a] 43 Trộn n-đường cân (tt) ngược lại { // File f0 chưa hết Nếu (!EOR(f0)) { Đọc phần tử kế xf0 từ file f0; Goto [B2.d] } ngược lại { // Hết run hành f0 Sdd = Sdd – {f0} Nếu (Sdd {}) Goto [B2.d] ngược lại { // Sdd=={}: hết run hành nDemRun++; Drun = Drun + {dhh}; Nếu (Drun==D) Drun= {}; // Xong “lượt” Trương Hải Bằng - Cấu trúc liệu Goto [B2.a] 44 Trộn n-đường cân (tt) } // end of file f0 chưa hết Thuật toán chi tiết…(tt): [BƯỚC 3] Nếu (nDemRun == 1) Kết thúc thuật toán ngược lại { Nếu (nDemRun < n) Str = Drun; // Khơng đủ n run ngược lại Str = D; Drun = {}; nDemRun = 0; “Hoán vị tập S, D” Goto [B2] } Trương Hải Bằng - Cấu trúc liệu 45 Phương pháp trôn đa pha Phương pháp trộn đa lối cân loại bỏ phép chép túy thơng qua việc gộp q trình phân phối qúa trình trộn giai đoạn Tuy nhiên tập tin tập tin chưa sử dụng cách có hiệu lần duyệt phân nửa số tập tin ln ln giữ vai trò trộn (nguồn) phân nửa số tập tin ln ln giử vai trị phân phối (đích) Ta cải tiến phương pháp cách giải thay đổi vai trò tập tin lần duyệt phương pháp gọi phương pháp trộn đa pha Trương Hải Bằng - Cấu trúc liệu 46 Phương pháp trôn đa pha (tt) Phương pháp xếp kiểu R.L Gilstar nêu năm 1960 gọi trộn đa pha Có thể thấy q trình trộn đa pha thực liệu ban đầu phải phân bổ cách thích hợp băng nguồn Ví dụ ta có băng nguồn T1, T2 băng đích T3 Nếu số run T1 T2 số Fibonacci liên tiếp ta áp dụng phuơng pháp trộn đa pha sau: Trương Hải Bằng - Cấu trúc liệu 47 Phương pháp trôn đa pha (tt) T1 Fn (= Fn-1+Fn-2) T2 T3 Fn-1 Fn-2 Fn-1 (= Fn-2+Fn-3) Fn-2 (= Fn-3+Fn-4) Fn-3 (= Fn-4+Fn-5) Fn-4 Fn-3 Ví dụ với n = ta có F7 = 13, F6 = Q trình trộn mơ tả bảng sau: Trương Hải Bằng - Cấu trúc liệu 48 Phương pháp trôn đa pha (tt) T1 T2 13 Lúc đầu có 13 run T1 run T2 Trộn run run vào T3, T1 run Trộn run vào T2, T3 run 2 1 Giải thích T3 Trộn run T1 với run T3 bước trước vào T2, T3 lại run Trộn run T2 với run T3 bước trước vào T1, lại run, trình kết thúc Trương Hải Bằng - Cấu trúc liệu 49 Phương pháp trôn đa pha (tt) Bước 1: Phân phối luân phiên run ban đầu f1 vào f2 f3 Bước 2: Trộn run f1, f2 vào f3 Giải thuật kết thúc f3 có run Bước 3: Chép nửa run f3 vào f1 Bước 4: Trộn run f1 f3 vào f2 Giải thuật kết thúc f2 có run Bước 5: Chép nửa số run f2 vào f1 Lặp lại bước Trương Hải Bằng - Cấu trúc liệu 50 Phương pháp trơn đa pha (tt) Ví dụ 1: Trường hợp n=7, tổng số run ban đầu ng ng 13+8=21 run Phase F1 F2 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1 1, 1, 1, F3 Sort 2, 2, 2, 2, Merge 2, Merge 3, 3, 3 5, 5 Merge 13 21 Trương Hải Bằng - Cấu trúc liệu Merge4 Merge Merge 51 Phương pháp trơn đa pha (tt) Phase 0: Phân phối run ban đầu Phase 1: Trộn run f1 f2 vào f3 Phase 2: Trộn run f1 f3 vào f2 Phase 3: Trộn run f2 f3 vào f1 Phase 4: Trộn run f1 f2 vào f3 Phase 5: Trộn run f1 f3 vào f2 Phase 6: Trộn run f2 f3 vào f1 Trương Hải Bằng - Cấu trúc liệu 52 Phương pháp trôn đa pha (tt) Phase T6 T5 T4 T3 T2 T1 Tổng số runs ng xữ lý Phase 131 130 128 124 116 - 129 Phase 115 114 112 18 - 516 80 Phase 17 16 14 - 98 58 72 Phase 13 12 - 174 94 54 68 Phase 11 - 332 172 92 52 66 Phase - 651 331 171 91 51 65 Phase 1291 - - - - - 129 Trương Hải Bằng - Cấu trúc liệu 53 Phương pháp trôn đa pha (tt) Phase 0: Phân phối run ban đầu Phase 1: Trộn 16 run từ T2 đến T6 vào T1 Phase 2: Trộn run T1, T3, T4, T5, T6 vào T2 Phase 3: Trộn run T1, T2, T4, T5, T6 vào T3 Phase 4: Trộn run T6, T5, T3, T1, T6 vào T4 Phase 5: Trộn run T1, T2, T3, T4, T6 vào T5 Phase 6: Trộn run từ T1 đến T5 vào T6 Trương Hải Bằng - Cấu trúc liệu 54 Phương pháp trôn đa pha (tt) Trong ví dụ 1, số run phan phối ban đầu cho tập tin số Fibonacci dãy Fibonacci bậc 1: 0, 1, 1, 2, 3, 5, Trong ví dụ số run ban đầu phân bố cho tập tin theo dãy Fibonacci bậc 4: 0, 0, 0, 0, 1, 1, 2, 4, 8, 16 Daõy Fibonacci bậc P tổng quát định nghóa ng sau: F(p)n = F(p)n-1 + + F(p)n-2 + + F(p)n-p với n>=p , F(p)n = 0, với

Ngày đăng: 20/10/2014, 06:49

Từ khóa liên quan

Mục lục

  • CẤU TRÚC DỮ LIỆU NÂNG CAO

  • TÀI NGUYÊN HỌC TẬP

  • HÌNH THỨC THI

  • CHƯƠNG 1 - SẮP THỨ TỰ NGOẠI

  • 1. Phương pháp trộn Run

  • 1. Phương pháp trộn Run (tt)

  • 1. Phương pháp trộn Run (tt)

  • 1. Phương pháp trộn Run (tt)

  • 1. Phương pháp trộn Run (tt)

  • 1. Phương pháp trộn Run (tt)

  • 1. Phương pháp trộn Run (tt)

  • 1. Phương pháp trộn Run (tt)

  • 1. Phương pháp trộn Run (tt)

  • 1. Phương pháp trộn Run (tt)

  • 1. Phương pháp trộn Run (tt)

  • 1. Phương pháp trộn Run (tt)

  • 1. Phương pháp trộn Run (tt)

  • 1. Phương pháp trộn Run (tt)

  • 1. Phương pháp trộn Run (tt)

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

  • Đang cập nhật ...

Tài liệu liên quan