[英]Check if Graph is a Directed Graph?
對於下面的 function,我嘗試編寫一個方法來測試圖的矩陣表示是否是有向圖。 它應該至少包含一條邊,但沒有對應的邊。
//G- Graph
//N - Nodes
bool isDigraph(bool G[N][N]) {
for (int rows = 0; rows < N; rows++)
for (int columns = 0; columns < N; columns++)
if (rows != columns && G[rows][columns] == 1)
return false; // returns false if is not a directed graph
return true; // return true if it is a directed graph
}
這里的目標是顯示圖形是有向的。 我想確保 function 如果圖形為空且具有自循環返回 false。
要檢查在給定鄰接矩陣的情況下是否有向圖,您可以查找關於主對角線的任何不對稱性(即,找到i
, j
對,其中G[i][j] != G[j][i]
)或沿着主對角線找到一些真實值,這表明某個節點的自環。
bool is_digraph(int N, bool **G) {
for (int row = 0; row < N; row++) {
for (int col = row; col < N; col++) {
if (row == col && G[row][col] || G[row][col] != G[col][row]) {
return true;
}
}
}
return false;
}
所以,像
0 1 2
+------
0 | 0 0 0
1 | 0 0 0
2 | 0 0 1
是定向的,因為我們有一個自循環。
像這樣的圖
0 1 2
+------
0 | 0 1 0
1 | 1 0 1
2 | 0 1 0
是無向的,因為我們沒有自環和關於對角線的對稱性。 該圖如下所示:
0
|
1---2
最后,像
0 1 2
+------
0 | 0 0 0
1 | 1 0 1
2 | 0 1 0
是有向的,因為我們有一個不對稱:
0<----1<----2
| ^
| |
+-----+
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.