TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MỖI TRƯỜNG THÀNH PHÓ HỎ CHÍ MINH... Nhập vào đỉnh xuất phát X, in ra đanh sách các đỉnh theo thứ tự được duyệt theo chiều rộng từ X.. .BFS: Breadth First Se
Trang 1
TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MỖI TRƯỜNG
THÀNH PHÓ HỎ CHÍ MINH ; KHOA HE THONG THONG TIN VA VIEN THAM
BAO CAO DO AN GIUA KI MON LY THUYET DO THI
Nhom thuc hién: Nhom 10 Lop : 11_DH_CNTT4 Khoa : 2022— 2026
TP Hồ Chí Minh, 22 thúng 03 năm 2024
rang |
oO
Trang 2
TRƯỜNG ĐẠI HỌC TÀI NGUYÊN VÀ MỖI TRƯỜNG
THANH PHO HO CHi MINH KHOA HE THONG THONG TIN VA VIEN THAM
BAO CAO DO AN GIUA KI MON LY THUYET DO THI
Nhóm thực hiện: Nhóm 10 Lớp : I1 ĐH CNTT4 Khoa : 2022— 2026
TP Hồ Chí Minh, 22 tháng 03 năm 2024
Trang 2
Trang 3Người lập bảng: Trần Phạm Thành Minh
BANG TU ĐÁNH GIÁ CỦA NHÓM
Tên nhóm: Nhóm 10
STT MSSV Họ Tên Công việc Đánh giá
(%)
lam lam word
trinh
3 1150080157 Trương Văn Quốc Lam pp,lam word, code 100%
Phong
Điêm (mong muôn của nhóm): 8ẩ
DO AN
Cho đồ thị G = (V, E) trong đó V là tập hợp gồm n đỉnh V = {I, 2, ., n} va E là tập m
canh E = {(il, jl), , (im, jm)} voi ik € [1,n], Vk € [1, m]
Nhập vào đỉnh xuất phát X, in ra đanh sách các đỉnh (theo thứ tự) được duyệt theo chiều rộng
từ X
.BFS: Breadth First Search, duyệt theo chiều rộng
Tổng Quan Đồ Án
Goi y: Su dung thuật toàn trong Bảng 1.1 để in các đỉnh được duyệt theo thứ tự
Xây dựng đồ thị sử dụng ma trận kể hoặc danh sách kẻ
Bang 1.1 Thuat toán duyệt Đề thị theo chiều rộng
Thuật toản bís
1
2
3
4
5
6
7
8
9
_ while (Hang Doi con phan tir)
dequeue Hàng Đợi vào biến y
In đỉnh y ra
for all z kề với y chưa đánh dâu(tức là Mark[z]=0)
enqueue z vào Hàng Đợi
Mark[z] = 1; // Danh
Khoi tao mang Mark[] dé danh dau 0 cho tat cả các đỉnh
Chọn đỉnh X: enqueue X vào Hàng Đợi, X là đỉnh bat dau
Mark[X] = 1
Trang 3
Trang 4
11 end /while
Dữ liệu đầu vào (Input)
Trang 4
Trang 5Cài đặt ma trận kê :
a œ»⁄
Danh sách
Đỉnh 0:
Dinh 1:
Dinh 2:
Dinh 3:
Dinh 4:
Dinh 5:
Dinh 6:
Dinh 7:
Thực hiện cài đặt ma trận kê
void printMatrix()
for (int 1= 0; 1<n; 1+4+)
{
{
for (int j = 0; 3 <n; j++)
cout << adjMatrrx[1][j] <<" ";
cout << endl;
}
}
}
int main() {
Graph g(9);
Trang 5
Trang 6g.addEdge(0, 1);
g.addEdge(0, 7);
g.addEdge(1, 7);
g.addEdge(1, 2);
g.addEdge(2, 1);
g.addEdge(2, 5);
g.addEdge(2, 8);
g.addEdge(2, 3);
g.addEdge(3, 2);
g.addEdge(3, 5);
g.addEdge(3, 4);
g.addEdge(4, 3);
g.addEdge(4, 5);
g.addEdge(5, 3);
g.addEdge(5, 2);
g.addEdge(5, 4);
g.addEdge(5, 6);
g.addEdge(6, 5);
g.addEdge(6, 8);
g.addEdge(6, 7);
g.addEdge(7, 6);
g.addEdge(7, 0);
g.addEdge(7, 8);
g.addEdge(7, 1);
g.addEdge(8, 2);
g.addEdge(8, 6);
g.addEdge(8, 7);
g.printMatrix();
return 0;
8909090090
TT Ta
ee)
9199
98191
8981
C=)
A1
“A1
99909
09998
Trang 6
Trang 7Hàm nhâp ma trận kê
void printMatrix() {
for (int i = 0; i < n; i++) {
for (int j = 0; j < n; j++) {
cout << adjMatrix[i][j] << " ";
}
cout << endl;
}
}
5 Thuật toán BES
Ham doi Queue:
Bước |:
*
FRONT
Buoc 2:
0
1
+
FRONT
Bước 3:
Visited
Queue
Visited
Queue
Trang 7
Trang 80 1 Visited
`
FRONT
Bước 4:
+
FRONT
Bước Š:
+
FRONT
Bước 6:
Trang §
Trang 9+
FRONT
Thực hiện cài đặt chương trinh BES
#include <1ostream>
#include <vector>
#include <queue>
using namespace std;
class Graph {
public:
int n;
vector<vector<int>> adjList;
Graph(int numVertices) {
n =numVertices;
adjList.resize(n);
void addEdge(int u, int v) {
adjList[u].push_back(v);
adjList[v].push_back(u);
}
void BFS(int start) {
vector<bool> visited(n, false);
queue<int> q;
q.push(start);
visited[start] = true;
while (!q.empty()) {
int currentVertex = q.front();
q.popQ:
cout << currentVertex << " ":
for (int neighbor : adjList[currentVertex]) {
if (!visited[neighbor]) { visited[neighbor] = true;
Queue
Trang 9
Trang 10q.push(neighbor);
}
}
b
int main() {
Graph g(9);
g.addEdge(0, 1);
g.addEdge(0, 7);
g.addEdge(1, 7);
g.addEdge(1, 2);
g.addEdge(2, 1);
g.addEdge(2, 5);
g.addEdge(2, 8);
g.addEdge(2, 3);
g.addEdge(3, 2);
g.addEdge(3, 5);
g.addEdge(3, 4);
g.addEdge(4, 3);
g.addEdge(4, 5);
g.addEdge(5, 3);
g.addEdge(5, 2);
g.addEdge(5, 4);
g.addEdge(5, 6);
g.addEdge(6, 5);
g.addEdge(6, 8);
g.addEdge(6, 7);
g.addEdge(7, 6);
g.addEdge(7, 0);
g.addEdge(7, 8);
g.addEdge(7, 1);
g.addEdge(8, 2);
g.addEdge(8, 6);
g.addEdge(8, 7);
cout << "Duyet BFS tu dinh 0: ";
s.BFS(0);
d) Két qua
Trang 10
Trang 11—¬
7
Trang 11