我正在比较同构的一大组networkx图,其中大多数图不应该是同构的(例如,假设0-20%与列表中的某些东西是同构的).
我尝试了以下方法.
graphs = [] # A list of networkx graphs
unique = [] # A list of unique graphs
for new in graphs:
for old in unique:
if nx.is_isomorphic(new, old[0]):
break
else:
unique.append([new])
Run Code Online (Sandbox Code Playgroud)
这让我得到了一个更快的缩小集,但我仍然发现它太慢而不适合理想使用.是否有一些更快的算法来处理这类问题(比较传递交换属性对)或将此算法扩展到多核设置(在20核机器上运行)的方法.
我已经过滤这些集合基于节点/边的数量数据,我们可以假设nx.is_isomorphic功能不能进行任何过滤类型的操作速度更快.我现在也无法轻松更改工具,因此使用编译包不是一种选择.
附加信息:
图形倾向于大约16-20个节点,总共24-48个边缘,存在大量互连,因此每个节点具有大约8个边缘.每个边缘也都有标记,但是只使用了2-3种边缘.
我不知道如何使用 seq 来填充小数位。这是我根据网上找到的内容尝试的...
for U in $(seq -f "%0.2g" 0 0.1 1)
Run Code Online (Sandbox Code Playgroud)
但它不起作用。
我正在寻找输出,
0.00
0.10
0.20
...
Run Code Online (Sandbox Code Playgroud)