#algorithm #networking #erasure #fountain #code

bin+lib onlinecode

“在线码”的实现,一种喷泉码类型

2 个版本

0.1.1 2021 年 9 月 6 日
0.1.0 2021 年 7 月 4 日

#1600算法

GPL-2.0-or-later OR LGPL-2.0-or-later

98KB
1.5K SLoC

“在线码”的实现,一种喷泉码类型

目前这只是一个占位符包。它打算成为我现有的 Perl/C 实现的移植/重构。

现有的 Perl 实现可在 CPAN 上的 Net::OnlineCode 获得。源代码可在 GitHub 上找到 此处,位于 Net-OnlineCode 目录下。

我注意到在 crates.io 上还有一个类似名称的包,它实现了相同的算法。如果您来这里想找到那个,可以在这里找到它 这里

版本 0.1.1

本版本实现了一个简单的编解码器(编码器/解码器),以测试各个模块中的所有代码是否正确。

关注点/注意点

  • 使用更自然的解方程变量想法,而不是实现显式的二分图

  • 使用实现了 RngCore 的 RNG,而不是固定 RNG(允许轻松自定义)

  • 编解码器不与文件一起使用(而不是,一个块 = 一个 u32),但这很容易扩展

  • 库只处理在线码算法,因此用户负责对文件块进行异或操作(和网络)

  • HashSet 的使用在性能方面出现了一个大问题;用未排序的列表替换它可能会大幅提高性能。HashSet 还是非确定性的来源,因为迭代器以随机顺序返回集合成员。

  • 是对原始论文的忠实实现

  • 核心例程经过良好测试,我对它们的正确性有很高的信心

依赖项

~1.5MB
~21K SLoC