




Preview text:
Báo cáo bài tập lớn môn trí tuệ nhân tạo - giới thiệu thành viên
-chiến lược mà nhóm cài đặt là phương pháp bfs: tìm
kiếm cây nhị phân theo chiều sâu
+ khai báo cho cấu trúc của cây nhị phân và tạo các nút trái phải trong cây
+Kiểm tra con trỏ root có bằng nullpt hay không
nếu có thì kết thúc hàm
+khai báo hàng đợi quece chứa con trỏ đến các nút trongcây
+Sử dụng vòng lặp while để lặp qua các nút trong hàng đợi:
+Lấy ra nút hiện tại từ đầu hàng đợi (q.front()).
+In giá trị của nút hiện tại ra màn hình.
+Nếu nút hiện tại có con trái, đưa con trỏ của nút con trái vào hàng đợi.
+Nếu nút hiện tại có con phải, đưa con trỏ của nút con phảivàohàngđợi
+ #include : Chỉ thị tiền xử lý để bao gồm
thư viện vector, mà bạn sử dụng để lưu trữ danh
sách các sự kiện trong tri thức
+ struct KnowledgeBase: Đây là định nghĩa của một cấu trúc dữ liệu
+void addFact(const std::string& subject, const
std::string& predicate): Đây là một phương thức
(hàm thành viên) của KnowledgeBase. Phương thức
này thêm một sự kiện (cặp subject và predicate) vào
tri thức bằng cách thêm nó vào vector facts
+bool hasFact(const std::string& subject, const
std::string& predicate): Đây là một phương thức
khác của KnowledgeBase. Phương thức này kiểm tra
xem một sự kiện (cặp subject và predicate) đã tồn tại
trong tri thức hay chưa. Nó lặp qua vector facts và
kiểm tra từng cặp sự kiện xem có trùng khớp với
subject và predicate được truyền vào không. Nếu có
trùng khớp, phương thức trả về true, ngược lại trả về false
knowledge.addFact("Alice", "isHuman");
knowledge.addFact("Bob", "isHuman");
knowledge.addFact("Carol", "isCat");
knowledge.addFact("Alice", "likesCoffee");
knowledge.addFact("Bob", "likesTea");
Tạo một đối tượng KnowledgeBase có tên là
knowledge, mà sẽ đại diện cho tri thức của chương trình.
Sử dụng phương thức addFact để thêm các sự kiện
vào tri thức. Cụ thể, bạn đã thêm sự kiện như "Alice
isHuman", "Bob isHuman", "Carol isCat", "Alice
likesCoffee", và "Bob likesTea".
Sử dụng phương thức hasFact để kiểm tra xem một
sự kiện cụ thể có tồn tại trong tri thức hay không, và
sau đó in ra kết quả dựa trên kết quả kiểm tra
+double sigmoid(double x): Đây là khai báo hàm
sigmoid, mà là một hàm kích hoạt thường được sử
dụng trong mạng nơ-ron để biến đổi đầu vào thành
đầu ra trong khoảng [0, 1].
+Neuron: Đây là khai báo của một lớp (class) có tên
Neuron, đại diện cho một nơ-ron đơn giản. Lớp này
có các thành viên: weight1, weight2 (trọng số) và
bias (ngưỡng nơ-ron). Constructor của lớp này khởi
tạo giá trị mặc định cho các trọng số và ngưỡng.
+double feedforward(double input1, double input2):
Đây là phương thức feedforward của lớp Neuron.
Phương thức này nhận vào hai đầu vào input1 và
input2, tính toán tổng có trọng số của các đầu vào và
ngưỡng, sau đó áp dụng hàm kích hoạt sigmoid và trả về kết quả
+Tạo hai đối tượng Neuron có tên hiddenNeuron1
và hiddenNeuron2, đại diện cho hai nơ-ron ẩn.
Định nghĩa các mảng input1 và input2 đại diện cho
dữ liệu đầu vào của bài toán XOR. Có tổng cộng 4
mẫu dữ liệu với các giá trị 0 và 1.
Sử dụng một vòng lặp để duyệt qua từng mẫu dữ liệu:
Gọi phương thức feedforward của hiddenNeuron1
và hiddenNeuron2 với các đầu vào input1[i] và
input2[i] để tính toán đầu ra của các nơ-ron ẩn. Gọi lại phương thức feedforward của
hiddenNeuron1 với đầu ra của hai nơ-ron ẩn trước
đó để tính toán kết quả cuối cùng.
In ra kết quả đầu vào và kết quả đầu ra tương ứng. .