✨Tìm kiếm theo chiều sâu

Tìm kiếm theo chiều sâu

**Tìm kiếm ưu tiên chiều sâu** hay **tìm kiếm theo chiều sâu** () là một thuật toán duyệt hoặc tìm kiếm trên một cây hoặc một đồ thị. Thuật toán khởi đầu tại gốc (hoặc chọn một đỉnh nào đó coi như gốc) và phát triển xa nhất có thể theo mỗi nhánh.

Thông thường, DFS là một dạng tìm kiếm thông tin không đầy đủ mà quá trình tìm kiếm được phát triển tới đỉnh con đầu tiên của nút đang tìm kiếm cho tới khi gặp được đỉnh cần tìm hoặc tới một nút không có con. Khi đó giải thuật quay lui về đỉnh vừa mới tìm kiếm ở bước trước. Trong dạng không đệ quy, tất cả các đỉnh chờ được phát triển được bổ sung vào một ngăn xếp LIFO.

Độ phức tạp không gian của DFS thấp hơn của BFS (tìm kiếm theo chiều rộng). Độ phức tạp thời gian của hai thuật toán là tương đương nhau và bằng O(|V| + |E|).

Ví dụ

Tập tin:graph.traversal.example.svg

Tìm kiếm ưu tiên chiều sâu bắt đầu thăm đỉnh A, đi theo cạnh trái, tiếp tục tìm kiếm xong ở cây con trái mới chuyển sang tìm kiếm ở cây con phải. Thứ tự thăm viếng các đỉnh là: A, B, D, F, E, C, G.

Quá trình viếng thăm các đỉnh diễn ra như sau: Sau khi thăm đỉnh A, vì B chưa được thăm nên theo cạnh AB ta thăm B, tiếp tục theo cạnh BD tới viếng thăm D. Từ D không thể tiếp tục đi xa hơn, ta quay lại B. Từ B, theo BF đến thăm F, tiếp tục theo cạnh FE đến thăm E. Từ E cũng không thể đi xa hơn, quay lại A, duyệt tiếp đến C, G.

Kết quả của thuật toán

Một cách tự nhiên, kết quả của giải thuật tìm kiếm theo chiều sâu là một cây phủ qua tất cả các đỉnh được duyệt của đồ thị.

Duyệt các đỉnh

Có thể dùng giải thuật này để tạo một danh sách tuyến tính các đỉnh của một đồ thị (hoặc cây). Có ba cách hiện thực phương pháp này:

  • Duyệt tiền thứ tự (preordering): tạo ra một danh sách mà trong đó các đỉnh xuất hiện theo đúng trật tự nó được thăm đến khi chạy thuật toán. Đây chính là biểu diễn tự nhiên của quá trình thực hiện giải thuật tìm kiếm theo chiều sâu. Một biểu thức ở dạng tiền thứ tự được gọi là ký pháp tiền tố.
  • Duyệt hậu thứ tự (postordering): tạo ra một danh sách mà trong đó các đỉnh xuất hiện theo thứ tự của lần duyệt đến sau cùng khi thực hiện giải thuật. Một lần duyệt hậu thứ tự một cây biểu thức sẽ cho ra một ký pháp hậu tố.
  • Duyệt đảo hậu thứ tự (reverse postordering): kết quả của cách duyệt này là sự đảo ngược lại thứ tự trong kết quả duyệt hậu thứ tự. Thông thường, khi duyệt cây, cách này cho ra cùng kết quả với duyệt tiền thứ tự, nhưng xét tổng quát, khi duyệt một đồ thị, tiền thứ tự và đảo hậu thứ tự cho ra kết quả khác nhau. Với các đồ thị có hướng và không có vòng, cách duyệt đảo hậu thứ tự cho ra một trật tự tô-pô của đồ thị đó.

Thuật toán tìm kiếm theo chiều sâu trong đồ thị vô hướng

Ý tưởng thuật toán

DFS trên đồ thị vô hướng cũng giống như khám phá mê cung với một cuộn chỉ và một thùng sơn đỏ để đánh dấu, tránh bị lạc. Trong đó mỗi đỉnh s trong đồ thị tượng trưng cho một cửa trong mê cung.

Ta bắt đầu từ đỉnh s, buộc đầu cuộn chỉ vào s và đánh đấu đỉnh này "đã thăm". Sau đó ta đánh dấu s là đỉnh hiện hành u.

Bây giờ, nếu ta đi theo cạnh (u,v) bất kỳ.

Nếu cạnh (u,v) dẫn chúng ta đến đỉnh "đã thăm" v, ta quay trở về u.

Nếu đỉnh v là đỉnh mới, ta di chuyển đến v và lăn cuộn chỉ theo. Đánh dấu v"đã thăm". Đặt v thành đỉnh hiện hành và lặp lại các bước.

Cuối cùng, ta có thể đi đến một đỉnh mà tại đó tất cả các cạnh kề với nó đều dẫn chúng ta đến các đỉnh "đã thăm". Khi đó, ta sẽ quay lui bằng cách cuộn ngược cuộn chỉ và quay lại cho đến khi trở lại một đỉnh kề với một cạnh còn chưa được khám phá. Lại tiếp tục quy trình khám phá như trên.

Khi chúng ta trở về s và không còn cạnh nào kề với nó chưa bị khám phá là lúc DFS dừng.

Mệnh đề

Gọi G là một đồ thị vô hướng, trên đó ta sẽ thực hiện thao tác DFS với đỉnh bắt đầu là s thì:

Phép duyệt sẽ thăm tất cả các đỉnh cùng thành phần liên thông với s.

Các cạnh có nhãn "đã thăm" sẽ tạo ra một cây tối đại của thành phần liên thông chứa s.

Chứng minh

Khẳng định 1, là hiển nhiên vì DFS duyệt qua tất cả các đỉnh kề với đỉnh hiện hành (có thể chứng minh hoàn chỉnh hơn bằng phản chứng).

Khẳng định 2, đúng do ta chỉ đánh dấu các cạnh đi đến một đỉnh mới nên không thể tạo ra chu trình. Như vậy DFS tạo ra một cây. Hơn nữa, DFS thăm tất cả các đỉnh thuộc thành phần liên thông nên cây này là cây tối đại.

Độ phức tạp của thuật toán

DFS được gọi đúng 1 lần ứng với mỗi đỉnh.

Mỗi cạnh được xem xét đúng 2 lần, mỗi lần từ một đỉnh kề với nó.

Với ns đỉnh và ms cạnh thuộc thành phần liên thông chứa s, một phép DFS bắt đầu tại s sẽ chạy với thời gian O(ns + ms) nếu:

:: Đồ thị được biểu diễn bằng cấu trúc dữ liệu dạng danh sách kề. :: Đặt nhãn cho một đỉnh là "đã thăm" và kiểm tra xem một đỉnh "đã thăm" chưa tốn chi phí O(degree). ::* Bằng cách đặt nhãn cho các đỉnh là "đã thăm", ta có thể xem xét một cách hệ thống các cạnh kề với đỉnh hiện hành nên ta sẽ không xem xét một cạnh quá 1 lần.

Xác định đỉnh kề trong DFS

  • Kết quả của DFS phụ thuộc vào cách ta chọn đỉnh kế tiếp. khung|giữa|Xác định đỉnh kề trong Depth-first search
  • Nếu ta bắt đầu tại A và thử cạnh nối đến F, sau đó đến B, rồi đến E, C, cuối cùng là G ta được: khung|giữa|Bắt đầu từ A và kết thúc tại G
  • Nếu cũng bắt đầu từ A nhưng đi theo trình tự, tập các cạnh đã thăm, backedge và các điểm đệ quy sẽ khác trước. khung|giữa|Bắt đầu từ A nhưng đi theo trình tự tập các cạnh đã thăm.

Chạy từng bước thuật toán

Giờ ta sẽ chạy từng bước thuật toán theo ví dụ trên.

Nguyên lý

Khởi đầu từ một đỉnh, đi theo các cung(cạnh) xa nhất có thể. Trở lại đỉnh của cạnh xa nhất, tiếp tục duyệt như trước, cho đến đỉnh cuối cùng. khung|giữa|Thuật toán Depth-first search

} * Bước 1: khung|giữa|Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 1 * Bước 2: khung|giữa|Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 2 * Bước 3: khung|giữa|Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 3 * Bước 4: khung|giữa|Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 4 * Bước 5: khung|giữa|Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 5 * Bước 6: khung|giữa|Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 6 * Bước 7: khung|giữa|Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 7 * Bước 8: khung|giữa|Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 8 * Bước 9: khung|giữa|Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 9 * Bước 10: khung|giữa|Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 10 * Bước 11: khung|giữa|Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 11 * Bước 12: khung|giữa|Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 12 * Bước 13: khung|giữa|Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 13 * Bước 14: khung|giữa|Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 14 * Bước 15: khung|giữa|Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 15 * Bước 16: khung|giữa|Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 16 * Bước 17: khung|giữa|Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 17 * Bước 18: khung|giữa|Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 18 * Bước 19: khung|giữa|Chạy từng bước thuật toán Depth-first search trong đồ thị vô hướng, bước 19

Ứng dụng

Nhiều giải thuật sử dụng tìm kiếm theo chiều sâu:

  • Xác định các thành phần liên thông của đồ thị
  • Sắp xếp tô-pô cho đồ thị
  • Xác định các thành phần liên thông mạnh của đồ thị có hướng
  • Kiểm tra một đồ thị có phải là đồ thị phẳng hay không
👁️ 0 | 🔗 | 💖 | ✨ | 🌍 | ⌚
**Tìm kiếm ưu tiên chiều sâu** hay **tìm kiếm theo chiều sâu** () là một thuật toán duyệt hoặc tìm kiếm trên một cây hoặc một
nhỏ|310x310px|Mô phỏng tìm kiếm trên cây tìm kiếm theo thuật toán tìm kiếm theo chiều rộng Trong lý thuyết đồ thị, **tìm kiếm theo chiều rộng** (**BFS**) là một thuật toán tìm kiếm trong đồ
Trong ngành khoa học máy tính, một **giải thuật tìm kiếm** là một thuật toán lấy đầu vào là một bài toán và trả về kết quả là một lời giải cho bài toán đó,
**Cốc Cốc** là công cụ tìm kiếm mặc đị ## Lịch sử ### Những ngày đầu Cốc Cốc khởi đầu là một dự án của ba sinh viên Việt Nam khi đang theo học Đại
Trong khoa học máy tính, **A*** (đọc là _A sao_) là thuật toán tìm kiếm trong đồ thị. Thuật toán này tìm một đường đi từ một nút khởi đầu tới một nút đích cho
**Máy truy tìm dữ liệu trực tuyến** hay **máy tìm kiếm** hay **cỗ máy tìm kiếm** (tiếng Anh: _search engine_), hay còn được gọi với nghĩa rộng hơn là **công cụ tìm kiếm** (_search tool_),
**_Cuốn theo chiều gió_** (Nguyên văn: **_Gone with the wind_**), xuất bản lần đầu năm 1936, là một cuốn tiểu thuyết tình cảm của Margaret Mitchell, người đã giành giải Pulitzer với tác phẩm này
thumb|Tarjan's Algorithm Animation **Thuật Toán Tarjan** (được đặt theo tên của người tìm ra nó - Robert Tarjan) là một thuật toán trong lý thuyết đồ thị dùng để tìm thành phần liên thông mạnh
phải|[[Mikhail Nikolayevich Tukhachevsky trong bộ quân phục Tư lệnh Quân khu (_Командующий войсками военного округа_) - một tác giả quan trọng của học thuyết tác chiến chiều sâu.]] **Tác chiến chiều sâu** (Tiếng Nga: _Теория
**Cây tìm kiếm nhị phân** (viết tắt tiếng Anh: BST - _Binary Search Tree_) là một cấu trúc dữ liệu rất thuận lợi cho bài toán tìm kiếm. Mỗi cây tìm kiếm nhị phân đều
**_Tìm kiếm Tài năng Úc - Australia's Got Talent_** là một truyền hình thực tế chương trình tài năng của Úc. Chương trình dựa trên định dạng chuỗi _ Got Talent_ bắt nguồn từ Vương
**elgooG** (cách viết ngược của chữ 'Google') là một trang web "ngược" của công cụ Google Tìm kiếm với giao diện và kết quả tìm kiếm theo chiều ngang lộn, hay còn được gọi là
Bài viết này là **danh sách các thuật toán** cùng một mô tả ngắn cho mỗi thuật toán. ## Thuật toán tổ hợp ### Thuật toán tổ hợp tổng quát * Thuật toán Brent: tìm
**_Thư kiếm ân cừu lục_** (書劍恩仇錄) là một tiểu thuyết võ hiệp của nhà văn Kim Dung, được đăng trên _Tân vãn báo_ của Hồng Kông từ ngày 8 tháng 2 năm 1955 đến ngày
**_Cô gái lắm chiêu_** (tựa gốc: **_Mean Girls_**) là một bộ phim điện ảnh thuộc thể loại hài kịch tuổi teen của Mỹ do Mark Waters đạo diễn và Tina Fey chắp bút. Bộ phim
**Cá sấu nước mặn** (danh pháp hai phần: _Crocodylus porosus_), còn gọi là **cá sấu cửa sông** hay ở Việt Nam còn được gọi là **cá sấu hoa cà**; là loài cá sấu lớn nhất
**Thuật toán Ford- Fulkerson** (đặt theo L. R. Ford và D. R. Fulkerson) tính toán luồng cực đại trong một mạng vận tải. Tên Ford-Fulkerson cũng thường được sử dụng cho thuật toán Edmonds-Karp, một
**Rùa Hồ Gươm** là một nhóm cá thể rùa lớn đã từng sống tại Hồ Gươm. Con cuối cùng sống ở Hồ Gươm đã chết vào ngày 19 tháng 1 năm 2016. Đây là những
Trong đồ thị này, đường đi rộng nhất từ Maldon tới Feering có chiều rộng 29, và đi qua Clacton, Tiptree, Harwich, và Blaxhall. **Bài toán đường đi rộng nhất**, còn gọi là **bài toán
Cá sấu sông Nin một trong các loài cá sấu thường tấn công con người Hàm răng sắc nhọn của một con [[cá sấu mõm ngắn]] **Cá sấu tấn công**, **cá sấu ăn thịt người**
**Kiếm ma Độc Cô Cầu Bại** (Tên tiếng trung là: 劍魔獨孤求敗) là bộ phim được sản xuất năm 1990 bởi TVB Hồng Kông, với nhân vật Độc Cô Cầu Bại do Huỳnh Nhật Hoa thủ
**Học sâu** (tiếng Anh: **deep learning**, còn gọi là **học cấu trúc sâu**) là một phần trong một nhánh rộng hơn các phương pháp học máy dựa trên mạng thần kinh nhân tạo kết hợp
**Kim loại kiềm** (tiếng Anh: _Alkali metal_) là một nhóm các nguyên tố hóa học gồm có lithi (Li), natri (Na), kali (K), rubidi (Rb), caesi (Cs) và franci (Fr). Các kim loại kiềm cùng
nhỏ| A [[skylight cung cấp chiếu sáng nội bộ]] **Chiếu sáng tự nhiên** là sự thực hành của việc đặt cửa sổ hoặc mở khác và phản xạ]] bề mặt để ánh sáng tự nhiên
Sữa Rửa Mặt Y Học Hanayuki Cleanser Sữa Rửa Mặt Y Học Hanayuki Cleanser là dòng Sữa Rửa Mặt Hanayuki Không Bọt được chiết xuất từ thiên nhiên rất an toàn cho làn da, hiệu
**Chiến tranh sáu ngày** (tiếng Ả Rập: حرب الأيام الستة, _ħarb al‑ayyam as‑sitta_; tiếng Hebrew: מלחמת ששת הימים, _Milhemet Sheshet Ha‑Yamim_), cũng gọi là **Chiến tranh Ả Rập-Israel**, **Chiến tranh Ả Rập-Israel thứ ba**, **an‑Naksah
**Kiểm tra không phá hủy** hay **kiểm tra không tổn hại** (viết tắt theo tiếng Anh là **NDT**, _Non-Destructive Testing_), hay còn gọi là đánh giá không phá hủy (viết tắt theo tiếng Anh là
**Kỹ thuật tạo lệnh** hoặc **kỹ thuật ra lệnh** (prompt engineering) là quá trình cấu trúc một **văn bản đầu vào** cho AI tạo sinh giải thích và diễn giải. Một **văn bản đầu vào**
**Tối ưu hóa việc kiếm ăn** hay còn gọi là **lý thuyết kiếm ăn tối ưu** (tiếng Anh: _Optimal foraging theory_, viết tắt: **OFT**) là một mô hình sinh thái học hành vi giúp dự
Phấn Phủ Dạng Nén Kiềm Dầu Hiệu Quả, Cho Làn Da Mịn Màng Lilybyred Sebum Lock Pact 5.5g - Thương hiệu: Lilybyred - Xuất xứ: Hàn Quốc - Dung tích: 5.5g *** Thế giới Skinfood
Phấn Phủ Dạng Bột Kiềm Dầu Cho Da Mịn Màng Silkygirl No Sebum Mineral Powder 5g- Thương hiệu: Silkygirl- Xuất xứ: Thái Lan- Dung tích: 5g*** Thế giới Skinfood là đại lý phân phối chính
**Nhồi máu cơ tim** là bệnh lý nguy hiểm đe doạ tính mạng do tắc nghẽn đột ngột mạch máu nuôi tim. Khi cơ tim hoàn toàn không được cung cấp máu thì cơ vùng
Quốc hội Trung Quốc đã bỏ phiếu cho các luật về kiểm duyệt thông tin trên mạng Internet. Với luật này, chính quyền Trung Quốc đã sử dụng nhiều biện pháp khác nhau để thực
⚠️ CAM KẾT 1 ĐỔI 1 TRONG 7 NGÀY NẾU CÓ LỖI CỦA SHOP ⚠️Giao hàng tận nơi trên toàn quốc, Nhận hàng nhanh chóng tại nhà. =========================• Chứa chiết xuất quả Quarana Mang hiệu
BỘT ĐẬU ĐỎ NGUYÊN CHẤT BẢO NAM :Từ việc lựa chọn hạt đậuvà sản xuất thành dạng Bột Đậu Đỏ,đến việc cải tiến về máy móc và dây chuyền sản xuất trực tiếp - BẢO
Kem chống nắng Missha tím (Missha All Around Safe Block Velvet Finish Sun Milk) ❤ ❤Loại da phù hợp: da nhạy cảm, giúp giữ ẩm và kiểm soát nhờn ❣Chỉ số chống tia UVB SPF
CÔNG DỤNG CỦA BỘT CÁM GẠOTrong bột cám gạo chứa vitamin B1, B2, B6 giúp tái tạo làn da tổn thương trước những tác động từ môi trường như khói bụi, makeup, bỏng rát do
Aó polo thom nam nữ vạch tay cao cấp * * Chi tiết sản phẩm áo polo nam cổ bẻ: - Chất liệu: + Chất liệu vải cá sấu , chuẩn form cao cấp không
Một đồ thị với ba thành phần liên thông. Trong lý thuyết đồ thị, một **thành phần liên thông** của một đồ thị vô hướng là một đồ thị con trong đó giữa bất kì
Sữa rửa mặt Innisfree với tính chất dịu nhẹ được chiết xuất hoàn toàn từ lá trà xanh tự nhiên. Sự tinh khiết của lá trà xanh được tinh chế bằng cách chưng cất tinh
nhỏ|phải|Minh họa phép chiếu lập thể 3 chiều từ cực bắc đến mặt phẳng dưới khối cầu Trong hình học, **phép chiếu lập thể ** hay **phép chiếu nổi** là một phép ánh xạ chiếu
Trong khoa học máy tính, **thứ tự tô pô** của một đồ thị có hướng là một thứ tự sắp xếp của các đỉnh sao cho với mọi cung từ _u_ đến _v_ trong đồ
Sữa rửa mặt Innisfree trà xanh Green TeaSữa rửa mặt trà xanh Innisfree Green Tea Foam Cleanserchiết xuất hoàn toàn từ lá trà xanh tự nhiên, giàu độ ẩm, không làm khô da.Các thành phần
Bánh gạo mầm tím than là một lựa chọn dinh dưỡng tuyệt vời cho những ai đang tìm kiếm một loại thực phẩm vừa ngon miệng vừa có lợi cho sức khỏe.Bánh gạo mầm tím
Bánh gạo mầm tím than là một lựa chọn dinh dưỡng tuyệt vời cho những ai đang tìm kiếm một loại thực phẩm vừa ngon miệng vừa có lợi cho sức khỏe.Bánh gạo mầm tím
Trong khoa học máy tính, **thuật toán Kosaraju-Sharir** là một thuật toán tìm thành phần liên thông mạnh trong đồ thị có hướng. Theo Aho, Hopcroft và Ullman, thuật toán này xuất hiện trong một
## Giới thiệu :Khi giải quyết nhiều bài toán lý thuyết đồ thị, ta luôn phải duyệt qua tất cả các đỉnh của đồ thị đó. Cho nên, cần có thuật toán duyệt toàn bộ
QUÝ KHÁCH VUI LÒNG CẬP NHẬT GIÚP SHOP THÔNG TIN TỪ CÔNG CTY HANAYUKI NHÉ:KEM NÁM, KEM NGÀY LÔ MỚI NHẤT TỪ THÁNG 6/23 CTY SẼ THAY ĐỔI LOGO MỚI, DƯỚI ĐÂY LÀ CÔNG VĂN
Kem tan mỡ bụng body Missha Hot Burning Perfect 200ml Hàn Quốc tan mỡ sau sinh✅ Sản phẩm vừa được nhà sản xuất thay đổi mẫu mới. Thông tin kiểm tra mã vạch chưa được
**Cá sấu** được phản ánh trong nhiều nền văn minh. Ở một số nơi, cá sấu đóng vai trò lớn, chi phối nhiều mặt ở đời sống tinh thần con người, cá sấu là biểu