You are on page 1of 7

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ụ:

Giả sử ta có đồ thị sau:

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.

Thực hiện Python:

2. Tìm kiếm theo chiều sâu (DFS)


Thuật toán:

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.

Thực hiện Python:

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:*

Khởi tạo hai tập hợp open và closed.


Thêm đỉnh bắt đầu vào tập hợp open.
Lặp lại cho đến khi tập hợp open rỗng:
Lấy đỉnh u có giá trị f(u) nhỏ nhất trong tập hợp open.
Di chuyển u từ tập hợp open sang tập hợp closed.
Nếu u là đỉnh đích, dừng thuật toán.
Duyệt qua tất cả các đỉnh v kề với u:
Nếu v không thuộc tập hợp closed:
Tính toán g(v) và h(v).
Tính toán f(v) = g(v) + h(v).
Thêm v vào tập hợp open nếu chưa có.
Ví dụ:

Giả sử ta có đồ thị sau:


Thực hiện Python:

Báo Cáo Về Design Pattern: Singleton

Phần 1: Tìm hiểu Design Pattern Singleton

1. Giới thiệu về Design Pattern

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.

3. Cách hoạt động của Singleton Pattern

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:

Dễ dàng triển khai và sử dụng.


Đảm bảo rằng chỉ có một thể hiện duy nhất của lớp tồn tại trong suốt vòng đời
của ứng dụng.
Giảm thiểu việc sử dụng bộ nhớ và tài nguyên hệ thống.
Nhược đ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

You might also like