簡體   English   中英

檢查圖是否是有向圖?

[英]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。

  • 雖然我沒有收到錯誤,但問題是當我的圖表為空且有自循環時,它總是返回 true。
  • 有什么我應該添加到我的代碼中的嗎? 有沒有辦法表明它至少包含一條邊但不包含相應的邊? 如果有什么我應該添加到我的問題中以使其清楚,請告訴我。

要檢查在給定鄰接矩陣的情況下是否有向圖,您可以查找關於主對角線的任何不對稱性(即,找到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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM