确定无向图G是否具有大小大于等于3的集团

时间:2019-03-03 22:51:41

标签: graph depth-first-search undirected-graph clique clique-problem

让G =(V,E)为无向图。 找到最有效的算法来确定G是否具有大小大于等于3的团。

我认为: 如果G的大小大于3,则肯定有大小为3的队列,因此我们只需要查找大小为3的队列即可。

因此,我的算法是: 我用邻接矩阵来表示G。

    def uniquePathsWithObstacles(self, obstacleGrid):
    # obstruction at the start
    if (obstacleGrid[0][0] == 1): return 0
    # obstruction at the end
    if (obstacleGrid[-1][-1] == 1): return 0
    m, n = len(obstacleGrid), len(obstacleGrid[0])
    memo = [[0] * n for i in range(m)]
    # starting move
    memo[0][0] = 1
    # now check the first row
    for j in range(1, n):
        #memo[0][j] = 1 if (obstacleGrid[0][j] == 0 and memo[0][j-1] != 0) else 0
        memo[0][j] = 1 if (obstacleGrid[0][j] == 0 and memo[0][j-1] != 0) else 0
    # now check the first column
    for i in range(1, m):
        memo[i][0] = 1 if (obstacleGrid[i][0] == 0 and memo[i-1][0] != 0) else 0
    # now check everything else
    for i in range(1, m):
        for j in range(1, n):
            if (obstacleGrid[i][j] == 1): memo[i][j] = 0
            else: memo[i][j] = memo[i-1][j] + memo[i][j-1]
    return memo[-1][-1]

复杂度:如果在Adj矩阵中表示G,则DFS为O(V ^ 2)。

对于V中的每个v,我们检查所有Adj [v],因此我们检查G-O(V + E)中的所有顶点和边

要检查两个顶点v.pi,u是否形成边e =(v.pi,u)是否为O(1)

因此复杂度为O(V ^ 2)

我是对的吗? 谢谢

0 个答案:

没有答案