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

(Luận văn) nghiên cứu phương pháp quay lui và ứng dụng giải bài toán sudoku

53 1 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

Thông tin cơ bản

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

Nội dung

ĐẠI HỌC ĐÀ NẴNG TRƯỜNG ĐẠI HỌC SƯ PHẠM KHOA TIN - - PHẠM THỊ THANH HIỀN lu an n va p ie gh tn to NGHIÊN CỨU PHƯƠNG PHÁP QUAY LUI VÀ ỨNG DỤNG GIẢI BÀI TOÁN SUDOKU d oa nl w ll u nf va an lu KHÓA LUẬN TỐT NGHIỆP oi m z at nh z m co l gm @ an Lu n va ac th si Mục lục MỞ ĐẦU I LÝ DO CHỌN ĐỀ TÀI: II MỤC TIÊU, NHIỆM VỤ: III PHƯƠNG PHÁP NGHIÊN CỨU: IV BỐ CỤC CỦA ĐỀ TÀI: Chương I: CƠ SỞ LÝ THUYẾT I CƠ SỞ LÝ THUYẾT: lu an Mảng: va n 1.1 Mơ hình quan niệm: tn to 1.2 Các đặc trưng bản: .3 p ie gh 1.3 Cấu trúc lưu trữ: 1.4 Các phép toán bản: .3 nl w Hàm đệ quy: d oa 2.1 Đệ quy gì? .4 an lu 2.2 Cấu trúc chương trình đệ quy: va 2.3 Đặc điểm: u nf 2.4 Ví dụ: ll Khử đệ quy: .6 oi m z at nh 3.1 Khái niệm: .7 3.2 Cách thực : .7 z II NGƠN NGỮ LẬP TRÌNH: .7 @ gm Vài nét Visual C#: .7 Chương II: m co l Đặc điểm ngôn ngữ C#: PHƯƠNG PHÁP QUAY LUI .10 an Lu I KHÁI NIỆM QUAY LUI: 10 n va ac th si * Tư tưởng thuật toán: 11 II MÔ HÌNH CỦA BÀI TỐN: 11 III ỨNG DỤNG: 12 Phương pháp : .12 Giải thuật tổng quát : 13 Chương III: BÀI TOÁN SUDOKU 15 I GIỚI THIỆU BÀI TOÁN: 15 Lịch sử đời: .15 lu Luật chơi: .16 an Các biến thể: 17 va n II XÂY DỰNG CẤU TRÚC DỮ LIỆU CHO BÀI TOÁN: 18 Tổng quan: .23 p ie gh tn to III THUẬT TOÁN: 23 1.1 Xác định toán: 23 oa nl w 1.1.1 Thông tin vào: 23 1.1.2 Thông tin ra: 23 d an lu 1.2 Cách xác định ô số bất kỳ: .23 u nf va 1.2.1 Xác định ô theo số thứ tự từ đến 81: 23 1.2.2 Xác định [hàng, cột]: .24 ll oi m 1.2.3 Xác định [vùng, số thứ tự vùng]: .24 z at nh Vấn đề đặt ra: 25 Giải vấn đề: 26 z 3.1 Vấn đề 1: 26 @ l gm 3.2 Vấn đề 2: 30 m co Giải thuật chính: 31 Các phương thức sử dụng chương trình: 32 an Lu Xây dựng hàm: 33 n va ac th si 6.1 Hàm kiểm tra cột: 33 6.2 Hàm kiểm tra hàng: .34 6.3 Hàm kiểm tra vùng: .35 6.4 Hàm giải chương trình thủ cơng: 36 6.5 Hàm giải chương trình phương pháp quay lui: .36 6.6 Hàm giải đến đáp án cần chọn: 38 6.7 Hàm đếm số đáp án: 38 IV GIỚI THIỆU CHƯƠNG TRÌNH GIẢI: 38 lu Tổng quan: .38 an Chức chính: 43 va n Bảng phím tắt: .44 gh tn to V THỬ NGHIỆM: .45 p ie KẾT LUẬN 48 d oa nl w TÀI LIỆU THAM KHẢO 49 ll u nf va an lu oi m z at nh z m co l gm @ an Lu n va ac th si MỞ ĐẦU I LÝ DO CHỌN ĐỀ TÀI: Ngày với phát triển không ngừng khoa học kỹ thuật, đặc biệt ngành mũi nhọn như: Điện Tử - Tin Học - Viễn Thông v.v Nếu không thường xuyên cập nhật thơng tin khơng bắt kịp đà phát triển giới Đất nước ngày tiến bộ, khoa học kĩ thuật ngày phát triển đòi hỏi người ngày phải có lực thật sự, phải có khả tư logic tốt để tiếp cận với cơng nghệ đại cách nhanh chóng Vấn đề đặt làm lu để phát triển khả tư người, chúng khơng nhận an n va trị chơi trí tuệ, trị chơi với số giúp rèn Và SuDoKu trị chơi trí tuệ tiếng, trị chơi khơng ồn gh tn to luyện trí não, tư logic p ie âm thầm phát triển khơng đơn trị chơi mà giúp kích w thích tư duy, suy nghĩ logic thông qua số Ngoài vấn oa nl đề trên, SuDoKu hấp dẫn giới trẻ lý chơi lúc d nơi, chơi xe buýt, chơi, chí dã ngoại, du lịch an lu Luật chơi SuDoKu đơn giản, đáp án lại khó giải, u nf va khơng cần dùng đến kiến thức số học hay tính tốn, SuDoKu thích ứng cho người, trẻ em có hội giải SuDoKu thành công người lớn ll oi m Trong thuật tốn quay lui thuật tốn điển hình để giải lớp toán z at nh liệt kê hay toán tối ưu như: toán người giao hàng, toán mã tuần, tốn hậu, tốn tìm đường mê cung Bằng việc liệt kê tình z huống, thử khả tìm thấy lời giải đúng, thuật tốn @ m co l theo chiều sâu tập hợp toán phần tử gm quay lui chia nhỏ toán, lời giải toán lớn kết việc tìm kiếm an Lu n va ac th -1- si Nhận thấy tư tưởng thuật tốn phù hợp với cách giải trị chơi, nên đề tài ”Nghiên cứu phương pháp quay lui ứng dụng giải toán SuDoku” thực nhằm tìm hiểu thuật tốn quay lui ứng dụng II MỤC TIÊU, NHIỆM VỤ: Đề tài thực nhằm đạt mục tiêu hiểu rõ, hiểu sâu sắc thuật toán quay lui Xây dựng thành cơng chương trình giải SuDoKu với nhiều đáp án với thời gian nhanh III PHƯƠNG PHÁP NGHIÊN CỨU: lu an - Tìm hiểu thơng tin mạng internet, sách, báo, tạp chí… n va - Thu thập ý kiến chuyên gia (giáo viên hướng dẫn, giáo viên - Kết hợp nghiên cứu lý thuyết với thực hành, rèn luyện kỹ phân tích chương ie gh tn to khoa, ý kiến bạn bè,…) p trình kỹ lập trình nl w IV BỐ CỤC CỦA ĐỀ TÀI: d oa Nội dung đề tài trình bày sau: va an lu MỞ ĐẦU u nf Chương I: CƠ SỞ LÝ THUYẾT ll Chương II: PHƯƠNG PHÁP QUAY LUI oi m KẾT LUẬN z at nh Chương III: BÀI TOÁN SUDOKU z m co l gm @ TÀI LIỆU THAM KHẢO an Lu n va ac th -2- si CƠ SỞ LÝ THUYẾT Chương I: I CƠ SỞ LÝ THUYẾT: Mảng: 1.1 Mơ hình quan niệm: Mảng dãy có thứ tự (về mặt vị trí) phần tử với hai đặc điểm sau : + Số lượng phần tử cố định + Mọi phần tử có kiểu liệu (dữ liệu sở mảng) lu an 1.2 Các đặc trưng bản: n va - Cho phép truy cập ngẫu nhiên đến phần tử Thời gian truy cập đến - Số lượng phần tử mảng cố định ie gh tn to phần tử p 1.3 Cấu trúc lưu trữ: nl w - Cấu trúc lưu trữ đơn giản dùng địa tính để thực lưu trữ d oa tìm kiếm phần tử, mảng chiều hay vectơ lu an - Các phần tử bố trí sát nhớ theo thứ tự tăng dần a2 … … an oi m a1 ll u nf va số nên dễ dàng tìm địa phần tử biết số z at nh 1.4 Các phép tốn bản: z - Thường có phép tạo lập (create) mảng, tìm kiếm (retrieve) phần tử @ gm mảng, cập nhật (update) phần tử mảng …Ngoài giá trị, phần tử l mảng đặc trưng số (index) thể thứ tự phần tử m co mảng Vectơ mảng chiều, phần tử ứng với số i Ma trận mở rộng mảng hai chiều , mảng ba chiều, …, mảng n chiều an Lu mảng hai chiều, phần tử aij ứng với hai số i j Tương tự người ta n va ac th -3- si Hàm đệ quy: 2.1 Đệ quy gì? Ta nói: - Một đối tượng đệ quy bao gồm phận định nghĩa dạng - Một thủ tục gọi đệ quy q trình thực phải gọi đến với kích thước nhỏ tham số - Trong thân hàm, gọi tới hàm để xử lý tốn gọi hàm đệ quy lu an Ví dụ: n va 1) Định nghĩa số tự nhiên: tn to - số tự nhiên - n số tự nhiên n-1 số tự nhiên p ie gh 2) Định nghĩa hàm giai thừa: w - 0! = oa nl - Nếu n > n! = n(n-1)! 2.2 Cấu trúc chương trình đệ quy: d va - Phần sở : an lu Một chương trình đệ quy gồm phần: ll u nf Trong đó, chứa tác động hàm thủ tục với số giá trị cụ thể - Phần đệ quy: z at nh Ví dụ : if n=1 then gt:=1; oi m ban đầu tham số (hay gọi trường hợp dừng) z Trong đó, tác động cần thực cho giá trị thời tham @ nhỏ tham số m co Ví dụ: if n>1 then gt:=n*gt(n-1); l gm số định nghĩa tác động định nghĩa trước với kích thước an Lu n va ac th -4- si 2.3 Đặc điểm: - Mỗi lần hàm tự gọi đệ quy đến máy tính tự tạo biến cục - Có lần hàm gọi đệ quy có nhiêu lần thoát khỏi hàm (kiểu lặp hàm) - Khi ngồi hàm đệ quy loạt biến cục tạo dùng đệ quy lúc giải phóng, chúng giải phóng trước biến cục (sinh đệ quy) tạo sau - Sử dụng đệ quy phương pháp làm cho chương trình ngắn gọn, dễ hiểu lu làm tốn nhớ thời gian an n va 2.4 Ví dụ: to Hàm tính giai thừa n (tính n!): gh tn Function giaithua(n:word):integer; p ie begin if n=0 then giaithua:=1 nl w else giaithua:=giaithua(n-1)*n; d oa end; an lu Ví dụ: Tính n! =3 va Ta có giá trị truyền vào hàm gt qua biến n ll u nf Trong ví dụ này, qui trình thực sau: - Thì máy ghi nhớ là: z at nh n := gt(3); oi m - Khi có lệnh gọi hàm, chẳng hạn: z - Kế tiếp máy lại ghi nhớ: an Lu - Theo định nghĩa hàm thì: m co gt(2) := * gt(1); tính gt(1) l gm @ gt(3) := * gt(2); tính gt(2) n va ac th -5- si gt(1) := 1; - Máy quay ngược lại: gt(2) := * 1; cho kết - Tiếp tục: - gt(3) := * 2; cho kết - Như kết cuối trả Ta có: 3! = Nhận xét lu  Ưu điểm: an - Điểm mạnh lớn nhất: chương trình, code trở nên ngắn gọn, dễ hiểu, va n thuận lợi cho việc chỉnh sửa  Nhược điểm: p ie gh tn to - Dễ chuyển thành chương trình ngơn ngữ lập trình - Nhược điểm lớn tốn nhớ nl w - Mất nhiều thời gian xử lý, làm giảm tốc độ chạy chương trình d oa - Khơng áp dụng cho ngơn ngữ lập trình an lu Đệ quy khơng phương pháp lập trình quan trọng mà va phương pháp suy nghĩ để giải vấn đề cách tổng quát dựa ý tưởng: u nf + Đơn giản hố cơng việc ll + Phân vùng để xử lý oi m z at nh Khử đệ quy: Đệ quy tim nghiên cứu lý thuyết thực hành tính tốn, thể nhiều sức mạnh có ưu điểm nhiều tốn z Nhưng có đơi khi, hạn hẹp nhớ dành cho chương trình khơng cho @ gm phép làm điều đó.Vì vấn đề khử đệ quy lại cần quan tâm, xem m co l xét an Lu n va ac th -6- si push(tou(i, o)); } } } 6.3 Hàm kiểm tra vùng: void checkarea() { int k, value, o=0, count, b, i, j; for (k = 1; k

Ngày đăng: 17/07/2023, 09:36