有限域运算和擦除校正码。
pyfinite的Python项目详细描述
简介
pyfinite包是一个用于处理 字段和相关的数学运算。还包括一个通用的 用于对泛型字段执行矩阵运算的矩阵包。作为 说明reed-solomon纠删码的实现是 提供使用这些工具。
粗略地说,“场”是一个数学空间,其中一致的 加法、减法、乘法和除法运算是 定义。“有限域”是元素数为 有限的。也许最常见的有限域是布尔域 当元素为0和1时,加法(和减法)对应于 异或和乘法(和除法)在0和1中正常工作。
更复杂的有限域对于 密码学和纠删码。
用法
通过pip install pyfinite之类的方式安装之后,最好的 开始的方法是看下面的最博士的例子 文件:
- ffield.py:有关FField和FElement类,请参见docstring。
- 这向您展示了如何处理有限域。
- genericmatrix.py:请参阅GenericMatrix类的docstring。
- 这将向您展示如何对泛型字段执行矩阵运算。
- rs_code.py:请参阅RSCode类的docstring。
- 这向您展示了如何做里德所罗门擦除纠错码。
- file_ecc.py:请参阅^{tt11}的顶级docstring$
模块。
- 演示如何将文件编码为多个片段并解码 从这些碎片的一个子集。
例如,在安装pyfinite并启动python之后 解释器,执行如下操作以查看有关finite的帮助 字段:
>>>frompyfiniteimportffield>>>help(ffield.FField)
或者如果你想潜进去,你可以试试 以下内容:
>>>frompyfiniteimportffield>>>F=ffield.FField(5)# create the field GF(2^5)>>>a=7# field elements are denoted as integers from 0 to 2^5-1>>>b=15>>>F.ShowPolynomial(a)# show the polynomial representation of a'x^2 + x^1 + 1'>>>c=F.Multiply(a,b)# multiply a and b modulo the field generator>>>c8>>>F.ShowPolynomial(c)'x^3'
或者,您可以使用 例如:
>>>importgenericmatrix>>>v=genericmatrix.GenericMatrix((3,3))>>>v.SetRow(0,[0.0,-1.0,1.0])>>>v.SetRow(1,[1.0,1.0,1.0])>>>v.SetRow(2,[1.0,1.0,-1.0])>>>v<matrix0.0-1.01.01.01.01.01.01.0-1.0>>>>vi=v.Inverse()
为了获得一些真正的乐趣,您可以尝试使用泛型矩阵 有限域元素的运算!关于 genericmatrix模块只依赖于标准的python 算术运算符,以便您可以将其用于任何具有sane+的对象, -、*和/运算符。有关genericmatrix的帮助,请参阅 更多信息。
最后,如果您只想更正擦除,请参阅 rs_code和file_ecc模块,通过类似于
>>>importrs_code,file_ecc>>>help(file_ecc)>>>help(rs_code)
未来工作
这段代码是多年前编写的,托管在麻省理工学院的一个旧网站上 以py_ecc的名义移动到github。它需要 一些爱。尤其是,它可以使用:
- 修改以修复pep8/pylint警告和通常更好的python 风格。
- 更多文件。
- 更多的例子。
- travis设置来验证python2和python3中的博士学位。
- 这些已经过手动验证,但是如果有一个 可以在 自动化方式。
如需帮助或贡献,请访问主项目站点 https://github.com/emin63/pyfinite。