我正在计算无向图的出度,其中节点表示为变量集,如果它们共享至少一个变量,则连接2个节点。
def computeOutDegree(self):
self.nodeOutDegrees = [0] * len(self.nodes)
for i in range(len(self.nodes)-1):
setOfVariablesInI = set([elem[0] for elem in self.nodes[i] ])
for j in range(i+1,len(self.nodes)):
setOfVariablesInJ = set([elem[0] for elem in self.nodes[j] ])
if setOfVariablesInI.intersection(setOfVariablesInJ):
self.nodeOutDegrees[i] += 1
self.nodeOutDegrees[j] += 1
不幸的是,O((N *(N-1))/ 2)效率不高。有没有更好的方法呢?
也许有多线程。但在哪里切块?另外,+ =不是原子的,对吧?