Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 22 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
22
Dung lượng
4,33 MB
Nội dung
TRƯỜNG ĐẠI HỌC ĐIỆN LỰC KHOA CÔNG NGHỆ THÔNG TIN BÁO CÁO CHUN ĐỀ HỌC PHẦN MƠN NHẬP MƠN TRÍ TUỆ NHÂN TẠO ĐỀ TÀI: Thuật toán A* ứng dụng toán ghép tranh Sinh viên thực : NGUYỄN QUỐC PHONG : HỒ VĂN NGUYÊN Giảng viên hướng dẫn : PHẠM HỒNG ĐỨC Ngành : CÔNG NGHỆ THÔNG TIN Chuyên ngành : CÔNG NGHỆ PHẦN MỀM Lớp : D14CNPM6 Khóa : 2019-2024 PHIẾU CHẤM ĐIỂM Sinh viên thực hiện: Họ tên Chữ ký Ghi Nguyễn Quốc Phong Hồ Văn Nguyên Giảng viên chấm: Họ tên Điểm Chữ ký Giảng viên chấm 1: Giảng viên chấm 2: Ghi LỜI MỞ ĐẦU Ngày nay, bước vào kỷ 21, kỷ nguyên Cơng nghệ thơng tin, đặc biệt trí tuệ nhân yếu tố quan trọng định thành cơng ngành hay quốc gia Trí tuệ nhân tạo làm thay đổi sống chúng ta, với phát triển mạnh mẽ việc áp dụng nghiên cứu trí tuệ nhân tạo áp dụng cho sống Tất ngành như: Quân đội, y tế, giáo dục, kinh tế thương mại, tài chính,… Đều áp dụng trí tuệ nhân cách rộng rãi, Việc áp dụng trí tuệ nhân tạo để giải vấn đề xã hội việc phát triển kinh tế nhà nước khuyến khích đầu tư lớn Trên giới Việt Nam, CNTT có ảnh hưởng mạnh mẽ đến phát triển đất nước giới đặc biệt trí tuệ nhân tạo Nó chở thành yếu tố khơng thể thiếu có tính định đến thành cơng hay thất bại nhiều ngành nước ta, CNTT phát triển với tốc độ mạnh mẽ ứng dụng rộng rãi tất lĩnh vực, đặc biệt công tác ứng dụng công nghệ vào sống Như biết, sức mạnh kinh tế phụ thuộc lớn vào hoạt động nước doanh nghiệp, thành công kinh doanh doanh nghiệp mục tiêu riêng doanh nghiệp, mà cịn nhân tố định vị đất nước trường quốc tế Việc đưa AI vào áp dụng cho doanh nghiệp ngành y tế, công nghiệp nặng ưu tiên phát triển mạnh mẽ Tại Việt Nam, Nhà nước vào phát triển dịch vụ, đầu tư mạnh mẽ vào trí tuệ nhân tạo hay cịn gọi AI Vì thế, việc đầu phát triển xu hot ưu chuộng Chính thơng qua việc học mơn trí tuệ nhân tạo (AI) nhóm em nghĩ ý tưởng nhỏ áp dụng thuật tốn học để làm Game xếp hình số Phục vụ cho việc chứng minh áp dụng trí tuệ nhân tạo mang lại lợi ích tối ưu khơng gian thời gian cho người LỜI CẢM ƠN Trong thời đại công nghệ 4.0 ngày phát triển, ứng dụng trí tuệ nhân tạo vào đời sống xem xu phát triển mạnh mẽ Việc tự động hóa hành vi thơng minh trở thành cách mạng ngành CNTT Vì chúng em thực đồ án trí tuệ nhân tạo áp dụng thuật tốn “Breadth First Search” “Best First Search” để làm trò chơi ghép tranh ô số, phục vụ cho việc chứng minh áp dụng trí tuệ nhân tạo mang lại lợi ích tối ưu không gian thời gian cho người Với hướng dẫn, động viên tận tình thầy Phạm Hồng Đức, chúng em hiểu cách thức hoạt động thuật tốn hồn thành báo cáo đồ án Do chưa có nhiều kinh nghiệm nghiên cứu, thực hành nên chúng em khơng tránh khỏi thiếu sót Chúng em mong nhận thơng cảm góp ý thầy để đề tài chúng em hoàn thiện Chúng em xin chân thành cảm ơn! MỤC LỤC Tran Chương 1: Giới thiệu mơ tả tốn thực tế giải 1.1 Tên đề tài 1.2 Lý chọn đề tài 1.3 Mơ tả tốn thực tế giải Chương 2: Các chi tiết phương pháp dùng để giải toán 2.1 Thuật toán Breadth First Search 2.2 Thuật tốn Best First Search Chương 3: Các chức trò chơi 3.1 Tổng quan giao diện 3.2 Chức random hình ảnh 3 Chức đếm bước 3.4 Chức chơi lại 3.5 Chức tạm dừng 3.6 Chức giải BFS 3.7 Chức giải tối ưu 3.8 Chức thoát 3.9 Chức lui tới 3.10 Chức tính thời gian Chương 4: Các vấn đề khó khăn, tranh luận hướng phát triển CHƯƠNG 1: GIỚI THIỆU VÀ MÔ TẢ BÀI TOÁN THỰC TẾ ĐƯỢC GIẢI QUYẾT Tên đề tài 1.1 1.2 Game Ghép Tranh ô số Lý chọn đề tài - 1.3 Mô tả khác nhau, thời gian tìm kiếm, độ tối ưu hai thuật tốn “Breadth First Search” “Best First Search” thơng qua trị chơi Ghép Tranh số Mơ tả tốn thực tế giải - Vị trí hình trị chơi nằm ngẫu nhiên trộn lẫn ơ, có đen để người dùng dịch chuyển bước Mỗi lần di chuyển người dùng bước theo chiều qua trái, qua phải, lên xuống để ghép thành hình hồn chỉnh theo hình mẫu cho theo Người dùng khơng chéo - Trong q trình chơi có trường hợp người dùng khơng thể đến trạng thái hồn chỉnh hình Vì áp dụng trí tuệ nhân tạo vào trò chơi này, cụ thể chúng em áp dụng thuật toán Breadth-FirstSearch Best-First-Search game để đưa người chơi đến trạng thái hoàn chỉnh (giải đường đến trạng thái hồn chỉnh) - Vậy tốn thực tế tìm đường đến trạng thái hồn thành game ghép tranh số, đưa trạng thái ngẫu nhiên chưa hoàn chỉnh tranh tranh hoàn chỉnh áp dụng thuật tốn trí tuệ nhân tạo CHƯƠNG 2: CÁC CHI TIẾT CỦA PHƯƠNG PHÁP DÙNG ĐỂ GIẢI QUYẾT BÀI TỐN Thuật tốn Breadth First Search: 2.1 - Đây thuật tốn tìm đường từ đỉnh xuất phát đến đỉnh kết thúc duyệt theo chiều rộng - Đây thuật toán nằm nhóm thuật tốn tìm kiếm mù, thuật tốn khơng quan tâm đến trọng số đường mà duyệt theo đỉnh kề liên tiếp - Xuất phát tử đỉnh tới đỉnh kề nó, tiếp tục khơng cịn đỉnh để - Trong trình đến đỉnh kề, tiến hành lưu lại đỉnh kề để ngược lại từ đỉnh kết thúc đến đỉnh xuất phát ta có đường ngắn - Mơ tả thuật tốn: Cách đỉnh xét khơng thể xét lại lần Cơ chế lưu lại đỉnh kề lưu đỉnh kề thành danh sách lấy từ từ danh sách đỉnh kề để xét, mà đỉnh kề đỉnh xét thêm vào danh sách thêm vào cuối danh sách hay gọi chế Queue(hàng đợi) Cơ chết có nghĩa thêm phần tử phần tử thêm cuối danh sách hàng đợi, lấy phần tử lấy đầu danh sách hàng đợi Đó điểm bật để phân biệt thuật toán với thuật toán khác Ưu điểm o Dễ cài đặt o Nếu số đỉnh hữu hạn, thuật tốn chắn tìm kết Khuyết điểm o Mang tính chất vét cạn, không nên áp dụng duyệt số đỉnh lớn o Mang tính chất mù quáng, duyệt tất đỉnh, không ý đến thông tin đỉnh để duyệt hiệu quả, dẫn đến duyệt qua đỉnh không cần thiết o Chiếm thời gian không gian nhớ số đình duyệt nhiều - Chi tiết chạy bước thuật toán BFS: Breadth_First_Search (BFS) Begin Bước 1: Khởi tạo danh sách L chứa trạng thái ban đầu Bước 2: Loop 2.1 If L rỗng then {Thơng báo tìm kiếm thất bại; Stop}; 2.2 Loại trạng thái u đầu danh sách L; 2.3 If u trạng thái kết thúc then {Thông báo tìm kiếm thành cơng; Stop}; 2.4 for trạng thái v kề với trạng thái u {Đặt v vào cuối danh sách L; father(v) = u}; Ví dụ 1: Trong ví dụ trên, trạng thái danh sách kề thêm vào cuối danh sách L(Queue hàng đợi), lần đỉnh duyệt lấy trạng thái danh sách L để duyệt Cứ tiếp tục đến đỉnh kết thúc cần tìm Danh sách L (Queue hàng đợi ) rỗng Thuật toán Best First Search 2.2 - Tìm kiếm theo bề rộng hướng dẫn hàm đánh giá hay gọi hàm Heuristic Nằm nhóm thuật tốn tìm kiếm kinh nghiệm - Hàm đánh giá tính theo phương thức: đếm số ô sai vị trí so với trạng thái người dùng mong muốn tính theo khoảng cách Mahattan Trong trị chơi hàm đánh giá (Heuristic) tính theo đếm số sai vị trí so với trạng thái đích mong muốn - Mơ tả thuật tốn: Cũng tương tự thuật toán Breadth First Search Nhưng Best First Search khác chổ: Đỉnh chon để phát triển đỉnh tốt xác định hàm đánh giá (đỉnh có giá trị hàm đánh giá nhỏ nhất) Có nghĩa lần thêm vào hàng đợi danh sách trạng thái xếp theo thứ tự tăng dần dựa theo hàm đánh giá, hàm đánh giá thấp tương đương số bị sai vị trí Từ ta chọn trạng thái tốt để tiếp - Ưu điểm thuật tốn duyệt qua đỉnh có hàm đánh giá nên duyệt việc xếp hàm đánh giá giúp tìm tới đỉnh cuối nhanh tốn thời gian Ưu điểm o Khá dễ cài đặt o Nếu số đỉnh hữu hạn, thuật tốn chắn tìm kết o Có xét thêm hàm Heuristic nên duyệt trạng thái Breadth First Search => nhanh hơn, tốn không gian Khuyết điểm o Chiếm thời gian không gian nhớ số đỉnh duyệt lớn - Chi tiết chạy bước thuật toán Best First Search: Begin Bước 1: Khởi tạo danh sách L chứa trạng thái ban đầu Bước 2: Loop 2.1 If L rỗng then {Thông báo tìm kiếm thất bại; Stop}; 2.2 Loại trạng thái u đầu danh sách L; 2.3 If u trạng thái kết thúc then {Thơng báo tìm kiếm thành cơng; Stop}; 2.4 for trạng thái v kề với trạng thái u Xen v vào danh sách L cho L theo thứ tự tăng dần hàm đánh giá; End; Ví dụ 2: Trong ví dụ ta thấy đường cuối A->E->F->I ví dụ Nhưng số trạng thái mà thuật tốn phải duyệt có đỉnh tìm đường Do danh sách L (Queue hàng đợi) lúc đưa trạng thái tốt đầu danh sách để lấy duyệt tiếp 2.3 Ứng dụng thuật toán vào Game ghép tranh ô số - Áp dụng thuật tốn nói vào game số Lúc trạng thái hay đỉnh mà thuật tốn duyệt qua danh sách số từ đến 9, có ô số đánh dấu ô đen trống người chơi di chuyển - Mỗi lần thuật toán duyệt qua trạng thái, đưa vào hàng đợi, ta có danh sách chứa danh sách - Kết đường tìm trả danh sách trạng thái mà tìm ra(cũng danh sách số từ đến 9) *Hướng dẫn chơi game Ghép Tranh ô số: - Khi người dùng khởi động chương trình lên Màn hình hiển thị bên táy phải 10 hình gốc(hình hồn chỉnh sau ghi ghép tranh), bên tay trái ô số chứa phần nhỏ cắt từ tranh hoàn chỉnh, ô số có ô màu đen trống để người chơi di chuyển ô lân cận, ô trộn lẫn ngẫu nhiên không hoàn chỉnh thành tranh - Nhiệm vụ người chơi di chuyển ô lên, xuống, trái, phải không chéo dựa theo ô trống đen, cho ghép thành tranh hoàn chỉnh hình bên tay phải - Khi người chơi bắt đầu chơi, thời gian tính, số bước đếm nhằm thống kê thời gian số bước người chơi đến kết cuối - Người chơi tạm ngưng lúc chơi, chọn nút tạm ngưng hình ô số ngẫu nhiên bị tắt đi, phòng trường hợp người chơi xem trước đường - Người chơi chọn nút chơi lại để bắt đầu chơi lại từ đầu, lúc ô số trộn ngẫu nhiên lại lần thời gian bước cài đặt trạng thái ban đầu - Nếu người chơi khơng thể đến ghép thành tranh hồn chỉnh người chơi chọn nút giải theo BFS hay giải Tối Ưu hình, sau chọn thuật toán giải số bước hiển thị lên, thời gian số trạng thái duyệt qua hiển thị lên, từ người chơi click vào nút tới để bắt đầu xem kết bước thuật toán hồn chỉnh tranh Người dùng lui để xem lại bước trước - Người dùng khỏi chương trình CHƯƠNG 3: CÁC CHỨC NĂNG CHÍNH CỦA TRỊ CHƠI 11 3.1 Tổng quan chức năng, giao diện 12 Chức random hình ảnh lên hình 3.2 - Khi bước vào trị chơi hình ảnh random cách ngẫu nhiên 3.3 Chức đếm bước - Khi di chuyển trang thái để xếp hình ảnh lần di chuyển tính bước - Chức giúp đánh giá bạn sử dụng trạng thái để ghép thành cơng tấp hình Hay gọi cách khác bạn sử dụng trang thái để hoàn thành trị chơi - Ngồi đánh giá chức cịn giúp bạn ghi nhận lại số bước để lần tới bạn cải thiện số trạng thái dùng để chiến thắng trị chơi Một bạn dùng trạng thái để chiến thắng bạn đánh giá 13 khả chơi trị chơi 3.4 Chức chơi lại - Khi người chơi muốn chơi gặp khó khăn việc di chuyển hình trị chơi người chơi tìm cách để chiến thắng trị chơi mà tốt thời gian tốn số bươc để đến chiến thắng người chơi chơi lại từ đầu - Khi bạn cảm thấy chơi hồi mà khơng chiến thắng bạn bấm chơi lại để bắt đầu lại từ đầu Khi có thơng báo hỏi bạn có muốn chơi lại từ đầu hay khơng - Khi bạn chắn chơi lại từ đầu hình chơi random lại trạng thái cách ngẫu nhiên 14 3.5 Chức tạm dừng - Khi vào hình chơi game nút tạm dừng bị ẩn Tới bạn chơi bước thời gian tính bạn tạm dừng - Chức giúp bạn chơi bạn tạm dừng - Để đảm báo tính hấp dẫn thú vị cho trị chơi bạn bấm tạm dừng hình ảnh hình bạn cịn để lại hình mẫu bên phải mà thơi Cịn trạng thái bạn xếp dở biến Khiến cho bạn khơng thể tạm dừng để suy nghĩ bước - Khi button tạm dừng chuyển thành tiếp tục để người chơi chọn chơi tiếp 3.6 Chức giải BFS - Click vào button giải BFS người dừng phải đợi chút để máy tự giải Tới phần đếm bước hiển thị số bước: - Thì thuật tốn giải hiển thị hình thời gian số bước duyệt để chọn trạng thái cuối để người chơi đến chiến thắng 15 3.7 Chức giải tối ưu - Khi bạn click vào button giải tối ưu người dùng chờ chút Tới mà phần đến bước hiển thị số bước trị chơi tự máy giải xong - Chức hiển thi thời gian số trạng thái duyệt qua để đến trạng thái kết thúc - Việc hiển thị số bước để duyệt hay gọi số trạng thái để đến trạng thái cuối cùng, giúp người dùng so sánh hai phương pháp giải với 3.8 Chức thoát - Khi muốn tắt chương trình người dùng có chức Khí bạn click vào hiển thị thơng báo xác nhận bạn có muốn hay khơng 16 - Người dùng chọn có chương trình cịn chọn khơng chương trình tiếp tục 3.9 Chức lui tới - Khi bạn chọn chức giải BFS giải tối ưu chương trình thực thi xong bạn chọn chức tới lui để bước tới trạng thái kết thúc - Chức giúp người chơi hiểu bước giải máy thông qua việc bước bước - Khi hết tất bước bạn tới trạng thái kêt thúc 17 Chức tính thời gian 3.10 - Khi bắt đầu vào trị chơi thời gian chưa tính, bạn bắt đầu di chuyển trạng thái ô khung thời gian bắt đầu tính Hiểu nơm na bạn di chuyển thời gian bắt đầu tính kể sau bạn khơng di chuyển thêm khác thời gian tính - Chức tính thời gian chức đánh giá khả bạn tương tự đếm bước bạn Bạn hồn thành thời gian ngắn chứng tỏ bạn thông minh chơi game tốt - Thời gian dừng trạng thái bạn hoàn thành trạng thái kết thúc Hay nói cách khác bạn xếp hình thời gian dừng lại 18 CHƯƠNG 4: CÁC VẤN ĐỀ KHÓ KHĂN, TRANH LUẬN VÀ HƯỚNG PHÁT TRIỂN 4.1 Vấn đề khó khăn - Trường hợp trạng thái đầu truyền vào mảng random gặp random số vị trí sai nhiều thuật toán Breadth-Frist-Search Best First Search nhiều thời gian để tìm đường Chổ chúng em khắc phục cách tạo trường hợp tương đương testcase có sẵn, trường hợp trạng thái mà thuật tốn tìm đường thời gian không lâu từ 0.01-> 10 giây Và cho trạng thái đầu vào chạy random testcase - Nếu người chơi bấm nút tạm ngừng, sau bấm nút chơi lại chương trình bị lỗi 4.2 Trị chơi khó mở rộng lên 16 ô, 25 ô v v… Đề xuất cải tiến game: - - - Đối với trường hợp có q nhiều bị sai thuật tốn Best First Search hay Breadth First Search tìm đường lâu, cần áp dụng thuật toán tối ưu A*, Nhánh Cận, AKT để có quan sát độ tối ưu, thời gian … v…v… cao Nên in đường trạng thái duyệt qua lên hình giao diện dạng mảng chiều, thay in Console Đề xuất bấm nút giải label thời gian phải bắt đầu đếm giải xong hiển thị thời gian cuối lên lable Đề xuất bấm nút giải tự động picture box phải tự di chuyển đến trạng thái cuối hồn chỉnh mà khơng cần người chơi phải click nút “đi tới” để xem Mở rộng trò chơi lên 16 ô, 25 ô CHƯƠNG 5: NGUỒN THAM KHẢO https://www.brainkart.com/article/Best-First-Search Concept,-Algorithm,- Implementation,-Advantages,-Disadvantages_8881/ https://en.wikibooks.org/wiki/Artificial_Intelligence/Search/Exhaustive_search/ Breadth-first_search https://www.geeksforgeeks.org/c-sharp-random-next-method/ 19 https://docs.microsoft.com/en- us/dotnet/api/system.diagnostics.stopwatch.elapsedmilliseconds? view=netframework-4.8 https://stackoverflow.com/questions/6068856/c-sharp-swapping-objects- without-a-placeholder 20 21