问题标签 [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.
python - 正确的卡迈克尔函数
我正在为 RSA 算法创建所有必要的函数。不幸的是,我似乎无法做出正确的 Carmichael 功能。
这些是我编写的函数:
我正在使用 totient 函数进行数字生成。据我所知,有一个简单的规则,如果数字是 2 的幂并且大于 4,则其质数的数量应减半,否则等于 phi(n)。
上面的规则在我的代码中完美运行,例如,如果输入值为 8,则结果如下:
但问题是,Carmichael 函数也出于某种原因将其他数字减半,例如,如果输入是 12,这就是我的函数返回的内容:
但它应该是这样的:
为什么会这样?也许非质数奇数应该被区别对待?有什么我需要添加到我的函数中的吗?
谢谢!
haskell - Haskell中Extend类型类的含义是什么?
在 Haskell 中,有一个名为Extend的类型类。
该类定义如下
该类的每个实例Extend
都应具有以下属性:
我可以看到它与Functor
. 特别是,Functor
的属性 fmap f . fmap g == fmap (f . g)
看起来类似于Extend
。
你会如何解释Extend
?它有什么意义?它是否使任何计算更容易?使用时做了哪些抽象Extend
?
coq - 如何在 Coq 中定义特定字段
我正在尝试使用标准库的布尔实现上的字段的标准库定义在 Coq 中构造 GF(2)。
要清楚:
“true”应该是字段的“1”元素。
“false”应该是字段的“0”元素。
“xorb”应该是addititon。
“andb”应该是乘法。
我希望我应该从这里将这些信息传递给一些记录并提供正确性证明。但是,我不知道如何设置它。
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).
python - 如何检查具体方法是否尊重抽象方法的类型提示
这是一个由两部分组成的问题,但第二部分取决于第一部分。
出于教育目的,我正在尝试为组(抽象代数的概念)实现一个抽象基类和测试套件。代数群的部分定义等同于类型约束,我想在 ABC 上实现该类型约束,如果具体类上的方法不符合该约束,我会抱怨。
对于逻辑下的布尔值组,我有一个第一遍实现and
,但它至少有两个问题,我希望你能帮我解决它。
首先:兴趣线#1 是在做类型约束工作,但当前的实现是错误的。它只检查该方法是否接收并返回一个AbsGroup
实例。这可以是任何AbsGroup
实例。我希望它检查它所继承的具体类,它接收并返回该具体类的实例(因此在Bool
它接收并返回的实例的情况下Bool
)。练习的重点是在一个位置执行此操作,而不必在每个具体类上专门设置它。我认为这是通过一些类型提示泛型完成的,这些泛型比我尚未深入研究的类型提示要深一些。我该怎么做呢?
其次:如何检查具体方法是否符合抽象类型提示?我的 IDE (PyCharm) 中的类型检查器在 Line-of-interest #2 处抱怨,因为它预计other
是 type AbsGroup
,它没有val
属性。这是意料之中的,如果我能找出第一个问题的解决方案,它就会消失,但我的 IDE 是我能找到的唯一能注意到这种差异的东西。mypy
默认情况下对此事保持沉默,flake8 和 pylint 也是如此。PyCharm 很好,但如果我想将其合并到工作流中,如果我的具体方法不符合抽象签名,我必须运行什么命令会失败?
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 的所有数字。如果元素确实生成了我们的整个组,那么它就是一个生成器。
我需要一个程序来获取组的顺序并返回所有生成器。这是我尝试过的:
可悲的是,它返回了一个空列表。
haskell - 函数式编程中的代数结构是什么?
我一直在对函数式编程概念和想法进行一些简单的阅读。到目前为止,非常好,我已经阅读了三个主要概念:代数结构、类型类和代数数据类型。我对什么是代数数据类型有相当好的理解。我认为总和类型和产品类型相当简单。例如,我可以想象创建一个代数数据类型,比如一个Card
由两个枚举类型Suit
(具有四个值和符号)和Rank
(具有 13 个值和符号)组成的产品类型。
但是,我仍然对试图准确理解代数结构和类型类是什么感到不满。我脑子里只有一个表面层次的画面,但不能完全理解,例如,不同类型的代数结构,如函子、幺半群、单子等。这些到底有什么不同?它们如何在编程环境中使用?类型类与常规类有何不同?谁能至少给我指出一本关于抽象代数和函数式编程的好书的方向?有人建议我学习 Haskell,但我真的需要学习 Haskell 才能理解函数式编程吗?
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(三个顺时针旋转)是:
如何用抽象数据类型表示这个缠结的状态?
操作(ROTATE & SWAP)如何修改这个抽象数据类型表示的这个缠结的状态?
haskell - 如何约束关联类型同义词?
我(相对)是 Haskell 的新手,想编写一些数学代码。例如,阿贝尔群。我想编写以下代码:
编译上面给我的错误
这是有道理的;我没有确保 (AbelianGroupElement g1) 总是为它定义了 Eq。但是,我不确定如何实现这一点。我可以将以上内容更改为
但这无济于事。(类型族可能是错误的方式;我最初是从 MultiParamTypeClasses 和 FunctionalDependencies 开始的,但在这方面遇到了其他问题,并得到了类型族更好的印象)。
感谢您阅读本文;任何帮助,将不胜感激。
math - 如何创建具有浮点系数的多项式环 Julia
我想创建一个具有这样的浮点系数的多项式环。我可以用整数创建,但是浮点数不起作用。
它给了我这个错误。我怎样才能创建这样的多项式。