Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 41 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
41
Dung lượng
752 KB
Nội dung
ĐỒÁNGIẢITHUẬT & LẬPTRÌNH Đề tài 39: Bài toán Mã Đi Tuần Knight’s Tour ĐồánGiảithuật & Lậptrình LỜI MỞ ĐẦU Ngày nay, Tin học ngày phát triển nhanh chóng ứng dụng rộng rãi lĩnh vực đời sống xã hội, việc học nắm bắt công nghệ đặc biệt công nghệ thông tin ngày trở nên thiết Đối với sinh viên ngành trở nên thiết Đối với sinh viên ngành phải tích cực học tập, nắm vững kiến thức cơng nghệ thơng tin, cấu trúc liệu giảithuật xem sở, tảng Cấu trúc liệu giúp cho sinh viên hiểu tầm quan trọng giảithuật cách tổ chức cấu trúc liệu để giải toán cụ thể Sau thời gian học tập nghiên cứu ngơn ngữ lậptrình C (C Programming Language), mơn Cấu trúc liệu, Phân tích thiết kế giải thuật, để nắm bắt kiến thức học cách tốt hơn, nhóm bọn em thực đề tài: “Mã Đi Tuần” (Knight’s Tour) Trong trình thực đề tài, chăm nghiên cứu tìm hiểu,song chắn khó tránh khỏi thiếu sót,vì vậy, chúng em mong nhận dẫn, ý kiến đóng góp quý thầy để chúng em ngày hồn thiện Đồng thời chúng em xin gửi lời cảm ơn sâu sắc chân thành đến cô Lê Thị Mỹ Hạnh giúp chúng em hồn thành đề tài Nhóm sinh viên thực Trang ĐồánGiảithuật & Lậptrình MỤC LỤC LỜI MỞ ĐẦU MỤC LỤC .3 DANH MỤC HÌNH VẼ Hình Vị trí qn cờ bắt đầu GIỚI THIỆU ĐỀ TÀI 1.1 Tên đề tài CƠ SỞ LÝ THUYẾT 2.1 Ý tưởng 2.2 Cơ sở lý thuyết .8 TỔ CHỨC CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN .9 3.1 Phát biểu toán Xác định đầu vào (Input): 3.2 Cấu trúc liệu 3.3 Thuật toán 12 CHƯƠNG TRÌNH VÀ KẾT QUẢ 14 4.1 Tổ chức chương trình 14 4.2 Ngôn ngữ cài đặt 22 4.3 Thực chương trình 23 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 40 5.1 Kết luận 40 5.2 Hướng phát triển: .40 TÀI LIỆU THAM KHẢO 41 [1] Giáo trình tốn rời rạc – Phan Thanh Tao – Đại học Bách Khoa – Đại học Đà Nẵng 41 [2] https://vi.wikipedia.org/wiki/Bài_toán_mã_đi_tuần .41 [3] Giảithuậtlậptrình – Lê Minh Hoàng 41 [4] Phân tích thiết kế giảithuật – Phạm Nguyên Khang, Đỗ Thanh Nghị .41 Trang ĐồánGiảithuật & Lậptrình Trang ĐồánGiảithuật & Lậptrình DANH MỤC HÌNH VẼ Hình Vị trí qn cờ bắt đầu Hình Cách mã Hình Thay đổi mã di chuyển Hình Mơ tả đỉnh bàn cờ 4*4 Trang ĐồánGiảithuật & Lậptrình GIỚI THIỆU ĐỀ TÀI 1.1 Tên đề tài ĐỀ TÀI 39: Bài toán Mã Đi Tuần: Con mã xuất phát từ vị trí bàn cờ vua, qua tất vị trí bàn cờ, cuối trở vị trí xuất phát Bài tốn “ MÃ ĐI TUẦN” ( Knight’s Tour) toán liên quan tới quân mã bàn cờ vua Quân mã đặt vị trí trống bàn cờ di chuyển theo luật cờ vua Nó nhảy qua bàn cờ xác lần Hành trình mã gọi “Hành trình đóng” (Closed Tour) vị trí kết thúc mã vị trí xuất phát ( để qn mã tiếp vòng liền sau đó) Nếu khơng gọi “ Hành trình mở” 1.2 Lý lựa chọn đề tài Bài toán mã tuần toán thú vị, tương đối kinh điển, có nhiều hướng giải quyết, nhóm em chọn đề tài “ MÃ ĐI TUẦN ” làm đề tài cho mơn học 1.3 Mục đích đề Đề tài “ Mã tuần ” nhằm mục đích: Giúp thân chúng em hiểu rõ hơn, sâu giảithuật lựa chọn cấu trúc liệu để giải tốn Tin học, từ nâng cao khả tự học, rèn luyện kỹ lậptrình thân Trang ĐồánGiảithuật & Lậptrình CƠ SỞ LÝ THUYẾT 2.1 Ý tưởng Giới thiệu bàn cờ: Theo Wikipedia có lẽ cờ vua xuất vào khoảng kỉ thứ phát triển trở thành mơn trò chơi nhiều người biết đến nay.Trò chơi diễn bàn cờ hình vng có hàng (đánh số từ tới 8) cột (đánh chữ từ a tới h) tạo thành bàn cờ có 64 vng với màu đen trắng xen kẽ Mỗi người bắt đầu với 16 quân cờ gồm vua, hậu, mã, tượng, xe tốt xếp theo quy luật bàn cờ Vị trí a h vị trí xe, b g vị trí mã, c f vị trí tượng, d vị trí hậu, e vị trí vua, hàng liền vị trí tốt (hình 1) Hình Vị trí qn cờ bắt đầu Trong bàn cờ vua, mã quân cờ có nước phức tạp Mã theo hình chữ L Tiến lùi sau sang trái phải ô Qua trái phải ô sau tiến lùi Mã di chuyển tới có vòng tròn đỏ hình Trang ĐồánGiảithuật & Lậptrình Hình Cách mã Ý tưởng thực hiện: Ta cho quân mã xuất phát ô bàn cờ, cho quân mã đến ô mà quân mã chưa qua, vị trí khơng tìm nước lùi qn mã vị trí trước tiếp tục hướng khác, quân mã thỏa mãn điều kiện toán 2.2 Cơ sở lý thuyết Bài toán “ Mã tuần ” dạng toán tổng quát tốn tốn tìm đường Hamiton Lý thuyết đồ thị [1] Bài tốn tìm hành trình đóng quân mã toán cụ thể tốn tìm chu trình Hamiltonian Đồ thị: Là cấu trúc rời rạc gồm đỉnh cạnh nối đỉnh Đường Hamilton: Đường qua tất đỉnh đồ thị, đỉnh lần Chu trình Hamilton: Chu trình qua tất đỉnh đồ thị, đỉnh lần Trang ĐồánGiảithuật & Lậptrình Để hiểu rõ Lý thuyết đồ thị chu trình Hamilton tìm đọc sách “ Tốn rời rạc ” mục tài liệu tham khảo Có nhiều thuật tốn áp dụng để tìm kiềm đường Hamilton quy hoạch động, thuật toán ngẫu nhiên, Heuristic, quay lui,… Tuy nhiên, báo cáo này, chúng em áp dụng thuật toán quay lui để tìm lời giải cho tốn “ Mã tuần” TỔ CHỨC CẤU TRÚC DỮ LIỆU VÀ THUẬT TOÁN 3.1 Phát biểu toán Xác định đầu vào (Input): - Một bàn cờ có kích thước n*n (với n số nguyên dương) - Tọa độ xuất phát quân mã Xác định đầu (Output): Một bảng vuông (bàn cờ) có đánh dấu vị trí nước theo thứ tự từ (vị trí xuất phát) đến n*n (vị trí kết thúc) quân mã 3.2 Cấu trúc liệu Trong sử dụng hai cấu trúc liệu mảng mảng chiều b[n] mảng hai chiều a[n][n] + Cấu trúc liệu mảng chiều b[n]: Ta coi bàn cờ n*n đồ thị vô hướng thừa nhận ô (i,j) bàn cờ đỉnh (i-1) *n+j đồ thị Với i,j chạy từ 1-> Ví dụ (1,n) đỉnh thứ (1-1)*n +n = n đồ thị Như việc tìm hành trình mã để hết bàn cờ tìm hành trình hết đỉnh đồ thị, đỉnh lần + Việc kiểm tra từ đỉnh u tới đỉnh v hay khơng ta thấy sau : Trang ĐồánGiảithuật & Lậptrình Giả sử tọa độ (x1,y1) có đỉnh đồ thị u -> (x1-1)*n + y1 = u Dễ thấy (u % n =0) x1= u /n, y1=n, (u % n != 0) x1= u/n +1, y1= u%n Giả sử tọa độ (x2, y2) có đỉnh đồ thị v -> (x2-1)*n + y2 = v Dễ thấy (v % n = 0) x2 = v /n, y2 = n , (v % n != 0) x2= v/n + 1, y2= v%n Ví dụ theo cách tính tọa độ (2,2) có đỉnh Có thể theo dõi Hình y(1,4) 10 11 12 13 14 15 16 x(1,4) Hình Mơ tả đỉnh bàn cờ 4*4 Từ ta kiểm tra từ u có đến v hay khơng dựa vào việc so sánh giá trị |x1-x2| * |y1-y2| với giá trị 2,nếu giá trị qn mã di chuyển từ u → v,và ngược lại Trang 10 ĐồánGiảithuật & Lậptrình } } } Void madituan(int x,int y,int k) { Toiuu(x,y); for(int i=1;i