自然数到底可以表示到多大?

  版权申明:本文为博主窗户(Colin Cai)原创,欢迎转帖。如要转贴,必须注明原文网址

  http://www.cnblogs.com/Colin-Cai/p/9683271.html 

  作者:窗户

  QQ/微信:6679072

  E-mail:6679072@qq.com

  从很小我们 就知道,自然数有无限多个。

  小朋友都对巨大的数有一种天然的憧憬,以至于很多人都会想过这么一个问题,我们可以表示出多大的数?

  小的时候,我就幻想着,我拿着一支笔,然后不断的写9,然后所写的这个数就可以非常非常大了。长大一点才知道,这个根本不算什么,随便一个乘方就把它秒杀了。

  以下我们来看看 递归 的神奇。

  

  Ackermann函数

 

  我想几乎每个正统学习计算机的同学都见过Ackermann函数,

  Ackermann函数带两个参数,两个参数都是非负整数。

  其定义如下:

  对于Ackermann(m,n),

  (1) 如果m=0,则函数值为n+1

  (2) 如果m>0且n=0,则函数值同Ackermann(m-1,1)

  (3) 如果函数m>0且n>0,则函数值同Ackermann(m-1, Ackermann(m, n-1))

  这个函数很恐怖,Ackermann(4,0)=13,Ackermann(4,1)=65533, Ackermann(4,2)有 19729 位,Ackermann(4,3)天知道……

  

 

  

  运算符号的演化

 

  我们最先学会的运算符号是加法,很快我就学会了相同的数连加。

  8个2相加,写起来如下

  2+2+2+2+2+2+2+2

  

  显然,连加的写法过于累赘,于是我们又学习了乘法,上述的式子可以写成

  2×8

  于是顿时简洁了很多。

  注:根据不同理解,也有表示为8×2

 

  自然而然,我们想到了连乘,它可以表达挺大的数了。

  8个2相乘,写起来如下

  2×2×2×2×2×2×2×2

  于是有了乘方来简化,上述表示为28

  

  有了乘方,终于有了第一个大杀器。我们可以连着写乘方,以乘方的结果作为后面乘方的指数,如同连加、连乘那样,比如

  

  它运算的结合是从上往下结合,这个数是很夸张的大,这个宇宙不够存储它的十进制下每一位。

 

  

  高德纳箭头

 

  提起高德纳Knuth,应该计算机界的人都知道吧,我也不用多介绍了。

  他以连加、连乘、连乘方为思路基础,提出了高德纳箭头这样的运算符

  

  a↑b = ab

  a↑↑b = a↑a...↑a   (一共有b个a)

  a↑↑↑b = a↑↑a...↑↑a  (一共有b个a)

   ...

  a ↑b = a ↑n-1 a ... ↑n-1 a  (一共b个a)

  ↑我这里表示为n个箭头。

  高德纳箭头是从右向左结合,比如3↑3↑3就是3↑(3↑3)

  之前提到的

  

  用高德纳箭头表示应该是2↑↑6

  这个数箭头只有2个,前后数字都很小,但是已经非常可怕的大了。

  

  葛立恒数

  

  这是曾经出现在数学证明中最大的自然数,不过后面被另外一个数学证明中的TREE(3)刷新纪录。这两个数都与图的染色有关,此处不深入。

  

  葛立恒数是如下表示的:

  g(0) = 4

  g(1) =  3 ↑g(0) 3

  g(2) =  3 ↑g(1) 3

  ...

  g(64) = 3 ↑g(63) 3

  g(64)就是葛立恒数,这个数是夸张的大,别说数本身,就连它的箭头的个数g(63),人们也无法理解它的大小。

  其实就连g(1),人们已经无法理解其大小,甚至理解不了g(1)的大小的大小的大小的......大小。

 

  

 

  Scheme来表示高德纳箭头

 

  因为高德纳箭头的高阶箭头有个很简单的往低阶箭头上展开的关系,所以用Scheme很容易表示,毕竟Lisp是很容易表示递归的。

  

(define (knuth n m cnt_arrow)
 (define (knuth-list lst cnt_arrow)
  (cond
   ((null? (cdr lst)) (car lst))
   ((= 1 cnt_arrow) (knuth-list (cons (expt (cadr lst) (car lst)) (cddr lst)) 1))
   (else (knuth-list (cons (knuth-list (make-list (car lst) (cadr lst)) (- cnt_arrow 1)) (cddr lst)) cnt_arrow))
  )
 )
 (knuth-list (list m n) cnt_arrow)
)

 

  当然,上面只是表示出了其递归关系,在现有宇宙下计算不出来^_^比如之前那6个2我们肯定就算不出来,但是5个2也就是2↑↑5我们还是有希望的。

  (knuth 2 5 2)计算结果就不贴了,是一个 19729 位的数,其实等于Ackermann(4,3)+3。

 

  而之前葛立恒数虽然根本算不出来,但用Scheme表示还是很容易的。

  

(define Graham-Number
 (define (g n)
  (if (zero? n) 4
   (knuth 3 3 (g (- n 1)))
  )
 )
 (g 64)
)

 

 

  康威链式箭头

  

  Conway,著名的生命游戏的提出者,英国数学家。

  他发明的康威链式箭头是个比高德纳箭头还恐怖的东西。

  所谓链式箭头,是一串用箭头串在一起的正整数,比如

  3->5

  2->3->2

  3->4->5->6

  当然,只有一个数也算,那么值就是数本身。链长至少为1。

  另外,康威链式箭头和高德纳箭头不一样,高德纳箭头是运算符,康威链式箭头只是用来连接一个序列。

 

  康威链式箭头怎么计算呢?

  它一共有5条规则,

  (1) 如果链里面只有一个数a,那么值就是a本身

  (2) 如果链里面有两个数,a->b,那么值为ab

  (3) 如果链长超过2,链形如X->a->1,其中X是一条链,那么原链就等于X->a,也就是链长减1

  (4) 如果链长超过2,链形如X->1->(a+1),其中X是一条链,a是正整数(也就是最后一个数大于1,其实等于1也满足,只是同时满足两条规则),原链值同链X

  (5) 如果链长超过2,链形如X->(a+1)->(b+1),其中X是一条链,a、b是正整数(也就是链尾的两个数都大于1),原链值同X->(X->a->(b+1))->a

 

  以上5条规则构造出了比高德纳箭头更疯狂的东西。

  疯狂在哪里呢?之前的葛立恒数g(64)已经很大了,可是以下不等式成立

  3->3->64->2 < g(64) < 3->3->65->2

  3->3->65->2 < 3->3->3->3

  简单的4个3,秒天秒地

 

  以上递归很明显,很工整,用Scheme一样表示,链式箭头的序列就用Scheme里的list直接就可以表示了:

  

(define (conway lst)
 (define (conway_rev lst)
  (cond
   ((null? (cdr lst)) (car lst)) ;规则1
   ((null? (cddr lst)) (expt (cadr lst) (car lst))) ;规则2
   ((= 1 (car lst)) (conway_rev (cdr lst))) ;规则3
   ((= 1 (cadr lst)) (conway_rev (cddr lst))) ;规则4
   (else (conway_rev (cons (- (car lst) 1) (cons (conway_rev (cons (car lst) (cons (- (cadr lst) 1) (cddr lst)))) (cddr lst))))) ;规则5
  )
 )
 (conway_rev (reverse lst))
)

 

  于是,刚才秒天秒地的3->3->3->3就是(conway '(3 3 3 3))

  

 

转载于:https://www.cnblogs.com/Colin-Cai/p/9683271.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
图像识别技术在病虫害检测中的应用是一个快速发展的领域,它结合了计算机视觉和机器学习算法来自动识别和分类植物上的病虫害。以下是这一技术的一些关键步骤和组成部分: 1. **数据收集**:首先需要收集大量的植物图像数据,这些数据包括健康植物的图像以及受不同病虫害影响的植物图像。 2. **图像预处理**:对收集到的图像进行处理,以提高后续分析的准确性。这可能包括调整亮度、对比度、去噪、裁剪、缩放等。 3. **特征提取**:从图像中提取有助于识别病虫害的特征。这些特征可能包括颜色、纹理、形状、边缘等。 4. **模型训练**:使用机器学习算法(如支持向量机、随机森林、卷积神经网络等)来训练模型。训练过程中,算法会学习如何根据提取的特征来识别不同的病虫害。 5. **模型验证和测试**:在独立的测试集上验证模型的性能,以确保其准确性和泛化能力。 6. **部署和应用**:将训练好的模型部署到实际的病虫害检测系统中,可以是移动应用、网页服务或集成到智能农业设备中。 7. **实时监测**:在实际应用中,系统可以实时接收植物图像,并快速给出病虫害的检测结果。 8. **持续学习**:随着时间的推移,系统可以不断学习新的病虫害样本,以提高其识别能力。 9. **用户界面**:为了方便用户使用,通常会有一个用户友好的界面,显示检测结果,并提供进一步的指导或建议。 这项技术的优势在于它可以快速、准确地识别出病虫害,甚至在早期阶段就能发现问题,从而及时采取措施。此外,它还可以减少对化学农药的依赖,支持可持续农业发展。随着技术的不断进步,图像识别在病虫害检测中的应用将越来越广泛。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值