3

受到 Nick Johnson 的博客Damn Cool Algorithms: Fountain Codes的启发,我决定尝试实现Luby Transform (LT) 代码。我只是把它推到了GitHub;它是用 Python 3 编写的。

我使用一个仅包含“hello”的非常短的文件来开发它,并在一个随机生成的 1MB 文件上进行了测试。该软件似乎可以有效地对文件进行编码和解码,仅在编码器和解码器之间共享原始文件的长度、块大小和液滴。

问题是,我应该如何证明这确实是 LT 代码的忠实实现?我如何证明解码算法是有效的?

我的意图是使用 Python 的计数引用系统删除使用过的液滴。我如何检查这确实发生了?

也欢迎对代码本身提供任何反馈,尽管它可能更适合作为评论(而不是答案)或 GitHub 上的问题。

4

1 回答 1

2

如果您只想查看引用计数是否有效,您可以__del__在类中定义该方法。请注意,这将阻止循环 GC 处理这些类

另一种方法是查看对类的引用计数的更改,因为每个实例都包含对该类的引用

>>> from sys import getrefcount
>>> class Obj(object):
...  pass
... 
>>> sys.getrefcount(Obj)
5
>>> obj_list=[Obj() for x in range(5)]
>>> sys.getrefcount(Obj)
10
>>> obj_list[:3]=[]
>>> sys.getrefcount(Obj)
7
于 2012-09-20T22:35:16.050 回答