问题标签 [abstract-algebra]

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 回答
2805 浏览

python - 正确的卡迈克尔函数

我正在为 RSA 算法创建所有必要的函数。不幸的是,我似乎无法做出正确的 Carmichael 功能。

这些是我编写的函数:

我正在使用 totient 函数进行数字生成。据我所知,有一个简单的规则,如果数字是 2 的幂并且大于 4,则其质数的数量应减半,否则等于 phi(n)。

上面的规则在我的代码中完美运行,例如,如果输入值为 8,则结果如下:

但问题是,Carmichael 函数也出于某种原因将其他数字减半,例如,如果输入是 12,这就是我的函数返回的内容:

但它应该是这样的:

为什么会这样?也许非质数奇数应该被区别对待?有什么我需要添加到我的函数中的吗?

谢谢!

0 投票
1 回答
587 浏览

haskell - Haskell中Extend类型类的含义是什么?

在 Haskell 中,有一个名为Extend的类型类。

该类定义如下

该类的每个实例Extend都应具有以下属性:

我可以看到它与Functor. 特别是,Functor的属性 fmap f . fmap g == fmap (f . g)看起来类似于Extend

你会如何解释Extend?它有什么意义?它是否使任何计算更容易?使用时做了哪些抽象Extend

0 投票
1 回答
265 浏览

coq - 如何在 Coq 中定义特定字段

我正在尝试使用标准库的布尔实现上的字段的标准库定义在 Coq 中构造 GF(2)。

要清楚:

  • “true”应该是字段的“1”元素。

  • “false”应该是字段的“0”元素。

  • “xorb”应该是addititon。

  • “andb”应该是乘法。

我希望我应该从这里将这些信息传递给一些记录并提供正确性证明。但是,我不知道如何设置它。

0 投票
1 回答
63 浏览

python-3.x - m位数字的所有可能排列的快捷方式

我一直在研究有限域。假设我有一个素数p=7。所以我得到了一份清单q=[0,1,2,3,4,5,6]。现在我想要集合 q 的元素的所有可能排列7 个位置。例如 [1,1,1,4,6,3,1] 是可能的排列之一。python中是否有任何内置命令可以做到这一点?实际上,我正在与 P 所在的更大领域合作127 (p=127).

0 投票
1 回答
1077 浏览

python - 如何检查具体方法是否尊重抽象方法的类型提示

这是一个由两部分组成的问题,但第二部分取决于第一部分。

出于教育目的,我正在尝试为(抽象代数的概念)实现一个抽象基类和测试套件。代数群的部分定义等同于类型约束,我想在 ABC 上实现该类型约束,如果具体类上的方法不符合该约束,我会抱怨。

对于逻辑下的布尔值组,我有一个第一遍实现and,但它至少有两个问题,我希望你能帮我解决它。

首先:兴趣线#1 是在做类型约束工作,但当前的实现是错误的。它只检查该方法是否接收并返回一个AbsGroup实例。这可以是任何AbsGroup实例。我希望它检查它所继承的具体类,它接收并返回该具体类的实例(因此在Bool它接收并返回的实例的情况下Bool)。练习的重点是在一个位置执行此操作,而不必在每个具体类上专门设置它。我认为这是通过一些类型提示泛型完成的,这些泛型比我尚未深入研究的类型提示要深一些。我该怎么做呢?

其次:如何检查具体方法是否符合抽象类型提示?我的 IDE (PyCharm) 中的类型检查器在 Line-of-interest #2 处抱怨,因为它预计other是 type AbsGroup,它没有val属性。这是意料之中的,如果我能找出第一个问题的解决方案,它就会消失,但我的 IDE 是我能找到的唯一能注意到这种差异的东西。mypy默认情况下对此事保持沉默,flake8 和 pylint 也是如此。PyCharm 很好,但如果我想将其合并到工作流中,如果我的具体方法不符合抽象签名,我必须运行什么命令会失败?

0 投票
2 回答
2140 浏览

python - Python:查找循环组的所有生成器

取一个循环群 $\mathbb{Z}_n$,阶为 $n$。元素是:

$$\mathbb{Z}_n = {1,2,...,n-1}$$。

对于每个元素,让我们称它们为 a,您测试是否

$$a^x \pmod n$$

给我们 $\mathbb{Z}_n$ 中的所有数字;x 在这里是从 1 到 n-1 的所有数字。如果元素确实生成了我们的整个组,那么它就是一个生成器。

我需要一个程序来获取组的顺序并返回所有生成器。这是我尝试过的:

可悲的是,它返回了一个空列表。

0 投票
2 回答
454 浏览

haskell - 函数式编程中的代数结构是什么?

我一直在对函数式编程概念和想法进行一些简单的阅读。到目前为止,非常好,我已经阅读了三个主要概念:代数结构、类型类和代数数据类型。我对什么是代数数据类型有相当好的理解。我认为总和类型和产品类型相当简单。例如,我可以想象创建一个代数数据类型,比如一个Card由两个枚举类型Suit(具有四个值和符号)和Rank(具有 13 个值和符号)组成的产品类型。

但是,我仍然对试图准确理解代数结构和类型类是什么感到不满。我脑子里只有一个表面层次的画面,但不能完全理解,例如,不同类型的代数结构,如函子、幺半群、单子等。这些到底有什么不同?它们如何在编程环境中使用?类型类与常规类有何不同?谁能至少给我指出一本关于抽象代数和函数式编程的好书的方向?有人建议我学习 Haskell,但我真的需要学习 Haskell 才能理解函数式编程吗?

0 投票
0 回答
75 浏览

algorithm - 表现与行为 - 理性的纠结舞

四个人站在 A、B、C 和 D 位置,并以所示的初始配置握住两条绳索。

在此处输入图像描述

这些人可以通过以他们喜欢的任何顺序多次执行两个动作来“跳舞”这些绳索:

  • 作为一组逆时针旋转 90 度。(因此位置 A 的人移动到位置 B,位置 B 的人移动到位置 C,依此类推。)将此移动称为“旋转”,表示为 R。

    示例:给定初始状态,一次旋转,以下是状态:

    在此处输入图像描述

  • 位置 D 和 C 的人(东北部和东南部的人)交换位置,而 D 将绳子举起并越过 C。将此动作称为“交换”。记为 T。

    示例:给定初始状态,在一次交换中,以下是状态:

    在此处输入图像描述


旋转 - R

交换 - T

操作的属性:

  • 操作不可交换 - RRRTT 不等于 RTRTR

  • 操作是关联的 - (TR)T 等于 T(RT)

  • 逆 - R^-1 = R^3 或 3R 和 T^-1 = RTRTR

    R^-1(逆时针旋转一次)为:

    在此处输入图像描述

    3R(三个顺时针旋转)是:

    在此处输入图像描述


  1. 如何用抽象数据类型表示这个缠结的状态?

  2. 操作(ROTATE & SWAP)如何修改这个抽象数据类型表示的这个缠结的状态?

0 投票
2 回答
55 浏览

haskell - 如何约束关联类型同义词?

我(相对)是 Haskell 的新手,想编写一些数学代码。例如,阿贝尔群。我想编写以下代码:

编译上面给我的错误

这是有道理的;我没有确保 (AbelianGroupElement g1) 总是为它定义了 Eq。但是,我不确定如何实现这一点。我可以将以上内容更改为

但这无济于事。(类型族可能是错误的方式;我最初是从 MultiParamTypeClasses 和 FunctionalDependencies 开始的,但在这方面遇到了其他问题,并得到了类型族更好的印象)。

感谢您阅读本文;任何帮助,将不胜感激。

0 投票
1 回答
49 浏览

math - 如何创建具有浮点系数的多项式环 Julia

我想创建一个具有这样的浮点系数的多项式环。我可以用整数创建,但是浮点数不起作用。

它给了我这个错误。我怎样才能创建这样的多项式。