我刚刚开始写我的学士论文,我正在尝试创建一个算法,根据过去的学习成绩提供个性化的选课建议。我正在学习和使用python,到目前为止,我已经创建了一个课程列表和一个先决条件列表,如下所示:
[['CS101'], ['CS105'], ['CS106', 'CS105'], ['CS107'], ['CS130'], ['CS151', 'CS105', 'MATH101'], ['CS180'], ['CS201', 'CS151'], ['CS205', 'CS105'], ...]
例如,为了学习CS101
,你不需要学习任何其他课程,但是要学习CS106
,你必须已经学习了CS105
。现在,我必须进行拓扑排序,尽管我从堆栈溢出中提供的类似问题中找到了一些代码,但它不起作用。解决方案是这样的(我只修改了my_lists
的一部分,以便为我的代码工作):
import networkx as nx
my_lists = data.prerequisites
my_graph = nx.DiGraph()
for path in my_lists:
my_graph.add_nodes_from(path)
my_graph.add_path(path)
ts = nx.topological_sort(my_graph)
print(ts)
其中data.preditions是在另一个python文件(data.py)中创建的列表。问题是,当我运行此命令时,会出现以下错误:
AttributeError: 'DiGraph' object has no attribute 'add_path'
我搜索了networkx 2.4
的文档,但没有任何迹象表明它们替换了add_path()
。对于这个错误有一个解决方案,但它不再有效,因为该解决方案是在2011年给出的,并且add_path()
在2019年被完全删除。我试图使用互联网上的其他例子,但我找不到一个合适的列表。我应该尝试找到一个完全不同的方法,还是有一个像这样简单的小解决方案?因为他们中的很多我都不能真正理解
请参阅^{} 的文档调用该方法的新方法是
作为补充提示,您不需要调用
my_graph.add_nodes_from(path)
,因为节点是与边一起添加的相关问题 更多 >
编程相关推荐