Tải bản đầy đủ (.docx) (23 trang)

BÁO cáo CHUYÊN đề học PHẦN NHẬP môn TRÍ TUỆ NHÂN tạo đề tài PHƯƠNG PHÁP tìm KIẾM lời GIẢI THỎA mãn các RÀNG BUỘC và bài TOÁN SODOKU

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (574.55 KB, 23 trang )

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
NHẬP MƠN TRÍ TUỆ NHÂN TẠO
ĐỀ TÀI:
PHƯƠNG PHÁP TÌM KIẾM LỜI GIẢI THỎA MÃN CÁC RÀNG
BUỘC VÀ BÀI TỐN SODOKU

Sinh viên thực hiện

Giảng viên hướng dẫn
Ngành
Chun ngành
Lớp
Khóa

Hà Nội, tháng 12 năm 2021
1

download by :


PHIẾU CHẤM ĐIỂM
Sinh viên thực hiện:
STT

H

1
Nguyễn Kiều Đăng Quang


Mã SV: 19810310367

2
Lê Quốc Toàn
Mã SV: 19810310274

2

download by :


Giảng viên chấm:

Họ và tên

Giảng viên chấm 1:

Giảng viên chấm 2:

3

download by :


MỤC LỤC
LỜI MỞ ĐẦU
CHƯƠNG 1: GIỚI THIỆU VỀ ĐỀ TÀI VÀ TRÍ TUỆ NHÂN TẠO
1.1.

Giới thiệu về trí tuệ nhân tạo


1.2.

Giới thiệu đề tài

1.3

Cơ sở lý thuyết

1.3.1

Ý tưởng

1.3.2

Cơ sở lý thuyết

CHƯƠNG 2: THUẬT TOÁN GIẢI SUDOKU
1. Giới thiệu lại về luật chơi và cách giải
2. Thuật toán giải sudoku
CHƯƠNG 3: CÀI ĐẶT, ĐÁNH GIÁ THỬ NGIỆM
3.1 Cài đặt với Python
3.1.1 Code
3.1.2. Kết quả đạt được
3.1.3 Kết luận
KẾT LUẬN
TÀI LIỆU THAM KHẢO

4


download by :


DANH MỤC HÌNH ẢNH
Hình 1. ví dụ về 1 đề bài sudoku 9x9
Hình 2. đáp án câu đố
Hình 3. Cây tìm kiếm quay lui
Hình 4. Code đầy đủ (1)
Hình 5. Code đầy đủ (2)
Hình 6. Kết quả

5

download by :


LỜI MỞ ĐẦU
Đề tài Sudoku 9x9 sử dụng ngôn ngữ lập trình python thể hiện các thuật tốn
đệ quy và quay lui bằng cơng cụ lập trình sublime python để giải một bài tốn
Sudoku 9x9 cho trước. Thơng qua báo cáo này, chúng em xin gửi lời cảm ơn đến
thầy Phạm Đức Hồng – giảng viên hướng dẫn đã hỗ trợ tận tình và giải đáp các
thắc mắc trong suốt quá trình làm đồ án Giải thuật và Lập trình. Tuy nhiên, do kiến
thức còn hạn hẹp, mặc dù đã nỗ lực hết sức mình, nhưng chắc rằng đồ án khó tránh
khỏi thiếu sót. Chúng em rất mong nhận được sự thơng cảm và chỉ bảo tận tình của
q Thầy cơ và các bạn.
Mặc dù đề tài đã hồn thành, nhưng chắc chắn vẫn khơng thể tránh khỏi
những thiếu sót, vì vậy chúng em mong muốn nhận được các ý kiến đóng góp
của các thầy cơ để có thể hồn thiện hơn nữa.

Chúng em xin chân thành cảm ơn!


6

download by :


CHƯƠNG 1: GIỚI THIỆU VỀ ĐỀ TÀI VÀ TRÍ TUỆ NHÂN TẠO
1.1. Giới thiệu về trí tuệ nhân tạo
1.1.1. Trí tuệ nhân tạo là gì ?
Để hiểu trí tuệ nhân tạo (artificial intelligence) là gì chúng ta bắt đầu với khái
niệm sự bay nhân tạo (flying machines), tức là cái máy bay.
Đã từ lâu, loài người mong muốn làm ra một cái máy mà có thể di chuyển
được trên khơng trung mà khơng phụ thuộc vào địa hình ở dưới mặt đất, hay nói
cách khác là máy có thể bay được. Khơng có gì ngạc nhiên khi những ý tưởng đầu
tiên làm máy bay là từ nghiên cứu cách con chim bay. Những chiếc máy biết bay
được thiết kế theo nguyên lý “vỗ cánh” như con chim chỉ có thể bay được quãng
đường rất ngắn và lịch sử hàng không thực sự sang một trang mới kể từ anh em nhà
Wright thiết kế máy bay dựa trên các nguyên lý của khí động lực học
(aerodynamics).
Các máy bay hiện nay, như đã thấy, có sức trở rất lớn và bay được qng
đường có thể vịng quanh thế giới. Nó khơng nhất thiết phải có nguyên lý bay
của con chim nhưng vẫn bay được như chim (dáng vẻ), và còn tốt hơn chim.
Quay lại câu hỏi Trí tuệ nhân tạo là gì. Trí tuệ nhân tạo là trí thơng minh của
máy do con người tạo ra. Ngay từ khi chiếc máy tính điện tử đầu tiên ra đời, các
nhà khoa học máy tính đã hướng đến phát hiển hệ thống máy tính (gồm cả phần
cứng và phần mềm) sao cho nó có khả năng thơng minh như lồi người. Mặc dù
cho đến nay, theo quan niệm của người viết, ước mơ này vẫn còn xa mới thành
hiện thực, tuy vậy những thành tựu đạt được cũng không hề nhỏ: chúng ta đã làm
được các hệ thống (phần mềm chơi cờ vua chạy trên siêu máy tinh GeneBlue) có
thể thắng được vua cờ thế giới; chúng ta đã làm được các phần mềm có thể chứng

minh được các bài tốn hình học; v.v. Hay nói cách khác, trong một số lĩnh vực,
máy tính có thể thực hiện tốt hơn hoặc tương đương con người (tất nhiên khơng
phải tất cả các lĩnh vực). Đó chính là các hệ thống thơng minh.
Có nhiều cách tiếp cận để làm ra trí thơng minh của máy (hay là trí tuệ nhân
tạo), chẳng hạn là nghiên cứu cách bộ não người sản sinh ra trí thơng minh của lồi
người nhưthế nào rồi ta bắt chước ngun lý đó, nhưng cũng có những cách khác
sử dụng ngun lý hồn tồn khác với cách sản sinh ra trí thơng minh của lồi
người mà vẫn làm ra cái máy thơng minh như hoặc hơn người; cũng giống như
máy bay hiện nay bay tốt hơn con chim do nó có cơ chế bay không phải là giống
như cơ chế bay của con chim.
7

download by :


Như vậy, trí tuệ nhân tạo ở đây là nói đến khả năng của máy khi thực hiện các
công việc mà con người thường phải xử lý; và khi dáng vẻ ứng xử hoặc kết quả thực
hiện của máy là tốt hơn hoặc tương đương với con người thì ta gọi đó là máy thơng
minh hay máy đó có trí thơng minh. Hay nói cách khác, đánh giá sự thơng minh của
máy khơng phải dựa trên ngun lý nó thực hiện nhiệm vụ đó có giống cách con
người thực hiện hay không mà dựa trên kết quả hoặc dáng vẻ ứng xử bên ngồi của
nó có giống với kết quả hoặc dáng vẻ ứng xử của con người hay không.

Các nhiệm vụ của con người thường xuyên phải thực hiện là: giải bài tốn
(tìm kiếm, chứng minh, lập luận), học, giao tiếp, thể hiện cảm xúc, thích nghi với
mơi trường xung quanh, v.v., và dựa trên kết quả thực hiện các nhiệm vụ đó để kết
luận rằng một ai đó có là thơng minh hay khơng. Mơn học Trí tuệ nhân tạo nhằm
cung cấp các phương pháp luận để làm ra hệ thống có khả năng thực hiện các
nhiệm vụ đó: giải tốn, học, giao tiếp, v.v. bất kể cách nó làm có như con người
hay khơng mà là kết quả đạt được hoặc dáng vẻ bên ngoài như con người.

Trong mơn học này, chúng ta sẽ tìm hiểu các phương pháp để làm cho máy
tính biết cách giải bài toán, biết cách lập luận, biết cách học, v.v.
1.1.2. Lịch sử
Vào năm 1943, Warren McCulioch và Walter Pitts bắt đầu thực hiện nghiên
cứu ba cơ sở lý thuyết cơ bản: triết học cơ bản và chức năng của các noron thần
kinh; phân tích các mệnh đề logic; và lý thuyết dự đoán của Turing. Các tác giả đã
nghiên cứu đề xt mơ hình noron nhân tạo, mỗi noron đặc trưng bởi hai trạng
thái “bật”, “tắt” và phát hiện mạng noron có khả năng học.
Thuật ngữ “Trí tuệ nhân tạo” (Artificial Intelligence - AI) được thiết lập bởi
John McCarthy tại Hội thảo đầu tiên về chủ đề này vào mùa hè năm 1956. Đồng
thời, ông cũng đề xuất ngôn ngữ lập trình Lisp – một trong những ngơn ngữ lập
trình hàm tiêu biểu, được sử dụng trong lĩnh vực AI. Sau đó, Alan Turing đưa ra
"Turing test" như là một phương pháp kiểm chứng hành vi thông minh.
Thập kỷ 60, 70 Joel Moses viết chương trình Macsyma - chương trình tốn
học sử dụng cơ sở tri thức đầu tiên thành công. Marvin Minsky và Seymour Papert
đưa ra các chứng minh đầu tiên về giới hạn của các mạng nơ-ron đơn giản. Ngơn
ngữ lập trình logic Prolog ra đời và được phát triển bởi Alain Colmerauer. Ted
Shortliffe xây dựng thành công một số hệ chuyên gia đầu tiên trợ giúp chẩn đoán
8

download by :


trong y học, các hệ thống này sử dụng ngôn ngữ luật để biểu diễn tri thức và
suy diễn.
Vào đầu những năm 1980, những nghiên cứu thành công liên quan đến AI
như các hệ chuyên gia (expert systems) – một dạng của chương trình AI mơ phỏng
tri thức và các kỹ năng phân tích của một hoặc nhiều chuyên gia con người.
Vào những năm 1990 và đầu thế kỷ 21, AI đã đạt được những thành tựu to
lớn nhất, AI được áp dụng trong logic, khai phá dữ liệu, chẩn đoán y học và nhiều

lĩnh vực ứng dụng khác trong công nghiệp. Sự thành công dựa vào nhiều yếu tố:
tăng khả năng tính tốn của máy tính, tập trung giải quyết các bài toán con cụ thể,
xây dựng các mối quan hệ giữa AI và các lĩnh vực khác giải quyết các bài toán
tương tự, và một sự chuyển giao mới của các nhà nghiên cứu cho các phương pháp
toán học vững chắc và chuẩn khoa học chính xác.
1.1.3. Lĩnh vực của AI
Lập luận, suy diễn tự động: Khái niệm lập luận (reasoning), và suy diễn
(reference) được sử dụng rất phổ biến trong lĩnh vực AI. Lập luận là suy diễn
logic, dùng để chỉ một tiến trình rút ra kết luận (tri thức mới) từ những giả
thiết đã cho (được biểu diễn dưới dạng cơ sở tri thức). Như vậy, để thực hiện
lập luận người ta cần có các phương pháp lưu trữ cơ sở tri thức và các thủ tục
lập luận trên cơ sở tri thức đó.
Biểu diễn tri thức: Muốn máy tính có thể lưu trữ và xử lý tri thức thì cần có
các phương pháp biểu diễn tri thức. Các phương pháp biểu diễn tri thức ở
đây bao gồm các ngôn ngữ biểu diễn và các kỹ thuật xử lý tri thức. Một ngôn
ngữ biểu diễn tri thức được đánh giá là “tốt” nếu nó có tính biểu đạt cao và
các tính hiệu quả của thuật tốn lập luận trên ngơn ngữ đó. Tính biểu đạt của
ngơn ngữ thể hiện khả năng biểu diễn một phạm vi rộng lớn các thơng tin
trong một miền ứng dụng. Tính hiệu quả của các thuật toán lập luận thể hiện
chi phí về thời gian và khơng gian dành cho việc lập luận. Tuy nhiên, hai yếu
tố này dường như đối nghịch nhau, tức là nếu ngơn ngữ có tínhbiểu đạt cao
thì thuật tốn lập luận trên đó sẽ có độ phức tạp lớn (tính hiệu quả thấp)và
ngược lại (ngơn ngữ đơn giản, có tính biểu đạt thấp thì thuật tốn lập luận
trên đó sẽ có hiệu quả cao). Do đó, một thách thức lớn trong lĩnh vực AI là
xây dựng các ngơn ngữ biểu diễn tri thức mà có thể cân bằng hai yếu tố này,
tức là ngơn ngữ có tínhbiểu đạt đủ tốt (tùy theo từng ứng dụng) và có thể lập
luận hiệu quả.
9

download by :



Lập kế hoạch: khả năng suy ra các mục đích cần đạt được đối với các
nhiệm vụ đưa ra, và xác định dãy các hành động cần thực hiện để đạt được
mục đích đó.
Học máy: là một lĩnh vực nghiên cứu của AI đang được phát triển mạnh mẽ
và có nhiều ứng dụng trong các lĩnh vực khác nhau như khai phá dữ liệu,
khám phá tri thức,…
Xử lý ngôn ngữ tự nhiên: là một nhánh của AI, tập trung vào các ứng dụng
trên ngôn ngữ của con người. Các ứng dụng trong nhận dạng tiếng nói,
nhận dạng chữ viết, dịch tự động, tìm kiếm thơng tin,…
Hệ chun gia: cung cấp các hệ thống có khả năng suy luận để đưa ra những
kết luận. Các hệ chuyên gia có khả năng xử lý lượng thông tin lớn và cung
cấp các kết luận dựa trên những thơng tin đó. Có rất nhiều hệ chuyên gia nổi
tiếng như các hệ chuyên gia y học MYCIN, đốn nhận cấu trúc phân tử từ
cơng thức hóa học DENDRAL, …
Robotics

1.2.

Giới thiệu đề tài

Sudoku là một từ Nhật, có thể dịch tạm là con số độc nhất, (Thật ra nó có nguồn
gốc từ Mỹ với tên gọi là "đặt con số vào vị trí đúng"). Đây là một trị chơi trí tuệ
nổi tiếng, thu hút nhiều người tham gia thuộc nhiều tầng lớp, độ tuổi khác nhau.
Sudoku có nhiều biến thể khác nhau: 3x3, 4x4, 6x6, 8x8, 9x9, 12x12, 16x16,… Đối
với đề tài này, chúng em áp dụng cho sudoku dạng chuẩn 9x9. Bảng câu đố hình
vng, mỗi chiều có 9 ơ nhỏ, hợp thành 9 cột, 9 hàng và được chia thành 9 ô lớn
3x3. Một vài ơ nhỏ được đánh số, đó là những manh mối duy nhất để bạn tìm lời
giải. Tuỳ theo mức độ nhiều hay ít của các manh mối, các câu đố được xếp loại dễ,

trung bình, khó hay cực khó.

10

download by :


Hình 1: ví dụ về 1 đề bài sudoku 9x9
Cách chơi Sudoku là điền các số từ 1 đến 9 vào các ô trống theo quy luật đơn giản:





Các ô ở mỗi hàng (ngang) phải có đủ các con số từ 1 đến 9 không cần theo thứ
tự
Các ô ở mỗi hàng (dọc) phải có đủ các con số từ 1 đến 9 không cần theo thứ tự.
Mỗi miền 3x3 được viền đậm phải có đủ các số từ 1 đến 9.

Hình 2: đáp án câu đố
11

download by :


1.3 Cơ sở lý thuyết
1.3.1 Ý tưởng
Chương trình giải dựa trên thuật toán quay lui. Bằng việc liệt kê các tình huống,
thử các khả năng có thể cho đến khi tìm thấy một lời giải đúng, thuật tốn quay lui
chia nhỏ bài toán, lời giải của bài toán lớn sẽ là kết quả của việc tìm kiếm theo

chiều sâu của tập hợp các bài toán phần tử. Trong suốt quá trình tìm kiếm nếu gặp
phải một hướng nào đó mà biết chắc khơng thể tìm thấy đáp án thì quay lại bước
trước đó và tìm hướng khác kế tiếp hướng vừa tìm kiếm đó. Trong trường hợp
khơng cịn một hướng nào khác nữa thì thuật tốn kết thúc.
1.3.2 Cơ sở lý thuyết
 Thuật toán quay lui
Quay lui là một chiến lược tìm kiếm lời giải cho các bài tốn thỏa mãn ràng
buộc. Các bài toán thỏa mãn ràng buộc là các bài tốn có một lời giải đầy đủ,
trong đó thứ tự các phần tử không quan trọng. Các bài toán này bao gồm một
tập các biến mà mỗi biến cần được gán một giá trị tùy theo các ràng buộc cụ thể
của bài toán. Việc quay lui là thử tất cả các tổ hợp để tìm một lời giải. Thế mạnh
của phương pháp này là nhiều cài đặt tránh được việc phải thử nhiều tổ hợp
chưa hoàn chỉnh, và nhờ đó giảm thời gian chạy, tìm được nhiều đáp án cho
những bài tốn có nhiều cách giải.
Đó là một quá trình tìm kiếm độ sâu trong một tập hợp các lời giải. Trong quá
trình tìm kiếm, nếu ta gặp một hướng lựa chọn không thỏa mãn, ta quay lui về
điểm lựa chọn nơi có các hướng khác và thử hướng lựa chọ tiếp theo. Khi đã thử
hết các lựa chọn xuất phát từ điểm lựa chọn đó, ta quay lại điểm lựa chọn trước
đó và thử hướng lựa chọn tiếp theo tại đó. Q trình tìm kiếm thất bại khi khơng
cịn điểm lựa chọn nào nữa Quy trình đó thường được cài đặt bằng một hàm đệ
quy mà trong đó mỗi thể hiện của hàm lấy thêm một biến và lần lượt gán tất cả
các giá trị có thể cho biến đó, với mỗi lần gán giá trị lại gọi chuỗi đệ quy tiếp
theo để thử các biến tiếp theo. Chiến lược quay lui tương tự với tìm kiếm theo
độ sâu nhưng sử dụng ít khơng gian bộ nhớ hơn, nó chỉ lưu trữ trạng thái của
một lười giải hiện tại và cập nhật nó.
12

download by :



Hình 3. Cây tìm kiếm quay lui
Ở một bài tốn hiện tại (mỗi nốt), ta đi tìm lời giả cho bài tốn đó. Ứng với lời
giải, ta đi giải bài toán kế tiếp cho đến khi bài toán gốc trở nên đầy đủ.
- Lời giải của bài toán gốc thường là một lối đi từ gốc đến nốt cuối cùng.
-

13

download by :


CHƯƠNG 2: THUẬT TOÁN GIẢI SUDOKU
1.

Giới thiệu lại về luật chơi và cách giải

Sudoku là một trò chơi giải đố theo wiki định nghĩa như sau:
Sudoku (数数数数数数 (số độc) sūdoku?) (suːˈdoʊkuː/, /-ˈdɒ-/, /sə-/, ban đầu có tên
gọi là Number Place) là một trò chơi câu đố sắp xếp chữ số dựa trên logic theo tổ
hợp. Mục tiêu của trò chơi là điền các chữ số vào một lưới 9×9 sao cho mỗi cột,
mỗi hàng, và mỗi phần trong số chín lưới con 3×3 cấu tạo nên lưới chính (cũng
gọi
là “hộp”, “khối”, hoặc “vùng”) đều chứa tất cả các chữ số từ 1 tới 9. Câu đố đã
được hoàn thành một phần, người chơi phải giải tiếp bằng việc điền số. Mỗi câu
đố
được thiết lập tốt có một cách làm duy nhất.
2. Thuật tốn giải sudoku
Sau đây ta sẽ tìm thuật tốn giải Sudoku bằng kỹ thuật backtracking, ngơn ngữ lập
trình sử dụng là Python. Các bước tiến hành như sau:



Viết hàm in câu đố Sudoku ra màn hình.



Tìm vị trí các ơ trống trong Sudoku.



Với mỗi vị trí ơ trống vừa tìm được, lần lượt thử đặt số từ 1 đến 9 vào ơ
trống đó. Kiểm tra xem sau khi thử đặt số đó vào ơ trống đó thì có hợp lệ
(thỏa mãn các điều kiện về luật chơi của Sudoku hay khơng). Nếu hợp lệ
thì tiếp tục tìm các ô trống tiếp theo và lại thử, nếu không thì thử
với số_tiếp_theo



Lặp lại quy trình trên cho đến khi khơng cịn ơ trống nào trên câu
đố, hoặc khơng tìm được lời giải.

Input, một câu đố sudoku biểu diễn bởi danh sách list 2 chiều (một danh sách gồm
9 phần tử, mỗi phần tử là dòng – lại là một danh sách gồm 9 phần tử tương ứng với
9 ô trong một dịng) với các ơ trống được quy ước điền bởi số 0, ví dụ
Sudoku cau_do được biểu diễn như sau:

14


download by :



Chỉ số index trong Python được đánh từ 0 trở đi, do đó các vị trí của từng ơ trong
bảng số sẽ là cau_d0[0][0] cho đến cau_do[8][8], ở đây cau_do[d][c] là ơ số ở vị trí
dịng d và cột c.
2.1.

In câu đố ra màn hình

đây chúng ta sử dụng giao diện dòng lệnh, chưa sử dụng giao diện đồ họa GUI
nên sẽ sử dụng hàm print() của Python để in một đối tượng ra màn hình CMD.


Ta sẽ viết hàm in_sudoku để in một câu đố Sudoku có tên là q ra màn hình, sử
dụng biến d và c để biểu diễn dòng và cột.
Nếu dòng d là dòng thứ 3 hoặc 6 thì ta sẽ in ra màn hình một dịng gồm các kí tự - - - - - - - - - - để ngăn cách, mục đích là biểu diễn cho các khối ơ vng 3x3 của
Sudoku. Tương tự, nếu cột ở vị trí 3 hoặc 6 thì ta sẽ in ra kí tự | để ngăn cách. Nếu
cột ở vị trí thứ 8 thì ta sẽ xuống dòng mới.

Thử in với cau_do ở phần đầu, chúng ta được kết quả như sau, ở đây tôi dùng
SublimeText để code:

15

download by :


2.2.

Viết hàm tìm các ơ trống


Mục tiêu của chúng ta là tìm các vị trí ơ trống trong câu đố q

2.3.

Viết hàm kiểm tra tính hợp lệ

16

download by :


2.4.

Viết hàm tìm lời giải

17

download by :


CHƯƠNG 3: CÀI ĐẶT, ĐÁNH GIÁ THỬ NGIỆM
3.1 Cài đặt với Python
3.1.1 Code

Hình 4: Code đầy đủ (1)

18

download by :



Hình 5: Code đầy đủ (2)

19

download by :


3.1.2. Kết quả đạt được

Hình 6: Kết quả
3.1.3 Kết luận
-

Ưu điểm: Cài đặt thuật toán nhanh , dễ hiểu dễ cài đặt và ngắn gọn.

Nhược điểm: Chạy lâu do đệ quy nhiều lần, khơng có giao diện và khó
hình dung.
-

20

download by :


KẾT LUẬN
Với kiến thức hiện có của mình, chúng em đã hoàn thành các yêu cầu ở trên
khi tiến hành thực hiện đề tài “PHƯƠNG PHÁP TÌM KIẾM LỜI GIẢI THỎA MÃN
CÁC RÀNG BUỘC VÀ BÀI TOÁN SODOKU”. Tuy nhiên, trong q trình làm sẽ
khơng tránh khỏi những thiếu sót, hoặc cũng sẽ có những chỗ cịn vướng mắc,

chính vì vậy, chúng em mong được sự góp ý giúp đỡ của thầy giáo, để bài này
được hoàn thiện hơn !
Chúng em xin gửi lời cảm ơn chân thành tới giảng viên Phạm Đức Hồng là
giảng viên giảng dạy môn Nhập mơn Trí tuệ nhân tạo của lớp D14CNPM4 đã tận
tình hướng dẫn chúng em hoàn thành đề tài này!
Chúng em xin chân thành cảm ơn!

21

download by :


TÀI LIỆU THAM KHẢO
1.
2.

Phạm Đức Hồng, Giáo trình Nhập mơn Trí tuệ Nhân tạo, Đại học Điện
Lực
Phạm Thọ Hồn, Phạm Thị Anh Lê, Giáo trình Trí tuệ Nhân tạo, Đại
học Sư Phạm Hà Nội

Đinh Mạnh Tường, Cấu trúc dữ liệu và giải thuật, NXB khoa học kỹ
thuật, 2001.

3.

4.

N. Wirth, Algorithms and Data Structure, Prentice Hall, 1985.


5.

Cẩm nang thuật toán – cuốn 1 – Robert Sedgewich – Trần Đan Thư.

6.

Lập trình = Thuật toán + CTDL, N. Wirth.

7.

Trang web GeekforGeek.com

22

download by :



×