加速图形中的采样

2024-04-27 01:05:21 发布

您现在位置:Python中文网/ 问答频道 /正文

我最近一直在用Python处理图形采样。我的工作示例如下:

for enx, wlen in enumerate(wlen_dist):
    for j in range(wlen):
        node_container = queue.Queue(maxsize=200000000)
        node_container.put(node_name)
        tmp_walk = [] # [node_name]
        while not node_container.empty():
            nod = node_container.get()
            neighs = list(network.neighbors(nod))
            tar = random.choice(neighs)
            node_container.put(tar)
            if len(tmp_walk) > enx+1:
                break
            tmp_walk.append(tar)
       some_container.append(tmp_walk)

其中wlen是长度为enx的路径的样本数,我只是将行走保存到某个容器(这里并不重要)。例如,wlen_dist:

[1000,500,100]

在这里,得到了1000个样本,长度为2,500个长度为3,100个长度为4。networkx是networkx图形。 我想知道,如何加速这样的代码(我是新的这一部分)。你知道吗

我的想法:

  1. 使用Numba并将单独的行走包装到一个方法中

  2. 以某种方式使用Cython

  3. <> >将其重写为C++,并称之为

我会很高兴有任何想法和反馈,谢谢!你知道吗


Tags: nameinnode图形forputdistcontainer
1条回答
网友
1楼 · 发布于 2024-04-27 01:05:21

图嵌入中经常使用的一个想法是重用随机游动的一部分:

如果您有一个随机游走访问节点a_1, a_2, a_3,您可以将其视为一个长度为3的随机游走和两个长度为2的随机游走(a_1, a_2a_2, a_3)。你知道吗

这可以推广到更长的行走,因此长度为4的随机行走包含2个长度为3的随机行走和3个长度为2的随机行走。你知道吗

相关问题 更多 >