Professional Documents
Culture Documents
1. Tìm kiếm theo chiều rộng (BFS)
1. Tìm kiếm theo chiều rộng (BFS)
Thuật toán:
Khởi tạo một hàng đợi rỗng Q và đánh dấu tất cả các đỉnh là chưa được
thăm.
Thêm đỉnh bắt đầu vào hàng đợi Q.
Lặp lại cho đến khi hàng đợi Q rỗng:
Lấy đỉnh đầu tiên u ra khỏi hàng đợi Q.
Đánh dấu đỉnh u là đã được thăm.
Duyệt qua tất cả các đỉnh v kề với u:
Nếu v chưa được thăm, thêm v vào hàng đợi Q.
Ví dụ:
1 -- 2 -- 3
|\/|
4 -- 5
Với đỉnh bắt đầu là 1, thuật toán BFS sẽ duyệt các đỉnh theo thứ tự: 1, 2, 3, 4,
5.
Khởi tạo một ngăn xếp rỗng S và đánh dấu tất cả các đỉnh là chưa được
thăm.
Thêm đỉnh bắt đầu vào ngăn xếp S.
Lặp lại cho đến khi ngăn xếp S rỗng:
Lấy đỉnh đầu tiên u ra khỏi ngăn xếp S.
Đánh dấu đỉnh u là đã được thăm.
Duyệt qua tất cả các đỉnh v kề với u:
Nếu v chưa được thăm, thêm v vào ngăn xếp S.
Ví dụ:
Với cùng đồ thị trên và đỉnh bắt đầu là 1, thuật toán DFS sẽ duyệt các đỉnh
theo thứ tự: 1, 2, 5, 3, 4.
Thuật toán A*
Hàm heuristic:
f(n): Ước lượng chi phí của đường đi từ đỉnh n đến đích.
g(n): Chi phí thực tế của đường đi từ đỉnh bắt đầu đến đỉnh n.
h(n): Ước lượng chi phí của đường đi từ đỉnh n đến đích.
Thuật toán A:*
Design Pattern là một cách tiếp cận cụ thể để giải quyết các vấn đề phổ biến
trong thiết kế phần mềm. Mỗi mẫu được thiết kế để giải quyết một loại vấn đề
cụ thể mà các nhà phát triển phần mềm thường gặp phải khi thiết kế ứng
dụng.
2. Singleton Pattern
Singleton Pattern là một trong những mẫu thiết kế phổ biến nhất trong lập
trình hướng đối tượng. Mục đích chính của Singleton Pattern là đảm bảo rằng
một lớp chỉ có một thể hiện duy nhất và cung cấp một cách để truy cập nó từ
bất kỳ đâu trong chương trình.
Singleton Pattern thường triển khai bằng cách sử dụng một biến tĩnh để lưu
trữ thể hiện duy nhất của lớp.
Một phương thức tĩnh được cung cấp để kiểm tra xem thể hiện đã được tạo
ra chưa. Nếu chưa, nó sẽ tạo một thể hiện mới và trả về nó; nếu không, nó sẽ
trả về thể hiện đã tồn tại.
Constructor của lớp được đánh dấu là private hoặc protected để ngăn chặn
việc tạo các thể hiện mới từ bên ngoài lớp.
4. Ưu điểm và Nhược điểm của Singleton Pattern
Ưu điểm:
Có thể gây ra các vấn đề về đa luồng nếu không được triển khai đúng cách.
Mã của lớp Singleton có thể trở nên phức tạp hơn so với các phương pháp
khác để quản lý trạng thái.
Phần 2: Xây dựng ứng dụng bằng Python sử dụng Singleton Pattern