小编Ant*_*nte的帖子

Python垃圾收集器文档

我正在寻找详细描述python垃圾收集如何工作的文档.

我很感兴趣在哪一步做了什么.这三个系列中有哪些对象?每个步骤中删除了哪些对象?什么算法用于参考循环发现?

背景:我正在实施一些必须在很短的时间内完成的搜索.当垃圾收集器开始收集最老的一代时,它比其他情况"慢得多".花了比搜索更多的时间.我正在寻找如何预测它将收集最老一代的时间以及需要多长时间.

这是很容易预测它什么时候会收集最古老的一代与get_count()get_threshold().这也可以用set_threshold().但是,我不认为collect()通过武力或等待预定的收集更好地决定是否更好.

python garbage-collection

130
推荐指数
1
解决办法
8万
查看次数

图形/点阵简化

我正在研究图切割算法的数据结构.问题是在最短路径上进行不同的切割.我制作了数据结构,我不确定属性.

输入是最短路径的有向图,它是有界点阵,有最小和最大元素的部分有序集.

节点n的下一个节点N(n)定义为一组节点b,其中a <b且没有c,其中<c <b.类似地定义前一节点P(n).扩展集合的定义,N(n)对于S中的n的N(S)并集,类似于P(S).

在节点集合L,N(L),N(N(L)),...的列表上容易进行不同的切割,其中对于每个相邻的集合对A,N(A)= B认为存在没有分区:

A = A_1 union A_2
B = B_1 union B_2
with B_i = N(A_i), A_i = P(B_i) for i=1,2.
Run Code Online (Sandbox Code Playgroud)

使用此属性创建具有映射的新晶格:

  • 子格到一个节点
  • 如果找到上部分区而不是创建边缘(分区基数编号).

简单来说,格子 - >点阵映射的算法是:

A = {minimum node}
new_node = [A]
1:
while A, N(A) don't have partitions
  append N(A) to new_node
  A = N(A)
for each partition $B_i$
  last_new_node = new_node
  create new_node = [B_i]
  create edge last_new_node to new_node
  go to 1
At the end fix …
Run Code Online (Sandbox Code Playgroud)

algorithm graph-theory graph data-structures

17
推荐指数
1
解决办法
1680
查看次数

Python中的匈牙利算法

在标准python库中是否有很好的匈牙利算法实现?

python graph combinatorics matching

11
推荐指数
3
解决办法
1万
查看次数

二进制矩阵的覆盖框数量最少

我有一个二进制矩阵n*m(0和1).问题是覆盖所有1的非重叠框,其元素都是1.

例:

1111
0110
0110
Run Code Online (Sandbox Code Playgroud)

Box可以用每个坐标中的坐标和长度表示(x,y,lx,ly).此示例包含2个框{ (0,0,1,4), (1,1,2,2) }.

我正在寻找如何用最少的盒子找到封面.

谢谢

compression algorithm cover matrix

5
推荐指数
0
解决办法
878
查看次数