python-3.x - 如何使用python3收集所有链
问题描述
背景:
我正在做聚合物模拟。我试图用它networkx
来计算系统中有多少条链。系统内部的分子等于节点,键等于节点之间的连接。
我试过的:
我用来networkx.chain_decompostion
计算链条的数量。
import networkx as nx
info = nx.chain_decomposition(G)
问题:
我发现它只能找到闭环的链,例如A1-A2-A3-A1
.
但是,仍然有很多连锁店没有关闭,比如A1-A2-A3
.
有没有一种简单的方法来收集这两种类型的链条。谢谢!
解决方案
功能chain_decomposition
不是你想象的那样。从文档:
关于深度优先搜索树的图的链式分解是一组循环或路径,这些循环或路径源自树的一组基本循环 [...]
您可能正在寻找的是 function number_connected_components
。有关详细信息,请参阅此链接。这假设每个连接的组件都是一个链,即图 G 中有几个不相交的子图,每个子图对应于一个(非分支)聚合物分子。如果不是这种情况(聚合物是支化的),那么我需要做一些更聪明的事情。例如,您可以计算离开节点(具有单键的原子)之间的所有最短路径。您可以通过检查节点的度数来找到叶子节点list(G.degree)
(叶子的度数为 1),然后计算所有叶子对之间的最短路径all_shortest_paths
。要找到环状分子,您可以chain_decomposition
像以前一样使用。
推荐阅读
- android - 如何解决 AsyncTask 的 RejectedExecutionException?
- google-chrome - WebStorm 2019. JavaScript 调试模式连接问题
- ios - 如何在 Swift 中选择随机颜色
- python - 无法在 python 3 的子进程中使用分发 LocalCluster
- ios - 以编程方式在 UITableViewCell 中制作 UIButton 时出现问题
- c#-4.0 - 使用 IDM 对象从 FileNet IDM 下载文件
- c# - 消息主题中的 MS Graph SDK 搜索返回错误
- c# - 隐藏窗口而不是关闭窗口时的性能影响
- c++ - 如何在 qml 中访问 QVector 的选定元素?
- aws-lambda - Lambda Cognito - 密码更改 - 无效的访问令牌