Professional Documents
Culture Documents
3
Đồ thị
• Ví dụ:
4
Nội dung
1. Đồ thị vô hướng
2. Đồ thị có hướng
3. Đồ thị có trọng số
4. Các chiến lược cài đặt đồ thị
5. Duyệt đồ thị
6
Đồ thị vô hướng
• Ví dụ:
7
Nội dung
1. Đồ thị vô hướng
2. Đồ thị có hướng
3. Đồ thị có trọng số
4. Các chiến lược cài đặt đồ thị
5. Duyệt đồ thị
9
Đồ thị có hướng
• Ví dụ:
10
Nội dung
1. Đồ thị vô hướng
2. Đồ thị có hướng
3. Đồ thị có trọng số
4. Các chiến lược cài đặt đồ thị
5. Duyệt đồ thị
13
Nội dung
1. Đồ thị vô hướng
2. Đồ thị có hướng
3. Đồ thị có trọng số
4. Các chiến lược cài đặt đồ thị
5. Duyệt đồ thị
15
Chiến lược cài đặt đồ thị
• Tiêu chuẩn để lựa chọn cách thức biểu
diễn đồ thị trên máy tính:
– Cấu trúc dữ liệu phải đơn giản, phù hợp với
từng bài toán ứng dụng.
– Dễ biểu diễn, dễ cài đặt các ứng dụng trên đó
– Sử dụng bộ nhớ tối ưu.
• Hai phương pháp biểu diễn:
– Ma trận kề
– Danh sách kề
16
Chiến lược cài đặt đồ thị
• Ma trận kề:
– Cho đồ thị G=(V,E), với V= {v1,v2,…vn}. Ma
trận kề biểu diễn G là một ma trận vuông A,
kích thước n*n được xác định như sau:
17
Chiến lược cài đặt đồ thị
• Ma trận kề:
– Ví dụ:
18
Chiến lược cài đặt đồ thị
19
Chiến lược cài đặt đồ thị
20
Chiến lược cài đặt đồ thị
• Danh sách kề:
– Cho đồ thị G=(V,E) có n đỉnh. Đồ thị G có thể
được biểu diễn bằng n danh sách liên kết.
Mỗi danh sách liên kết thứ i sẽ biểu diễn các
đỉnh kề với đỉnh vi
21
Chiến lược cài đặt đồ thị
• Ưu điểm của danh sách kề:
– Việc duyệt qua đỉnh kề với một đỉnh v cho
trước rất đơn giản, chỉ cần duyệt một danh
sách.
– Việc duyệt qua các cạnh cũng đơn giản vì
một cạnh là nối giữa đỉnh với đỉnh khác kề nó.
• Nhược điểm của danh sách kề
– Để kiểm tra một cạnh nối hai đỉnh (u,v) hay
không ta phải tốn thời gian duyệt toàn bộ
danh sách của đỉnh u hay đỉnh v.
22
Nội dung
1. Đồ thị vô hướng
2. Đồ thị có hướng
3. Đồ thị có trọng số
4. Các chiến lược cài đặt đồ thị
5. Duyệt đồ thị
24
Duyệt đồ thị
• Duyệt theo chiều sâu (Depth first search-
DFS)
– Trong giải thuật sử dụng một stack để ghi nhớ
đỉnh liền kề để bắt đầu việc tìm kiếm khi
không gặp được đỉnh liền kề nào trong lúc
duyệt (gặp điểm chết/ngõ cụt) trong vòng lặp.
25
Duyệt đồ thị
• Ý tưởng thuật toán duyệt theo chiều sâu:
– Quy tắc 1: Duyệt tiếp tới đỉnh liền kề mà chưa
được duyệt. Đánh dấu đỉnh đã được duyệt.
Hiển thị đỉnh đó và đẩy vào trong một ngăn
xếp (stack).
– QT2: Nếu không tìm thấy đỉnh liền kề nào với
đỉnh đang duyệt, thì ta lấy ra một đỉnh trong
ngăn xếp và tiếp tục duyệt tới đỉnh liền kề với
đỉnh mà ta vừa lấy ra.
– QT3: Lặp lại QT1,QT2 cho đến khi ngăn xếp
rỗng.
26
Duyệt đồ thị
• Ví dụ minh họa duyệt theo chiều sâu:
27
Duyệt đồ thị
28
Duyệt đồ thị
29
Duyệt đồ thị
31
Duyệt đồ thị
• Duyệt theo chiều rộng (Breadth First
Search - BFS)
– Trong giải thuật sử dụng một queue để ghi
nhớ đỉnh liền kề để bắt đầu việc tìm kiếm khi
không gặp được đỉnh liền kề nào trong lúc
duyệt (gặp điểm chết/ngõ cụt) trong vòng lặp.
32
Duyệt đồ thị
34
Duyệt đồ thị
35
Duyệt đồ thị
36
Duyệt đồ thị
38
Duyệt đồ thị
• Kết quả
39
GV: Lê Thị Hoàng Anh 40