Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống
1
/ 82 trang
THÔNG TIN TÀI LIỆU
Thông tin cơ bản
Định dạng
Số trang
82
Dung lượng
3,27 MB
Nội dung
MỤC LỤC MỤC LỤC LỜI NÓI ĐẦU CHƯƠNG CƠ SỞ LÝ THUYẾT 1.1 Tổng quan trí tuệ nhân tạo 1.1.1 Lịch sử hình thành phát triển trí tuệ nhân tạo 1.1.2 Định nghĩa trí tuệ nhân tạo .6 1.1.3 Ứng dụng trí tuệ nhân tạo 1.2 Các phương pháp xác định lời giải trực tiếp 1.2.1 Phương pháp giải xác: 10 1.2.2 Phương pháp giải xấp xỉ: 10 1.2.3 Phương pháp giải không tường minh: 10 1.2.4 Phương pháp qui hoạch động: 13 1.3 Các phương pháp thử sai 16 1.3.1 Phương pháp vét cạn, nguyên lý mắt lưới 16 1.3.2 Phương pháp ngẫu nhiên 21 1.3.3 Nguyên lý mê cung 24 1.3.4 Các phương pháp biểu diễn giải vấn đề không gian trạng thái đồ thị .26 1.3.5 Quy toán toán chiến lược tìm kiếm đồ thị VÀ/HOẶC 37 1.4 Kỹ thuật Heuristic .46 1.4.1 Các thuật giải tìm kiếm tối ưu với tri thức heuristic 47 1.4.2 Nguyên lý tham lam 49 1.4.3 Nguyên lý hướng đích, phương pháp leo núi (Hill-Climbing) 51 CHƯƠNG TRÒ CHƠI LINE VÀ BÀI TOÁN “MÃ ĐI TUẦN” 54 2.1 Trò chơi “Line” .54 2.1.1 Luật chơi Line 54 2.1.2 Chuyển từ ma trận bàn cờ sang đồ thị .55 2.1.3 Xử lý tìm đường viên bi game Line .56 2.2 Bài toán “Mã tuần” .63 2.2.1 Nội dung toán .63 2.2.2 Các hướng giải toán 66 CHƯƠNG CÀI ĐẶT TRÒ CHƠI “LINE” VÀ BÀI TOÁN “MÃ ĐI TUẦN” 73 3.1 Cài đặt trò chơi Line .73 3.1.1 Giao diện chương trình .73 3.1.2 Nhận xét trò chơi 76 3.2 Chương trình mô toán “Mã tuần” 77 3.2.1 Giao diện chương trình .77 3.2.2 Nhận xét chương trình 80 KẾT LUẬN .81 TÀI LIỆU THAM KHẢO 82 LỜI NÓI ĐẦU Trí tuệ nhân tạo (hay AI: Artificial Intelligence), nỗ lực tìm hiểu yếu tố trí tuệ Nghiên cứu lĩnh vực cách để ta tự tìm hiểu thân Không giống triết học tâm lý học, hai khoa học liên quan đến trí tuệ, AI cố gắng thiết lập các yếu tố trí tuệ tìm biết chúng Không thế, nghiên cứu AI để tạo thực thể thông minh giúp ích cho Mặc dù không dự báo tương lai, rõ ràng máy tính điện tử với độ thông minh định có ảnh hưởng lớn tới sống ngày tương lai phát triển văn minh nhân loại Trí tuệ nhân tạo ngày ứng dụng nhiều lĩnh vực khoa học, kinh doanh giải trí Bản thân em thông qua kiến thức học tìm hiểu trí tuệ nhân tạo, em chọn đồ án với nội dung “Cài đặt trò chơi Line giải toán “Mã tuần”” Đồ án gồm nội dung sau: Chương 1: Cơ sở lý thuyết Chương 2: Trò chơi Line toán “Mã tuần” Chương 3: Cài đặt trò chơi Line giải toán “Mã tuần” Do hạn chế khả năng, thời gian tài liệu, đồ án không tránh khỏi sai sót định Rất mong dược bảo thầy cô giáo ý kiến quan tâm bạn học CHƯƠNG CƠ SỞ LÝ THUYẾT 1.1 Tổng quan trí tuệ nhân tạo Những năm gần đây, nhiều sách, báo, công trình nghiên cứu khoa học đề cập đến kỹ thuật tính toán, người ta hay nhắc đến nhiều thuật ngữ như: máy tính thông minh, máy tính hệ V, hệ chuyên gia, mạng ngữ nghĩa, Các ngôn ngữ lập trình LISP, PROLOG mở đường cho việc áp dụng hàng loạt hệ thống chương trình có khả “thông minh” Trước đây, nói đến Trí tuệ nhân tạo (TTNT) người ta thường quan tâm đến việc tạo lập máy tính có khả “suy nghĩ”, chí số phạm vi hẹp đó, cạnh tranh vượt khả não người Những hy vọng thời gian dài ảnh hưởng nhiều đến nghiên cứu phòng thí nghiệm Mặc dù mô hình tương tự máy tính thông minh đưa hàng nhiều năm trước, từ Alan Turing công bố kết nghiên cứu quan trọng đầu tiên, người ta bắt đầu thực nghiên cứu đến vấn đề TTNT cách nghiêm túc Phát Turing cho chương trình lưu trữ nhớ để sau thực sở phép toán thao tác với bit 0, Điều tạo nên tảng máy tính đại Việc lưu trữ chương trình máy cho phép thay đổi chức cách nhanh chóng dễ dàng thông qua việc nạp chương trình vào nhớ Theo nghĩa đó, khả làm cho máy tính có khả học suy nghĩ Đó biểu quan trọng máy tính trang bị TTNT 1.1.1 Lịch sử hình thành phát triển trí tuệ nhân tạo Năm 1956, chương trình dẫn xuất kết luận hệ hình thức công bố Tiếp theo đó, năm 1959 chương trình chứng minh định lý hình học phẳng chương trình giải toán vạn (GPS - General Problem Solving) đưa Tuy khoảng năm 1960 McCathy MIT (Massachussets Institute of Technology) đưa ngôn ngữ lập trình dùng cho trí tuệ nhân tạo LISP (list processing), nghiên cứu TTNT bắt đầu phát triển mạnh mẽ Thuật ngữ TTNT Marvin Minsky chuyên gia tiếng MIT đưa năm 1961 báo “ Steps Forwards To Artificial Intelligence” Những năm 60 xem mốc quan trọng trình xây dựng máy có khả suy nghĩ Các chương trình chơi cờ chương trình chứng minh định lý toán học công bố khoảng thời gian Những bế tắc, hạn chế thành công công trình nghiên cứu TTNT năm 60 giới hạn khả thiết bị, nhớ đặc biệt yếu tố thời gian thực Chính yếu tố không cho phép tổng quát hóa thành công bước đầu đạt hệ chương trình TTNT xây dựng Tuy vào năm 70, nhớ máy tính thời gian tính toán nâng cao đáng kể chất, song cách tiếp cận khác đến TTNT chưa đem tới thành công thật sự bùng nổ tổ hợp trình tìm kiếm lời giải cho toán đặt Cuối năm 70, số nghiên cứu lĩnh vực xử lý ngôn ngữ tự nhiên, biểu diễn tri thức, lý thuyết giải vấn đề đem lại diện mạo cho TTNT Thị trường tin học bắt đầu đón nhận sản phẩm TTNT ứng dụng mang tính thương mại Đó hệ chuyên gia áp dụng lĩnh vực khác Hệ chuyên gia phần mềm máy tính, chứa thông tin tri thức lĩnh vực cụ thể đó, có khả giải yêu cầu người dùng mức độ với trình độ chuyên gia có kinh nghiệm lâu năm Một hệ chuyên gia sử dụng thành công thực tế hệ MYCIN, thiết kế cài đặt Trường Đại học Tổng Hợp Stanford Một kiện quan trọng phát triển khoa học TTNT đời ngôn ngữ PROLOG, Alain Calmerauer đưa năm 1972 Năm 1981, dự án Nhật Bản xây dựng máy tính hệ thứ V lấy ngôn ngữ PROLOG ngôn ngữ sở làm thay đổi nhiều tình hình phát triển TTNT Mỹ châu Âu Giai đoạn 1981 trở người ta cảm nhận rõ nét chuyên gia TTNT dần chuyển kết nghiên cứu từ phòng thí nghiệm sang cài đặt ứng dụng cụ thể Có thể nói giai đoạn cạnh tranh riết công ty, viện nghiên cứu hàng đầu nhằm đưa thị trường sản phẩm phần mềm ứng dụng kỹ thuật TTNT Cuối năm 80, đầu năm 90 thị trường sản phẩm dân dụng có nhiều sản phẩm trình độ cao máy giặt, máy ảnh, sử dụng TTNT Các hệ thống nhận dạng xử lý hình ảnh, tiếng nói ngày thúc đẩy phát triển kỹ thuật mạng Neuron Sự xích lại hai cách tiếp cận: Tiếp cận mờ lập luận xấp xỉ kỹ thuật mạng Neuron gây quan tâm đặc biệt chuyên gia tin học Bên cạnh xuất hệ chuyên gia, ứng dụng công nghiệp quản lý xã hội, quản lý kinh tế đòi hỏi đời hệ thống xử lý tri thức – liệu tích hợp Thế giới chuyển nghiên cứu TTNT Tuy câu hỏi liệu kỹ thuật TTNT có tạo nên bước nhảy vọt công nghệ tin học, đặc biệt công nghệ máy tính người ta mong đợi hay không chưa có lời giải đáp thỏa đáng 1.1.2 Định nghĩa trí tuệ nhân tạo Trí tuệ nhân tạo (AI: Artificial Intelligence) định nghĩa ngành khoa học máy tính liên quan đến việc tự động hóa hành vi thông minh AI phận khoa học máy tính phải đặt nguyên lý lý thuyết vững chắc, có khả ứng dụng lĩnh vực Những nguyên lý bao gồm cấu trúc liệu dùng cho biểu diễn tri thức, thuật toán cần thiết để áp dụng tri thức đó, ngôn ngữ kỹ thuật lập trình dùng cho việc cài đặt chúng Trắc nghiệm Turing đo lường khả máy tính coi thông minh so sánh với khả người – đối tượng xem có hành vi thông minh chuẩn mực trí tuệ Trong trắc nghiệm này, máy tính người tham gia trắc nghiệm đặt vào phòng cách biệt với người thứ hai, người gọi “người thẩm vấn” (Hình 1.1) Người thẩm vấn nhìn thấy hay nói chuyện với trong hai đối tượng trên, xác đối tượng người hay máy tính, giao tiếp với hai đối tượng thông qua thiết bị soạn thảo văn bản, chẳng hạn thiết bị đầu cuối Người thẩm vấn có nhiệm vụ phân biệt người với máy tính cách dựa câu trả lời họ câu hỏi truyền qua thiết bị liên lạc Trong trường hợp người thẩm vấn phân biệt máy tính với người đó, theo Turing, máy tính xem thông minh Hình 1.1 Trắc nghiệm Turing 1.1.3 Ứng dụng trí tuệ nhân tạo a) Lý thuyết giải toán suy diễn thông minh Lý thuyết giải toán cho phép viết chương trình giải câu đố, chơi trò chơi thông qua suy luận mang tính người Hệ thốn giải toán GPS Newel, Shaw Simon đưa hoàn thiện năm 1969 glà mốc đáng ghi nhớ Trước năm 1980, Buchanal Luckham hoàn thành hệ thống chứng minh định lý Ngoài hệ thống hỏi đáp thông minh SIR, QA2, QA3, cho phép lưu trữ xử lý khối lượng lớn thông tin Chương trình McCarthy phương án hành động có khả cho lời khuyên b) Lý thuyết tìm kiếm may rủi Lý thuyết tìm kiếm nhờ may rủi gồm phương pháp kỹ thuật tìm kiếm với hỗ trợ thông tin phụ để giải toán cách hiệu Công trình đáng kể lý thuyết G.Pearl vào năm 1984 c) Các ngôn ngữ Trí Tuệ Nhân Tạo Để xử lý tri thức người ta sử dụng ngôn ngữ lập trình dùng cho xử lý liệu số mà cần có ngôn ngữ khác Các ngôn ngữ chuyên dụng cho phép lưu trữ xử lý thông tin kí hiệu Dùng ngôn ngữ cách để trả lời câu hỏi “ nào” (what) tới câu hỏi “làm vậy”(how) Một số ngôn ngữ nhiều người biết đến là: Các ngôn ngữ IPL.V, LISP Ngôn ngữ mạnh PLANNER, PROLOG Ngay ngôn ngữ có nhiều hệ với phát triển đáng kể d) Lý thuyết thể tri thức hệ chuyên gia Theo quan điểm nhiều chuyên gia công nghệ thông tin, trí tuệ nhân tạo khoa học thể tri thức sử dụng tri thức Người ta nhận xét phương pháp thể tri thức sau: Lược đồ dùng thể tri thức chương trình Mạng ngữ nghĩa, logíc vị từ , khung, mạng phương pháp thể tri thức cách thông dụng Dùng khung để thể tri thức chắn phương pháp có nhiều hữa hẹn năm gần Việc gắn liền cách thể sử dụng tri thức sở hình thành hệ chuyên gia Vậy nên phải kết hợp trình nghiên cứu quy luật, thiết kế xây dựng hệ chuyên gia Tuy nhiên cho đên nay, đa số hệ chuyên gia thuộc lĩnh vực y học e) Lý thuyết nhận dạng xử lý tiếng nói Giai đoạn phát triển đầu trí tuệ nhân tạo gắn liền với lý thuyết nhận dạng Các phương pháp nhận dạng giới thiệu gồm: Nhận dạng dùng tâm lý học Nhận dạng hình học Nhận dạng theo phương pháp hàm Dùng máy nhận dạngỨng dụng phương pháp việc nhận dạng chữ viết, âm thanh, hình ảnh… trở nên quen thuộc Người ta có hệ thống xử lý hình ảnh ba chiều, hệ thống tổng hợp tiếng nói Do khối lượng đồ sộ tri thức lý thuyết nhận dạng chương trình sau chưa đề cập đến phương pháp nhận dạng f) Người máy Cuối năm 70, người máy công nghiệp đạt nhiều tiến “ Khoa học người máy nối kết thông minh nhận thức với hành động” Người máy có cảm nhận chế hoạt động nối ghép theo điều khiển thông minh Khoa học học trí tuệ nhân tạo tích hợp khoa học người máy Các đề án trí tuệ nhân tạo nghiên cứu người máy đề án “mắt – tay” Thực tế, người máy dùng nhiệm vụ chuyên sâu, thuộc dây truyền công nghiệp 1.2 Các phương pháp xác định lời giải trực tiếp Đặc điểm phương pháp xác định trực tiếp lời giải thông qua thủ tục tính toán bước để có lời giải Có ba loại phương pháp để xác định trực tiếp lời giải Loại thứ áp dụng để giải toán biết cách giải công thức xác (như công thức toán học) Loại thứ hai dùng cho toán biết cách giải công thức xấp xỉ (như công thức xấp xỉ phương pháp tính) Thứ ba áp dụng vào toán biết cách giải không tường minh thông qua hệ thức truy hồi hay kỹ thuật đệ qui 1.2.1 Phương pháp giải xác: Thông qua công thức giải xác Chẳng hạn, thuật toán giải phương trình bậc hai 1.2.2 Phương pháp giải xấp xỉ: Thông qua công thức giải gần Chẳng hạn, phương pháp lặp tính tích phân xác định theo công thức hình thang học phần "Phương pháp tính" 1.2.3 Phương pháp giải không tường minh: Thông qua hệ thức truy hồi kỹ thuật đệ qui Thao tác đệ qui F(x) đối tượng x D Xét hai trường hợp: Nếu đối tượng x thuộc tập đặc biệt X (X D) mà biết 0 cách giải đơn giản thực thao tác sơ cấp tương ứng; Ngược lại, trước hết thực thao tác G(x) đó, biến đổi x thành x'= H(x) D thực thao tác tương tự F(x') x', sau thực thêm thao tác K(x) x, cho n(‘) sau số hữu hạn bước này, điểm x ) rơi vào tập X F(x) // x D { if (x D X ) ThaoTácSơCấp(x); // điều kiện dừng else { G(x); x' = H(x); //H(x) D F(x'); // lời gọi đệ qui K(x); } } Các thao tác đệ qui thường gặp tin học là: định nghĩa đệ qui, hàm thủ tục đệ qui, thuật toán đệ qui 10 vượt 8(n>8) nói bạn phải ngồi chờ đợi máy tính hết kiên nhẫn b) Phương pháp duyệt ưu tiên Warnsdorff Ta coi bàn cờ nxn đồ thị vô hướng thừa nhận ô (i,j) bàn cờ đỉnh (i-1xn+j) đồ thị Ví dụ: ô (1,n) đỉnh thứ (1-1)xn+n=n đồ thị ô (2,3) bàn cờ 3x3 đỉnh thứ (2-1)x3+3 = đồ 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 qua lần Việc kiểm tra từ đỉnh u tới đỉnh v hay không ta thấy sau: Giả sử ô(x1,y1) có đỉnh đồ thị u (x1 -1)xn +y1 =u Dễ thấy (u mod n =0) x1 = u div n; y1 =n Còn (u mod n 0) x1 = u div n -1, y1 =u mod n Có hai cách để tìm xem hai đỉnh u v đến từ hay không: - Dùng mảng để lưu lại (mảng logic), nhanh không gian nhớ hạn chế Pascal, ta khai báo b[1 nxn,1 nxn] giải n >10 - Vậy ta viết hàm kt(u,v) kiểu boolean xem từ u tới v không Đoạn mã sau Function kt(u,v:integer):boolean; Var x1,x2,y2,y1:integer; Begin x1:= (u-1)div n +1; If u mod n =0 then y1:=n Else y1:=u mod n; X2:=(v-1) div n+1; If v mod n =0 then y2:=n Else y2:=u mod n; Kt:= (abs (x1-x2)*abs(y1=y2)=2); End; 68 Khác với cách duyệt xét tất ô đến từ ô đứng, ta xét chọn ô để từ ô đứng bậc ô nhỏ (Ta gọi bậc ô (x,y) số ô đến từ sô mà chưa qua) Như số bậc đỉnh u số đỉnh đến từ đỉnh u mà đỉnh chưa qua Ta dùng hàm Dembac(u) để đếm từ đỉnh u hàm Bacnhonhat(u) để lưu giá trị bậc đỉnh v đến từ u bậc nhỏ Dùng biến count để đếm bước mã Khi count=nxn nghĩa ta hành trình Mảng b: array[1 nxn] để lưu số x với x số x bước mã đến đỉnh b[i]=x,b[i]=0 ô chưa qua Ta dùng mảng để kiểm tra xem đỉnh qua hay chưa Nhận xét: Với phương pháp này,khi xét 2≤n≤18 chương trình chạy với tốc độ 3 giây (n=30) Tuy nhiên trường hợp khó xử lý hành trình, phải duyệt hết trường hợp nên chạy không chương trình duyệt bình thường c) Phương pháp khử đệ quy đặc biệt Mô tả: Ta để ý đáp án toán mội chuỗi bước nhảy liên tiếp qua hết tất ô bàn cờ giống “đoạn gen” gồm nhiền “nhiễm sắc thể” nối tiếp Các nhiễm sắc thể tức ô bàn cờ Hai nhiễm sắc thể liên tiếp nối với thỏa mãn luật nhảy quân mã Như ta đưa toán toán khác từ 'nhiễm sắc thế” đơn lẻ tìm cách ghép nối chúng lại với cho tạo thàn 'đoạn gen' Định nghĩa thuật ngữ: Nhiễm sắc thể: ô bàn cờ NxN Đoạn gen: chuỗi gồm nhiều nhiễm sắc thể liên tiếp nhau.Hai nhiễm sắc thể liên tiếp đoạn gen thỏa mãn luật nhảy quân mã 69 Mỗi đoạn gen có đầu đuôi, đoạn gen gồm nhiễm sắc thể đầu đuôi Nối gen: Ta nối đầu (hay đuôi) đoạn gen A vào đầu (hay đuôi) đoạn gen B tạo thành đoạn C thỏa mãn C đoạn gen có nhiễm sắc thể nhiễm sắc thể từ đoạn gen A đoạn gen B Trộn gen: Ta trộn gen A vào gen B sau: Từ đầu đuôi đoạn gen A ta nối vào bước nhảy đoạn gen B tạo thành đoạn C thỏa mãn đoạn C đoạn gen có nhiễm sắc thể nhiễm sắc thể từ A B Cắt gen: Cắt hai đoạn gen A đoạn B tạo thành hai đoạn gen C đoạn gen D sau: ta tìm đoạn gen B vị trí để nối đầu (hay đuôi) đoạn gen A vào tạo thành đoạn gen C Phần lại đoạn gen B bị cắt tạo thành đoạn gen D Chứng minh quy tắc: Với ba công cụ biến đổi đoạn gen trên: nối gen, trộn gen cắt gen ta chứng minh tìm lời giải cho toán đặt ra: nối nhiễm sắc thể riêng lẻ lại tạo thành đoạn gen Ta thấy với phương pháp nối gen, từ hai đoạn gen A đoạn gen B ban đầu sau nối tạo thành đoạn gen C chứa nhiễm sắc thể có A B Như số đoạn gen sau thực phép nối giảm đoạn Trộn đoạn gen A vào đoạn gen B tạo thành đoạn gen C chứa nhiễm sắc thể có A B Nên sau thực hiêm phép trộn gen số đoạn gen giảm đoạn Với phép cắt gen, đoạn gen A cắt vào đoạn gen B, tạo thành đoạn gen C đoạn gen D đoạn gen C đoạn gen D chứa nhiễm sắc thể đoạn gen A đoạn gen B Như số đoạn gen sau thực phép cắt gen không đổi (nhưng tạo trường hợp để thực hai phép nối gen trộn gen Vì quân mã vị trí bàn cờ có tối thiểu cách chọn cho bước nhảy nên ta luôn tồn hai cặp gen mà chúng cắt Từ ta kết luận số đoạn gen ban đầu N*N đoạn sau 70 nhiều lần biến đổi gen (dùng ba phép biến đổi trên) tạo thành đoạn gen lời giải ta cần tìm Tiến hành xây dựng chương trình Bước 1: Chuyển N*N ô bàn cờ vào đoạn ghen ta N*N đoạn ghen Mỗi đoạn ghen có chiều dài Bước 2: Thực phép “nối ghen”, “trộn gen” “cắt gen” đoạn gen Đoạn gen có chiều dài N*N đáp án toán Tuy nhiên để tiết kiệm nhớ ta thực theo sau : Ngay từ khởi tạo ta dùng phương pháp đệ quy truyền thống cho chương trình đệ quy tới giá trị N*(N-1), sau áp dụng phương pháp xử lý đoạn gen sau Ban đầu ta dùng cách đệ quy truyền thống cho mã nhảy đến giá trị N*(N-1) dừng lại (Còn lại N ô chưa điền) Lần lượt điền ô chưa điền với giá tri tăng dần N*(N-1)+1, N*(N-1)+2, đến N*N dừng lại (nhu tất ô điền không luật nhảy quân mã) Biến đổi mảng mảng chiều điền thành đoạn gen Sau ta phân tích bàn cờ hai chiều (đã đánh số từ 1=>NxN) thành đoạn gen Tiến hành xử lý đoạn gen dùng công cụ “nối gen”, “trộn gen” “cắt gen” để nối đọan gen thành đoạn gen Xuất kết file Chương trình viết ngôn ngữ Visual C (cho phép N