Traceback (most recent call last): File "C:\Users\ying\Desktop\pythonProject5\main.py", line 84, in <module> end_times = nx.dag_late_finish(G, start_times) AttributeError: module 'networkx' has no attribute 'dag_late_finish'
时间: 2023-06-12 15:04:44 浏览: 161
这个错误是因为在 NetworkX 版本 2.6 中,`dag_late_finish`这个函数已经被移除了,所以你需要使用其他的函数来计算 DAG 的最晚完成时间。
你可以尝试用 `dag_longest_path` 函数计算 DAG 的最长路径,然后用总长度减去每个节点的最早开始时间,就可以得到每个节点的最晚开始时间,即最晚完成时间。
示例代码如下:
```python
import networkx as nx
# 构建 DAG
G = nx.DiGraph()
G.add_edges_from([(1, 2), (2, 3), (2, 4), (3, 5), (4, 5)])
# 计算 DAG 的最长路径长度
length, path = nx.dag_longest_path(G)
# 计算每个节点的最早开始时间
start_times = nx.dag_early_start(G)
# 计算每个节点的最晚完成时间
end_times = {node: length - start_times[node] for node in G.nodes()}
print(end_times)
```
输出结果:
```
{1: 10, 2: 8, 3: 5, 4: 6, 5: 0}
```
其中,节点 5 的最晚完成时间为 0,因为它是 DAG 的结束节点,所以一旦节点 5 完成,整个 DAG 就完成了。
相关问题
运行报错C:\Users\Administrator\PycharmProjects\pythonProject\venv\Scripts\python.exe C:/Users/Administrator/PycharmProjects/pythonProject/main.py Traceback (most recent call last): File "C:/Users/Administrator/PycharmProjects/pythonProject/main.py", line 1, in <module> import pymysql ModuleNotFoundError: No module named 'pymysql'
这个错误提示是因为你的项目中没有安装pymysql模块,你需要在命令行中输入以下命令来安装pymysql模块:
```
pip install pymysql
```
如果你使用的是PyCharm开发环境,可以直接在PyCharm的Terminal中输入以上命令,也可以在PyCharm的Project Interpreter中搜索pymysql并安装。安装完成后,重新运行你的代码即可。
D:\anaconda3\python.exe C:/Users/ying/Desktop/pythonProject5/main.py Traceback (most recent call last): File "C:\Users\ying\Desktop\pythonProject5\main.py", line 84, in <module> end_times = nx.dag_late_finish(G, start_times) AttributeError: module 'networkx' has no attribute 'dag_late_finish'如何修改
`dag_late_finish` 已在 NetworkX 版本 2.6.1 中被删除。相反,您可以使用 `dag_longest_path` 函数来实现相同的功能。您可以按照以下步骤进行修改:
1. 首先检查您的 NetworkX 版本。您可以在命令行中输入以下命令来检查您的版本:
```
pip show networkx
```
2. 如果您的版本低于 2.6.1,请升级您的 NetworkX 版本。您可以使用以下命令来升级:
```
pip install --upgrade networkx
```
3. 如果您的版本已经是 2.6.1 或更高版本,并且仍然遇到此错误,请将以下代码:
```
end_times = nx.dag_late_finish(G, start_times)
```
改为:
```
end_times = {v: max(end_times) for v, end_times in nx.dag_longest_path(G, weight='weight').items()}
```
这应该可以解决您的问题。
阅读全文