Day4 Hailstone

  • 希尔顿序列(Hailstone Sequence)
  • Collatz 猜想
  • 强悍的27

算法目录

希尔顿序列(Hailstone Sequence)

希尔顿序列(Hailstone Sequence)问题(即考拉兹猜想,又称奇偶归一猜想,冰雹猜想)作为一个著名的数学问题,其正确与否至今都未能得到证明。即:对任一正整数 n,若为偶数则除以 2,若为奇数则乘 3 再加 1,最后 n 总会变为 1。其表达式如下所示:
举个例子

问题的特殊之处在于:尽管很容易将这个问题讲清楚,但直到今天仍然不能保证这个问题的算法对所有可能的输入都有效——即至今没有人证明对所有的正整数该过程都终止。

import numpy as np
import matplotlib.pyplot as pltdef hailstone(n):length = 1while(1<n):if n%2 == 0:n = n/2else:n = n*3 + 1length += 1return lengthx = [n for n in range(10000)]
y = [hailstone(h) for h in x]plt.scatter(x,y)
plt.xticks(np.arange(min(x),max(x)+1,1000))
plt.xlabel('n')
plt.ylabel('hailstone(n)')
plt.show()

我们可以看出来,因为最后的图形貌似冰雹,所以被称为Hailstone Sequence
但是我们一直有一个问题,是否存在一些数,可以使得while循环一直执行下去,也就是说这个函数到底满不满足有穷性?意思是对于任意的n,while循环都会执行有限次而退出吗?
可惜至今学术界都无法证明对于任意的n,一定满足:hailstone(n)<

算法的主要特点有时并不容易证明。例如,人们通常认为算法的有穷性是最容易判断的,其实不然。由于 无法证明上述程序的 “有穷性”,故 不能称该程序是一个算法。可见证明算法有穷性的困难。

Collatz 猜想

有一个很有意思的问题,我们这样实验:

def hailstone(n):length = 1seq = []while(1 < n):if n % 2 == 0:n = n//2seq.append(n)else:n = n * 3 + 1seq.append(n)length += 1return length,seq
print(hailstone(7))
print(hailstone(17))
print(hailstone(103))

打印结果如下,数字7,17,103的 Hailstone 序列长度分别为 17, 13, 88,最惊奇的是:每个这
种序列的最后三个数一定是4,2,1
感兴趣的可一直向右滑动,查看序列的结尾是不是4,2,1这个周期!
并且已经得出:无论使用什么起始值,每个hailstone 序列最终都将停留在4、2、1个周期上。
计算机甚至已经检查了所有起始值(最大到5 × 260)(一个 19 位数字),并发现最终出现4、2、1个周期。
但是很遗憾:依然没有科学家能够证明所有序列都是这种情况。
这个开放问题在数学家 Lothar Collatz 于 1937 年首次提出该问题之后被称为 Collatz猜想。
令人惊讶的是,即使是最好的数学家都无法回答,如此简单的形成序列的公式也会引发一个问题。

强悍的27

冰雹的最大魅力在于不可预知性。英国剑桥大学教授John Conway找到了一个自然数27。虽然27是一个貌不惊人的自然数,但是如果按照上述方法进行运算,则它的上浮下沉异常剧烈:首先,27要经过77步骤的变换到达顶峰值9232,然后又经过34步骤到达谷底值1。全部的变换过程(称作“雹程”)需要111步,其顶峰值9232,达到了原有数字27的342倍多,如果以瀑布般的直线下落(2的N次方)来比较,则具有同样雹程的数字N要达到2的111次方。其对比何其惊人!
但是在1到100的范围内,像27这样的剧烈波动是没有的(54等27的2的次方倍数的数除外)

27的归一步数要经过多次剧烈波动的奇偶变换,其路径呈不光滑锯齿

每日一句
Winners do what losers don’t want to do.(胜利者做失败者不愿意做的事!)

Day4 Hailstone相关推荐

  1. Java面试题总结-Day4

    <?xml version="1.0" encoding="utf-8"?> Java面试题总结-Day4 Java面试题总结-Day4 Table ...

  2. Alpha冲刺Day4

    冲刺Day4 一.站立式会议 本来还想今天下午好好弄弄安卓开发,结果计划赶不上变化.(不存在的) 完成备忘录设计,个人界面设计 二.实际项目进展 搞了404(安卓和ssm的连接),好像还是不太行. 备 ...

  3. Python基础day4 函数对象、生成器 、装饰器、迭代器、闭包函数

    一.函数对象 正确理解 Python函数,能够帮助我们更好地理解 Python 装饰器.匿名函数(lambda).函数式编程等高阶技术. 函数(Function)作为程序语言中不可或缺的一部分,太稀松 ...

  4. r语言中矩阵QR分解_从零开始学R语言Day4|向量、矩阵和数组

    从零开始学R语言Day4|向量.矩阵和数组 1.1向量 1.1.1向量 在Day2中我们提及过用和c()函数来构建向量,具体实例如下. 我们还可以采用vector("类型",长度) ...

  5. HailStone序列

    目前HailStone序列还未被证明是否有穷,所以它未必是一个算法. * HailStone序列* n=1时,返回1:* n>1时且为偶数时,{n} ∪ {n/2}* n>1时且为奇数时, ...

  6. Java基础day4

    Java基础 java基础day4 1. idea安装与使用 2. 数组 2.1定义 2.2 数组定义格式 2.3 数组动态初始化 2.4 数组元素访问 2.5 内存分配 2.6 静态初始化 2.7 ...

  7. Collatz猜想 (Hailstone)(3n + 1猜想)

    Collatz猜想 (3n+1猜想) 这是是一个著名的数学问题,至今没有证明其正确性,也没证明其是错误的,即任何一个正整数N,如果是偶数的话就除以2,如果是奇数的话就乘以3再加上1,最后这个数都会变为 ...

  8. 「JOISC 2020 Day4」治疗计划(线段树+dijkstra最短路)

    「JOISC 2020 Day4」治疗计划 description solution 设dpi:1−Ridp_i:1-R_idpi​:1−Ri​ 都能被救治成功的最小花费 两个治疗方案[Li,Ri], ...

  9. java仿聊天室项目总结_Java团队课程设计-socket聊天室(Day4总结篇)

    Java团队课程设计-socket聊天室(Day4总结篇) 团队名称: ChatRoom 项目git地址: git提交记录(仅截取部分): 面向对象设计包图.类图 包图 UML类图 总结: 首先总结一 ...

最新文章

  1. git 强制推送_Git 常用命令清单,掌握这些,轻松驾驭版本管理
  2. dtree.js树的使用
  3. 美国滴滴打人上线,约架神器如何玩转暴力社区?
  4. Python 保存数据到 Exel
  5. Honest Coach CodeForces - 1360B(简单贪心)
  6. Java加密与解密的艺术~数字证书~模型分析
  7. 解决Vue项目报错:Expected indentation of 2 spaces but found 4. eslint(indent) [8, 1]的方法
  8. 菜鸟请教高手web开发内存问题?
  9. JavaWeb07-HTML篇笔记(三)
  10. (转)惊魂24小时!真实还原光大“乌龙指”事件,比小说还离奇
  11. 高等计算机教材系列·多媒体技术教程,高等学校计算机规划教材:多媒体技术应用教程...
  12. 勤哲excel服务器自动计算工资,勤哲Excel服务器软件实现财务自动化管理系统
  13. IE可以实现的浏览器js下载文件的方法
  14. 苹果(APPLE)开发人员账号说明及注冊流程(99美元公司版/个人版及299美元企业版)...
  15. 检索报告计算机类,计算机检索报告.docx
  16. JVM学习之---了解JIT
  17. 基于LBP纹理特征计算GLCM的纹理特征统计量+SVM/RF识别纹理图片
  18. CSS 预处理器语言Less
  19. 虚拟摄像头Softcam v1.52 汉化注册版
  20. Unity Android接入Adtming广告聚合平台

热门文章

  1. matlab edittext 回车,安卓中的虚拟键盘实现,KeyEvent的事件分发、处理机制。EditText是如何将KeyEvent事件转为字符输入的?...
  2. Python word_cloud 样例 标签云系列(三)
  3. 贾扬清:如何看待人工智能方向的重要问题?
  4. 【转】PCIE 通道x4/8/16的定义
  5. Linux 系统设置 : enable 命令详解
  6. 3dsmax Node Event System
  7. 【ElasticSearch】ELK statck
  8. CUP 三级缓存L1 L2 L3 cahe详解
  9. 戴尔dell PowerEdge R440安装redhat操作系统
  10. 注册表的解释和一些简单的修改