báo cáo môn trí tuê nhân tạo chương trình chơi cờ tướng, áp dụng giải thuật cắt tỉa alpha-beta trên ngôn ngữ java

21 3.8K 27
báo cáo môn trí tuê nhân tạo chương trình chơi cờ tướng, áp dụng giải thuật cắt tỉa alpha-beta trên ngôn ngữ java

Đ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

Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning Đinh Tiến Sĩ – Phan Văn Thìn – Lâm Viết Tùng – Đinh Văn Đông – Nguyễn Anh Dũng – Lê Minh Đức Sinh viên thực hiện: Nguyễn Anh Dũng MSSV: 20090572 Đinh Văn Đông MSSV: 20090755 Phan Văn Thìn MSSV: 20093692 Lê Minh Đức MSSV: 20090787 Lâm Viết Tùng MSSV: 20093097 Đinh Tiến Sĩ MSSV: 20092222 Nhóm thực hiện: Nhóm 10 Giảng viên hướng dẫn : TS Phạm Văn Hải Chương Trình Chơi Cờ Tướng Tự Động Sử Dụng Giải Thuật Alpha-Beta Pruning TRÍ TUỆ NHÂN TẠO Bài Tập Lớn Hà Nội, 07-2013 TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI VIỆN CÔNG NGHỆ THÔNG TIN VÀ TRUYỀN THÔNG __________*__________ 1 Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning MỤC LỤC THÔNG TIN CHUNG 1. Sinh viên thực hiện Nguyễn Anh Dũng MSSV: 20090572 Đinh Văn Đông MSSV: 20090755 Phan Văn Thìn MSSV: 20093692 Lê Minh Đức MSSV: 20090787 Lâm Viết Tùng MSSV: 20093097 Đinh Tiến Sĩ MSSV: 20092222 nhóm trưởng 2. Phân công công việc và các nhiệm vụ cụ thể Thành viên Chi tiết Đinh Tiến Sĩ Phân công công việc, phân tích, thiết kế và code chương trình, viết báo cáo Đinh Văn Đông Tìm hiểu về hàm lượng giá, tìm hiểu về thuật toán alpha beta Lê Minh Đức Tìm hiểu về hàm lượng giá, tìm hiểu về thuật toán alpha beta Lâm Viết Tùng Tạo giao diện, tìm hiểu thuật toán alpha Beta Phan Văn Thìn Tạo giao diện, tìm hiểu thuật toán alpha Beta Nguyễn Anh Dũng Tạo giao diện, tìm hiểu cách xây dựng luật đi của cờ tướng Bảng : Bảng phân công công việc và các nhiệm vụ cụ thể Đinh Tiến Sĩ – Phan Văn Thìn – Lâm Viết Tùng – Đinh Văn Đông – Nguyễn Anh Dũng – Lê Minh Đức 2 Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning DANH MỤC BẢNG BIỂU DANH MỤC HÌNH ẢNH LỜI NÓI ĐẦU Cờ tướng (phiên âm Hán Việt là Tượng Kỳ tức “cờ hình tượng”), hay còn gọi là cờ Trung Quốc vì nó được phổ biến ra thế giới từ Trung Quốc và cũng được coi là “quốc hồn quốc túy” của nước này (nhưng theo phương Tây thì nó có nguồn gốc từ Ấn Độ), là một trò chơi trí tuệ dành cho hai người, là loại cờ được phổ biến nhất thế giới cùng với cờ vua. Tại Trung Quốc, cờ tướng được biết đến từ thế kỷ thứ 4 TCN. Đinh Tiến Sĩ – Phan Văn Thìn – Lâm Viết Tùng – Đinh Văn Đông – Nguyễn Anh Dũng – Lê Minh Đức 3 Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning Mỗi ván cờ được tiến hành giữa hai người, một người cầm quân trắng (hay đỏ), một người cầm quân Đen (hay xanh lá cây). Mục đích của mỗi người là tìm cách đi quân trên bàn cờ theo đúng luật để chiếu bí hay bắt tướng của đối phương và giành thắng lợi. Việc xây dựng chương trình mà máy tính có thể chơi cờ tướng với người chơi thông thường có thể chuyển về một dạng bài toán tìm kiếm đặc biệt: tìm kiếm đường đi đến các điểm cao nhất giữa hai đấu thủ hay là tìm kiếm Minimax. Đây cũng là một chiến lược tìm kiếm trong trí tuệ nhân tạo ứng dụng để máy tính có thể thực hiện các trò chơi thông minh như con người. Các trạng thái bàn cờ khác nhau trong quá trình chơi có thể biểu diễn thành một cây tìm kiếm và ta sẽ tiến hành tìm kiếm trên cây để tìm được nước đi tốt nhất. Việc mô phỏng làm cho máy tính có thể chơi cờ tướng như con người không chỉ giúp ta hình dung rõ ràng hơn về môn học trí tuệ nhân tạo cụ thể hơn là mảng tìm kiếm mà còn có giúp chúng ta hiểu hơn về việc áp dụng lập trình hướng đối tượng vào các game đối kháng. Đây cũng là mong muốn của chúng em khi học môn trí tuệ nhân tạo. Để hoàn thành bài tập lớn này, chúng em xin được gửi lời cảm ơn chân thành tới : Thầy giáo hướng dẫn T.S Phạm Văn Hải, giảng viên khoa hệ thống thông tin đã giúp đỡ, hướng dẫn, chỉ dạy để chúng em hoàn thành được bài tập lớn này. Hà Nội, ngày 01 – 08 – 2013. PHẦN 1: KHẢO SÁT VÀ ĐẶC TẢ YÊU CẦU BÀI TOÁN 1.1 MỤC ĐÍCH Bài toán đặt ra là cần xây dựng chương trình mà máy tính có thể tự động chơi cờ tướng như con người, thi đấu với đấu thủ là người chơi. Có hai đấu thủ (máy tính và người chơi), mỗi người chỉ được đi một nước khi tới lượt theo tập luật của cờ tướng. Đinh Tiến Sĩ – Phan Văn Thìn – Lâm Viết Tùng – Đinh Văn Đông – Nguyễn Anh Dũng – Lê Minh Đức 4 người chơi thao tác chơi thông qua sự kiện click chuột cập nhật thông tin và thay đổi tham số biến người chơi máy tính thực hiện tính toán và chọn ra nước chơi hợp lý nhất (sử dụng thuật toán AlphaBeta) cập nhật thông tin và thay đổi tham số biến người chơi Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning 1.2 MỤC TIÊU Từ yêu cầu đặt ra ta cần xây dựng chương trình chơi cờ tướng với tính năng, và chức năng như sau : Hình : Mục Tiêu Của Bài Toán 1.3 VẤN ĐỀ, YÊU CẦU BÀI TOÁN Chương trình chơi cờ tướng phải đảm bảo yêu cầu : • Tạo ra môi trường là bàn cờ và các quân cờ cho hai đấu thủ người chơi và máy tính. • Sinh nước đi tự động đến lượt máy đi bằng việc đánh giá điểm khi đi thử từng quân cờ, lấy điểm quân cờ mà đạt giá trị cao nhất và thực hiện nước đi đó. • Sau đó đến lượt người chơi, thực hiện nước đi của mình. • Chương trình cứ tiếp tục lặp như vậy cho đến khi người chơi nhấn thoát khỏi chương trình hoặc xác định được người chiến thắng. Có thể chia công việc chi tiết như sau : • Tạo ra môi trường cho người chơi và máy tính là quân cờ và bàn cờ. • Thực hiện các công việc sau đến khi người chơi dừng chơi hoặc xác định được người chiến thắng : sinh nước đi. • Đánh giá một thế cờ. • Xử lý một nước đi thử. • Tìm kiếm alpha-beta. Đinh Tiến Sĩ – Phan Văn Thìn – Lâm Viết Tùng – Đinh Văn Đông – Nguyễn Anh Dũng – Lê Minh Đức 5 Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning • Xử lý điều khiển của người chơi. • Cập nhật một nước đi mới của người chơi. Sau đó để tiện cho người chơi theo dõi một số thông tin như : thời gian suy nghĩ của 2 đấu thủ, ghi lại số quân mỗi bên đã bắt được …. Ta thực hiện tiếp công việc : hiện một số thông tin cần thiết cho trò chơi và chạy thử chương trình. Hình : Các bước thực hiện bài toán PHẦN 2: PHÂN TÍCH VÀ THIẾT KẾ BÀI TOÁN 2.1 GIẢI QUYẾT CÁC MỤC TIÊU ĐẶT RA VỚI NGƯỜI CHƠI XÂY DỰNG BÀN CỜ Đinh Tiến Sĩ – Phan Văn Thìn – Lâm Viết Tùng – Đinh Văn Đông – Nguyễn Anh Dũng – Lê Minh Đức 6 Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning Hình : Khung bàn cờ Bàn cờ là một JPanel, khung bàn cờ sẽ được vẽ trên JPanel này. Việc vẽ khung bàn cờ là vẽ các đường ngang và dọc (gồm có 10 đường ngang, 9 đường dọc), việc này sẽ được đảm nhiệm bởi hàm DrawLine(x1, y1, x2, y2) trong lớp Graphics của Java (trong đó x1, y1 là tọa độ ta bắt đầu vẽ, x2, y2 là tọa độ ta kết thúc vẽ) Bắt đầu ta vẽ 5 đường ngang, sau đó vẽ 9 đường dọc giao với 9 đường ngang đó, các vị trí nước đi trong cung của tướng được đánh dấu bởi dấu X, sẽ được xây dựng là 2 đường thẳng giao nhau (đường đầu tiên là từ vị trí thứ 4 tới vị trí thứ 24 trên bàn cờ, đường thứ 2 là từ vị trí thứ 6 tới vị trí thứ 22 của bàn cờ) như vậy ta hoàn thành việc vẽ ½ bàn cờ Đinh Tiến Sĩ – Phan Văn Thìn – Lâm Viết Tùng – Đinh Văn Đông – Nguyễn Anh Dũng – Lê Minh Đức 7 Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning Việc vẽ ½ bàn cờ còn lại cũng tương tự, vị trí ta bắt đầu vẽ là vị trí thứ 46 của bàn cờ. Tiếp theo ta đi vẽ các quân cờ trên bàn cờ. Hình : Bàn cờ hoàn chỉnh Kích thước của mỗi ô bàn cờ là Width, nên kích thước chiều ngang của bàn cờ là (Size_X – 1) * Width, còn kích thước chiều dọc của bàn cờ là (Size_Y – 1) * Width Từ đó ta hoàn toàn có thể xác định được tọa của 90 giao điểm trên bàn cờ (9 đường dọc và 10 đường ngang), công việc tiếp theo là ta vẽ các quân cờ lên 90 giao điểm ấy để được bàn cờ hoàn chỉnh tại trạng thái ban đầu của nó. Mỗi vị trí là một JLabel, có kích thước xác định, và có phương thức MoveClicked() để nhận sự kiện mà người chơi khi đi một nước cờ. Đinh Tiến Sĩ – Phan Văn Thìn – Lâm Viết Tùng – Đinh Văn Đông – Nguyễn Anh Dũng – Lê Minh Đức 8 Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning Mỗi quân cờ là một ảnh đại diện được chèn vào trong các JLabel đó, ở vị trí không có quân cờ, JLabel không được thiết lập hình ảnh, rõ ràng có hai bên phân biệt do đó ta có phải có hai mảng lưu hai loại quân cờ khác nhau đặc trưng cho hai bên. Việc mỗi vị trí quân cờ là ta sẽ tìm xem ở vị trí đó, quân cờ này thuộc bên nào (dựa vào mảng color_pieces[] trong chương trình để phân biệt quân cờ của hai bên) thì ta sẽ tìm ảnh tương ứng trong mảng loại quân đó, công việc tiếp theo là ta xem nó là quân cờ gì, để thiết lập tương ứng là ảnh của quân đó (việc này được tìm trong mảng chess_pieces[] trong chương trình để cho biết nó là quân cờ gì), việc thiết lập ảnh tương ứng được thực hiện bởi hàm SetIcon() trong lớp JLabel của Java. Cứ như vậy duyệt hết vị trí các quân cờ trên bàn cờ, ta đã hoàn thành việc vẽ các quân cờ ở trạng thái ban đầu. XỬ LÝ SỰ KIỆN CLICK CHUỘT Việc xử lý sự kiện click chuột để nhận tham số mà người chơi truyền vào là nước đi của mình. Sẽ được thực hiện thông qua phương thức nhận sự kiện click trên chuột của mỗi JLabel đại diện cho từng quân cờ ở trên, sau khi sự kiện xảy ra các biến toàn cục (vị trí các quân cờ, lượt đi của mỗi bên, …) sẽ được cập nhật để đến lượt đối phương thực hiện nước đi của mình. 2.2 GIẢI QUYẾT CÁC MỤC TIÊU ĐẶT RA VỚI MÁY XÂY DỰNG LUẬT ĐI HỢP LỆ CHO CÁC QUÂN CỜ Việc duyệt hết các nước đi trên bàn cờ trước hết đòi hỏi ta phải nắm rõ luật đi hợp lệ của các quân cờ trên bàn cờ tướng. Ta có thể nhắc lại luật đi của từng quân trên bàn cờ như sau : Đinh Tiến Sĩ – Phan Văn Thìn – Lâm Viết Tùng – Đinh Văn Đông – Nguyễn Anh Dũng – Lê Minh Đức 9 tướng : chỉ được đi trong cung, trái phải trên dưới 1 nước tốt : tiến bên mình : lên trên đối phương : thêm trái phải sĩ : tiến lùi một ví trí trong dấu X tượng : chỉ ở bên mình, đi đường chéo của 4 ô, có cản xe : ngang, dọc tung hoành pháo ngang dọc tung hoành, nổ khi bị chặn mã : tung hoành, đi đường chéo 2 ô, có cản Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning Hình : Luật đi hợp lệ của các quân cờ Sau khi hiểu được luật chơi của từng quân cờ ta tiến hành xây dựng nước đi hợp lệ cho chúng dựa trên các luật ấy. Sau khi tìm hiểu ta có được kết luận sau : mỗi quân cớ có thể đi được trong một số hướng giới hạn quân đi được số hướng (nhiều nhất là quân mã với 8 hướng), trong mỗi hướng thì quân xe và quân pháo lại có thể đi được nhiều nước nhất (với 9 nước có thể đi được trong một hướng), bảng sau sẽ thông tin chi tiết : Loại quân cờ Số hướng tối đa Số nước tối đa trong một hướng Tướng 4 1 Sĩ 4 1 Tượng 4 1 Xe 4 9 Pháo 4 9 Mã 8 1 Tốt 3 1 Bảng : Thông tin về số hướng, nước có thể đi của mỗi quân cờ Rõ ràng dựa vào bảng trên ta có thể thực hiện duyệt được toàn thể các nước đi hợp lệ trong một thế cờ, ý tưởng đơn giản là : Duyệt mọi vị trí trong bàn cờ hiện tại { Nếu vị trí đó là quân thuộc bên đang đến lượt đi, thì duyệt các hướng có thể có của quân đó Đinh Tiến Sĩ – Phan Văn Thìn – Lâm Viết Tùng – Đinh Văn Đông – Nguyễn Anh Dũng – Lê Minh Đức 10 [...]... thời giải áp là ta phải tìm cách nào đó cắt bớt các nhánh không cần thiết của cây trò chơi giúp cho chi phí duyệt giảm được đáng kể Việc giải quyết hai câu hỏi trên sẽ được trình bày chi tiết trong phần sau PHẦN 3: CÔNG NGHỆ VÀ THUẬT TOÁN SỬ DỤNG Đinh Tiến Sĩ – Phan Văn Thìn – Lâm Viết Tùng – Đinh Văn Đông – Nguyễn Anh Dũng – Lê Minh Đức 12 Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta. .. Minh Đức 20 Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning Đối với người chơi Thao tác thực hiện nước đi sử dụng chuột trên giao diện bàn cờ Đối với máy tính Thực hiện đi tự động sử dụng thuật toán Alphabeta với độ sâu từ 2  5 hoặc có thể sâu hơn nữa nhưng thời gian diễn ra rất chậm Bảng : Kết luận 5.2 HƯỚNG PHÁT TRIỂN 1 Xây dựng tính năng máy tự động chơi cờ ( sử dụng 2 hàm... giá trị quân cờ trên bàn If(quân mình) s += giá trị của quân đó Else(quân đối phương) s -= giá trị của quân đó Return s End PHẦN 4: XÂY DỰNG CHƯƠNG TRÌNH MINH HỌA Đinh Tiến Sĩ – Phan Văn Thìn – Lâm Viết Tùng – Đinh Văn Đông – Nguyễn Anh Dũng – Lê Minh Đức 18 Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning 4.1 XÂY DỰNG CHƯƠNG TRÌNH MINH HỌA Hình : Hình ảnh chương trình minh... Trước khi nói về hàm alpha-beta ta nói về hàm minimax : Chúng ta có một bộ phận phân tích thế cờ có thể áp dụng được tất cả các luật, các phương pháp đánh cờ khác nhau vào từng thế cờ và chuyển đổi chúng thành một con số đại diện (cho điểm thế cờ) Mặt khác ta giả sử con số đó là dương khi áp dụng cho thế cờ của một đấu thủ (được gọi là người chơi cực đại – maximize), và là âm khi áp dụng cho đấu thủ bên... Thìn – Lâm Viết Tùng – Đinh Văn Đông – Nguyễn Anh Dũng – Lê Minh Đức 11 Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning Thông tin về mọi nước đi xuất phát từ một thế cờ, sẽ được lưu trong mảng Save_Move, trong đó mỗi vị trí của mảng là một trường gồm hai thông số (vị trí xuất phát, vị trí sẽ đến của quân cờ đó) Và do ta phải thực hiện với độ sâu lồng nhau, nên phải có biến... cắt bỏ phụ thuộc nhiều vào tốc độ thu hẹp – thu hẹp càng nhanh cắt bỏ càng nhiều Đinh Tiến Sĩ – Phan Văn Thìn – Lâm Viết Tùng – Đinh Văn Đông – Nguyễn Anh Dũng – Lê Minh Đức 17 Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning 3.2 HÀM LƯỢNG GIÁ THẾ CỜ Hàm lượng giá thế cờ được thiết kế đơn giản (giống như cách chơi cờ vồ trong thực tế), đó là nó đánh giá cho điểm bằng cách, lấy... Tùng – Đinh Văn Đông – Nguyễn Anh Dũng – Lê Minh Đức 19 Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning 4.2 KẾT QUẢ Độ sâu 1 Số nút 44 lượng Thời gian 0.00 2 877 0.00 3 24441 0.30 4 150480 12.0 5 5574794 90 6 62929742 990 Bảng : Bảng kết quả khi chạy thử chương trình PHẦN 5: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN 5.1 KẾT LUẬN Chương trình đã tương đối hoàn thiện so với mức yêu cầu ban.. .Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning { Trong mỗi hướng của quân này, thì ta lại duyệt xem nó có thể đi được bao nhiêu vị trí trong hướng đó Kết quả của mỗi nước đi hợp lệ sẽ được lưu trong mảng Save_Move (mỗi phần tử của mảng là một trường gồm hai thông số, vị trí bắt đầu và vị trí mà nó sẽ được đi đến) } } Đó là ý tưởng... Phan Văn Thìn – Lâm Viết Tùng – Đinh Văn Đông – Nguyễn Anh Dũng – Lê Minh Đức 15 Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning Hình : Thuật toán alpha-beta Bây giờ ta lại giả sử nút tiếp theo được lượng giá cho kết quả là 1 Nếu đi vào nhánh này thì đối phương sẽ đảm bảo làm điểm của người chơi cực đại không thể vượt quá được giá trị 1 dù là các lượng giá của các nút khác... cấp chức năng lưu lại thế cờ (file hay cơ sở dữ liệu) để có thể nạp lại và chơi tiếp Cho phép người chơi được bầy cờ thế bầy xong mới chơi tiếp 2 3 4 5 6 Bảng : Hướng phát triển chương trình TÀI LIỆU THAM KHẢO 1 2 3 4 Slide bài giảng Ts Phạm Văn Hải http://docs.oracle.com/javase/tutorial/ Tài liệu hướng dẫn viết chương trình chơi cờ tướng Ts Phạm Hồng Nguyên Nguồn Internet… Đinh Tiến Sĩ – Phan Văn Thìn . Đức 6 Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning Hình : Khung bàn cờ Bàn cờ là một JPanel, khung bàn cờ sẽ được vẽ trên JPanel này. Việc vẽ khung bàn cờ là vẽ. Lê Minh Đức 7 Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning Việc vẽ ½ bàn cờ còn lại cũng tương tự, vị trí ta bắt đầu vẽ là vị trí thứ 46 của bàn cờ. Tiếp theo. Minh Đức 17 Chương Trình Chơi Cờ Tướng Tự Động – Sử Dụng Giải Thuật Alpha-Beta Pruning 3.2 HÀM LƯỢNG GIÁ THẾ CỜ Hàm lượng giá thế cờ được thiết kế đơn giản (giống như cách chơi cờ vồ trong

Ngày đăng: 23/10/2014, 23:54

Từ khóa liên quan

Mục lục

  • Thông Tin Chung

  • Danh Mục Bảng Biểu

  • Danh Mục Hình Ảnh

  • Lời Nói Đầu

  • Phần 1: Khảo Sát Và Đặc Tả Yêu Cầu Bài Toán

    • 1.1 Mục đích

    • 1.2 Mục tiêu

    • 1.3 Vấn đề, yêu cầu bài toán

    • Phần 2: Phân Tích Và Thiết Kế Bài Toán

      • 2.1 Giải quyết các mục tiêu đặt ra với người chơi

        • Xây dựng bàn cờ

        • xử lý sự kiện click chuột

        • 2.2 Giải quyết các mục tiêu đặt ra với máy

          • Xây dựng luật đi hợp lệ cho các quân cờ

          • Tìm kiếm nước đi tối ưu trên cây nước đi

          • Phần 3: Công nghệ và thuật toán sử dụng

            • 3.1 Thuật toán minimax, alpha-beta

            • 3.2 Hàm lượng giá thế cờ

            • Phần 4: Xây Dựng Chương Trình Minh Họa

              • 4.1 Xây dựng chương trình minh họa

              • 4.2 Kết quả

              • Phần 5: Kết Luận Và Hướng Phát Triển

                • 5.1 Kết Luận

                • 5.2 Hướng Phát Triển

                • Tài Liệu Tham Khảo

Tài liệu cùng người dùng

Tài liệu liên quan