如何解决在有向无环图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,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,[4,3]]
解决方法
您的代码似乎还有其他问题,但是导致此错误的代码很简单明显。您可以这样定义一个名为addEdge
的方法:
def addEdge(u,v):
但是您正在调用一个名为addEgde
的方法,如下所示:
g.addEgde(dep[0],dep[1])
您只是有错字。 addEdge != addEgde
。您已经颠倒了g
和d
。
顺便说一句,该方法的签名可能应该是:
def addEdge(self,u,v):
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。