繁体   English   中英

面临有向无环图 Python 中的句法问题

[英]Facing a syntactic problem in Directed Acyclic Graph Python

这里我使用 DAG 来解决作业调度问题。

from collections import defaultdict

class JobGraph:
    def __init__(self):
        self.graph = defaultdict(list)
        self.indegree = defaultdict(int)
        self.visited = set()
    
    def addEdge(u, v):
        self.graph(u).append(v)
        try:
            self.indegree[v] += 1
        except:
            self.indegree[v] = 1
        
def topologicalSort(jobs, deps, queue = [], order = [], flag = 0):
    # Write your code here.
    if flag == 0:
        g = JobGraph()
        for dep in deps:
            g.addEgde(dep[0], dep[1])
        
    for job in jobs:
        if g.indegree[job] == 0:
            queue.append(job)

    order.append(queue[0])
    root = queue[0]
    del queue[0]

    for neighbour in self.graph[root]:
        g.indegree[neighbour] -= 1
    
        if g.indegree[neighbour] == 0 and neighbour not in g.visited:
            queue.append(neighbour)
    if len(queue) == 0:
        return order
    else:
        topologicalSort(jobs, deps, queue, order, 1)

但我得到的错误是

'JobGraph' object has no attribute 'addEgde'
Traceback (most recent call last):
  File "/tester/json_wrapper.py", line 8, in run
    actual = program.topologicalSort(inputs["jobs"][:], aelib.deepCopy(inputs["deps"]))
  File "/tester/program.py", line 20, in topologicalSort
    g.addEgde(dep[0], dep[1])
AttributeError: 'JobGraph' object has no attribute 'addEgde'

我知道这是一个语法问题我只是不知道如何解决它

输入示例

jobs = [1,2,3,4]
deps = [[1,2], [1,3], [3,2], [4,2], [4,3]]

您的代码似乎还有其他问题,但导致此错误的问题很简单也很明显。 您可以像这样定义一个名为addEdge的方法:

def addEdge(u, v):

但是随后您正在调用一个名为addEgde的方法,如下所示:

g.addEgde(dep[0], dep[1])

你只是有一个错字。 addEdge != addEgde 你已经颠倒了gd

顺便说一句,该方法的签名可能应该是:

def addEdge(self, u, v):

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM