Bình luận

Thông báo

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Test link

Thuật Toán Tìm Kiếm Theo Chiều Sâu DFS

dfs, DFS, thuật toán duyệt theo chiều sâu, tìm kiếm theo chiều sâu DFS, thuật toán, C, C++
14 min read

THUẬT TOÁN DUYỆT CHIỀU SÂU DFS

Thuật toán DFS (Depth First Search) là thuật toán tìm kiếm theo chiều sâu bắt đầu từ một đỉnh bất kì trong một đồ thì vô hướng, có hướng hoặc trong một cây.

Thuật Toán Tìm Kiếm Theo Chiều Sâu DFS

THUẬT TOÁN

MÔ TẢ THUẬT TOÁN:

  • DFS: duyệt theo chiều sâu bắt đầu từ đỉnh u.
  • Nếu tồn tại đỉnh v trong danh sách kề adj[u] của đỉnh u chưa được thăm thì tiến hành thăm v sau đó duyệt chiều sâu với đỉnh v
  • Nếu tất cả các đỉnh kề với u đã được thăm thì DFS quay trở lại đỉnh x mà từ đó thăm u để tiến hành thăm các đỉnh khác kề với x mà chưa được thăm. Lúc này đỉnh u được gọi là đã duyệt xong
  • Thuật toán được code trên ngôn ngữ C++

VÍ DỤ:



CODE MẪU:

#include<iostream>
#include<vector>
#include<stack>
#include<list>
using namespace std;
void dfs(vector<list<int>> adj) {
stack<int> S; // Ngăn xếp lưu các đỉnh sẽ được duyệt tiếp theo
vector<bool> visited(adj.size()); // Đánh dấu các đỉnh đã duyệt
S.push(1); // Bắt đầu từ đỉnh số 1
while(!S.empty()) {
int u = S.top(); // Gán u cho đỉnh trên cùng của stack
// Kiểm tra xem u đã được duyệt chưa
if (!visited[u]) {
visited[u] = 1;
cout << u << endl;
}
// Kiểm tra danh sách kề của u
if (!adj[u].empty()) {
int v = adj[u].front();
adj[u].pop_front();
if (!visited[v]) {
S.push(v);
}
} else {
S.pop();
}
}
}
int main() {
int n = 7; // số đỉnh
vector<list<int>> adj; //adj[i] là danh sách lưu các đỉnh kề của i
adj.resize(n + 1);
adj[1].push_back(3);
adj[1].push_back(6);
adj[3].push_back(4);
adj[3].push_back(7);
adj[6].push_back(2);
adj[6].push_back(3);
adj[6].push_back(4);
adj[4].push_back(5);
adj[4].push_back(7);
adj[2].push_back(4);
adj[2].push_back(5);
dfs(adj);
}
view raw DFS.cpp hosted with ❤ by GitHub
Kết quả: 1 3 4 5 7 6 2

LỜI KẾT

Trên đây mình đã chia sẻ những hiểu biết của mình về DFS. Nếu có gì sai sót các bạn có thể để lại comment ở bên dưới để mình chỉnh sửa. Cảm ơn các bạn đã đọc bài viết !
Đánh Giá Bài Viết:
No pain, no gain !

You may like these posts

  • Hust - OS - TinyShell Chào các bạn lại đến với bài viết của mình. Sau hơn một tuần tìm hiểu cũng như là tham khảo các bài trên mạng và các khóa đi trước thì mình cùng mấy đứ…
  • THUẬT TOÁN PRIM Có bao giờ bao giờ bạn hỏi vì sao giữa các địa điểm trong một thành phố lại có nhiều đường đi đến như vậy. Vậy có cách nào vừa đảm bảo có đường đi giữa mọi đ…
  • THUẬT TOÁN DUYỆT CHIỀU SÂU DFS Thuật toán DFS (Depth First Search) là thuật toán tìm kiếm theo chiều sâu bắt đầu từ một đỉnh bất kì trong một đồ thì vô hướng, có hướng hoặc tr…
  • Thuật Toán Sắp Xếp Hế lô các bạn. Tiếp tục series thuật toán chúng ta sẽ tìm hiểu tiếp về thuật toán sắp xếp. Hôm nay mình sẽ chia sẻ tiếp cho các bạn thêm 2 cách sắp xếp nữ…
  • THUẬT TOÁN DIJKSTRA Cho một đồ thị vô hướng liên thông, thuật toán Dijkstra sẽ giúp bạn tìm ra đường đi ngắn nhất từ một đỉnh bất kì đến các đỉnh còn lại. …
  • THUẬT TOÁN DUYỆT CHIỀU RỘNG BFS Bài trước mình đã đăng về thuật toán DFS thì bài này sẽ là BFS (Breadth First Search) duyệt đồ thị theo chiều rộng. …

2 comments

  1. second ago
    ái dà =))
    1. second ago
      úi dời ơi
© 2025Phạm Văn Linh. All rights reserved. Developed by Jago Desain

Đã phát hiện Ad Blocker

Vui lòng tắt trình chặn quảng cáo của bạn để tiếp tục!

  1. Click on the AdBlock icon in your browser.
    Nhấp vào biểu tượng AdBlock trong trình duyệt của bạn.
    Adblock
  2. Choose, Don't run on pages on this domain.
    Chọn "Always".
    Adblock
  3. The browser icon should have turned green.
    Biểu tượng trình duyệt phải chuyển sang màu xanh lá.
    Adblock
  4. Refresh the page if it didn't refresh automatically. Thanks!
    Làm mới trang nếu nó không tự động làm mới. Cảm ơn bạn rất nhiều!
  1. Click on the AdBlock Plus icon in your browser.
    Nhấp vào biểu tượng AdBlock Plus trong trình duyệt của bạn.
    Adblock
  2. Click the "This Website" button.
    Nhấp vào nút "Trang web này".
    Adblock
  3. The browser icon should have turned grey.
    Biểu tượng trình duyệt phải chuyển sang màu xám.
    Adblock