问题标签 [finite-field]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
120 浏览

python - Python——在类实例上使用正则表达式

我有一个类正在接收 1 和 0 的列表并执行 GF(2) 有限域算术运算。在我试图让它以多项式格式输入之前,它一直有效。至于在修复正则表达式问题后如何完成有限算术,我正在考虑重载运算符。

parsePolyToListInput(input)在课堂外时,实际的代码可以工作。问题似乎出在正则表达式中,它只会在字符串中出现错误(这是有道理的),但似乎没有使用 self.expr 作为参数进行初始化(这是一个问题)。初始化之前的@staticmethod 试图挽救未绑定的错误,因为它传入了多项式,但这显然是完全错误的。如果您决定查看任何算术运算,只是为了节省您的时间,模逆不起作用(似乎是由于函数中除法的 while 循环的每次迭代后的格式问题以及返回类型是什么) :

我通常用这个输入来测试它:

关于我的代码,您可能会注意到的第一件事是它不是很好。有两个原因:

1) 我写它是为了让第一个版本可以在有限域 GF(2) 中工作,并以多项式格式输出。然后下一个版本应该能够接受多项式输入,并且还执行关键的“模逆”功能,该功能没有按计划工作(这意味着它实际上根本没有工作)。

2) 我正在自学 Python(我实际上是在自学整体编程),因此欢迎来自专业 Python 程序员的任何建设性批评,因为我正试图尽快打破自己的初学者习惯。

编辑:

也许我一直在测试的更多代码将有助于阐明哪些有效,哪些无效:

0 投票
2 回答
5057 浏览

python - Python --- GF(2) 域中的乘法

此函数返回列表 g 中的异常值。它应该返回 32774、65548、1048768,但它的值更像是把整个二进制文件当作一个大紧身裤,只是将 LSB 移向 MSB,而不是实际移动。

这是功能:

这就是我正在测试的:

现在只有 x1,y1 有效,其他无效。这是最后一个输入的整个方程:

如您所见,要获得产品,两个二进制文件都需要检查其索引是否为 1,然后基于该值进行附加。我不知道如何适应该部分,以及如何做到这一点,以便它返回正确的值。试图理解为什么 x1,y1 有效而其他无效。

编辑:

我只是想明确一点,J0HN 的答案似乎是完全准确的,而且他在所引用的在线工具中发现了一个错误。从现在看来,以这种方式处理有限域数学时,内置的优先。任何发生在这件事上的人都应该考虑向他展示对那些敏锐的观察技能支付账单的投票热爱。

0 投票
1 回答
5011 浏览

python - GF(2)有限域中的Python乘法逆

这两个函数执行扩展欧几里得算法,然后找到乘法逆。这个顺序似乎是正确的,但它并没有得到我所期望的结果,正如悉尼大学http://magma.maths.usyd.edu.au/calc/提供的这个工具一样,因为这是在 GF(2 ) 有限域,我想我错过了一些从基数 10 转换为该域的关键步骤。

这是在以 10 为底的情况下测试和工作的,但在这里可能无法采用具有二进制系数的多项式。所以我的问题是我错误地将 Python 的哪些部分应用于该算法,例如 // floor,这可能无法从函数在 base 10 中能够在 GF(2) 中执行此操作的能力中携带。

上面的工具可以这样测试:

功能:

我一直在用这样的多项式进行测试,但当然是二进制形式:

0 投票
1 回答
954 浏览

sympy - Sympy 符号和 cls 参数

我见过 f = sympy.symbols('f', cls=Function) 但没有任何文档。Python 不喜欢 x = sympy.symbols('x', cls=FF(8)),它抱怨

raise CoercionFailed("期望一个整数,得到 %s" % a) CoercionFailed: 期望一个整数,得到 x

cls 参数的目的是什么?我必须做什么才能使 cls=FF(8) 表示完整?

使用 x = sympy.symbols('x', cls=FF(8)) 我希望 x 成为 FF(8) 字段中的符号,即 x^(2^8-1) 必须给我 1。

0 投票
1 回答
652 浏览

python - Python -- 使用 __init__ 和多项式类的继承方法

这是一个类,它将作为输入,然后以字符串形式输出一个多项式(两种方式相同的格式)。在各种方法中执行一些算术。我一直在尝试将这个类继承到另一个类中,然后将使用第一个类的 __mod__() 特殊方法(或者在必要时使其成为自己的特殊方法,但我不明白你怎么不能只使用原来的方法)在摄入量上执行 mod。似乎这进入了 __init__() 但我已经尝试了 5 个不同的版本,甚至更改了父类,但我无处可去。我正在自学 Python,所以我确信即使是初级 Python 开发人员也能看出我在哪里完全错了。

期望的结果是能够在具有父类型的新(子)类上调用它,同时尽可能少地更改父类(如果有的话)。请注意,“BinaryField”类是预期的子类:

在摄入时,给定的多项式应该是模数除以第二个元素(这里是“p”)。这对于有限域数学是必要的。

编辑:当运行它时——

由于我的编码方式,这两种风格都是可能的,但它们都应该返回相同的答案。但是,该代码的结果是:

此外,当使用 BinaryField(poly4,d) 时,它与 GF2Polynomial() 初始化的字符串相同,此错误为: AttributeError: 'int' object has no attribute 'string'

0 投票
1 回答
4635 浏览

python - Python -- matplotlib 椭圆曲线

我正在自学 matplotlib 和 Python,我很难为椭圆曲线绘制方程。我有等式,但我没有做y^2

到目前为止,这是我能够让自己陷入的麻烦:

之所以axis()存在,是因为我还试图获得一个带有网格线的更清晰的图表,我认为这grid()也会解决这个问题,但显然不是。我还打算让它在你点击你想要的点并计算它的地方进行交互,但是查看文档似乎有很多交互鼠标选项,但我没有看到通过单击创建一些事件的鼠标交互在图表上的一个点上(在第三次阅读之后我仍然想念它)。

我只是从matplotlib 上的 pyplot 摘要开始,但我没有看到我在这里做错了什么。椭圆曲线的图很遥远,甚至没有接近。

这可能是初学者的错误,因此花一秒钟时间阅读本文的初级程序员可能会很快明白为什么我没有得到我想要的曲线。

0 投票
1 回答
1728 浏览

python-2.7 - Python -- Matplotlib 椭圆曲线与 sympy solve()

我绘制了一条椭圆曲线。我想沿着 a 画一条线P,Q,R(在哪里PQ将独立于这个问题来确定)。的主要问题P是 sympysolve()返回另一个方程,它需要返回一个值,以便它可以用于绘制 x 值P。据我了解,solve()应该返回一个值,所以我显然在这里做错了,我完全没有看到。作为参考,以下是P+Q=R外观:

在此处输入图像描述

我一直在阅读文档和其他材料,这就是我能够让自己陷入困境的情况:

最后,我想画一条线来展示P+Q=R,所以如果有人也有一些关于如何编码来获得的东西,Q那将不胜感激。我正在自学 Python 和椭圆曲线,所以我确信任何入门级程序员都可以在 2 分钟内弄清楚我已经从事了一段时间的工作。

0 投票
3 回答
1088 浏览

c++ - C ++中有限域元素的平方根

是否有任何方法可以从有限域中获得元素的平方根。用 C++ 编程我使用的是 NTL,但没有提供这样做的方法。提前致谢

0 投票
1 回答
1414 浏览

java - 在有限域python或java上求解线性方程组

python或java中是否有任何包可以在有限域上求解线性方程组?我正在尝试用 20 多个未知变量求解 20 多个方程,并且拥有这个软件包会很棒。这是一个有限域上的方程组,因此它与求解常规线性方程并不完全相同。

加法、减法、乘法和除法遵循此处描述的有限域规则集。谢谢。

0 投票
1 回答
1588 浏览

encryption - 在域 F2 上找到两个多项式的 GCD(整数余数模 2)

我试图在 Field modulo 2 和 field modulo 3 中找到以下多项式(两个单独的问题)的 GCD。但由于某些原因我被困在第一个。

对于第一个,我尝试将多项式表示为 1 和 0 的位(例如:101101 和 1010)并尝试使用欧几里得算法找到 GCD,但在某些时候它会导致零,如果我这样做是不可能的计算正确。

第二组多项式,我完全不确定,因为它的系数大于 1。

任何帮助将非常感激。