5个版本 (3个重大更新)
| 0.4.0 | 2024年1月6日 |
|---|---|
| 0.3.0 | 2022年9月17日 |
| 0.2.1 | 2022年8月24日 |
| 0.2.0 | 2022年4月18日 |
| 0.1.0 | 2022年3月7日 |
#264 in 数学
52KB
797 行
Algexenotation
Algexenotation是一种将多重集表示为具有代数压缩的自然数的方法。受Tic Xenotation的启发。更多信息,请参阅论文。
动机
- 建模有序笛卡尔组合学
- Tic Xenotation的代数压缩
- 将超图编码为自然数
三角形示例
此示例显示三角形是17719'。
0
o
/ \
1+0*1 / \ 1+2*0
/ \
1 o-------o 2
1+1*2
三角形中有3个节点0, 1, 2。在Algexenotation中,这些是超素数。
从a到b的边被编码为1+a*b。
3条边的乘积就是三角形。
use algexenotation::*;
fn main() {
let n = ax!((1+0*1) * (1+1*2) * (1+2*0));
// Prints `17719'`.
println!("{}", n.original());
}
Algexenotation简介
Algexenotation可以看作是素数分解的推广。
原始数字
在Algexenotation中,“原始数字”就是我们通常认为的自然数,例如,“四”写成4',后面有一个"'"。
指数
当评估4'时,我们得到0^0。在这里,0不是一个原始数字,而是0th素数,即2'。
指数运算符^以常规方式解释,即0^0与2'^2'相同。
乘法
在Algexenotation中,除了0'和1'之外的所有原始数字都会被评估为另一种形式。这个过程与素数分解相对应。
例如,6'会被评估为0*1。在这里,0 = 2'和1 = 3'。
乘法运算符*按照常规方式解释。
加法
Algexenotation与常规记法不同的地方在于,加法意味着完全不同的东西。
例如,2' + 3'不会评估为5'。相反,由于0 = 2'和1 = 3',2' + 3'评估为0 + 1 = 1。
适应这种加法思考方式需要一段时间。如果你一开始不理解,请不要慌张!Algexenotation有时会让人感到困惑。
然而,当你添加两个简单的Algexenic数时,例如6 + 7 = 13,你可以像平常一样进行计算。
超素数
Algexenotation中加法之所以能够以这种方式工作,是因为“超素数”。
超素数在Algexenotation中写作0, 1, 2, 3, ...。
最小的超素数是0 = 2',因为它是在自然数素数序列中的第0个素数。
下一个超素数是1 = 3',因为它是在2'之后的第2个素数(或第0个素数)。
下一个超素数是2 = 5',因为它是在3'之后的第3个素数(或第1个素数)。
下一个超素数是3 = 11',因为它是在5'之后的第5个素数(或第2个素数)。
下一个超素数是4 = 31',因为它是在11'之后的第11个素数(或第3个素数)。
下一个超质数是 5 = 127',因为它是最小的第 31' 个质数(或第 4 个质数)。
请注意,下一个超质数是指质数序列中前一个超质数的质数。
这个序列是质数序列的一个子序列,但增长速度要快得多。
七
数字 7' 是 Algexenotation 中最小的“加法”数。
1+0^0 = 7'
这意味着必须使用 + 来表示 7'。
现在,由于 0^0 = 4' 且 4' 在 1 = 3' 和 2 = 5' 之间,所以直观地认为 3'+4'=7'。然而,这是错误的。
十三
数字 13' 是 Algexenotation 中第二个“加法”数。
1+0*1 = 13'
如果我们按照通常的方式解释 +,那么我们得到 3'+2'*3' = 9',这是错误的。
相反,+ 必须被视为与通常意义上的不同类型的加法。它在超质数中正常工作,但对于其他数字则更难理解。
正确解释 1+0*1 的方法是将它视为第 6' 个质数(或第 0*1 个质数)。
十四
第一个具有两个不同质数基的合数是 14'。
0*(1+0^0) = 14'
这是直观的,因为 0 = 2' 和 1+0^0 = 7'。
十七
在 Algexenotation 中使用 2 的第一个“加法”数是 17'。
2+0^0 = 17'
正确解释的方法是:1+(1+0^0),其中 1+0^0 = 7',因此得到第 7' 个素数。
依赖关系
~4MB
~69K SLoC