当前位置: 首页 > 知识库问答 >
问题:

圈在图中吗?

周学义
2023-03-14

我有这个结构

class Node():
    def __init__(self, name):
        self.name=name
        self.adjencyList=[]
        self.visited = False

class Edge():
    def __init__(self, inNode, outNode):
        self.inNode=inNode
        self.outNode=outNode

这包括:

nodes = []
edges = []
uniqueNodes = []
listOfVisitedNodes = []

我想检查一下图中的是循环。我是用DFS alghoritm来做的——若我访问了被访问的节点,那个么图中是循环。这是我的alghoritm:

def DFS(node):
  node.visited = True
  listOfVisitedNodes.append(node)
  uniqueNodes = listOfVisitedNodes
  if len(set(uniqueNodes))==len(nodes):
     return True
  else:
    for i in node.adjencyList:
        if len(listOfVisitedNodes)==1:
            if listOfVisitedNodes[-1] != i:                
                if i in listOfVisitedNodes:                 
                    return False                    
                else:
                    DFS(i)
        else:
            if listOfVisitedNodes[-2] != i:                 
                if i in listOfVisitedNodes:                 
                    return False                    
                else:
                    DFS(i)
def isCycle():
    if DFS(nodes[0]):
        print 'there is no cycle'
    else:
        print 'there is cycle'

但我还是得到了同样的错误——alghoritm告诉我,在图形中,始终是循环的,不管输入是什么。提前感谢你们的帮助。

共有1个答案

唐博文
2023-03-14

您忘记返回递归的结果。

return DFS(i)
 类似资料:
  • 我试着用谷歌搜索,但是没有任何有价值的东西弹出。 图表: 它是无方向的 表示为具有双边的有向图 可能包含具有负权重的边 我知道我可以使用Bellman Ford在有向情况下解决这个问题,但是对于无向边,它只返回单边(2个循环)作为其输出。我需要找到一个循环的大小 此外,该算法应该具有运行时复杂性O(V*E)和内存复杂性O(V)。

  • 我想在一个无向多图中列出所有的圈。 Tarjan的强连通分量算法是针对有向图编写的。它适用于多图吗?如果没有,有无向多图的圈列算法吗?

  • 我正在尝试用ApachePOI创建甜甜圈图,但没有任何信息或示例。我尝试使用饼图的例子,但没有成功。你能帮我解决这个问题吗?

  • 问题内容: 如何将几个元素放置在另一个元素周围的圆中,并使这些元素也都可单击链接?我希望它看起来像下面的图片,但是我不知道如何实现这种效果。 这有可能吗? 问题答案: 是的,仅使用CSS很有可能而且非常简单。您只需要 清楚要与图像链接的角度即可 (我在末尾添加了一段代码,用于在 您悬停其中一个角度时显示它们)。 演示 您首先需要一个包装器。我将其直径设置为24em(width: 24em; hei

  • 在一个已执行DFS的无向图中(为了生成一个DFS树,从而将每条边分类为树边或后边),图中是否存在仅由后边组成的循环,即没有树边?

  • Highcharts 饼图 以下实例演示了半圈圆环图。 我们在前面的章节已经了解了 Highcharts 基本配置语法。接下来让我们来看下其他的配置。 配置 series 配置 设置 series 的 type 属性为 pie series.type 描述了数据列类型。默认值为 "line"。配置饼图大小使用 innerSize 属性并设置为innerSize: '50%'。 var serie