鲁比变换喷泉码编解码器的一种实现。对于在非常有损耗的信道上传输数据非常有用,因为基于重试的传输协议很难实现。
lt-code的Python项目详细描述
lt code
==
这是python中luby转换代码的实现,由两个可执行文件组成,每个可执行文件对应一个编码和解码文件。这些都是围绕核心流/文件api的薄包装。
剑桥大学出版社,2003年。
不过,也做了一些优化。首先,度分布的cdf m(d)是为所有度d=1,…,k预先计算的。该cdf表示为数组映射索引d=>;m(d),因此从度分布mu(d)中进行的采样成为通过cdf数组进行的线性搜索,以查找我们的随机数在\[0,1)上落下的桶。这个随机数是根据指定的使用线性同余生成器生成的。BR/> BR/>第二,所有块的整数表示被保存在RAM中,用于块样本生成的最高速度。这是对大多数计算机上实际编码的文件大小的限制,但这个决定并没有深入到设计的其他部分,如果需要更好的内存可伸缩性,可以很容易地解决这个问题。
``python
from sys import stdout
from lt import encode
块大小:
stdout.buffer.write(block)
````
这是使用在线算法完成的,该算法以增量方式计算适当的消息,并在解析源节点的值时急切地传递它们。因此,一旦解码器只读取了流中解码文件所需的多个块,解码器就将完成解码,而且它的规模似乎与文件大小一样大,块大小增加。
``python
from sys import stdin
from lt import decode
decoder.consume_block(block)
如果decoder.is_done():
break
从shell中调用以下命令
$./bin/encoder<;file>;<;blocksize>;<;seed>;[c][delta]
==
这是python中luby转换代码的实现,由两个可执行文件组成,每个可执行文件对应一个编码和解码文件。这些都是围绕核心流/文件api的薄包装。
剑桥大学出版社,2003年。
不过,也做了一些优化。首先,度分布的cdf m(d)是为所有度d=1,…,k预先计算的。该cdf表示为数组映射索引d=>;m(d),因此从度分布mu(d)中进行的采样成为通过cdf数组进行的线性搜索,以查找我们的随机数在\[0,1)上落下的桶。这个随机数是根据指定的使用线性同余生成器生成的。BR/> BR/>第二,所有块的整数表示被保存在RAM中,用于块样本生成的最高速度。这是对大多数计算机上实际编码的文件大小的限制,但这个决定并没有深入到设计的其他部分,如果需要更好的内存可伸缩性,可以很容易地解决这个问题。
``python
from sys import stdout
from lt import encode
块大小:
stdout.buffer.write(block)
````
这是使用在线算法完成的,该算法以增量方式计算适当的消息,并在解析源节点的值时急切地传递它们。因此,一旦解码器只读取了流中解码文件所需的多个块,解码器就将完成解码,而且它的规模似乎与文件大小一样大,块大小增加。
``python
from sys import stdin
from lt import decode
decoder.consume_block(block)
如果decoder.is_done():
break
从shell中调用以下命令
$./bin/encoder<;file>;<;blocksize>;<;seed>;[c][delta]