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

Phương pháp quy hoạch động và vận dụng kết hợp giải các bài toán chuyên tin bậc thpt

86 24 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

Thông tin cơ bản

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

Nội dung

Quy hoạch động là một chuyên đề rất hay và mạnh của tin học đã vậy thực hiện quy hoạch động trên dãy bit lại còn cho kết quả khả quan hơn nữa Như chúng ta đã biết phép xử lí bit có thời gian thực hiện rất nhỏ nhỏ hơn phép số học toán thông thường Vì vậy trong luận văn này phạm vi dữ liệu mà tôi muốn đề cập đến là bit và quy hoạch động trên dãy bit Bên cạnh đó luận văn cũng trình bày một số cách quy hoạch trên dãy đã được sắp xếp cùng với một số bài toán điển hình dùng để minh họa cho quy hoạch động Các bài toán được phân tích thiết kế và cài đặt theo phương pháp quy hoạch động và phương pháp khác nhằm để so sánh và thấy được ưu điểm của phương pháp quy hoạch động chủ yếu là về mặt thời gian chạy của thuật toán Luận văn cũng đã cho thấy có sự cùng dạng của một lớp các bài toán có thể chuyển về xử lý bằng cách mô tả các trạng thái của bài toán bằng dãy bit và từ đó thực hiện quy hoạch động trên dãy bit đó để đạt được kết quả tối ưu

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC BÁCH KHOA THÁI PHONG NGHĨA THÁI PHONG NGHĨA * PHƯƠNG PHÁP QUY HOẠCH ĐỘNG VÀ VẬN DỤNG KẾT HỢP GIẢI CÁC BÀI TOÁN CHUYÊN TIN BẬC THPT KHOA HỌC MÁY TÍNH LUẬN VĂN THẠC SĨ KHOA HỌC CHUYÊN NGÀNH KHOA HỌC MÁY TÍNH * KHÓA K32 Đà Nẵng - Năm 2018 ĐẠI HỌC ĐÀ NẴNG TRƢỜNG ĐẠI HỌC BÁCH KHOA THÁI PHONG NGHĨA PHƢƠNG PHÁP QUY HOẠCH ĐỘNG VÀ VẬN DỤNG KẾT HỢP GIẢI CÁC BÀI TOÁN CHUYÊN TIN BẬC THPT Chuyên ngành : Khoa học máy tính Mã số: 60.48.01 LUẬN VĂN THẠC SỸ Khoa học máy tính NGƢỜI HƢỚNG DẪN KHOA HỌC: PGS TSKH TRẦN QUỐC CHIẾN Đà Nẵng – Năm 2018 i LỜI CAM ĐOAN Tôi cam đoan cơng trình nghiên cứu riêng tơi.Các số liệu, kết nêu luận văn trung thực chưa cơng bố cơng trình khác Tác giả Thái Phong Nghĩa ii MỤC LỤC Trang MỞ ĐẦU 1 Lý chọn đề tài Mục tiêu nghiên cứu Đối tƣợng phạm vi nghiên cứu Phƣơng pháp nghiên cứu Ý nghĩa khoa học thực tiễn đề tài CHƢƠNG 1: LÝ THUYẾT VỀ QUY HOẠCH ĐỘNG 1.1 Giới thiệu phƣơng pháp quy hoạch động 1.1.1 Bài toán tối ƣu 1.1.2 Nguyên lý Bellman 1.1.3 Bảng phƣơng án 1.2 Nhận dạng toán quy hoạch động 1.3 Ƣu điểm quy hoạch động 1.4 Các bƣớc thực quy hoạch động 1.4.1 Xây dựng công thức truy hồi 1.4.2 Tổ chức liệu chƣơng trình 1.4.3 Làm tốt (tối ƣu thuật toán đƣợc): 1.4.4 Truy vết tìm phƣơng án tối ƣu 1.5 Các lớp toán quy hoạch động ứng dụng 1.5.1 Dạng 1: Dãy đơn điệu dài 1.5.1.1 Mơ hình 1.5.1.2 Công thức QHĐ 1.5.1.3 Cài đặt 1.5.1.4 Một số toán biến thể lớp “dãy đơn điệu dài nhất” 1.5.2 Dạng 2: Chia kẹo 10 1.5.2 Mơ hình 10 1.5.2 Công thức 10 1.5.2 Cài đặt 10 1.5.2 Một số toán biến thể lớp với toán “chia kẹo” 11 1.5.3 Dạng 3: Xâu chung dài 12 1.5.3 Mơ hình 12 1.5.3 Công thức QHĐ 12 1.5.3 Cài đặt 12 1.5.3 Một số toán biến thể lớp “Xâu chung dài nhất” 13 1.5.4 Một số dạng khác: 14 1.6 Hạn chế quy hoạch động 14 CHƢƠNG 2: GIỚI THIỆU MỘT SỐ THUẬT TOÁN VÀ CẤU TRÚC DỮ LIỆU ĐỂ KẾT HỢP VỚI PHƢƠNG PHÁP QUY HOẠCH ĐỘNG 15 2.1 Bài toán 1: Phần thƣởng 15 2.2 Bài tốn 2: Đoạn liên tiếp có tổng lớn 17 iii 2.3 Quy hoạch động dựa toán đƣợc xếp 19 2.3.1 Sắp xếp 19 2.3.2 Phát biểu toán 20 2.3.3 Các thuật tốn xếp thơng dụng 20 2.3.3.1 Thuật toán xếp bọt (Bubble Sort) 20 2.3.3.2 Thuật toán xếp nhanh (Quick Sort) 22 2.3.3.4 Sắp xếp đếm phân phối (Distribution Counting) 24 2.3.3.5 Một số toán 24 2.4 Quy hoạch động kết hợp xử lý Bit để mơ tả trạng thái tốn 29 2.4.1 Bit thao tác xử lý Bit 29 2.4.1.1 Quy ƣớc vị trí bit 29 2.4.1.2 Các phép toán logic 29 2.4.1.3 Một số ứng dụng 31 2.4.2 Một số tốn lớp dùng quy hoạch động kết hợp bit 33 CHƢƠNG 3: CÀI ĐẶT CHƢƠNG TRÌNH MINH HỌA BẰNG FREE PASCAL 45 3.1 Bài toán : Robot 45 3.2 Bài toán : Đoạn gối dài 45 3.3 Bài toán : Chọn ô 46 3.4 Bài toán : Sherry 48 KẾT LUẬN VÀ KIẾN NGHỊ 51 Kết đạt đƣợc 51 Kiến nghị hƣớng phát triển 52 DANH MỤC TÀI LIỆU THAM KHẢO 53 PHỤ LỤC Code bài: “Phần thƣởng” Code bài: “Đoạn liên tiếp có tổng lớn nhất” Code bài: “Robot” Code bài: “Đoạn gối dài nhất” Code bài: “Chọn ô” Code bài: “Sherry” iv PHƢƠNG PHÁP QUY HOẠCH ĐỘNG VÀ VẬN DỤNG KẾT HỢP GIẢI CÁC BÀI TOÁN CHUYÊN TIN BẬC THPT Học viên: Thái Phong Nghĩa Chuyên ngành: Khoa học máy tính Mã số: 60.48.01 Trƣờng Đại học Bách khoa Tóm tắt - Quy hoạch động chuyên đề hay mạnh tin học, thực quy hoạch động dãy bit lại cho kết khả quan Nhƣ biết, phép xử lí bit có thời gian thực nhỏ, nhỏ phép số học tốn thơng thƣờng Vì vậy, luận văn này, phạm vi liệu mà muốn đề cập đến bit quy hoạch động dãy bit Bên cạnh luận văn trình bày số cách quy hoạch dãy đƣợc xếp với số tốn điển hình dùng để minh họa cho quy hoạch động Các tốn đƣợc phân tích, thiết kế cài đặt theo phƣơng pháp quy hoạch động phƣơng pháp khác nhằm để so sánh thấy đƣợc ƣu điểm phƣơng pháp quy hoạch động (chủ yếu mặt thời gian chạy thuật toán) Luận văn cho thấy có dạng lớp tốn chuyển xử lý cách mơ tả trạng thái toán dãy bit từ thực quy hoạch động dãy bit để đạt đƣợc kết tối ƣu Từ khóa – Quy hoạch động; xếp; xử lý bit; trạng thái toán; Bài toán tối ƣu DYNAMIC PROGRAMMING METHOD AND COMBINATION OF OTHERS TO SOLVE ADVANCED PROBLEMS IN INFORMATICS AT HIGH SCHOOL LEVEL Abstract – Dynamic programming is a great and powerful subject of informatics, so implementing dynamic programming on the series of bit is more important As we all know, bit processing has a very small execution time, which is smaller than regular arithmetic operations The dissertation, therefore, aims to delve into bit and dynamic programming on the series of bit In addition, the thesis also presents some of the planning methods on the designed series of bit along with some typical problems used to illustrate the dynamic programming The problems are analyzed, designed and implemented by dynamic programming and other methods to compare and find the advantages of the dynamic programming (mainly in terms of execution time of algorithms) The thesis also shows the similarity of a class of mathematical problems that can be transferred to the process by describing the states of the problem by the series of bit and from which dynamic programming on that series of bit is to achieve optimal results Keywords – Dynamic programming; sort; bit processing; the state of the problem; optimal problem v DANH MỤC CÁC KÝ HIỆU, CHỮ VIẾT TẮT Các ký hiệu O() A[i,j] B[i] Abs() Độ phức tạp thuật tốn Mảng chiều có tên A, chứa giá trị dòng i, cột j Mảng chiều có tên B, chứa giá trị cột i Hàm cho giá trị tuyệt đối Pascal Các chữ viết tắt Từ viết tắt Nội dung THPT Trung học phổ thông Bubble sort Quick Sort Distribution Counting Code Sắp xếp bọt Sắp xếp nhanh Diễn giải Trƣờng cấp hệ giáo dục phổ thông Tên thuật toán Tên thuật toán Đếm phân phối Tên thuật toán Mã lệnh Test Bộ liệu kiểm thử Input Dữ liệu vào Output Dữ liệu Các câu lệnh chƣơng trình Dùng kiểm tra tính đắn chƣơng trình Thơng thƣờng file tệp văn chứa liệu để chƣơng trình lấy liệu từ vào xử lý Thông thƣờng file tệp văn chứa liệu đƣợc chƣơng trình xuất kết theo yêu cầu đề vi DANH MỤC CÁC BẢNG Số hiệu bảng Tên bảng Trang 2.1 Bảng minh họa kết toán “Phần thưởng” 15 2.2 Bảng lưu giá trị F[i,j] toán “Phần thưởng” 16 2.3 Tìm giá trị hình vng lớn tốn “Phần thưởng” 17 2.4 Bảng phương án tính F[n,x] “Chọn ô” 36 2.5 Bảng lưu vết tốn “Chọn ơ” 38 2.7 Các bảng Fx, vet, V thể q trình truy vết cho tốn “Sherry” 41 vii DANH MỤC CÁC HÌNH Số hiệu hình Tên hình Trang 1.1 Các tiêu chí tốn tối ưu 2.6 Đồ thị biểu diễn đường thành phố toán “Sherry” 40 3.1 Kết chạy chương trình với m = n=5, “Robot” 45 3.2 3.3 3.4 3.5 3.6 3.7 3.8 3.9 3.10 3.11 Kết chạy chương trình với n=5, “Đoạn gối dài nhất” Kết chạy chương trình PP QHĐ kết hợp bit với n=3, “Chọn ơ” Kết chạy chương trình PP QHĐ thông thường với n=3, “Chọn ô” Kết chạy chương trình PP QHĐ kết hợp bit với n=20, “Chọn ơ” Kết chạy chương trình PP QHĐ thông thường với n=20, “Chọn ô” Kết chạy chương trình PP QHĐ kết hợp bit với n=6, “Sherry” Kết chạy chương trình PP Duyệt quay lui với n=6, “Sherry” Kết chạy chương trình PP QHĐ kết hợp bit với n=10, “Sherry” Kết chạy chương trình PP Duyệt quay lui với n=10, “Sherry” Kết chạy chương trình PP QHĐ kết hợp bit với n=16, “Sherry” 45 46 46 47 47 48 48 49 49 50 MỞ ĐẦU Lý chọn đề tài Hiện nhiệm vụ phát hiện, đào tạo bồi dƣỡng học sinh giỏi nhiệm vụ trọng tâm trƣờng THPT Chuyên tất tỉnh thành nƣớc, nhằm mục đích phát bồi dƣỡng đào tạo nhân tài, tạo đội ngũ học sinh chất lƣợng cao làm tiền đề để phát triển nâng cao bậc đại học, sau đại học cho em học sinh Môn Tin học tự hào môn học quan trọng khơng nên đƣợc đƣa vào chƣơng trình thi học sinh giỏi cấp năm nhƣ: thi học sinh giỏi cấp Tỉnh (thành phố), thi học sinh giỏi Olympic 30/04 (từ Đà Nẵng trở vào phía Nam), thi học sinh giỏi Quốc gia, bên cạnh cịn có thi Tin học trẻ khơng chun (cấp Tỉnh Tồn quốc) Cùng với nhiệm vụ quan trọng nƣớc đào tạo bồi dƣỡng nhân tài nói chung lĩnh vực khoa học tự nhiên khoa học xã hội, mơn tin học nói riêng đƣợc quan tâm Bộ giáo dục đào tạo, Sở giáo dục đào tạo tỉnh thành nƣớc, nên ln có kỳ thi học sinh giỏi môn tin học cho em học sinh, bên cạnh cịn có thi cho sinh viên bậc đại học nhƣ: Olympic Tin học sinh viên, Mùa hè sáng tạo, Nhân tài đất Việt, thi quốc tế: ACM ICPC (International Collegiate Programming Contest), Google Summer of code, Top Coder, Trong vai trò giáo viên Tin học giảng dạy trƣờng THPT Chuyên Nguyễn Thiện Thành – TP Trà Vinh, hàng năm phải tham gia vào công tác bồi dƣỡng học sinh giỏi môn, qua nhiều năm bồi dƣỡng, thân nhận thấy, cấu trúc đề thi học sinh giỏi mơn Tin học, số lƣợng tốn đề thi giải phƣơng pháp quy hoạch động thƣờng chiếm từ 30 – 70% đề thi, đề thi ban tổ chức thƣờng rãi chuyên mục phƣơng pháp nhƣ: duyệt, qui hoạch động thuật toán ứng dụng mơ hình đồ thị, nhiên có số tốn duyệt ứng dụng mơ hình đồ thị áp dụng phƣơng pháp quy hoạch động để giải Vì nói, quy hoạch động chuyên đề quan trọng mà học sinh thi tham gia đội tuyển học sinh giỏi phải nắm đƣợc muốn đạt thứ hạng cao kỳ thi Với lý thiết thực đó, tơi xin chọn thực đề tài: “PHƢƠNG PHÁP QUY HOẠCH ĐỘNG VÀ VẬN DỤNG KẾT HỢP GIẢI CÁC BÀI TOÁN CHUYÊN TIN BẬC THPT” getbit:=(x shr k)and 1; end; function ok(x:word):boolean; begin ok:=false; for k:=1 to if (getbit(k-1,x)=1) and (getbit(k,x)=1) then exit; ok:=true; end; function check(x,y:word):boolean; begin check:=false; for k:=0 to if (getbit(k,x)=1) and (getbit(k,y)=1) then exit; check:=true; end; function sum(i,x:integer):longint; begin t:=0; for k:=0 to if (getbit(k,x)=1) then begin t:=t+a[k+1,i]; end; sum:=t; end; procedure qhd; var max:longint; y,i,x:word; begin vc:=1000000000; for i:=1 to n for x:=0 to 15 if ok(x) then begin max:=-vc; for y:=1 to 15 if check(x,y) and ok(y) then if max0 then write('(',i,',',j,') '); end; begin clrscr; writeln('Giai bai toan Select bang phuong phap "Quy hoach dong_ket hop xu ly bit" '); writeln('Du lieu vao: file "Chon_o.inp", co cau truc nhu sau:'); writeln; writeln; writeln('20 '); writeln(' 38 27 -1 22 -1 18 45 10 39 27 33 12 12 27 3'); writeln(' 20 22 13 33 39 22 11 -5 35 35 39 13 9'); writeln(' 23 10 40 11 17 27 25 36 29 10 29 36 2'); writeln(' 17 17 11 24 47 -6 31 30 11 27 38 32 35 -4 36 20 42'); writeln; writeln; writeln('Ket qua tim duoc la: '); start := datetimetotimestamp(now); nhap; qhd; xuat; stop:=datetimetotimestamp(now); writeln; writeln('Thoi gian chay: ', stop.time-start.time,' milisecs'); readln; end Code bài: “Sherry” USES sysutils,dateutils,crt; const fi='lem3_16.INP'; fo='lem3_10.out'; var max = 16; vet,fx:array[0 65536,0 max] of longint; c:array[0 max,0 max] of longint; tt,v:array[0 max] of longint; f,g:text; n,dd,cc,dong,cot, min:longint; start,stop : ttimestamp; procedure docdl; var i,j :longint; begin assign(f,fi); reset(f); readln(f,n); for i:=1 to n begin for j:=1 to n read(f,c[i,j]); readln(f); end; for i:=0 to n tt[i]:=1 shl i; close(f); end; procedure xuat; var i,n:longint; begin { assign(g,fo); rewrite(g);} writeln(min); i:=0; while vet[dong,cot]>0 {bat dau truy vet} begin inc(i); v[i]:=cot; dd:=dong;cc:=cot; dong:= dd and (not (1 shl (cc-1))) ; {lui ve dong da luu bang cach tat bit cc-1} cot:=vet[dd,cc]; {lui ve cot da luu} end; inc(i);v[i]:=cot; {ket thuc truy vet luu vao mang chieu} n:=i; for i:=n downto if i>1 then write(v[i],' > ') else write(v[i]);{xuat nguoc lai duong di} {close(g);} end; Procedure qhd; Var i,j,k,X:longint; Begin Min:=1000000000; For i:=1 to tt[N]-1 For j:=1 to N Fx[i,j]:=Min; Fx[1,1]:=0; For j:=1 to N-1 Fx[tt[j],j+1]:=0; For i:=1 to tt[N]-1 For j:=1 to N If Fx[i,j]>=0 then For k:=1 to N If kj then If ((i shr (k-1)) And = 0) then Begin X:=i Or (1 Shl (k-1)); if Fx[X,k] > C[j,k]+Fx[i,j] then begin Fx[X,k]:= C[j,k]+Fx[i,j] ; vet[x,k]:=j; {luu vet} end ; End; For j:=1 to N If (Fx[tt[N]-1,j]>=0) and (Fx[tt[N]-1,j]

Ngày đăng: 22/04/2021, 15:36

TỪ KHÓA LIÊN QUAN

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

TÀI LIỆU LIÊN QUAN

w