色婷婷狠狠18禁久久YY,CHINESE性内射高清国产,国产女人18毛片水真多1,国产AV在线观看

javascript 求連通圖數量

錢多多1年前6瀏覽0評論

javascript是一種廣泛應用于網頁開發的編程語言,它有著豐富的語法和功能,可用于實現眾多網頁功能。其中,圖論問題是javascript的一個熱門應用之一,而求連通圖數量就是圖論問題的一個重要部分。

所謂連通圖,就是圖中所有節點都可以通過邊相互連接,形成一個整體的圖。比如在一個有n個節點的圖中,如果每兩個節點之間都至少有一條路徑,那么這個圖就是連通圖。反之,如果存在兩個節點之間沒有路徑相連,那么這個圖就是非連通圖。那么如何求一個圖中有多少個連通圖呢?

function dfs(node, parent) {
visited[node] = true;
for (var i = 0; i< adj[node].length; i++) {
var next = adj[node][i];
if (next !== parent && !visited[next]) {
dfs(next, node);
}
}
}
function countConnectedGraphs(n, edges) {
adj = Array(n).fill().map(() =>[]);
visited = Array(n).fill(false);
for (var i = 0; i< edges.length; i++) {
var [a, b] = edges[i];
adj[a].push(b);
adj[b].push(a);
}
var count = 0;
for (var i = 0; i< n; i++) {
if (!visited[i]) {
dfs(i, -1);
count++;
}
}
return count;
}

以上是求連通圖數量的javascript實現代碼。對于一個有n個節點和m條邊的圖,我們定義了一個鄰接矩陣adj,并使用visited數組記錄每個節點是否被訪問過。接下來,我們使用dfs遍歷整個圖,并使用count計數器來記錄訪問的次數。最終,返回計數器的值就是有多少個連通圖。

值得注意的是,在使用dfs遍歷整個圖的過程中,我們需要避免出現死循環的情況。為此,我們可以在dfs函數中傳遞一個parent參數,每次遍歷之前判斷下一個節點是否和上一個節點相同。如果相同,就跳過這條邊。

總之,javascript求連通圖數量問題是一個非常有趣的算法問題,既能提高我們的編程技巧,又能提高我們的算法思維能力。希望通過本文的介紹,大家能夠對此有更深入的了解和認識。