对于那些使用apt-get的人,您知道每次安装/卸载某些东西时,您都会得到通知,说您需要/不再需要某些依赖项.
我正在努力理解这背后的理论,并可能实现我自己的版本.我做了一些谷歌搜索,提出了大多数耦合的东西.根据我的理解,耦合是两个相互依赖的类/模块.这不是我正在寻找的.我正在寻找的更像是依赖树生成,在那里我可以找到最少依赖的模块(我已经做了这样的递归方式),并且(这是我没有做过的部分)找到什么是删除节点后不再需要.
还有,学习图论有用吗?是否有任何教程,最好使用Python作为语言?
假设我有这个创建有向图的代码:
dict = {1:['a1', 'a2', 'a3'], 2:['a4', 'a5','a7']}
graph = nx.from_dict_of_lists(dict)
digraph = nx.DiGraph(graph)
Run Code Online (Sandbox Code Playgroud)
我怎样才能找到这个图中的所有根?该图的预期输出为 [1,2]
如果这对您来说更方便,我已经在google colab 笔记本中编写了代码,您可以在其中看到图表,希望它有所帮助。
编辑:这在某种程度上与这个问题有关,区别在于,在那篇文章中假设图形是连接的,因此只有一个根;我的例子中并非如此。我可以将我的图“划分”为连接的子图,然后在每个子图中搜索根吗?