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

Chuẩn mã dữ liệu DES và xây dựng chương trình ứng dụng

66 788 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 66
Dung lượng 1,1 MB

Nội dung

LỜI CẢM ƠN Em xin bày tỏ lời cảm ơn sâu sắc tới PGS.TS Lê Huy Thập tận tình hướng dẫn, bảo em trình làm khóa luận để tìm hiểu, nghiên cứu đề tài “Một số thuật toán trò chơi trí tuệ xây dựng chương trình thử nghiệm” để em hoàn thành tốt đề tài tốt nghiệp Em xin chân thành cảm ơn dạy bảo thầy, cô giáo khoa CNTT – Trường Đại học sư phạm Hà Nội trang bị cho em kiến thức để em hoàn thành tốt đề tài tốt nghiệp Mặc dù cố gắng để hoàn thành khóa luận cách tốt dựa nỗ lực thân, song chắn khóa luận không tránh khỏi sai sót hạn chế Em mong thầy, cô giáo dẫn, đóng góp cho em ý kiến quý báu để giúp em hoàn thiện đề tài để phát triển mở rộng đề tài sau Em xin chân thành cảm ơn! Hà Nội, tháng năm 2013 Sinh viên thực Nguyễn Thị Huệ LỜI CAM ĐOAN Tên em là: NGUYỄN THỊ HUỆ Sinh viên lớp: K35 – Tin học, khoa Công nghệ thông tin, trường Đại học sư phạm Hà Nội Em xin cam đoan: Đề tài: “Một số thuật toán trò chơi trí tuệ xây dựng chương trình thử nghiệm” nghiên cứu riêng em, hướng dẫn thầy giáo PGS.TS Lê Huy Thập Khóa luận hoàn toàn không chép tác giả khác Nếu sai em xin hoàn toàn chịu trách nhiệm Hà Nội, tháng năm 2013 Người cam đoan Nguyễn Thị Huệ MỤC LỤC LỜI CẢM ƠN LỜI CAM ĐOAN MỤC LỤC DANH MỤC HÌNH VẼ MỞ ĐẦU Chương 1: CƠ SỞ LÝ THUYẾT 1.1 Tổng quan trí tuệ nhân tạo 1.1.1 Mở đầu 1.1.2 Thông tin, liệu tri thức 1.1.3 Các phương pháp biểu diễn tri thức máy tính 1.2 Giới thiệu lý thuyết trò chơi 20 1.3 Giới thiệu Java 21 1.3.1 Lịch sử phát triển Java 21 1.3.2 Các đặc điểm Java 22 1.3.3 Máy ảo Java 23 1.3.4 Bộ công cụ phát triển JDK 24 Chương 2: MỘT SỐ THUẬT TOÁN TRONG TRÒ CHƠI TRÍ TUỆ 27 2.1 Cấu trúc chung toán tìm kiếm 27 2.2 Các phương pháp tìm kiếm heuristic 28 2.2.1 Tìm kiếm theo bề rộng tìm kiếm theo độ sâu 28 2.2.2 Tìm kiếm leo đồi 32 2.2.4 Thuật giải AT 36 2.2.5 Thuật giải AKT 37 2.2.6 Thuật giải A* 37 Chương 3: XÂY DỰNG CHƯƠNG TRÌNH THỬ NGHIỆM 41 3.1 Giới thiệu toán 41 3.2 Giải toán 44 3.2.1 Áp dụng giải thuật A* 44 3.2.2 Áp dụng giải thuật A* lặp sâu dần 45 3.3 Xây dựng chương trình 46 KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 59 TÀI LIỆU THAM KHẢO 61 DANH MỤC HÌNH VẼ Hình 1.1: Tình hình ngành trí tuệ nhân tạo Hình 1.2: Sơ đồ điện trở (R), điện (U), cường độ dòng điện (I) Hình 1.3: Đồ thị AND/OR 14 Hình 1.4: Ví dụ mạng ngữ nghĩa 15 Hình 1.5: Ưu khuyết điểm phương pháp biểu diễn tri thức 19 Hình 2.1: Mô hình chung vấn đề - toán 28 Hình 2.2: Hình ảnh tìm kiếm theo bề rộng 29 Hình 2.3: Hình ảnh tìm kiếm theo độ sâu 31 Hình 2.4: Không gian trạng thái 33 Hình 2.5: Cây tìm kiếm leo đồi 33 Hình 2.6: Cây tìm kiếm tốt – 35 Hình 2.7: Đồ thị không gian trạng thái với hàm đánh giá 37 Hình 2.8: Cây tìm kiếm theo thuật toán A* 38 Hình 2.9: Đỉnh n tìm kiếm nằm đường tối ưu 40 Hình 3.1: Trạng thái ban đầu trạng thái kết thúc toán số 41 Hình 3.2: Một trạng thái toán số 42 Hình 3.3: Phát triển trạng thái 43 Hình 3.4: Một trạng thái ban đầu trạng thái kết thúc toán số 44 Hình 3.5: Bài toán số 56 Hình 3.6: Sắp xếp 25 ô (5×5) 57 Hình 3.7: Xếp tranh thỏ 57 Hình 3.8: Xuất hộp thoại tự động tìm lời giải 58 MỞ ĐẦU Lý 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 Công nghệ thông tin lĩnh vực đưa lên vị trí hàng đầu thúc đẩy tăng trưởng phát triển kinh tế quốc gia Công nghệ thông tin dần khẳng định vai trò lĩnh vực khoa học, kỹ thuật giải trí Xuất phần mềm trò chơi giải trí mang lại lợi nhuận cao cho quốc gia có ngành tin học phát triển mạnh Khi máy tính cá nhân trở thành phần đời sống người, sản phẩm giải trí máy ngày có hội để phát triển, đặc biệt game mini game chơi cờ Tuy nhiên yêu cầu game hay cao đồ họa, xử lý kiện…Do viết game vừa hội vừa thách thức người lập trình phương pháp tốt để hoàn thiện kỹ lập trình lập trình viên Hiện nay, có nhiều ngôn ngữ lập trình dùng để viết game, Java ngôn ngữ lập trình Với kỹ thuật xử lý hình ảnh, âm hỗ trợ sẵn Java có đầy đủ sức mạnh để xây dựng game hoàn hảo, lý để Java chọn làm ngôn ngữ viết game trình bày đề tài Tuy rằng, lĩnh vực xây dựng trò chơi game không mẻ qua học tập nghiên cứu với mong muốn vận dụng kiến thức học để triển khai thiết kế trò chơi game, em lựa chọn đề tài khóa luận là: “Một số thuật toán trò chơi trí tuệ xây dựng chương trình thử nghiệm” Mục tiêu nghiên cứu Tìm hiểu số thuật toán vận dụng kiến thức môn Trí tuệ nhân tạo ngôn ngữ lập trình Java mà em học để xây dựng trò chơi trí tuệ cụ thể trò chơi xếp hình Đối tượng phạm vi nghiên cứu Đối tượng nghiên cứu: Thuật toán trò chơi trí tuệ Phạm vi nghiên cứu: Trò chơi trí tuệ Phương pháp nghiên cứu a Phương pháp nghiên cứu lý luận Nghiên cứu qua việc đọc sách, báo tài liệu liên quan nhằm xây dựng sở lý thuyết đề tài biện pháp cần thiết để giải vấn đề đề tài b Phương pháp chuyên gia Tham khảo ý kiến chuyên gia để thiết kế chương trình phù hợp với yêu cầu thực tiễn Nội dung xử lý nhanh đáp ứng yêu cầu ngày cao người sử dụng c Phương pháp thực nghiệm Thông qua quan sát thực tế, yêu cầu sở, lý luận nghiên cứu kết đạt qua phương pháp Ý nghĩa khoa học thực tiễn đề tài Ý nghĩa khoa học: Trí tuệ nhân tạo có ý nghĩa to lớn khoa học, kỹ thuật đời sống Ý nghĩa thực tiễn: Đề tài giới thiệu hướng nghiên cứu quan tâm xây dựng game máy tính nâng cấp thành game điện thoại Cấu trúc khóa luận Ngoài phần mở đầu, kết luận hướng phát triển khóa luận bao gồm chương: Chương 1: Cơ sở lý thuyết Chương 2: Một số thuật toán trò chơi trí tuệ Chương 3: Xây dựng chương trình thử nghiệm Chương 1: CƠ SỞ LÝ THUYẾT 1.1 Tổng quan trí tuệ nhân tạo 1.1.1 Mở đầu Chế tạo cỗ máy thông minh người (thậm chí thông minh người) ước mơ cháy bỏng loài người từ hàng ngàn năm Năng lực máy tính ngày mạnh mẽ điều kiện thuận lợi cho trí tuệ nhân tạo Điều cho phép chương trình máy tính áp dụng thuật giải trí tuệ nhân tạo có khả phản ứng nhanh hiệu trước Sự kiện máy tính Deep Blue đánh bại kiện tướng cờ vua giới Casparov minh chứng hùng hồn cho bước tiến dài công nghiên cứu trí tuệ nhân tạo Tuy đánh bại Casparov Deep Blue cỗ máy biết đánh cờ Nó chí trí thông minh sơ đẳng đứa bé lên ba nhận diện người thân, khả quan sát nhận biết giới, tình cảm thương, ghét, Ngành trí tuệ nhân tạo có bước tiến đáng kể, trí tuệ nhân tạo thực có phim khoa học giả tưởng Hollywood Vậy nghiên cứu trí tuệ nhân tạo? Điều tương tự ước mơ chế tạo vàng nhà giả kim thuật thời Trung Cổ, chưa thành công trình nghiên cứu làm sáng tỏ nhiều vấn đề Mặc dù mục tiêu tối thượng ngành trí tuệ nhân tạo xây dựng máy có lực tư tương tự người khả tất sản phẩm trí tuệ nhân tạo khiêm tốn so với mục tiêu đề Tuy vậy, ngành khoa học mẻ tiến ngày tỏ ngày hữu dụng số công việc đòi hỏi trí thông minh người Hình ảnh sau giúp bạn hình dung tình hình ngành trí tuệ nhân tạo Hình 1.1: Tình hình ngành trí tuệệ nhân tạo Mục tiêu ngành ng khoa học trí tuệ nhân tạo: Tạo ạo máy tính có khả nhận thức, suy luận vvà phản ứng Nhận thức ợc hiểu l khảả quan sát, học hỏi, hiểu biết nh ững kinh nghiệm giới xung quanh Quá trình trình nhận nh thức giúp người ời có tri thức Suy luận l khả vận dụng ụng tri thức sẵn có để phản ản ứng với tình t hay vấn đề - toán gặp g phải ộc sống Nhận thức v suy luận để từ đưa ững phản ứng thích hợp ba hành vi có thểể nói l đặc trưng cho trí tuệệ ng người Do đó, ngạc ạc nhiên nhi muốn ốn tạo máy tính thông minh, ta cần ần phải trang bị cho khả n Cảả ba khả n cần đến yếu tố ản llà tri thức Dưới góc nhìn ìn c báo cáo này, xây dựng ựng trí tuệ nhân tạo l tìm cách biểu ểu diễn tri thức, thức tìm cách vận dụng tri thức đểể giải vấn đề v tìm cách bổ ổ sung tri thức ằng cách "phát hiện" tri thức từ thông tin sẵn có (máy học) 1.1.2 Thông tin, liệu tri thức Tri thức khái niệm trừu tượng Do đó, không cố gắng đưa định nghĩa hình thức xác Thay vào đó, cảm nhận khái niệm "tri thức" cách so sánh với hai khái niệm khác thông tin liệu Nhà bác học tiếng Karan Sing nói rằng: "Chúng ta ngập chìm biển thông tin lại khát tri thức" Câu nói làm bật khác biệt lượng lẫn chất hai khái niệm thông tin tri thức Trong ngữ cảnh ngành khoa học máy tính, người ta quan niệm liệu số, chữ cái, hình ảnh, âm mà máy tính tiếp nhận xử lý Bản thân liệu thường ý nghĩa người Còn thông tin tất mà người cảm nhận cách trực tiếp thông qua giác quan (khứu giác, vị giác, thính giác, xúc giác, thị giác giác quan thứ 6) gián tiếp thông qua phương tiện kỹ thuật tivi, radio, cassette, Thông tin người có ý nghĩa định Với phương tiện máy tính (mà cụ thể thiết bị đầu ra), người tiếp thu phần liệu có ý nghĩa Nếu so lượng, liệu thường nhiều thông tin Cũng quan niệm thông tin quan hệ liệu Các liệu xếp theo thứ tự tập hợp lại theo quan hệ chứa đựng thông tin Nếu quan hệ cách rõ ràng tri thức Chẳng hạn: - Trong toán học: Bản thân số riêng lẻ 1, 1, 3, 5, 2, 7, 11, liệu Tuy nhiên, đặt chúng lại với theo trật tự chúng bắt đầu có mối liên hệ Thuật toán A* public void solveAstar() { //Giải A* KQ.clear(); long startTime = System.currentTimeMillis(); initialnode.f = initialnode.h = initialnode.estimate(goalnode); initialnode.g = 0; FRINGE.add(0, initialnode); // cho nút đầu vào FRINGE total_nodes = 0; count = 0; while (true) { if (FRINGE.isEmpty() || !(Main.window.issolu)) //điều kiện dừng { FRINGE.clear(); M.clear(); Stop = "stop"; return; } if (System.currentTimeMillis()- startTime > 180000) //điều kiện dừng { FRINGE.clear(); M.clear(); Stop = ":D \n"; return; } lowIndex = 0; fmin = FRINGE.elementAt(0).f; 47 for (int i = 0; i < FRINGE.size(); i++) // tìm nút có f nhỏ FRINGE { number = FRINGE.elementAt(i).f; if (number < fmin) { lowIndex = i; //vị trí nút có fmin FRINGE fmin = number; } } n = FRINGE.elementAt(lowIndex); //xét nút n có fmin FRINGE.removeElement(n); //xóa nút xét FRINGE if(n.h == 0) //if (n.equals(goalnode)) //kiểm tra nút xét có phải đích { long endTime = System.currentTimeMillis(); time_solve = endTime - startTime; total_nodes = count + FRINGE.size(); AddKQ(n); //đưa kết vào KQ FRINGE.clear(); M.clear(); return; } M = n.successors(); // sinh tâp trạng thái n if(n.Parent != null) { for(int i = 0; i < M.size(); i++) 48 { if(isKT(n.Parent,M.elementAt(i))) // xóa trạng thái n trùng với trạng thái Cha(n) M.remove(i); } } for (int i = 0; i < M.size(); i++) // tính thông số trạng thái { Node s = M.elementAt(i); s.g = n.g + s.cost; s.h = s.estimate(goalnode); s.f = s.g + s.h; tempNode = (Node)M.elementAt(i); tempNode.Parent = n; // đặt n cha trạng thái FRINGE.add(0, M.elementAt(i)); // thêm trạng thái vào FRINGE } count++; //tăng số nút duyệt } } Thuật toán IDA* public void solveIDAstar() { //giải IDA* KQ.clear(); long startTime = System.currentTimeMillis(); initialnode.f = initialnode.h = initialnode.estimate(goalnode); initialnode.g = 0; FRINGE.add(0, initialnode); 49 cutOff = 0; total_nodes = 0; count = 0; while (true) { while (FRINGE.size() != 0) //quá trình tìm kiếm sâu dần { if (FRINGE.isEmpty() || !(Main.window.issolu)) { FRINGE.clear(); M.clear(); VISIT.clear(); Stop = "stop"; return; } if (System.currentTimeMillis()- startTime > 180000) //điều kiện dừng { FRINGE.clear(); M.clear(); Stop = ":D \n"; return; } n = FRINGE.elementAt(0); //lấy nút FRINGE if(n.f [...]... máy cụ thể nhờ chương trình thông dịch Mục tiêu của các nhà thiết kế Java là cho phép người lập trình viết chương trình một lần nhưng có thể chạy trên bất cứ phần cứng cụ thể nào - Ngày nay, Java được sử dụng rộng rãi để viết chương trình chạy trên Internet Nó là ngôn ngữ lập trình hướng đối tượng độc lập thiết bị, không phụ 21 thuộc vào hệ điều hành Nó không chỉ dùng để viết các ứng dụng chạy đơn lẻ... thanh đọc ổ cứng + Tình trạng đèn màn hình "xanh" hoặc "chớp đỏ" + Không sử dụng được máy tính + Điện vào máy tính "có" hay "không" Tập các luật: R1 Nếu ( (ổ cứng "hỏng") hoặc (cáp màn hình "lỏng")) thì không sử dụng được máy tính R2 Nếu (điện vào máy là "có") và ( (âm thanh đọc ổ cứng là "không") hoặc tình trạng đèn ổ cứng là "tắt")) thì (ổ cứng "hỏng") R3 Nếu (điện vào máy là "có") và (tình trạng... mạnh cho việc phát triển ứng dụng Công nghệ Java phát triển mạnh mẽ nhờ vào “đại gia Sun Microsystem” cung cấp nhiều công cụ, thư viện lập trình phong phú hỗ trợ cho việc phát triển nhiều loại hình ứng dụng khác nhau cụ thể như: - J2SE (Java 2 Standard Edition) hỗ trợ phát triển những ứng dụng đơn, ứng dụng client-server - J2EE (Java 2 Enterprise Edition) hỗ trợ phát triển các ứng dụng thương mại - J2ME... Java là một ngôn ngữ lập trình do Sun Microsystems giới thiệu vào tháng 6 năm 1995 Từ đó, nó đã trở thành một công cụ lập trình của các lập trình viên chuyên nghiệp Java được xây dựng trên nền tảng của C và C++ Do vậy nó sử dụng các cú pháp của C và các đặc trưng hướng đối tượng của C++ Vào năm 1991, một nhóm các kỹ sư của Sun Microsystems có ý định thiết lập một ngôn ngữ lập trình để điều khiển các... cấp thư viện vào ra chuẩn Chúng cho phép tạo và quản lý dòng dữ liệu theo một vài cách + java.util Package này cung cấp một số công cụ hữu ích Một vài lớp của package này là: Date, Hashtable, Stack, Vector và StringTokenizer + java.net Cung cấp khả năng giao tiếp với máy từ xa Cho phép tạo và kết nối với Socket hoặc URL + java.awt.event Chứa các lớp dùng để xử lý các sự kiện trong chương trình như chuột,... khác và sử dụng các đối tượng đó trên máy cục bộ + java.security Cung cấp các công cụ cần thiết để mã hóa và đảm bảo tính an toàn của dữ liệu truyền giữa máy trạm và máy chủ + java.sql Package này chứa Java DataBase Connectivity (JDBC), dùng để truy xuất cơ sở dữ liệu quan hệ như Oracle, SQL Server 26 Chương 2: MỘT SỐ THUẬT TOÁN TRONG TRÒ CHƠI TRÍ TUỆ Thuật toán là một khái niệm cơ sở của Toán học và. .. luồng Java hỗ trợ lập trình đa nhiệm, đa luồng cho phép nhiều tiến trình, tiểu trình có thể chạy song song cùng một thời điểm và tương tác với nhau  Độc lập nền Một chương trình viết bằng ngôn ngữ Java có thể chạy trên nhiều máy tính có hệ điều hành khác nhau (Windows, Unix, Linux, …) với điều kiện ở đó có cài đặt máy ảo java (Java Virtual Machine) 22  Khả chuyển Chương trình ứng dụng viết bằng ngôn... Micro Edition) hỗ trợ phát triển các ứng dụng trên các thiết bị di động, không dây, … 1.3.3 Máy ảo Java (JVM – Java Virtual Machine) Tất cả các chương trình muốn thực thi được thì phải được biên dịch ra mã máy Mã máy của từng kiến trúc CPU của mỗi máy tính là khác nhau (tập lệnh mã máy của CPU Intel, CPU Solarix, CPU Macintosh … là khác nhau), vì vậy trước đây một chương trình sau khi được biên dịch xong... Chương trình thực thi được trên Windows được biên dịch dưới dạng file có đuôi EXE còn trên Linux thì được biên dịch dưới dạng file có đuôi ELF, vì vậy trước đây một chương trình chạy được trên Windows muốn chạy được trên hệ điều hành khác như Linux chẳng hạn thì phải chỉnh sửa và biên dịch lại 23 Ngôn ngữ lập trình Java ra đời, nhờ vào máy ảo Java mà khó khăn nêu trên đã được khắc phục Một chương trình. .. máy giặt, lò nướng…Mặc dù C và C++ có khả năng làm việc này nhưng trình biên dịch lại phụ thuộc vào từng loại CPU Trình biên dịch thường phải tốn nhiều thời gian để xây dựng nên rất đắt Do đó nhu cầu thực tế đòi hỏi một ngôn ngữ chạy nhanh, gọn, hiệu quả và độc lập thiết bị tức là có thể chạy trên nhiều loại CPU khác nhau, dưới các môi trường khác nhau “Oak” đã ra đời và vào năm 1995 được đổi tên thành ... cụ thể nhờ chương trình thông dịch Mục tiêu nhà thiết kế Java cho phép người lập trình viết chương trình lần chạy phần cứng cụ thể - Ngày nay, Java sử dụng rộng rãi để viết chương trình chạy... trò chơi trí tuệ xây dựng chương trình thử nghiệm” Mục tiêu nghiên cứu Tìm hiểu số thuật toán vận dụng kiến thức môn Trí tuệ nhân tạo ngôn ngữ lập trình Java mà em học để xây dựng trò chơi trí... Internet Nó ngôn ngữ lập trình hướng đối tượng độc lập thiết bị, không phụ 21 thuộc vào hệ điều hành Nó không dùng để viết ứng dụng chạy đơn lẻ hay mạng mà để xây dựng chương trình điều khiển thiết

Ngày đăng: 08/11/2015, 19:58

TỪ KHÓA LIÊN QUAN

TRÍCH ĐOẠN

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

TÀI LIỆU LIÊN QUAN

w