想了很久,终于决定把这个问题贴在这里。几天前,我开始graph-tool
用来做各种事情。在那之前我一直在使用Networkx
。我已经看到了令人印象深刻的性能比较,并认为一切都很简单。但是,我立即遇到了速度问题,并提出了一个与它的特定方面相关的问题。我得到了一个令我满意的快速答复。但是,现在这个速度问题时不时地困扰着我,我找不到任何关于graph-tool
这与有效使用它有关。例如,从我上一个问题的答案中,我意识到最好将所有边添加在一起而不是一个接一个,这是一个非常重要的注意点,但在任何地方都没有提到!我现在有两个类似的问题:
(1) 如何选择给定节点的随机邻居?我只能看到以下解决方案:
nbr = np.random.choice(list(v.all_neighbours()))
由于v.all_neighbours()
是生成器,我必须将其转换为列表以选择随机元素。这会减慢代码速度,但我没有看到更好的方法。
(2) 我想为list
图中的每个顶点分配一个 1d 向量(可以吗?),然后我以特定方式交换和修改它们。这只是一个属性映射,我想查看一些有关如何有效使用它的文档。但是,我找不到任何东西。
(3) 我正在尝试模拟三元闭包,该网络本身随着时间而变化。因此,在每个时间步,我都需要关于图中每个顶点的邻居的信息。同样,我必须创建一个列表(或 numpy 数组):
nbrs = [w for w in v.neighbours()]
这大大降低了我的代码速度。这意味着我没有正确执行此操作,但我找不到任何文档可以告诉我如何在图形工具中有效地使用邻居。
不知何故Networkx
,我为相同任务编写的程序完全优于我根本买不到的图形工具代码。
这个列表可能会增加,因此,如果有人可以向我指出一些关于有效使用图形工具的文档,除了回答上述具体问题之外,我会非常高兴。
提前致谢。