Hopfield神经网络和TSP问题
一、TSP问题
旅行商问题,又叫货郎担问题。它是指如下问题:在完全图中寻找一条最短的哈密尔顿回路。
哈密尔顿回路问题:给定一个图,判断图中是否存在哈密尔顿回路。
哈密尔顿回路:寻找一条回路,经过图中所有点且每个点只经过一次。
欧拉回路:寻找一条回路,经过图中所有的边且每条边只经过一次。
判断一个图是否存在欧拉回路只需要判断每个顶点的出度和入度是否相同。
判断一个图是否存在一条哈密尔顿回路是一个NP问题。
旅行商问题和哈密尔顿回路问题最大的区别在于:旅行商研究的图是完全图,必然存在一条哈密尔顿回路。哈密尔顿回路问题的研究对象是一般的图。
由此,可以构造一个难上加难的问题:在无向图中寻找最短的哈密尔顿回路,这必然也是NP问题。
二、Hopfield神经网络
神经网络系列分成好多种:
- 前馈神经网络
- 反馈神经网络
- 不分前后的神经网络
Hopfield神经网络就是不分前后的神经网络,它的每个神经元之间都是全连接的,构成一个完全图,N个神经元就有$N \times N$个权值。
Hopfield神经网络根据激活函数不同可以划分为:离散型Hopfield神经网络(Discrete Hopfield Neural Network,DHNN)和连续型Hopfield神经网络(Continuous Hopfield Neural Network)。离散型Hopfield神经网络的激活函数是离散的,连续型Hopfield神经网络的激活函数是连续的。
离散型Hopfield神经网络主要用于死记硬背,说好听点就是用于联想记忆、存储知识。
连续型Hopfield神经网络主要用于优化,类似模拟淬火、遗传算法、蚁群算法。1985年Hopfield将连续型Hopfield神经网络用于求解大规模旅行商问题并取得不错成果,开创了神经网络在最优化领域的应用先河。连续型Hopfield神经网络其实就是不断地迭代,使得整个系统的能量逐渐减少。这种方法会陷入局部最优。
三、对Hopfield神经网络的理解
任何优化问题都需要找到明确的目标。神经网络方法把分类、聚类、回归等一切问题都转化成了最优化问题,神经网络的唯一作用就是求解最优化问题。因为神经网络都是定义一个loss,然后更改权值去使得loss最小。
起初,人们不把“损失”叫“损失”,而是称之为“能量”。能量和损失其实完全是一回事。Hopfield神经网络最突出的特点就是它跟电路硬件关系密切。Hopfield提出的主要思想是我们可以使用硬件电路来模拟神经网络的优化过程,这个过程速度极快。因为这个过程使用的电路不是数字电路而是模拟电路。这是Hopfield神经网络最大的贡献。而用软件实现Hopfield神经网络时,可谓毫无亮点,简直就是阉割版全连接神经网络。
四、大规模TSP问题的求解
虽然用Hopfield网络求解大规模TSP问题十分困难,然而处理N=10或20个城市则比较容易。一个自然的想法是把N>100的TSP问题先用分类算法分成若干子类,每一子类10~20个城市,然后把每一个子类看成类似于城市的一个区,再用神经网络求每一区的TSP。而各城区之间的连接也将是一个较小的规模的TSP。用这种分类和分级的方法可使神经网络有效地用于大规模TSP问题的求解。实践证明这一方法也适用于其他的大规模组合优化问题。
参考资料
也不知道这群人谁抄谁,这么垃圾的模型研究的人这么多
金灿. 基于离散Hopfield神经网络的数字识别实现[J]. 计算机时代, 2012(3):1-3.
王韬. 基于连续型Hopfield神经网络的噪声字符识别[J]. 系统仿真学报, 2003, 15(9):1288-1290.
江铁, 曹龙汉, 孙奥. 基于离散Hopfield神经网络的噪声数字识别[J]. 计算机科学, 2012, 39(b06):526-528.
傅德胜, 张学勇. 基于Hopfield神经网络噪声数字的识别[J]. 通信技术, 2010, 43(1):126-128.
车洁, 窦新宇, 彭国志,等. 基于离散Hopfield神经网络的车牌字符识别[J]. 城市建设理论研究:电子版, 2013(14).
钟杰, 房智. Hopfield神经网络在噪声字符识别中的应用[J]. 内江科技, 2009, 30(1):76-76.
刘艳红. 基于离散型Hopfield神经网络的车牌汉字识别方法研究[D]. 东北师范大学, 2013.
王小峰. 基于离散Hopfield神经网络的数字识别研究[J]. 忻州师范学院学报, 2012, 28(2):21-24.
朱献文. 基于遗传算法和Hopfield神经网络的字符识别方法[J]. 电子设计工程, 2011, 19(18):57-59.
https://zh.wikipedia.org/wiki/Hopfield%E7%A5%9E%E7%BB%8F%E7%BD%91%E7%BB%9C
https://blog.csdn.net/weixin_39707121/article/details/79042714
https://blog.csdn.net/weixin_39707121/article/details/79041536
https://blog.csdn.net/app_12062011/article/details/54290484
Hopfield神经网络和TSP问题的更多相关文章
- Hopfield神经网络
神经网络分类 多层神经网络:模式识别 相互连接型网络:通过联想记忆去除数据中的噪声 1982年提出的Hopfield神经网络是最典型的相互连结型网络. 联想记忆 当输入模式为某种状态时,输出端要给出与 ...
- Hopfield 神经网络及稳态性的证明
根据其提出者,John Joseph Hopfield 命名.Hopfield 在 1982 年提出的划时代的:Neural networks and physical systems with em ...
- 五.反馈(Hopfield)神经网络
前馈网络一般指前馈神经网络或前馈型神经网络.它是一种最简单的神经网络,各神经元分层排列.每个神经元只与前一层的神经元相连.接收前一层的输出,并输出给下一层,数据正想流动,输出仅由当前的输入和网络权值决 ...
- Hopfield神经网络实现污染字体的识别
这个网络的内部使用的是hebb学习规则 贴上两段代码: package geym.nn.hopfiled; import java.util.Arrays; import org.neuroph.co ...
- TSP旅行商问题的Hopfield求解过程
连续型Hopfield在matlab中没有直接的工具箱,所以我们们根据Hopfield给出的连续行算法自行编写程序.本文中,以求解旅行商 问题来建立Hopfield网络,并得到解,但是该解不一定是 ...
- 神经网络hopfield的学习
Hopfield神经网络使用说明. 该神经网络有两个特点: 1,输出值只有0,1 2,Hopfield没有输入(input) 这里解释一下第二个特点,什么叫没有输入?因为在使用Hopfield网络的时 ...
- Hopfield模型
1982年,J.Hopfield提出了可用作联想存储器的互连网络,这个网络称为Hopfield网络模型,也称Hopfield模型.Hopfield神经网络模型是一种循环神经网络,从输出到输入有反馈连接 ...
- Hopfield 网络(上)
讲的什么 这部分主要对 Hopfield 网络作一大概的介绍.写了其模型结构.能量函数和网络的动作方式.主要参考了网上搜到的一些相关 PPT. 概述 早在 1982 年,Hopfield 发表的文 ...
- 目前所有的ANN神经网络算法大全
http://blog.sina.com.cn/s/blog_98238f850102w7ik.html 目前所有的ANN神经网络算法大全 (2016-01-20 10:34:17) 转载▼ 标签: ...
随机推荐
- 使用Vue.js实现列表选中效果
实际项目中,我们会遇到很多类似的需求,一个列表,需要点击其中一条高亮显示.熟悉JQuery的同学说这个太简单了.可以给这个选中的element设置一个active的class.配合Css样式,让ac ...
- 设置让php能够以root权限来执行exec() 或者 shell_exec()
一.查看启动你php的进程的用户是谁. 可以通过在命令行执行:ps -ef | grep php来看.或者在php中执行 echo exec('whoami') 来查看.centos下默认会是nobo ...
- RAMPS1.4 3d打印控制板接线与测试4
如果之前的操作都顺利,现在就可以插上USB线,打开printrun上位机软件了.mega2560刚刚接通电源时,RAMPS板子上的LED1(绿色)会闪几下.这说明mega2560板子中的固件正在启动. ...
- Redis集群搭建最佳实践
要搭建Redis集群.首先得考虑以下的几个问题; Redis集群搭建的目的是什么?或者说为什么要搭建Redis集群? Redis集群搭建的目的事实上也就是集群搭建的目的.全部的集群主要都是为了解决一个 ...
- spring 读取配置文件,将值注入到静态字段
resources/config/config-dev.properties es.ip.node=xxxxxxxcluster.name=xxxxxxxclient.transport.sniff= ...
- 【python】安装py3-bencode 及小例程
C:\Users\horn1\Desktop\python\35-bencode-ng>pip install py3-bencodeCollecting py3-bencode Downloa ...
- Code optimization and organization in Javascript / jQuery
This article is a combined effort of Innofied Javascript developers Puja Deora and Subhajit Ghosh) W ...
- Android 演示 Android ListView 和 github XListView(3-3)
本文内容 环境 项目结构 演示 1:简单 XListView 演示 2:XListView + Fragment 演示 3:XListView + ViewPager + Fragment 本文三个演 ...
- Spring4新特性——集成Bean Validation 1.1(JSR-349)到SpringMVC
在之前的<跟我学SpringMVC>中的<第七章 注解式控制器的数据验证.类型转换及格式化>中已经介绍过SpringMVC集成Bean Validation 1.0(JSR-3 ...
- Skyline开发3-没有注册类0x80040154
原生64位程序 我们现在使用的操作系统多为64位系统,其中大部分用的还是32位的软件. 64位软件优点是:可以进行更大范围的整数运算:可以支持更大的内存:除做科学运算的时候取得更好的性能外,不能提高其 ...