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

Đề tài nghiên cứu sắp xếp ngoài

38 4 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

Nội dung

Đề tài: Nghiên cứu xếp GVHD: PGS-TSKH Trần Quốc Chiến Nội dung I Mở đầu II Phát biểu toán III Phương pháp nghiên cứu Phương pháp Đánh giá giải thuật xử lí IV Thiết kế cấu trúc liệu giải thuật xếp phương pháp trộn tự nhiên (Phương pháp 1) 1.1 Tư tưởng 1.2 Giải thuật 1.3 Cài đặt chương trình 12 1.4 Đánh giá giải thuật 16 xếp phương pháp trộn khác ( phương pháp 2) 16 2.1 Tư tưởng: 16 2.2 Giải thuật: 16 2.3 Cài đặt chương trình: 20 2.4 Đánh giá giải thuật: 22 Cải tiến xếp trộn (phương pháp 3) 23 3.1 Tư tưởng 23 3.2 Giải thuật 23 Nhóm sinh viên thực hiện: 10 Trang LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đề tài: Nghiên cứu xếp GVHD: PGS-TSKH Trần Quốc Chiến 3.3 Đánh giá giải thuật 25 Trộn nhiều đường (phương pháp 4) 27 4.1 Tư tưởng 27 4.2 Giải thuật 27 4.3 Cài đặt chương trình:( tham khảo chương trình chạy C++) 30 4.4 Đánh giá giải thuật: 37 Nhóm sinh viên thực hiện: 10 Trang LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đề tài: Nghiên cứu xếp GVHD: PGS-TSKH Trần Quốc Chiến I Mở đầu Sắp xếp danh sách đối tượng theo thứ tự toán thường vận dụng ứng dụng tin học Ví dụ ta cần xếp danh sách thí sinh theo tên với thứ tự Alphabet xếp danh sách sinh viên theo điểm trung bình từ cao đến thấp Một ví dụ khác cần tìm kiếm đối tượng danh sách đối tượng giải thuật tìm kiếm nhị phân danh sách đối tượng phải xếp trước Tóm lại xếp yêu cầu thiếu thiết kế phần mềm Do việc nghiên cứu phương pháp xếp cần thiết để vận dụng lập trình Ta biết đến phương pháp xếp 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ố tồn quốc hay thơng tin quản lí đất đai nước chẳng hạn? Trong toán số lượng liệu vượt khả lưu trữ nhớ Để giải tốn phải dùng nhớ ngồi để lưu trữ xử lí II Phát biểu tốn Các phương pháp Bubble-Sort, QuickSort,…là xếp làm việc với liệu nhỏ Nhiều ứng dụng xếp quan trọng Nhóm sinh viên thực hiện: 10 Trang LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đề tài: Nghiên cứu xếp GVHD: PGS-TSKH Trần Quốc Chiến liên quan đến việc xử lí tập tin có kích thước lớn, nên khơng có đủ nhớ cho tập tin lớn Các phương pháp thích hợp cho ứng dụng gọi phương pháp xếp ngồi, chúng liên quan đến xử lí liệu bên ngồi đơn vị xử lí trung ương Do sử dụng xếp ngồi để xếp đối tượng cần xếp lớn lưu trữ nhớ mà phải lưu trữ nhớ III Phương pháp nghiên cứu Phương pháp 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ớ ngồi 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, khơng có mẫu tin bị chia cắt để lưu hai khối khác Bộ nhớ Ghi Bộ nhớ đệm Ghi Bộ nhớ Đọc Đọc Mỗi lần đọc mẫu tin Nhóm sinh viên thực hiện: 10 Mỗi lần đọc khối Trang LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đề tài: Nghiên cứu xếp GVHD: PGS-TSKH Trần Quốc Chiến Đánh giá giải thuật xử lí ngồi Đối với nhớ ngồi 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 Vì đánh giá giải thuật thao tác nhớ ngoài, 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ớ ta gọi chung phép truy xuất khối(block access) Vì kích thước khối cố định nên ta khơng thể tìm cách tăng kích thước khối mà phải tìm giảm số lần truy xuất khối IV Thiết kế cấu trúc liệu giải thuật xếp phương pháp trộn tự nhiên (Phương pháp 1) 1.1 Tư tưởng Sắp xếp tập tin F, sử dụng tập tin phụ F1 F2 Thực luân phiên công việc: - Tách tập tin lớn thành tập tin có thứ tự - Trộn tập tin thành tập tin lớn có thứ tự Nhóm sinh viên thực hiện: 10 Trang LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đề tài: Nghiên cứu xếp GVHD: PGS-TSKH Trần Quốc Chiến 1.2 Giải thuật Lặp lại bước sau: Phân đoạn F thành F1 F2 - Trộn F1 F2 vào F Cho tới số đoạn F 1.2.a Giải thuật phân đoạn Phân file F thành file F1 F2 Bước 1: Mở file F để đọc, mở file F1 F2 để ghi, khởi gán giá trị đầu số đoạn = { sodoancon:=0 }; Bước 2: Thực đọc hết file F - Nếu chưa hết file F thực việc đọc phần tử (PT) F ghi vào F1 gặp PT nhỏ PT trước hết file F, tăng số đoạn lên 1, {inc(sodoancon)}; - Nếu chưa hết file F thực việc đọc PT để F ghi vào F2 gặp PT nhỏ PT trước hết file F; tăng số đoạn lên 1, {inc(sodoancon)}; Bước 3: Đóng file F1, F2, F Ví dụ: Cho file F gồm 21 mẫu tin với khóa số nguyên sau: 65 15 29 20 25 31 40 12 50 67 45 18 34 17 11 98 Nhóm sinh viên thực hiện: 10 Trang LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đề tài: Nghiên cứu xếp GVHD: PGS-TSKH Trần Quốc Chiến 65 15 29 20 25 31 40 12 50 67 45 18 34 17 11 98 Phân file F thành file F1 F2 Lần 1: F1 65 F2 15 29 Lần 2: F1 65 F2 15 29 20 25 31 40 Lần 3: F1 F2 65 15 29 20 25 12 50 31 40 45 25 12 50 67 Lần 4: F1 65 20 F2 15 29 31 40 45 67 18 34 67 18 34 17 Lần 5: F1 65 20 25 12 50 11 98 Nhóm sinh viên thực hiện: 10 Trang LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đề tài: Nghiên cứu xếp F2 15 29 31 40 GVHD: PGS-TSKH Trần Quốc Chiến 45 17  Số đoạn con: 10 1.2.b Giải thuật trộn Trộn đoạn có thứ tự file F1 file F2 vào file F, biến numsubfile số đoạn có F Bước 1: Mở file F1, F2 để đọc, mở file F để ghi; Bước 2: Đọc PT file F1 vào biến x phần tử F2 vào biến y Thực đọc hết file F1 F2 (i) Thực hết đoạn F1 hết đoạn F2 i1 Nếu phần tử x F1 < phần tử y F2 di chuyển x vào F đọc phần tử F1 i2 Nếu phần tử x F1 > phần tử y F2 di chuyển y vào F đọc phần tử F2 Bước 3: Nếu file F1 chưa kết thúc ghi phần tử cịn lại sang F, ngược lại file F2 chưa kết thúc ghi phần tử cịn lại sang F; Bước 4: Đóng file F1, F2, F; Ví dụ: Cho file F gồm 21 mẫu tin với khóa số nguyên sau: Nhóm sinh viên thực hiện: 10 Trang LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đề tài: Nghiên cứu xếp GVHD: PGS-TSKH Trần Quốc Chiến 65 15 29 20 25 31 40 12 50 67 45 18 34 17 11 98 Qua thủ tục phân đoạn ví dụ 2.2.1 ta có: F1 65 20 25 12 50 67 18 34 11 98 F2 15 29 31 40 45 17 Thực trộn: 15 29 65 20 25 31 40 12 45 50 67 17 18 34 11 98 Giải thuật xếp trộn thực luân phiên thủ tục phân đoạn trộn Sắp xếp trộn tự nhiên file F : 65 15 29 20 25 31 40 12 50 67 45 18 34 17 11 98 Lần 1: - Phân đoạn: F1 65 20 25 12 50 67 18 34 11 98 Nhóm sinh viên thực hiện: 10 Trang LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đề tài: Nghiên cứu xếp F2 15 29 31 40 GVHD: PGS-TSKH Trần Quốc Chiến 45 17 - Trộn: 15 29 65 20 25 31 40 12 45 50 67 17 18 34 11 98 Lần 2: - Phân đoạn: F1 15 29 12 45 50 67 11 98 65 F2 20 25 31 17 18 34 40 - Trộn: 67 15 20 25 29 31 40 65 12 17 18 34 45 50 11 98 Lần 3: Nhóm sinh viên thực hiện: 10 Trang 10 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đề tài: Nghiên cứu xếp GVHD: PGS-TSKH Trần Quốc Chiến Quá trình tiếp tục sau i bước độ dài đường k*2i Nếu k*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 Ví dụ minh họa: Lấy tập tin F có 21 mẫu tin với khóa số nguyên : 65 15 29 20 25 31 40 12 50 67 45 18 34 17 11 98 Ta giả sử nhớ chứa đươc mẩu tin, ta đọc mẩu tin F vào nhớ trong,dùng xếp để xếp chúng ghi phiên vào tập tin F1 F2 F1 65 25 15 20 29 12 40 50 319 45 678 11 98 17 18 34 F2 Bước 1: Trộn đường độ dài F1 F2 đường độ dài ghi luân phiên vào tập tin G1 G2: G1 15 20 29 65 Nhóm sinh viên thực hiện: 10 17 18 34 45 67 Trang 24 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đề tài: Nghiên cứu xếp G2 12 25 31 40 508 11 GVHD: PGS-TSKH Trần Quốc Chiến 98 Bước 2:Đổi vai trò F1 G1,F2 G2 cho Trộn đường độ dài tập tin F1 F2 đường độ dài ghi luân phiên vào tập tin G1 G2: 12 15 20 25 29 31 40 50 65 11 17 18 34 45 67 98 Bước 3: Đổi vai trò F1 G1,F2 G2 cho Trộn đường độ dài 12 tập tin F1 F2 đường ghi vào tập tin G1,còn G2 rỗng : 11 12 15 17 18 20 25 29 31 34 40 45 50 65 67 98 Tập tin G1 chứa mẩu tin tập tin G2 rỗng 3.3 Đánh giá giải thuật a Độ phức tạp: Nhóm sinh viên thực hiện: 10 Trang 25 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đề tài: Nghiên cứu xếp GVHD: PGS-TSKH Trần Quốc Chiến Ta thấy q trình xếp trộn nói độ dài phải sau logn bước giải thuật kết thúc Chúng ta tiết kiệm thời gian cách chọn số k thích hợp cho k mẩu tin đủ chứa nhớ Mỗi lần đọc vào nhớ k mẩu tin,dùng xếp trong(chẳng hạn dùng Quick sort) để xếp k mẩu tin ghi luân phiên vào hai tập tin F1 F2 Như bắt đầu xếp trộn với tập tin dược tổ chức thành đường độ dài k Sau i bước độ dài đường k*2i Giải thuật kết thúc k*2i ≥ n hay i ≥ log n/k Do số phép truy xuất khối 2*n/b log(n/k) Dễ thấy 2*n/b log(n/k) < 2*n/b logn tức ta tăng tốc độ xếp trộn Vậy độ phức tạp giải thuật là: O(nlog(n/k)) b Ưu điểm, nhược điểm: ♣ Ưu điểm: ♦Chúng ta giảm số lần truy xuất khối tức tăng tốc độ xếp trộn ♦Chương trình ngắn gọn hơn,khơng phải đọc ghi nhiều lần ♣ Nhược điểm: ♦ Tốn thời gian xếp nhớ Nhóm sinh viên thực hiện: 10 Trang 26 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đề tài: Nghiên cứu xếp GVHD: PGS-TSKH Trần Quốc Chiến Trộn nhiều đường (phương pháp 4) 4.1 Tư tưởng Sắp xếp tập tin F ta dùng m tập tin F1, F2 ,F3… Fm( m số chẵn, m>4) + Tách tập tin F thành h tập tin F[1], F[2], F[3],…… F[h] với h=m/2 + Trộn tập tin h tập tin F[1], F[2], F[3],…… F[h] thành tập tin lớn có thứ tự ghi luân phiên vào F[h+1], F[h+2], F[h+3],… F[m] 4.2 Giải thuật Để xếp tập tin F có n mẫu tin ta sử dụng m tập tin (m số chẵn) Ta gọi h=m/2 Giả sử nhớ chứa k mẫu tin Khởi đầu: Mỗi lần đọc từ tập tin F vào nhớ k mẫu tin, sử dụng xếp để xếp k mẫu tin thành đường ghi luân phiên vào tập tin F[1], F[2], F[3],…… F[h] Bước 1: _ Trộn đường độ dài k h tập tin F[1], F[2], F[3],…… F[h] thành đường độ dài k*h _ Ghi luân phiên vào h tập tin F[h+1], F[h+2], F[h+3], F[m] _ Đổi vai trò F[i] F[h+i] cho Bước 2: _ Trộn đường độ dài k*h h tập tin F[1], F[2], F[3],…… F[h] thành đường độ dài k*h2 Nhóm sinh viên thực hiện: 10 Trang 27 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đề tài: Nghiên cứu xếp GVHD: PGS-TSKH Trần Quốc Chiến _ Ghi luân phiên vào h tập tin F[h+1], F[h+2], F[h+3],… F[m] _ Đổi vai trò F[i] F[h+i] cho Sau i bước ta độ dài đường k*hi giải thuật kết thúc k*hi>=n ta tập tin xếp đường ghi F[h+1] Ví dụ: Lấy tập tin F có 21 mẫu tin với khóa số ngun ví dụ ban đầu Ta sử dụng tập tin để xếp tập tin F Cho k=3 Ta lầ lượt đọc mẫu tin F vào nhớ trong, dùng xếp để xếp ghi luân phiên vào tập tin F[1], F[2], F[3] : 65 15 29 20 25 31 40 12 50 67 45 18 34 17 11 98 F[1] 65 F[2] 15 12 40 11 98 50 20 29 Nhóm sinh viên thực hiện: 10 45 67 Trang 28 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đề tài: Nghiên cứu xếp F[3] 25 GVHD: PGS-TSKH Trần Quốc Chiến 17 31 18 34 Bước 1: Trộn đường độ dài tập tin F[1], F[2], đường độ dài ghi vào tập tin F[3] thành F[4], F[5], F[6] F[4] 31 F[5] F[6] 15 20 25 29 65 12 50 67 11 17 18 34 40 45 98 Đổi vai trò F[1] cho F[4], F[2] cho F[5], F[3] cho F[6] Bước 2: Trộn đường độ dài tập tin F[1], F[2], F[3] thành đường độ dài 23 ghi vào tập tin F[4] 11 12 15 17 18 20 25 29 31 34 40 45 F[4] 50 65 67 98 Nhóm sinh viên thực hiện: 10 Trang 29 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đề tài: Nghiên cứu xếp GVHD: PGS-TSKH Trần Quốc Chiến Tập tin F[4] chứa 21 mẫu tin xếp F[5], F[6] rỗng 4.3 Cài đặt chương trình:( tham khảo chương trình chạy C++) #include #include #include #include #include #define N 10 // dùng 10 tập tin typedef int elem; typedef struct { FILE *f; elem buffer;//so phan tu cua file }tape; void taofile(char *fn, int n)//tao file co ten fn co n pt { int i; FILE *f=fopen (fn, "wb"); randomize(); for(i=0; iX.buffer; //(x>X.buffer)tra ve eof(ss dung compaid) } //chep run void copyrun(tape &X,tape &Y) { int EOR; { copyitem(X,Y,EOR); }while(!EOR); //copy den nao het run } //int n=10; Nhóm sinh viên thực hiện: 10 Trang 32 LUAN VAN CHAT LUONG download : add luanvanchat@agmail.com Đề tài: Nghiên cứu xếp GVHD: PGS-TSKH Trần Quốc Chiến void hoanvi(int &a, int &b) { int t; t=a; a=b; b=t; } void multiway (char *fn) { int q, k1, k2, j, mx, ta[N], t[N], EOR; tape f[N], F; char s[N][20],s1[20]; //N chuoi, moi chuoi co 19 ki tu int k=N/2; opentape (F,fn ); for(int i=0; i

Ngày đăng: 10/10/2022, 15:56

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

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

TÀI LIỆU LIÊN QUAN

w