之前以自己一渣渣之身参加了一个比赛,果然连门槛都没摸到,虽然略有沮丧不过还是得到了很多思考哒,这里记一下。

因为之前没有接触过算法,感觉这个可能也只是能够解决问题,效率极低,先记下来以后有兴致慢慢优化好了。

首先,说明本次问题:

本次问题是,构建一个有向哈密顿图,给出任意两个点,找到他们之间存在的哈密顿通路。哈密顿通路需要保证所有点被遍历到,同时不能有重复点。

(由于比较习惯java,所以偷懒直接写java版的吧。还得好好学习c的说!)

这里我考虑用递归的方式,求出存在的哈密顿通路。

step1:构建图的方式

HashMap<Integer,ArrayList<Integer>> myMap = new HashMap<Integer, ArrayList<Integer>>();//其中,key值为点的ID值,value为与该点相连接的点的ID值

step2:找到哈密顿通路

int size = myMap.size();    //点的个数
void findHamiltonianPath(int id,Integer[] edge){for(int pointID: myMap.get(id)){if(edge.length!=size-1 && pointID ==destinationID) continue;//提前到达目标点if(ifHavePassed(edge,pointID)) continue;//曾经经过此点,ifHavePassed函数用于检查路径中是否已含有该点Integer[] newEdge = new Integer[edge.length+1];System.arraycopy(edge,0,newEdge,0,edge.length);newEdge[edge.length] = pointID;//得到新的路径数组  if(pointID == destinationID){System.out.println(Arrays.asList(newEdge));continue;}findHamiltonianPath(pointID, newEdge);}}

感觉原理还是蛮简单的,但是应该还能优化很多。
希望明年能摸到比赛的门槛~

算法学习---关于哈密顿图的哈密顿通路求解问题相关推荐

  1. 算法学习笔记:网络流#4——ISAP 求解最大流

    算法学习笔记:网络流#4--ISAP 求解最大流 1. 前言 2. 模板 2.1 详解 2.2 正确性证明 2.3 代码 3. 算法对比 3.1 一般数据下的对比 3.2 特殊数据下的对比 4. 总结 ...

  2. 哈密顿图 哈密顿回路 哈密顿通路(Hamilton)

    本文链接:http://www.cnblogs.com/Ash-ly/p/5452580.html 概念: 哈密顿图:图G的一个回路,若它通过图的每一个节点一次,且仅一次,就是哈密顿回路.存在哈密顿回 ...

  3. 最短哈密顿路matlab,SHP-VI: 一种基于最短哈密顿通路的POMDP值迭代算法

    摘要:基于试探(trial-based)的值迭代算法是求解部分可观察Markov决策过程(partially observable Markov decision process,POMDP)模型的一 ...

  4. 一次递减代码matlab,DEA算法学习系列之三:一次性求解CCR模型所有DMU参数——效率、规模效益、有效性特征、调整值的matlab代码...

    <DEA算法学习系列之三:一次性求解CCR模型所有DMU参数--效率.规模效益.有效性特征.调整值的matlab代码>由会员分享,可在线阅读,更多相关<DEA算法学习系列之三:一次性 ...

  5. 数据结构与算法学习④(哈夫曼树 图 分治回溯和递归)

    数据结构与算法学习④(哈夫曼树 图 回溯和递归 数据结构与算法学习④ 1.哈夫曼树 1.1.相关概念 1.2.哈夫曼树的构建 1.3.哈夫曼编码 1.4.面试题 2.图 2.1.图的相关概念 2.2. ...

  6. 好久没有看到这么有建设性德文章,由衷地赞叹《知其所以然地学习(以算法学习为例)》-By 刘未鹏(pongba)

    知其所以然地学习(以算法学习为例) By 刘未鹏(pongba) C++的罗浮宫(http://blog.csdn.net/pongba) Updated(2008-7-24):更新见正文部分,有标注 ...

  7. 原创 | 初学者友好!最全算法学习资源汇总(附链接)

    在计算机发展飞速的今天,也许有人会问,"今天计算机这么快,算法还重要吗?"其实永远不会有太快的计算机,因为我们总会想出新的应用.虽然在摩尔定律的作用下,计算机的计算能力每年都在飞快 ...

  8. php算法学习,php算法学习之动态规划

    动态规划程序设计是对解最优化问题的一种途径.一种方法,最终问题的最优解可以通过前面子问题的最优解推导出来. 对于动态规划这个算法,自己学习的还不是很透彻,简单的总结自己学习的感受是: 动态规划思想中融 ...

  9. matlab中x从0到5不含0,关于MATLAB的数学建模算法学习笔记

    关于MATLAB的数学建模算法学习笔记 目录 线性规划中应用: (3) 非线性规划: (3) 指派问题;投资问题:(0-1问题) (3) 1)应用fmincon命令语句 (3) 2)应用指令函数:bi ...

最新文章

  1. Python基础之标准库datetime 时间与日期的使用
  2. reverseString
  3. 一维行滤波提取俯视图下的车道线特征
  4. python 最小二乘回归 高斯核_最经典的回归模型参数估计算法—最小二乘
  5. Spring IOC容器分析(1) -- BeanFactory
  6. linux应用程序调试方法,Linux应用程序使用写文件调试程序的方法
  7. JS中获取元素的第二种方法
  8. c语言16进制按10进制输出,C语言编程:写一个函数,输入一个16进制数,输出相应的10进制数。...
  9. 避开使用XAML的性能陷阱
  10. 4、Spring配置中的classpath:与classpath*:的区别
  11. [No0000D6]端口-进程查询.bat
  12. 阿里披露 AI 完整布局,飞天 AI 平台首次亮相!
  13. [转]Linux下用gcc/g++生成静态库和动态库(Z)
  14. axure element ui素材_web元件库 ElementUI元件库+后台模板页面+官网组件 pc元件库(兼容Axure9)...
  15. 倡导非盗版,自己常用的一些软件集锦
  16. 本地如何使用oracle数据库,使用sqlplus连接oracle本地数据库的方式
  17. 低版本IE对于JSON数据的处理
  18. 幼儿-综合素质【8】
  19. mysql 命令行操作
  20. 腾讯云服务器配置jre、jdk、tomcat

热门文章

  1. java 秒转换日期_Java 将日期或秒数转换为日时分秒
  2. 计算机毕业设计Java智能快递分拣系统(源码+系统+mysql数据库+lw文档)
  3. 如何将一个项目在自己的服务器上跑起来
  4. 今天,小灰35岁了!
  5. linux高级编程基础系列:线程间通信
  6. oh my zsh 安装 zsh-completions
  7. 意料之外也是情理之中,我的自由职业之旅
  8. keyshot渲染玻璃打光_教你怎样用KeyShot渲染玻璃杯里的液体
  9. 网络系统集成课程设计
  10. html5css字体下划线,如何利用css样式做出文字的下划线?