首页
技术博客
PHP教程
数据库技术
前端开发
HTML5
Nginx
php论坛
新用户注册
|
会员登录
PHP教程
技术博客
编程问答
PNG素材
编程语言
前端技术
Android
PHP教程
HTML5教程
数据库
Linux技术
Nginx技术
PHP安全
WebSerer
职场攻略
JavaScript
开放平台
业界资讯
大话程序猿
登录
极速注册
取消
热门标签 | HotTags
apache
touch
负载均衡
debian
4层
server
dns
devops
zsh
shell
sftp
linux
ubuntu
service
unix
容器
centos7
crontab
colors
awk
stdout
nginx
服务器
k8s
syslog
grafana
ssh
cron
路由器
运维
jenkins
fabric
curl
docker
tomcat
grep
压力测试
7层
tengine
log4j
kubectl
sudo
交换机
vagrant
port
centos
当前位置:
开发笔记
>
运维
> 正文
可视化讲解:什么是汉诺塔问题?
作者:梦里的天真575 | 来源:互联网 | 2023-08-20 12:55
前言概念介绍1.汉诺塔问题起源汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从上往下从小到大顺序摞着64片黄金圆盘。上
前言
概念介绍
1. 汉诺塔问题起源
汉诺塔来源于印度传说的一个故事,上帝创造世界时作了三根金刚石柱子,在一根柱子上从上往下从小到大顺序摞着64片黄金圆盘。
上帝命令婆罗门把圆盘从下面开始按大小顺序重新摆放在另一根柱子上。并且规定,在小圆盘上不能放大圆盘,在三根柱子之间一回只能移动一个圆盘,只能移动在最顶端的圆盘。
有预言说,这件事完成时宇宙会在一瞬间闪电式毁灭。也有人相信婆罗门至今仍在一刻不停地搬动着圆盘。
当然这个传说并不可信,如今汉诺塔更多的是作为一个玩具存在
2.什么是汉诺塔问题?
一句话总结就是:将下图中A柱子上的圆盘依靠一定的规则(该规则在“汉诺塔问题起源”部分已说明)原封不动的移动到C柱子上
原理讲解
下面我们以A柱子上圆盘数N=4为例讲解汉诺塔实现的原理
在初始状态下A,B,C三根柱子上圆盘如下图所示
第一步,我们将A柱最上面3个盘子当作“一个整体”借助(怎么借助呢?)C柱子移动到B柱子上,此时效果如下图所示
第二步,我们将A柱最下面一个盘子移动到
C柱子上,此时效果如下图所示
第三步,我们将B柱3个盘子作为“一个整体”借助(同理,怎么借助呢?)A柱子移动到C柱子上,此时效果如下图所示
经过上面3步操作之后,4层汉诺塔问题就减少为3层(第一步被当作一个整体的3个盘子)汉诺塔问题了。下面我们就来处理3层汉诺塔问题
第四步,我们将A柱最上面2个盘子当作“一个整体”借助C柱子移动到B柱子上,此时效果如下图所示
第五步,我们将A柱最下面一个盘子移动到
C柱子上,此时效果如下图所示
第六步,我们将B柱2个盘子作为“一个整体”借助(同理,怎么借助呢?)A柱子移动到C柱子上,此时效果如下图所示
经过上面3步操作之后,3层汉诺塔问题就减少为2层(第一步被当作一个整体的2个盘子)汉诺塔问题了。下面我们就来处理2层汉诺塔问题
2层汉诺塔的问题相比聪明的你很容易就自己搞定了。在此,我就不赘叙了。
所以,通过上面的步骤,我们很容易发现实现汉诺塔算法可以简单分为三个步骤:
把n-1个盘子由A借助C移到B;
把第n个盘子由A移到C;
把n-1个盘子由B借助A移到C;
效果展示
更多算法学习请关注我的公众号
说明
在公众号中回复“算法源码”即可获取十大经典算法源码
在公众号中回复“算法书籍”即可获取经典入门算法书籍
在公众号中回复“数据结构”即可获取数据结构相关源码
4层
算法
写下你的评论吧 !
吐个槽吧,看都看了
会员登录
|
用户注册
推荐阅读
4层
webrtc学习笔记三:webrtc架构
文章目录 ...
[详细]
蜡笔小新 2023-09-25 23:21:19
4层
A级课程 从零开始(七)ssd 24训练部分 收尾补充(IOU, NMS)
https:www.bilibili.comvideoav43996494?p61补充说明(修正前面代码存在问题):#先验框筛选defchoose_anchor_boxes(sel ...
[详细]
蜡笔小新 2023-10-12 16:13:27
4层
【机器学习】生成式对抗网络模型综述
生成式对抗网络模型综述摘要生成式对抗网络模型(GAN)是基于深度学习的一种强大的生成模型,可以应用于计算机视觉、自然语言处理、半监督学习等重要领域。生成式对抗网络 ...
[详细]
蜡笔小新 2023-12-14 17:51:18
运维
云原生边缘计算之KubeEdge简介及功能特点
本文介绍了云原生边缘计算中的KubeEdge系统,该系统是一个开源系统,用于将容器化应用程序编排功能扩展到Edge的主机。它基于Kubernetes构建,并为网络应用程序提供基础架构支持。同时,KubeEdge具有离线模式、基于Kubernetes的节点、群集、应用程序和设备管理、资源优化等特点。此外,KubeEdge还支持跨平台工作,在私有、公共和混合云中都可以运行。同时,KubeEdge还提供数据管理和数据分析管道引擎的支持。最后,本文还介绍了KubeEdge系统生成证书的方法。 ...
[详细]
蜡笔小新 2023-12-14 16:49:01
运维
大数据就业前景及人才需求
近年来,大数据成为互联网世界的新宠儿,被列入阿里巴巴、谷歌等公司的战略规划中,也在政府报告中频繁提及。据《大数据人才报告》显示,目前全国大数据人才仅46万,未来3-5年将出现高达150万的人才缺口。根据领英报告,数据剖析人才供应指数最低,且跳槽速度最快。中国商业结合会数据剖析专业委员会统计显示,未来中国基础性数据剖析人才缺口将高达1400万。目前BAT企业中,60%以上的招聘职位都是针对大数据人才的。 ...
[详细]
蜡笔小新 2023-12-14 16:25:20
运维
Android中高级面试必知必会,积累总结
本文介绍了Android中高级面试的必知必会内容,并总结了相关经验。文章指出,如今的Android市场对开发人员的要求更高,需要更专业的人才。同时,文章还给出了针对Android岗位的职责和要求,并提供了简历突出的建议。 ...
[详细]
蜡笔小新 2023-12-14 14:53:02
运维
CSS3选择器的使用方法详解,提高Web开发效率和精准度
本文详细介绍了CSS3新增的选择器方法,包括属性选择器的使用。通过CSS3选择器,可以提高Web开发的效率和精准度,使得查找元素更加方便和快捷。同时,本文还对属性选择器的各种用法进行了详细解释,并给出了相应的代码示例。通过学习本文,读者可以更好地掌握CSS3选择器的使用方法,提升自己的Web开发能力。 ...
[详细]
蜡笔小新 2023-12-14 14:37:52
cron
Java工具类库Hutool介绍及功能概述
本文介绍了Java工具类库Hutool,该工具包封装了对文件、流、加密解密、转码、正则、线程、XML等JDK方法的封装,并提供了各种Util工具类。同时,还介绍了Hutool的组件,包括动态代理、布隆过滤、缓存、定时任务等功能。该工具包可以简化Java代码,提高开发效率。 ...
[详细]
蜡笔小新 2023-12-14 14:29:36
service
C#生成随机数的三种方法及其问题分析
本文介绍了C#中生成随机数的三种方法,并分析了其中存在的问题。首先介绍了使用Random类生成随机数的默认方法,但在高并发情况下可能会出现重复的情况。接着通过循环生成了一系列随机数,进一步突显了这个问题。文章指出,随机数生成在任何编程语言中都是必备的功能,但Random类生成的随机数并不可靠。最后,提出了需要寻找其他可靠的随机数生成方法的建议。 ...
[详细]
蜡笔小新 2023-12-14 14:15:30
service
qt学习(六)数据库注册用户的实现方法
本文介绍了在qt学习中实现数据库注册用户的方法,包括登录按钮按下后出现注册页面、账号可用性判断、密码格式判断、邮箱格式判断等步骤。具体实现过程包括UI设计、数据库的创建和各个模块调用数据内容。 ...
[详细]
蜡笔小新 2023-12-14 13:29:32
service
2020年AI产业报告:100个岗位抢1个人,计算机视觉成最大缺口
“你永远都不知道明天和‘公司的意外’哪个先来。”疫情期间,这是我们最战战兢兢的心情。但是显然,有些人体会不了。这份行业数据,让笔者“柠檬” ...
[详细]
蜡笔小新 2023-12-14 12:23:22
service
生成对抗式网络GAN及其衍生CGAN、DCGAN、WGAN、LSGAN、BEGAN介绍
一、GAN原理介绍学习GAN的第一篇论文当然由是IanGoodfellow于2014年发表的GenerativeAdversarialNetworks(论文下载链接arxiv:[h ...
[详细]
蜡笔小新 2023-12-14 11:39:45
服务器
[译]技术公司十年经验的职场生涯回顾
本文是一位在技术公司工作十年的职场人士对自己职业生涯的总结回顾。她的职业规划与众不同,令人深思又有趣。其中涉及到的内容有机器学习、创新创业以及引用了女性主义者在TED演讲中的部分讲义。文章表达了对职业生涯的愿望和希望,认为人类有能力不断改善自己。 ...
[详细]
蜡笔小新 2023-12-14 11:31:05
路由器
无线认证设置故障排除方法及注意事项
本文介绍了解决无线认证设置故障的方法和注意事项,包括检查无线路由器工作状态、关闭手机休眠状态下的网络设置、重启路由器、更改认证类型、恢复出厂设置和手机网络设置等。通过这些方法,可以解决无线认证设置可能出现的问题,确保无线网络正常连接和上网。同时,还提供了一些注意事项,以便用户在进行无线认证设置时能够正确操作。 ...
[详细]
蜡笔小新 2023-12-14 10:32:21
4层
Visualizing and Understanding Convolutional Networks(ZFNet网络)论文阅读笔记
VisualizingandUnderstandingConvolutionalNetworksZFNet网络架构论文阅读笔记2022.4.4论文地址https:arxiv ...
[详细]
蜡笔小新 2023-10-13 12:30:06
梦里的天真575
这个家伙很懒,什么也没留下!
Tags | 热门标签
apache
touch
负载均衡
debian
4层
server
dns
devops
zsh
shell
sftp
linux
ubuntu
service
unix
容器
centos7
crontab
colors
awk
stdout
nginx
服务器
k8s
syslog
grafana
ssh
cron
路由器
运维
RankList | 热门文章
1
python中如何求阶乘
2
dto 返回 null 的处理 (必须或非必须字段控制)
3
讨论SELinux对系统安全的影响(转)
4
灰狼|猎物_多目标优化求解基于matlab非支配排序灰狼优化(NSGWO)算法求解多目标优化问题含Matlab源码 2015期
5
idea maven jdk自动跳到1.5
6
电大2014年c语言程序设计a,2014年电大C语言程序设计A期末模拟试题(14)小抄参考.doc...
7
channelread0会被调用两次_面试官:Linux是如何进行函数调用的?
8
如何制作开源依赖库上传至GitHub供他人使用
9
mysql in or exist_mysql查询语句in和exists二者的区别和性能影响
10
《步花间/诉衷情》翻译 原文赏析诗人宋贺铸
11
电流|节拍_WiFi通信模块如何实现低功耗工作
12
判断_TCP socket如何判断连接断开
13
处理器关于多核概念与区别 多核处理器工作原理及优缺点
14
软银预计通过出售阿里巴巴股份录得税前利润766亿元
15
图论概述
PHP1.CN | 中国最专业的PHP中文社区 |
DevBox开发工具箱
|
json解析格式化
|
PHP资讯
|
PHP教程
|
数据库技术
|
服务器技术
|
前端开发技术
|
PHP框架
|
开发工具
|
在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved |
京公网安备 11010802041100号
|
京ICP备19059560号-4
| PHP1.CN 第一PHP社区 版权所有