如何检查图中的简单连接?

时间:2016-11-27 20:48:05

标签: c# graph nodes

我有这个邻接矩阵:

enter image description here

我不知道是否可以检查是否有任何节点未与其他节点连接。我的意思是,如果它是单独的,那么一行和一列零(例如,第一个,A,)应该返回false,因为不存在简单的连接。

public bool HayConectividadsimple()
    {
        bool respuesta = true;
        for (int i = 0; i < Aristas.GetLength(0); i++)
        {
            for (int j = 0; j < Aristas.GetLength(1); j++)
            {
                if (i, j == 0)
                    return false;
            }
        }
        return respuesta;
    }
希望你能帮助我。

致以最诚挚的问候,

1 个答案:

答案 0 :(得分:1)

根据我的理解,您正在寻找整行0和整列0.如果您发现任何一个然后返回false。大概是这样的:

对于每个节点..

  1. 检查是否有全0列
  2. 检查是否有全0行
  3. 如果两者都为真,则返回false
  4. 否则返回true。

    所以,看起来像这样:

    public bool HayConectividadsimple()
    {
    
        // For each node..
        for (int i = 0; i < Aristas.GetLength(0); i++)
        {
            // Assume it's not connected unless shown otherwise.
            bool nodeIsConnected=false;
    
            // Check the column and row at the same time:
            for (int j = 0; j < Aristas.GetLength(1); j++)
            {
                if (Aristas[i, j] != 0 || Aristas[j, i] != 0)
                {
                    // It was non-zero; must have at least one connection.
                    nodeIsConnected=true;
                    break;
                }
            }
    
            // Is the current node connected?
            if(!nodeIsConnected)
            {
                return false;
            }
    
        }
    
        // All ok otherwise:
        return true;
    }