在图

时间:2015-05-19 15:44:41

标签: graph-theory

如何确定邻接矩阵给出的有向图是否包含三角形(长度为3的周期)?我试过这个功能,但速度太慢了。

int check()
{
   for (int i = 1; i <= n; i++)
      for (int j = 1; j <= n; j++)
         if (matrix[i][j] == 1)
            for (int k = 1; k <= n; k++)
               if (matrix[j][k] == 1 && matrix[k][i] == 1)
               {
                  a = i;
                  b = j;
                  c = k;
                  return 1;
                }
   return 0;
}

图形没有循环和多条边。 V <= 5000E = 2 * V

1 个答案:

答案 0 :(得分:0)

将图形表示转换为邻接列表(在O(n ^ 2)中),然后循环遍历所有顶点并检查它们的邻居和邻居。这是在O(n * d ^ 2)中完成的,其中d是顶点度,并且从E = 2 * V,它平均为2。总运行时间为O(n ^ 2)。

代码草图(在python中):

<textarea id="to_be_translated" style="width:100%"></textarea>