Luận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụng

79 4 0
Luận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụng

Đ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

Luận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụngLuận văn thạc sĩ: Tổ chức dữ liệu cho lớp thuật toán chia để trị và ứng dụng

1 ĐẠI HỌC THÁI NGUYÊN TRƢỜNG ĐẠI HỌC CÔNG NGHỆ THÔNG TIN&TRUYỀN THÔNG Đỗ Tuấn Anh TỔ CHỨC DỮ LIỆU CHO LỚP THUẬT TOÁN CHIA ĐỂ TRỊ VÀ ỨNG DỤNG Chun ngành: Khoa học máy tính Mã số: 60.48.01 TĨM TẮT LUẬN VĂN THẠC SĨ KHOA HỌC MÁY TÍNH Thái Nguyên - 2014 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ LỜI CAM ĐOAN Tôi xin cam đoan cơng trình nghiên cứu thân, xuất phát từ yêu cầu phát sinh công việc để hình thành hướng nghiên cứu Các số liệu có nguồn gốc rõ ràng tuân thủ nguyên tắc kết trình bày luận văn thu thập trình nghiên cứu trung thực chưa công bố trước Thái Nguyên, ngày 19 tháng năm 2014 Học viên thực hiên Đỗ Tuấn Anh Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ LỜI CẢM ƠN Đầu tiên, em xin gửi lời cảm ơn sâu sắc đến cán hướng dẫn khoa học, thầy giáo, PGS.TSKH Nguyễn Xuân Huy, người truyền cho em nguồn cảm hứng nghiên cứu khoa học, người định hướng cho em đến với lĩnh vực nghiên cứu Em xin bày tỏ lời cảm ơn tới thầy giáo, cô giáo giảng dạy em suốt hai năm học qua Em muốn gửi lời cảm ơn tới thành viên lớp có góp ý chun mơn động viên tinh thần đáng trân trọng Cuối cùng, em xin gửi lời cảm ơn sâu sắc tới tất người thân gia đình bạn bè em với động viên dành cho em công việc sống Học viên thực luận văn Đỗ Tuấn Anh Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ MỤC LỤC Trang Lời cam đoan Lời cảm ơn Mục lục iii Danh mục bảng v Danh mục hình vẽ .v MỞ ĐẦU CHƢƠNG CÁC CHIẾN LƢỢC THIẾT KẾ THUẬT TOÁN 1.1 Các bước giải tốn máy tính 1.2 Phân tích thời gian thực thuật toán 1.2.1 Độ phức tạp thuật toán .6 1.2.2 Xác định độ phức tạp thuật toán 1.2.3 Ký hiệu Big-O biểu diễn thời gian chạy thuật toán 10 1.2.4 Độ phức tạp thuật tốn với tình trạng liệu vào 13 1.2.5 Chi phí thực thuật toán 13 CHƢƠNG TỔ CHỨC DỮ LIỆU CHO LỚP THUẬT TOÁN CHIA ĐỂ TRỊ 14 2.1 Chiến lược chia để trị .14 2.2 Tổ chức liệu cho lớp thuật toán chia để trị 15 2.3 Định lý tổng qt tính độ phức tạp thuật tốn chia để trị 16 2.4 Một số lớp tốn điển hình 17 2.4.1 Lớp toán tìm kiếm 18 2.4.1.1 Thuật tốn tìm kiếm nhị phân .18 2.4.1.2 Bài tốn tìm Max .20 2.4.2 Lớp toán xếp .22 2.4.2.1 Thuật toán xếp trộn (Merge Sort) 22 2.4.2.2 Thuật toán xếp nhanh (Quick Sort) .24 2.4.3 Lớp toán tối ưu 27 2.4.3.1 Bài toán dãy dài 27 2.3.3.2 Bài toán tháp Hà Nội 29 2.3.3.5 Bài toán xếp lịch thi đấu 30 CHƢƠNG ỨNG DỤNG THUẬT TOÁN CHIA ĐỂ TRỊ GIẢI BÀI TOÁN NHÂN HAI SỐ NGUYÊN LỚN 32 3.1 Mơ tả tốn 32 3.2 Thuật toán nhân tự nhiên 32 3.3 Thuật toán nhân .33 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 3.4 Thuật toán nhân Karatsuba-Ofman 35 3.5 Thuật toán nhân dựa biến đổi Fourier nhanh .37 3.6 Thuật toán nhân chia để trị 40 3.6.1 Ý tưởng chung 40 3.6.2 Phân tích thuật tốn 41 3.6.3 Mơ hình thuật tốn chia để trị cho toán nhân hai số nguyên lớn .44 3.6.4 So sánh độ phức tạp thuật toán 46 3.7 Tổ chức liệu cho thuật toán chia để trị 46 3.7.1 Biểu diễn dạng bit 46 3.7.2 Biểu diễn dùng mảng xâu 47 3.8 Thực nghiệm đánh giá 51 3.8.1 Cài đặt C 51 3.8.2 Cài đặt C# 59 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN 64 TÀI LIỆU THAM KHẢO 65 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ DANH MỤC CÁC BẢNG Bảng 1.1 Các lớp độ phức tạp tính tốn 11 Bảng 1.2 Thời gian chạy lớp thuật toán 12 Bảng 2.1 Độ phức tạp thuật tốn tìm kiếm nhị phân 20 Bảng 2.2 Độ phức tạp thuật toán xếp nhanh 26 Bảng 3.1 So sánh độ phức tạp tính tốn thuật tốn nhân 46 DANH MỤC CÁC HÌNH Hình 2.1 Thuật toán chia để trị 14 Hình 2.2 Tổ chức liệu cho lớp toán chia để trị 15 Hình 2.3 Ví dụ thuật tốn xếp trộn 23 Hình 3.1 Thuật toán nhân Brute-force 33 Hình 3.2 Thuật tốn nhân chuẩn 34 Hình 3.3 Thuật tốn nhân SRMA 35 Hình 3.4 Thuật tốn nhân Karatsuba-Ofman 37 Hình 3.5 Thuật toán nhân FFT 39 Hình 3.6 Thuật tốn nhân chia để trị 45 Hình 3.7 Phép nhân chia để trị tổ chức dạng bit 46 Hình 3.8 Thuật toán nhân chia để trị biểu diễn bit 47 Hình 3.9 Ví dụ phép chia Ấn Độ Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ MỞ ĐẦU Ngày phương pháp áp dụng nhiều lĩnh vực đời sống Đặc biệt, phương pháp hiệu thiết kế thuật toán giải toán lớn, phức tạp Với toán đầu vào lớn ta chia thành phần nhỏ tìm lời giải cho toán nhỏ riêng biệt này, sau tổng hợp nghiệm riêng rẽ thành nghiệm tốn tồn cục Trong luận văn này, tơi tập trung phân tích việc tổ chức liệu cho lớp thuật toán chia để trị cách đánh giá độ phức tạp thuật toán chia để trị.Với mục tiêu áp dụng thiết kế thuật toán chia để trị để giải toán nhân hai số nguyên lớn, luận văn trình bày chương với bố cục sau: Chƣơng 1: Các chiến lƣợc thiết kế thuật toán Giới thiệu tổng quan bước giải tốn máy tính phân tích đánh giá thời gian thực thuật toán chiến lược thiết kế thuật toán Chƣơng 2: Tổ chức liệu cho lớp thuật tốn chia để trị.Trình bày ý tưởng, sở khoa học thuật toán chia để trị cách thức tổ chức liệu cho thuật toán chia để trị với toán kinh điển Chƣơng 3: Ứng dụng thuật toán chia để trị giải toán nhân hai số nguyên lớn Tập trung phân tích cách tiếp cận giải toán nhân hai số nguyên lớn Từ đề xuất thuật tốn dựa tư tưởng chia để trị để giải thực nghiệm so sánh với cách tiếp cận trước Cuối kết luận hƣớng phát triển:Tóm tắtnhững kết đạt được, hạn chế nêu lên hướng phát triển tương lai Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ CHƢƠNG CÁC CHIẾN LƢỢC THIẾT KẾ THUẬT TOÁN 1.1 Các bƣớc giải tốn máy tính Một thuật tốn thủ tục tính tốn định nghĩa xác, mà lấy giá trị tập giá trị, gọi đầu vào hay liệu vào tạo giá trị, tập giá trị, gọi đầu Miêu tả vấn đề thường xác định nói chungqua quan hệ đầu vào/đầu Một thuật toán dãy bước xác định để chuyển đổi liệu đầu vào thành liệu đầu Chúng ta xem thuật tốn cơng cụ để giải vấn đề tính tốn Việc trình bày rõ ràng vấn đề nói chung hình thành mối quan hệ mong muốn đầu vào/đầu Một thuật tốn mơ tả xác thủ tục tính tốn để đạt mối liên hệ liệu đầu vào liệu đầu 1.1.1 Xác định toán Việc xác định toán tức phải xác định xem ta phải giải vấn đề gì? với giả thiết cho lời giải cần phải đạt yêu cầu Khác với toán tuý toán học cần xác định rõ giả thiết kết luận không cần xác định yêu cầu lời giải, toán tin học ứng dụng thực tế cần tìm lời giải tốt tới mức đó, chí tồi mức chấp nhận Bởi lời giải tốt đòi hỏi nhiều thời gian chi phí Input → Process → Output (Dữ liệu vào →Xử lý →Kết ra) Ví dụ: Khi cài đặt hàm số phức tạp máy tính Nếu tính cách khai triển chuỗi vơ hạn độ xác cao thời gian chậm hàng tỉ lần so với phương pháp xấp xỉ Trên thực tế việc tính tốn ln ln cho phép chấp nhận sai số nên hàm số máy tính tính phương pháp xấp xỉ giải tích số Xác định u cầu tốn quan trọng ảnh hưởng tới cách thức giải chất lượng lời giải Một tốn thực tế thường cho thơng tin mơ hồ hình thức, ta phải phát biểu lại cách xác chặt chẽ để hiểu toán Trên thực tế, ta nên xét vài trường hợp cụ thể để thơng qua hiểu toán rõ thấy thao tác cần phải tiến hành Đối với toán đơn giản, đơi cần qua ví dụ ta đưa tốn quen thuộc để giải 1.1.2 Tìm cấu trúc liệu biểu diễn tốn Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ Khi giải toán, ta cần phải định nghĩa tập hợp liệu để biểu diễn tình trạng cụ thể Việc lựa chọn tuỳ thuộc vào vấn đề cần giải thao tác tiến hành liệu vào Có thuật tốn thích ứng với cách tổ chức liệu định, cách tổ chức liệu khác hiệu khơng thể thực Chính nên bước xây dựng cấu trúc liệu khơng thể tách rời bước tìm kiếm thuật toán giải vấn đề Các tiêu chuẩn lựa chọn cấu trúc liệu: - Phải biểu diễn đầy đủ thông tin nhập xuất toán - Phù hợp với thao tác thuật toán mà ta lựa chọn để giải toán - Phải cài đặt máy tính với ngơn ngữlập trình sửdụng Đối với sốbài tốn, trước tổchức dữliệu ta phải viết đoạn chương trình nhỏ để khảosátxem dữliệu cần lưu trữlớn tới mức độnào 1.1.3 Xây dựng thuật toán Thuật toán hệ thống chặt chẽ rõ ràng quy tắc nhằm xác định dãy thao tác cấu trúc liệu cho: Với liệu vào, sau số hữu hạn bước thực thao tác ra, ta đạt mục tiêu định.Các đặc trưng thuật tốn: Tính đơn định: Ở bước thuật toán, thao tác phải rõ ràng, không gây nên nhập nhằng, lộn xộn, tuỳ tiện, đa nghĩa Thực bước thuật tốn với liệu vào, cho kết Tính dừng: Thuật tốn khơng rơi vào q trình vơ hạn, phải dừng lại cho kết sau số hữu hạn bước Tính đúng: Sau thực tất bước thuật toán theo trình định, ta phải kết mong muốn với liệu đầu vào Kết kiểm chứng u cầu tốn Tính phổ dụng: Thuật tốn phải dễ sửa đổi để thích ứng với toán lớp tốn làm việc liệu khác Tính khả thi:Đối với tốn, có nhiều thuật tốn chúng phải cho output input Tuy nhiên chúng khác hiệu Hiệu thời gian tốc độ xử lý nhanh hay chậm Ta đánh giá vào số bước thực Hiệu không gian không gian lưu trữ theo số đối tượng dùng để ghi nhớ kết (kể kết trung gian) Trong Tin học có ngành chuyên đánh giá độ phức tạp giải thuật, chủ yếu đánh giá hiệu thời gian Thực tế sử dụng cho thấy thách thức không gian lưu trữ giải dễ thách thức thời gian thực Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 10 1.1.4 Lập trình Sau có thuật tốn, ta phải tiến hành lập trình thể thuật tốn Muốn lập trình đạt hiệu cao, cần phải có kỹ thuật lập trình tốt Kỹ thuật lập trình tốt thể kỹ viết chương trình, khả gỡ rối thao tác nhanh Lập trình tốt khơng phải cần nắm vững ngơn ngữ lập trình đủ mà phải biết cách viết chương trình uyển chuyển, phát triển bước để chuyển ý tưởng thành chương trình hồn chỉnh Kinh nghiệm cho thấy thuật toán hay cài đặt vụng nên chạy lại cho kết sai tốc độ chậm Thông thường, không nên cụ thể hố tồn chương trình mà nên tiến hành theo phương pháp tinh chế bước (Stepwiserefinement): - Ban đầu, chương trình thể ngơn ngữ tự nhiên, thể thuật toán với bước tổng thể, bước nêu lên công việc phải thực - Một công việc đơn giản đoạn chương trình học thuộc ta tiến hành viết mã lệnh ngôn ngữ lập trình - Một cơng việc phức tạp ta lại chia thành công việc nhỏ để lại tiếp tục với cơng việc nhỏ Trong trình tinh chế bước, ta phải đưa biểu diễn liệu Như với tinh chế công việc, liệu tinh chế dần, có cấu trúc hơn, thể rõ mối liên hệ liệu.Phương pháp tinh chếtừng bước thểhiện tưduy giải vấn đềtừtrên xuống, giúpcho người lập trình có định hướng thểhiện phong cách viết chương trình Tránhviệc mị mẫm, xố viết lại nhiều lần, biến chương trình thành tờgiấy nháp 1.1.5 Chạy kiểm thử 1.1.5.1 Chạy thử tìm lỗi Chương trình người viết ra, mà người nhầm lẫn Một chương trình viết xong chưa chạy máy tính kết mong muốn Kỹ tìm lỗi, sửa lỗi, điều chỉnh lại chương trình kỹ quan trọng người lập trình Kỹ có kinh nghiệm tìm sửa chữa lỗi mình.Có ba loại lỗi: - Lỗi cú pháp: Lỗi hay gặp lại dễ sửa nhất, cần nắm vững ngơn ngữ lập trình đủ Một người coi khơng biết lập trình sửa lỗi cú pháp - Lỗi cài đặt: Việc cài đặt thể khơng thuật tốn định, lỗi phải xem lại tổng thể chương trình, kết hợp với chức gỡ rối để sửa lại cho Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 65 Kịch 3: Input: số 1000 số -Thời gian thực hiện: 0.157s Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 66 Kịch 4:Nhân số 2000 chữ số -Input: số 2000 số Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 67 -Thời gian thực hiện: 1.042 giây Kịch 5:Nhân hai số 5000 chữ số -Input: số 5000 số -Num1: 2599830569877888278269428221642752006232505992505685889295636431807224918387508168442463096175 2645071829620406259524052715060610486050318728348276382757621322537385844563410552297039601824 8984984361543008819047090626470992519569266493011239813857131616411255130670288309368114729235 0025702486270799158479897114054161730071234231202135809223242312655616315542948583438071887907 5140245901023377323840787324787186240698970227117706319321734022505799460015926781376726221210 4205783683630250951779202250748346696462525454084274493510695150600972786057536199569005538679 5407681744802443535225584885995769092731030367772359645778787948035071575082535032898632404589 5598243176085969044169791618738993283910620831103810475946330492038066942096086838928671505951 4109975621504190058280411193906200709262247493304481187615860233445214525802642985060709341245 7930099562830313117366885751915651353104749583302155317875338966175111519021755649330902373494 7568250728821483457620981592706390501627359956921483881745921979876592412959264226532610844965 5330560382382808271594777451322142493737504366347641230839680710556942000798424934008070124226 8054241039348962651746802896737011265209298356598717489795641849792937304555001957698920030348 3284173094578415208174108966111657697671143910071201004209151692338375466213678563733021609988 9169453545032780578601648273221769802606361440603263939359332375698364136585280539910291370562 4570668116080267832367647266831325319145266900794574156995563253442312536026652567344571034489 3225336318036227518998024903859224141569632178487851226646332357884791387904654386214960531548 7173265449103449852542128801432673156268199636851603649366783456131703429831019395586164689391 0882270887532784366981643659142363001609681657984792732118109438480848971144589031804610332975 5131629527390897198888390811794104460683184376030847176806501720301922843726998754625196894094 9710370152901914623079970495510312155857105316285603284696305302307389558077020484656180319793 6534981595448877916946404380983107076650841323914686794178090751465245823400769670464670326638 0760808449848609054354168685751046727234945962574497125614627808992019700801520202690113820825 8173400030577011966785029194327162131702167700300438739096199826125043058782656338411705391612 5512691009340648815240201490510784486550498597569457045276884804918651199343974854638155380738 5419693171590477080714909946650302860918402144122159089675228893305861570418194732610445826552 3398483895486975858286309342650129475181936348877259139684948214541231696731536480114115069165 2872346064364671557159578705688738199339177951696597403018127650662547016358199880787203309455 6607601712466383911567471431945132028284492008888627473183080652614885161771855164380212565129 7874806643194352524122431097301188883717365492157904840285042367170226898949476674471179823846 2510584640637084733499601068333103067868142756427363881319487885330401465342823767881986629761 0838549351485990743483386487071371788942431356451298708889093620619364915342824249662312537819 6348458331351742775683101516032908460421876455141368075149317323870087337557877266063706878152 8410995648455445760258491227526849227001027680638420228522016184360410969693161225071069540316 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 68 6096120115248760106888576419087725518021013593600262995448253448543521153012842991260187150278 7383611403333990220554059532815646775153885994405874220641555781568174591341999473463741009595 5969260335903965524334122036308511201866709174269603063778755681701026350607067305932389961340 7950923287016027279820459651143553753097864433021873876777335140595505622990237332632965768133 7365859884155874806028591436772424316939960794574765085028914727655378379459371910837700308282 0176213087031022795161096202928541405933619254574989906246644841265211804433276386092566107158 2419939836634496774665279093978101639317890062004035158543041690432702567221611683434360955191 7597511761417333453227867323438971133471470100815499756432928048514417139368167187547520307925 9426309412509694297381930371443878319798964013436284657801174397785118092847511855767525967405 5425697313762208195731790173588263484145264502282597981982093584294482163518729558095112079267 6121655839110764857384570681249408390387336607185144639704928963678599968065764930847785365152 3475322335525767055840731354888350332871832249337985416919545943989833388707954221464623586435 6921050476220943937551133229566137714685998165093616730709543866077509213332725389374230923815 8443909250733748240713629880693613610112559676994978666616271484145287731493057723165366990353 2722035593269784295966890513044297239172109719876364689715311254024899745850588930498595823251 6312646311735644831173300178649902792671775723243565662984235924545282034595645990920149669429 9826694363861604887856263567748856093177664375222549588154447598478535276027080215208489307640 2597093957966038942825892306962067269255657881686826358934521472040275785653524400838911635718 1992863100461445950794646004645924711561995664374903749492728661653448592183668353072789614088 83333206176757812 -num2 1495369441860059813779789297616819677655056706052979781912150962937130280354304794710002638603 0253936809331859893109397981441734931992474450663129199455045572910284842176406899012433076227 1496575404885974897792031554855268481467499436416495113926085544817806015745668567041572635251 4465858604473206508032550589348599881678743369109149811460642052784089771422917444151379142346 5757098563012239164155875799479352533667678715237452655352131699775602697117840616299117620311 8480489761094622115846192860175725211188264259166267492428995258110836839076497911331308779949 7113241181620701537075570351402846171686111030032654516905132393906765656637330127262085507564 7555506321187475534683658318074908480834384731815036732634828583955161044563383458645555932626 6991668565796638264684404686625298858619620973715751663720971886357293197665431989159927747318 5165878816845974781435780684185989999957487383831378619253082976366822375147581555962699889179 9936863811479905417413893041900104361436509702432248713612735393747797344670573215467158837124 6649431940951731178168927368725123487729037716979965773863074170312303498869575232651282336303 5773335865616564354186934902785543579015098936239518077416979215584586579132992824281958203941 6749235148627494709871544555020100933246544735166204758852697035361763418960900693669216008327 6335967508917125134376523652964801905097756084431011387072336307415426137514586109286563840589 9047624663287724736360804765704738457498349462059668300682460680810553016181141151602605679574 0040655622679905115015547689743429451502517402040212885162329648479665386025481132940884586308 4135782921536214837268668224918407201653054777132438526115466039492575739192016933470193068779 3327522240219067467821916594951772124200497136066932646638083002369297298086106870476844804360 7886714239441360934565277860409493310547781225954105804505756294872598660676310834432069750046 6136527832774576454067138871969914952539044807173877833166877609340713399581584394432721844665 9563426840715030711070222428378638897951493613952668829798897534422626059331428625251962276364 3261924716294848381566926529703341950221409511421732846543604548175207505731060844137720865695 8180224305703332198545833201177001959694731153806438335206747091964409163183873100694928293938 4122823495555863036697471659428660153375694767964884757961167679121243440028060803325441354945 6098196632604839756376725273000059511010970162428705055270197622223021855658024687104335544437 8944169425684884000815428926782410396987333315428820533860060977842752054812402996259937871008 7898257189245049850198909277882352512729984742127680450824392870894600803888520014555934335971 9481075746213246805651350163563308100725764948311268234822501637453283225820881849606453267653 5194743132008055266063590834535094380003850039109510618566425872277166968928818852764380126290 5985942193778021424760539068017484358756194618314656471218118039863663105461283739860742984199 7514309800563753476098847162048024084206017584048380890354747389627362832173742647658834453063 1088855395244771215128662610577554973952543853157493575398455081916020756387754825722911462995 9573830176987083835697241666358144160235875212475527308247082566378796344385503730522351443708 5248009909380203707288264632614358321432421646474758581779379273787711138284057636642225697503 6416019294016390081028557048256053855874001700881088654869896568443072569570964594060699838926 6793486059059421264207090035352881784015144399076714770706583186958602234705999155280559159818 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 69 0751691309461348496698623528574084926552153715174302227170104806529827555871645655548655651379 6894228130585907963279591693153127385537915504305139241778224122264166888707590254339186101506 0863746079156962472868803002737181835764800517361362293272097864666618282807170950994325182586 2112857275386877828198053625783207675184392555330989527083393662182134933588727503843287271421 4998809581291065417268152657959250971824468843312858880150887388221061034946048394117193527340 3293012896725297262632231479350344860770189200228711727280744694520246536474683168581083789150 0329107342074937314814788177656523230817258373413715026851695500849050425519496830075479205266 4802355492330949582901902540110000531949620448375823368348626374459486370104038386643463775570 2150279868879831736802975645148670866366868498935279127637674838455487003717807541621108193250 0451458152686939788972837260816169766577003587059851122359323070088850008363994264651072287273 1962418093302330101175287326880074492475748784285483983867320650034526740142373977837632195111 3447393076114319524366256754477382584302212545897813368138475067522929127800802677805576775240 6341814804900169513527988934532877480102869828213238823944936837825225924767590190440979056743 4116208634661532264437633169790035015446526660783709640299285895702764613315509042135055117925 0410476874447442303287432058559473384299602757920630809915630565953647536601847186384983369412 4608532854592685582553705477203558891515273967068330509324599307015184379886050781984586886687 45134784549028993 -Output Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 70 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 71 3.8.2 Cài đặt C# Để kiểm chứng thêm thuật tốn, tơi cài đặt tiếp C# hai phép toán nhân chia số nguyên lớn Thuật toán chia sử dụng phép chia Ấn độ để kiểm tra ngược lại Giả sử, xét ví dụ sau: lấy 85434 chia cho 37 hình sau: Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 72 Hình 3.9Ví dụ phép chia Ấn Độ Ta lấy 37 nhân 1, nhân 2, nhân 4…rồi lấy 85434 trừ kết ghi nhớ bên cạnh Sau làm ta cộng tất số nhớ có kết quả.Kết kiểm tra số thực nghiệm kịch hoàn toàn theo kết phép nhân Điều khẳng định tính đắn thuật tốn nhân phương pháp Chia để trị trình bày Kịch 6: Nhân số50 chữ số với số 50 chữ số -Input -Số A: 31253614664505003412764546822764221796504010123746 Số B: 18079232013163190245025920649019581243044942630444 -Output -5650413507695853975337733260365231099546932637825947401449101799102239349906070599944335511869 23224 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 73 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 74 Kịch 7: Kiểm chứng lại Kịch phép chia ngược kết Kịch 8: Nhân số 100 chữ số với số 200 chữ số -Input -Số A: 7256118915611561561561561312312315678559563265265226325236323556110232313212312312312313132132 161156 Số B: 1261561561631231313213200326526522632523632355611023231321231231200312312315678559500789564123 3654631261561561631231313213200326526522632523632355611023231321231231200312312315678559500789 564123365463 -Output -9154040710560838345183830011366430412115600820506677351571273228272319216344811020164792562775 8224363597756153680541659673972744312536973279836364701478913531046277221548758972837918539194 7847813747154443715443119703314490142732946106561164235544194801561959773048949229542628026898 37440222200555228 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 75 Kịch 9:Nhân hai số 1000 chữ số với số 1000 chữ số Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 76 Kịch 10: Nhân hai số 2000 chữ số Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 77 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 78 KẾT LUẬN VÀ HƢỚNG PHÁT TRIỂN Trong luận văn này, học viên tập trung phân tích việc tổ chức liệu cho lớp thuật toán chia để trị cách đánh giá độ phức tạp thuật tốn chia để trị Vấn đề mà luận văn hướng đến giải áp dụng thiết kế thuật toán chia để trị để giải toán nhân hai số nguyên lớn – toán quan trọng có nhiều ứng dụng lĩnh vực tin học thưc tế Học viên phân tích, so sánh cách tiếp cận chia để trị với hướng tiếp cận trước thuật tốn Brust-Force, thuật toán nhân bản, thuật toán nhân KaratsubaOfman, thuật toán nhân dựa biến đổi Fourier Các kết thực nghiệm cho thấy thuật toán thiết kế cho hiệu tốt thực thi số nguyên lớn khắc phục nhược điểm thuật toán nhân Karatsuba-Ofman coi hiệu bị hạn chế với k=250 với hai cấu trúc liệu biểu diễn bit biểu diễn mảng xâu Hướng phát triển luận văn hướng đến tìm cách song song hóa thuật tốn để thực thi nhiều CPU lúc giảm thời gian thực thi thuật toán Mở rộng áp dụng cho lớp tốn có khơng gian tính tốn lớn phức tạp tốn kiểm tra số nguyên tố, toán nhân ma trận Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ 79 TÀI LIỆU THAM KHẢO Tiếng Việt [1] Nguyễn Xuân Huy, Sáng tạo thuật tốn lập trình, NXB Thơng tin truyền thơng 2011 [2] Lê Minh Hồng, Giải thuật & lập trình, Đại học sư Phạm Hà Nội, 1999 - 2002 [3] Đỗ Xuân Lôi, Cấu trúc liệu giải thuật, NXB Thống kê, 1999 Tiếng Anh [4] Anany Levitin, Introduction to the Design and Analysis of Algorithms, Villanova University, 2002 [5] G Brassard, Paul Bratley, Fundamental of Algorithmics, Prentice-Hall, 1996 Số hóa Trung tâm Học liệu http://www.lrc-tnu.edu.vn/ ... trị. Trình bày ý tưởng, sở khoa học thuật toán chia để trị cách thức tổ chức liệu cho thuật toán chia để trị với toán kinh điển Chƣơng 3: Ứng dụng thuật toán chia để trị giải toán nhân hai số nguyên lớn... điểm thuật toán đệ quy để đưa thuật tốn đệ quy đắn Khi đó, tổ chức liệu cho lớp tốn chia để trị mơ tả sau: Hình 2. 4Tổ chức liệu cho lớp tốn chia để trị Trong đó:  Bài tốn ban đầu chia thành k toán. .. 2.1 Chiến lược chia để trị .14 2.2 Tổ chức liệu cho lớp thuật toán chia để trị 15 2.3 Định lý tổng qt tính độ phức tạp thuật tốn chia để trị 16 2.4 Một số lớp tốn điển hình

Ngày đăng: 07/02/2023, 09:57

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

Tài liệu liên quan