1. Trang chủ
  2. » Luận Văn - Báo Cáo

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

27 232 2

Đ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 27
Dung lượng 187 KB

Nội dung

Đề tài: Nghiên cứu sắp xếp ngoài GVHD: PGS-TSKH Trần Quốc Chiến Nội dung Nội dung 1 I. Mở đầu 2 II. Phát biểu bài toán 2 III. Phương pháp nghiên cứu 3   IV. Thiết kế cấu trúc dữ liệu và giải thuật 4  !"#$%& '(& )& *+, -. &  !/$% '(0 )0 *+, -0& &01 *2 !$%3 '(3 )3 . &' !4+5$&%6 &'(6 &)6 &*+, -0$78/ -9:*;;% &&03 Nhóm sinh viên thực hiện: 10 Trang 1 Đề tài: Nghiên cứu sắp xếp ngoài GVHD: PGS-TSKH Trần Quốc Chiến I. Mở đầu Sắp xếp một danh sách các đối tượng theo một thứ tự nào đó là một bài toán thường được vận dụng trong các ứng dụng tin học. Ví dụ ta cần sắp xếp danh sách thí sinh theo tên với thứ tự Alphabet hoặc sắp 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 là khi cần tìm kiếm một đối tượng trong một danh sách các đối tượng bằng giải thuật tìm kiếm nhị phân thì danh sách các đối tượng này phải được sắp xếp trước đó. Tóm lại sắp xếp là một yêu cầu không thể thiếu trong khi thiết kế các phần mềm. Do đó việc nghiên cứu các phương pháp sắp xếp là rất cần thiết để vận dụng trong khi lập trình. Ta đã biết đến các phương pháp sắp xếp trong và trong các giải thuật mà chúng ta đề cập từ trước tới nay, chúng ta đã giả sử rằng số lượng các dữ liệu vào là khá nhỏ để có thể chứa hết ở bộ nhớ trong (main memory). Nhưng điều gì sẽ xảy ra nếu ta muốn xử lí phiếu điều tra dân số toàn quốc hay thông tin về quản lí đất đai cả nước chẳng hạn? Trong các bài toán như vậy số lượng dữ liệu vượt quá khả năng lưu trữ của bộ nhớ trong. Để có thể giải quyết các bài toán đó chúng ta phải dùng bộ nhớ ngoài để lưu trữ và xử lí. II. Phát biểu bài toán Các phương pháp như Bubble-Sort, QuickSort,…là sắp xếp trong làm việc với dữ liệu nhỏ. Nhiều ứng dụng sắp xếp quan trọng liên quan đến việc xử lí các tập tin có kích thước lớn, nên không có đủ bộ nhớ cho những tập tin quá lớn như vậy. Các phương pháp thích hợp cho những ứng dụng như vậy gọi là phương pháp sắp xếp ngoài, vì chúng liên quan đến xử lí dữ liệu bên ngoài đơn vị xử lí trung ương. Do đó chúng ta sử dụng sắp xếp ngoài để sắp xếp khi đối tượng cần sắp xếp lớn không thể lưu trữ trên bộ nhớ trong mà phải lưu trữ trên bộ nhớ ngoài. Nhóm sinh viên thực hiện: 10 Trang 2 Đề tài: Nghiên cứu sắp xếp ngoài GVHD: PGS-TSKH Trần Quốc Chiến III. Phương pháp nghiên cứu 1. Phương pháp Kiểu dữ liệu tập tin là kiểu thích hợp nhất cho việc biểu diễn dữ liệu được lưu trong bộ nhớ ngoài. Có thể xem một tập tin bao gồm nhiều mẫu tin được lưu trong các khối. Mỗi khối lưu một số nguyên vẹn các mẫu tin, không có mẫu tin nào bị chia cắt để lưu trên hai khối khác nhau. Ghi Ghi Đọc Đọc Mỗi lần đọc 1 mẫu tin Mỗi lần đọc 1 khối 2. Đánh giá các giải thuật xử lí ngoài Đối với bộ nhớ ngoài thì thời gian tìm một khối để đọc vào bộ nhớ trong là rất lớn so với thời gian thao tác trên dữ liệu khối đó. Vì vậy khi đánh giá các giải thuật thao tác trên bộ nhớ ngoài, chúng ta tập trung vào việc xét số lần đọc khối vào bộ nhớ trong và số lần ghi khối ra bộ nhớ ngoài ta gọi chung là phép truy xuất khối(block access). Vì kích thước các khối là cố định nên ta không thể tìm cách tăng kích thước một khối mà chúng ta phải tìm các giảm số lần truy xuất khối . Nhóm sinh viên thực hiện: 10 Trang 3 Bộ nhớ trong Bộ nhớ đệm Bộ nhớ ngoài Đề tài: Nghiên cứu sắp xếp ngoài GVHD: PGS-TSKH Trần Quốc Chiến IV. Thiết kế cấu trúc dữ liệu và giải thuật 1. sắp xếp bằng 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 2 tập tin phụ F1 và F2. Thực hiện luân phiên 2 công việc: - Tách tập tin lớn thành 2 tập tin con có thứ tự. - Trộn 2 tập tin con thành tập tin lớn có thứ tự. 1.2 Giải thuật Lặp lại các bước sau: Phân đoạn F thành F1 và F2 - Trộn F1 và F2 vào F Cho tới khi số đoạn trong F chỉ còn một. 1.2.a Giải thuật phân đoạn Phân file F thành 2 file F1 và F2. Bước 1: Mở file F để đọc, mở file F1 và F2 để ghi, khởi gán giá trị đầu số đoạn con = 0 { sodoancon:=0 }; Bước 2: Thực hiện cho tới khi đọc hết file F - Nếu chưa hết file F thực hiện việc đọc phần tử (PT) của F và ghi nó vào F1 cho đến khi gặp PT nhỏ hơn PT trước nó hoặc hết file F, tăng số đoạn con lên 1, {inc(sodoancon)}; - Nếu chưa hết file F thực hiện việc đọc PT để của F và ghi nó vào F2 cho đến khi gặp PT nhỏ hơn PT trước nó hoặc hết file F; tăng số đoạn con 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 là các số nguyên như sau: 3 65 6 15 29 20 25 5 31 40 12 50 67 45 9 18 34 17 11 98 8 3 65 6 15 29 20 25 5 31 40 12 50 67 45 9 18 34 17 11 98 8 Nhóm sinh viên thực hiện: 10 Trang 4 Đề tài: Nghiên cứu sắp xếp ngoài GVHD: PGS-TSKH Trần Quốc Chiến Phân file F thành 2 file F1 và F2 Lần 1: F1 F2 6 15 29 Lần 2: F1 3 65 20 25 F2 6 15 29 5 31 40 Lần 3: F1 3 65 20 25 12 50 67 F2 6 15 29 5 31 40 45 Lần 4: F1 3 65 20 25 12 50 67 9 18 34 F2 6 15 29 5 31 40 45 17 Lần 5: F1 3 65 20 25 12 50 67 9 18 34 11 98 F2 6 15 29 5 31 40 45 17 8  Số đoạn con: 10 1.2.b Giải thuật trộn Trộn các đoạn con có thứ tự trong file F1 và file F2 vào file F, biến numsubfile là số đoạn con có trong F. Bước 1: Mở file F1, F2 để đọc, mở file F để ghi; Nhóm sinh viên thực hiện: 10 Trang 5 3 65 Đề tài: Nghiên cứu sắp xếp ngoài GVHD: PGS-TSKH Trần Quốc Chiến Bước 2: Đọc PT đầu tiên của file F1 vào biến x và phần tử đầu tiên của F2 vào biến y. Thực hiện cho tới khi đọc hết file F1 và F2 (i) Thực hiện cho tới khi hết đoạn con trong F1 hoặc hết đoạn con trong F2 i 1. Nếu phần tử x của F1 < phần tử y của F2 thì di chuyển x vào F và đọc phần tử tiếp theo của F1. i 2. Nếu phần tử x của F1 > phần tử y của F2 thì di chuyển y vào F và đọc phần tử tiếp theo của F2. Bước 3: Nếu file F1 chưa kết thúc thì ghi các phần tử còn lại của nó sang F, ngược lại nếu file F2 chưa kết thúc thì ghi các phần tử còn lại của nó 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 là các số nguyên như sau: 3 65 6 15 29 20 25 5 31 40 12 50 67 45 9 18 34 17 11 98 8 Qua thủ tục phân đoạn ở ví dụ trong 2.2.1 ta có: F1 3 65 20 25 12 50 67 9 18 34 11 98 F2 6 15 29 5 31 40 45 17 8 Thực hiện trộn: 3 6 15 29 65 5 20 25 31 40 12 45 50 67 9 17 18 34 8 11 98 Giải thuật sắp xếp trộn thực hiện luân phiên 2 thủ tục phân đoạn và trộn. Sắp xếp bằng trộn tự nhiên file F : 3 65 6 15 29 20 25 5 31 40 12 50 67 45 9 18 34 17 11 98 8 Lần 1: - Phân đoạn: F1 3 65 20 25 12 50 67 9 18 34 11 98 Nhóm sinh viên thực hiện: 10 Trang 6 Đề tài: Nghiên cứu sắp xếp ngoài GVHD: PGS-TSKH Trần Quốc Chiến F2 6 15 29 5 31 40 45 17 8 - Trộn: 3 6 15 29 65 5 20 25 31 40 12 45 50 67 9 17 18 34 8 11 98 Lần 2: - Phân đoạn: F1 8 11 98 F2 - Trộn: 3 5 6 15 20 25 29 31 40 65 9 12 17 18 34 45 50 67 8 11 98 Lần 3: - Phân đoạn: F1 8 11 98 F2 - Trộn: Nhóm sinh viên thực hiện: 10 Trang 7 12 45 50 67 9 17 18 34 3 5 6 15 20 25 29 31 40 65 9 12 17 18 34 45 50 67 Đề tài: Nghiên cứu sắp xếp ngoài GVHD: PGS-TSKH Trần Quốc Chiến 3 5 6 9 12 15 17 18 20 25 29 31 34 40 45 50 65 67 8 11 98 Lần 4: - Phân đoạn: F1 3 5 6 9 12 15 17 18 20 25 29 31 34 40 45 50 65 67 F2 8 11 98 - Trộn: 3 5 6 8 9 11 12 15 17 18 20 25 29 31 34 40 45 50 65 67 98 z(F2); 1.3 Cài đặt chương trình a. Cài đặt chương trình phân đoạn Thủ tục phân đoạn Phân file F thành 2 file F1 và F2. Procedure phandoan(var F,F1,F2:fileType); Var kt:boolean; Begin Assign(F,'chinh'); Reset(F); Assign(F1,'phu1'); Rewrite(F1); Assign(F2,'phu2'); Rewrite(F2); Numsub:=0; while not eof(F) do begin Nhóm sinh viên thực hiện: 10 Trang 8 Đề tài: Nghiên cứu sắp xếp ngoài GVHD: PGS-TSKH Trần Quốc Chiến saodoancon(F,F1,kt); inc(numsub); if not eof(F) then begin saodoancon(F,F2,kt); inc(Numsub); end; end; close(F); close(F1); close(F2); End; Thủ tục sao 1 đoạn con từ file F vào file T Procedure SaoDoancon(var F,T:FileType; var kt:boolean); {Sao 1 doan con co thu tu F vao T} Begin kt:=false; while not kt do SaoBg(F,T,kt); End; {________________________________________________________} Procedure SaoBg(var F,T:fileType; var kt:boolean); Var V,S:infotype; Begin if not eof(F) then begin read(F,V); write(T,V); if eof(F) then kt:=true else Nhóm sinh viên thực hiện: 10 Trang 9 Đề tài: Nghiên cứu sắp xếp ngoài GVHD: PGS-TSKH Trần Quốc Chiến begin read(F,S); kt:=(S<V); seek(F,filepos(F)-1); end; end; End; b. Cài đặt chương trình trộn Giải thuật trộn các đoạn con có thứ tự trong file F1 và file F2 vào file F Procedure Tron(var F,F1,F2:fileType); Var kt1,kt2:boolean; v1,v2:infotype; Begin Assign(F,'chinh'); Rewrite(F); Assign(F1,'phu1'); Reset(F1); Assign(F2,'phu2'); Reset(F2); while not(eof(F1) or eof(F2)) do begin read(F1,v1); read(F2,v2); Seek(F1,filepos(F1)-1); Seek(F2,filepos(F2)-1); if v1<v2 then SaoBg(F1,F,kt1) else SaoBg(F2,F,kt2); end; while not eof(F1) do begin Saodoancon(F1,F,kt1); Nhóm sinh viên thực hiện: 10 Trang 10 [...]... khi đó ta được tập tin đã sắp xếp chính là 1 đường ghi trong F[h+1] Ví dụ: Lấy tập tin F có 21 mẫu tin với khóa là các số nguyên như ví dụ ban đầu Nhóm sinh viên thực hiện: 10 Trang 19 Đề tài: Nghiên cứu sắp xếp ngoài GVHD: PGS-TSKH Trần Quốc Chiến Ta sử dụng 6 tập tin để sắp xếp tập tin F Cho k=3 Ta lầ lượt đọc 3 mẫu tin của F vào bộ nhớ trong, dùng sắp xếp trong để sắp xếp và ghi luân phiên vào 3... là ta tăng được tốc độ sắp xếp trộn Vậy độ phức tạp của giải thuật này là: O(nlog(n/k)) b Ưu điểm, nhược điểm: ♣ Ưu điểm: ♦Chúng ta đã giảm được số lần truy xuất khối tức là tăng được tốc độ sắp xếp trộn ♦Chương trình ngắn gọn hơn,không phải đọc và ghi nhiều lần ♣ Nhược điểm: ♦ Tốn thời gian sắp xếp ở bộ nhớ trong Nhóm sinh viên thực hiện: 10 Trang 18 Đề tài: Nghiên cứu sắp xếp ngoài GVHD: PGS-TSKH Trần... 15 Đề tài: Nghiên cứu sắp xếp ngoài GVHD: PGS-TSKH Trần Quốc Chiến logn bước vậy tổng cộng chúng ta cần (2n/b)logn phép truy xuất khối vậy độ phức tạp của giải thuật này là: O(nlogn) b Ưu điểm và nhược điểm của giải thuật: Qua quá trình phân tích ta thấy giải thuật này có khả năng sắp xếp rất nhanh vì chỉ sắp xếp từng khối nhỏ và độ phức tạp của nó O(nlogn) nhỏ hơn nhiều so với các phương pháp sắp xếp. .. nhiều so với các phương pháp sắp xếp trong như sắp xếp chọn (Selection), sắp xếp xen (Insertion sort), sắp xếp nổi bọt (Bubble sort) có độ phức tạp là O(n) Tuy nhiên bên cạnh đó ta cũng thấy khả năng truy xuất khối của nó phải nhiều nên mất thời gian 3 Cải tiến sắp xếp trộn (phương pháp 3) 3.1 Tư tưởng Cũng giống như tư tưởng của sắp xếp trộn đầu tiên để sắp xếp tập tin F có n mẩu tin ta cũng sử dụng 4.. .Đề tài: Nghiên cứu sắp xếp ngoài GVHD: PGS-TSKH Trần Quốc Chiến end; while not eof(F2) do begin Saodoancon(F2,F,kt2); end; close(F); close(F1); close(F2); End; 1.4 Đánh giá giải thuật Trong GT phân đoạn hoặc trộn ta có thể dùng mảng hoặc DSLK để thay thế cho các file F1 và F2 nếu không gian bộ nhớ trong cho phép Độ phức tạp của GT này là O(nlogn) 2 sắp xếp ngoài bằng phương pháp... 17 Đề tài: Nghiên cứu sắp xếp ngoài GVHD: PGS-TSKH Trần Quốc Chiến Bước 3: Đổi vai trò của F1 và G1,F2 và G2 cho nhau Trộn các đường độ dài 12 trong 2 tập tin F1 và F2 được 1 đường ghi vào trong tập tin G1,còn G2 rỗng : 3 5 6 8 9 11 12 15 17 18 20 25 29 31 34 40 45 50 65 67 98 Tập tin G1 chứa các mẩu tin đã được sắp còn tập tin G2 rỗng 3.3 Đánh giá giải thuật a Độ phức tạp: Ta thấy quá trình sắp xếp. .. sinh viên thực hiện: 10 Trang 13 Đề tài: Nghiên cứu sắp xếp ngoài 8 11 17 34 98 GVHD: PGS-TSKH Trần Quốc Chiến F2 Bước 5: Đổi vai trò của F1 và G1, F2 và G2 cho nhau Trộn các đường có độ dài 16 trong tập tin F1 và F2 được một đường có độ dài 21 rồi ghi vào trong tập tin G1: G1 3 5 6 8 9 11 12 15 17 18 20 25 29 31 34 40 45 50 65 67 98 Tập tin G1 chứa các mẩu tin đã được sắp xếp còn tập tin G2 rỗng 2.3 Cài... thành 1 đường độ dài 23 và ghi vào trong tập tin F[4] F[4] 3 5 6 8 9 11 12 15 17 18 20 25 29 31 34 40 45 50 65 67 98 Tập tin F[4] chứa 21 mẫu tin đã được sắp xếp còn F[5], F[6] rỗng Nhóm sinh viên thực hiện: 10 Trang 20 Đề tài: Nghiên cứu sắp xếp ngoài GVHD: PGS-TSKH Trần Quốc Chiến 4.3 Cài đặt chương trình:( tham khảo chương trình chạy bằng C++) #include #include #include... điểm: Với bài toán dữ liệu lớn thì giải thuật này giúp: - Chúng ta giảm được số lần truy xuất khối đi rất nhiều tức là tăng được tốc độ sắp xếp trộn - Chương trình ngắn gọn hơn, không phải đọc và ghi nhiều lần Nhóm sinh viên thực hiện: 10 Trang 26 Đề tài: Nghiên cứu sắp xếp ngoài Nhóm sinh viên thực hiện: 10 GVHD: PGS-TSKH Trần Quốc Chiến Trang 27 ... tin G1,G2 Đổi vai trò của F1 cho G1,F2 cho G2 Nhóm sinh viên thực hiện: 10 Trang 16 Đề tài: Nghiên cứu sắp xếp ngoài GVHD: PGS-TSKH Trần Quốc Chiến Quá trình trên cứ tiếp tục và sau i bước thì độ dài của 1 đường là k*2i Nếu k*2i> n thì giải thuật kết thúc,lúc đó tập tin G2 sẽ rỗng và tập tin G1 chứa các mẩu tin được sắp Ví dụ minh họa: Lấy tập tin F có 21 mẫu tin với khóa là các số nguyên : 3 65 6 15 . gọi là phương pháp sắp xếp ngoài, vì chúng liên quan đến xử lí dữ liệu bên ngoài đơn vị xử lí trung ương. Do đó chúng ta sử dụng sắp xếp ngoài để sắp xếp khi đối tượng cần sắp xếp lớn không thể. nhớ ngoài Đề tài: Nghiên cứu sắp xếp ngoài GVHD: PGS-TSKH Trần Quốc Chiến IV. Thiết kế cấu trúc dữ liệu và giải thuật 1. sắp xếp bằng phương pháp trộn tự nhiên (Phương pháp 1) 1.1 Tư tưởng Sắp. gian sắp xếp ở bộ nhớ trong. Nhóm sinh viên thực hiện: 10 Trang 18 Đề tài: Nghiên cứu sắp xếp ngoài GVHD: PGS-TSKH Trần Quốc Chiến 4. Trộn nhiều đường (phương pháp 4) 4.1 Tư tưởng Sắp xếp tập

Ngày đăng: 02/08/2015, 10:46

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w