Tìm kiếm
Latest topics
THUẬT TOÁN TÌM KIẾM THEO CHIỀU SÂU (DFS)
bkiz :: Giáo Trình :: Toán Rời Rạc
Trang 1 trong tổng số 1 trang
THUẬT TOÁN TÌM KIẾM THEO CHIỀU SÂU (DFS)
Để kiểm tra việc duyệt mỗi đỉnh đúng một lần, chúng ta sử dụng một mảng chuaxet[] gồm
n phần tử (tương ứng với n đỉnh), nếu đỉnh thứ i đã được duyệt, phần tử tương ứng trong mảng
chuaxet[] có giá trị FALSE. Ngược lại, nếu đỉnh chưa được duyệt, phần tử tương ứng trong mảng
có giá trị TRUE. Thuật toán có thể được mô tả bằng thủ tục đệ qui DFS () trong đó: chuaxet - là
mảng các giá trị logic được thiết lập giá trị TRUE.
void DFS( int v){
Thăm_Đỉnh(v); chuaxet[v]:= FALSE;
for ( u ∈ke(v) ) {
if (chuaxet[u] ) DFS(u);
}
}
Thủ tục DFS() sẽ thăm tất cả các đỉnh cùng thành phần liên thông với v mỗi đỉnh đúng một
lần. Để đảm bảo duyệt tất cả các đỉnh của đồ thị (có thể có nhiều thành phần liên thông), chúng ta
chỉ cần thực hiện duyệt như sau:
{
for (i=1; i≤ n ; i++)
chuaxet[i]:= TRUE; /* thiết lập giá trị ban đầu cho mảng chuaxet[]*/
for (i=1; i≤ n ; i++)
if (chuaxet[i] )
DFS( i);
}
Ví dụ. áp dụng thuật toán tìm kiếm theo chiều sâu với đồ thị trong hình sau:
n phần tử (tương ứng với n đỉnh), nếu đỉnh thứ i đã được duyệt, phần tử tương ứng trong mảng
chuaxet[] có giá trị FALSE. Ngược lại, nếu đỉnh chưa được duyệt, phần tử tương ứng trong mảng
có giá trị TRUE. Thuật toán có thể được mô tả bằng thủ tục đệ qui DFS () trong đó: chuaxet - là
mảng các giá trị logic được thiết lập giá trị TRUE.
void DFS( int v){
Thăm_Đỉnh(v); chuaxet[v]:= FALSE;
for ( u ∈ke(v) ) {
if (chuaxet[u] ) DFS(u);
}
}
Thủ tục DFS() sẽ thăm tất cả các đỉnh cùng thành phần liên thông với v mỗi đỉnh đúng một
lần. Để đảm bảo duyệt tất cả các đỉnh của đồ thị (có thể có nhiều thành phần liên thông), chúng ta
chỉ cần thực hiện duyệt như sau:
{
for (i=1; i≤ n ; i++)
chuaxet[i]:= TRUE; /* thiết lập giá trị ban đầu cho mảng chuaxet[]*/
for (i=1; i≤ n ; i++)
if (chuaxet[i] )
DFS( i);
}
Ví dụ. áp dụng thuật toán tìm kiếm theo chiều sâu với đồ thị trong hình sau:
Similar topics
» THUẬT TOÁN TÌM KIẾM THEO CHIỀU RỘNG (Breadth First Search)
» THUẬT TOÁN KRUSKAL
» Thuật toán Dijkstra
» Thuật toán Floy
» Thuật toán DDA (Digital Differential Analizer)
» THUẬT TOÁN KRUSKAL
» Thuật toán Dijkstra
» Thuật toán Floy
» Thuật toán DDA (Digital Differential Analizer)
bkiz :: Giáo Trình :: Toán Rời Rạc
Trang 1 trong tổng số 1 trang
Permissions in this forum:
Bạn không có quyền trả lời bài viết
|
|
Mon Jun 24, 2013 11:27 pm by hangme
» host facebook
Mon Apr 02, 2012 2:26 pm by Admin
» Cyberlink PowerDirector 9 key full
Thu Mar 29, 2012 5:00 pm by Admin
» PowerDirector 10 Ultra
Fri Mar 23, 2012 6:15 pm by Admin
» Mảng - Nhập mảng số nguyên, tính tổng phần tử dương, tìm số hoàn hảo, tìm max, min, sắp xếp từ lớn đến nhỏ, từ nhỏ đến lớn
Sun Mar 18, 2012 9:17 pm by Admin
» HTML+CSS Form đăng nhập
Tue Sep 13, 2011 10:38 pm by Admin
» HTML+javascript : Lịch Dương
Thu Sep 08, 2011 5:15 pm by Admin
» HTML+javascript : Đòng hồ điện tử
Thu Sep 08, 2011 5:06 pm by Admin
» HTML: Form Đăng nhập
Thu Sep 08, 2011 4:42 pm by Admin