#include "stdio.h"const int max=9999;
const int ax=50;int isbest(int i,int bestpath[],int p)//检测改节点是否已经加入bestpath[]中
{  for(int k=1;k<=p;k++){if(i==bestpath[k])break;}if(k!=p+1)//新测试节点在a[]中return 1;elsereturn 0;}void main()
{  int min=max;int minf=max;int num;//城市数量int mat[ax][ax];//城市间距离int bestpath[ax];//最佳路径int f=0,g=0,h=0;int ff[ax];//依次求每个城市的f值int gg[ax];//城市的g值printf("城市个数为:");scanf("%d",&num);printf("城市间的距离为:\n");//输入各城市间距离的矩阵for(int i=0;i<num;i++)for(int j=0;j<num;j++)scanf("%d",&mat[i][j]);bestpath[0]=0;//起点为0,即城市Afor(int p=0;p<num-1;p++)//依次求每个最优节点,每次循环得到一个新的最优城市放到bestpath[]中{for(int kk=0;kk<num;kk++)ff[kk]=max;//便于后面求最小值for(i=1;i<num;i++)//起点A不算,从非起点开始找寻最优城市{if(isbest(i,bestpath,p))//该点已经在bestpath[]中的话,忽略continue;else//计算该点的g值gg[i]=g+mat[bestpath[p]][i];//i点的g值for(int m=0;m<num;m++)//开始计算h值{if(isbest(m,bestpath,p))//该点已经在bestpath[]中的话,忽略continue;for(int t=m+1;t<num;t++){if(isbest(t,bestpath,p))continue;if(m!=0||t!=i||p==num-2)//不是最后一个点的话,不算A点到这个点长度if(mat[m][t]<min)min=mat[m][t];}}h=min*(num-p-1);//h值ff[i]=gg[i]+h;//第i个节点的f值min=max;//重新赋值最大,以便下次循环}for(i=0;i<num;i++)//找寻最优点,即f值最小者{if(ff[i]<minf){minf=ff[i];bestpath[p+1]=i;}}minf=max;//重新赋值最大,以便下次循环  g=g+mat[bestpath[p]][bestpath[p+1]];//更新g值}printf("最优路径为:");
for(i=0;i<num;i++)printf("%c ",bestpath[i]+65);
printf("A\n");printf("总路程为:");
int sum=0;
for(i=0;i<num-1;i++)sum=sum+mat[bestpath[i]][bestpath[i+1]];
sum=sum+mat[bestpath[num-1]][0];//总路程最后一个城市要回到A,所以加上其距离
printf("%d\n",sum);
}

【算法】旅行商A*算法相关推荐

  1. 蚁群算法--旅行商(TSP)问题详解

    蚁群算法--旅行商(TSP)问题详解 蚁群算法 问题与分析 结果显示与分析 蚁群算法 蚁群算法(ant colony optimization)最早是由Marco Dorigo等人在1991年提出,他 ...

  2. a算法TSP旅行商java_A*算法实现旅行商问题(人工智能报告,付代码)

    一. 问题描述 "旅行商问题"常被称为"旅行推销员问题",是指一名推销员要拜访多个地点时,如何找到在拜访每个地点一次后再回到起点的最短路径.规则虽然简单,但在地 ...

  3. a算法TSP旅行商java_A*算法解决旅行商问题

    [实例简介] 估价函数为f(n)=h(n)+g(n).其中h(n)表示已经走过的实际路程.g(n)表示未走过路程到终点(起点)最短的距离. [实例截图] [核心代码] jtulyo └── 源码 ├─ ...

  4. matlab算法大全 pdf_遗传模拟退火算法求解旅行商(TSP)问题

    hello大家好,很高兴又和大家见面了.在之前的遗传算法(GA)求解旅行商问题(TSP)MATLAB代码讲解和模拟退火(SA)算法求解旅行商 (TSP)问题MATLAB代码讲解这两篇推文中,分别讲解了 ...

  5. 模拟退火(SA, Simulated Annealing)算法解决旅行商TSP问题

    01 什么是旅行商问题(TSP)? TSP问题(Traveling Salesman Problem,旅行商问题),由威廉哈密顿爵士和英国数学家克克曼T.P.Kirkman于19世纪初提出.问题描述如 ...

  6. 鲸鱼优化算法WOA求解旅行商TSP优化问题(2022.6.2)

    鲸鱼优化算法WOA求解旅行商TSP优化问题(2022.6.2) 引言 1.鲸鱼优化算法WOA 1.1 WOA算法原理介绍 1.1.1 包围猎物 1.1.2 气泡网式攻击猎物(开发阶段) 1.1.3 寻 ...

  7. 单目标应用:足球联赛竞争算法(Soccer league competition algorithm,SLC)求解多仓库多旅行商问题MD-MTSP(可更改旅行商个数及起点)

    一.足球联赛竞争算法 足球联赛竞争算法(Soccer league competition algorithm,SLC)由Naser Moosavian和Babak Kasaee Roodsari于2 ...

  8. 单目标应用:世界杯优化算法(World Cup Optimization,WCO)求解单仓库多旅行商问题SD-MTSP(可更改旅行商个数及起点)

    一.世界杯优化算法 世界杯优化算法(World Cup Optimization,WCO)由Navid Razmjooy等人于2016年提出,该算法模拟了国际足联世界杯比赛,思路新颖,收敛速度快,全局 ...

  9. matlab最短路径问题(旅行商模型)—模拟退火算法、禁忌搜索算法解决中国省会间最短路径问题

    matlab最短路径问题(模拟退火算法.禁忌搜索算法) 模拟退火算法 禁忌搜索算法 模拟退火算法 %%% 模拟退火算法源程序 % 此题以中国31省会城市的最短旅行路径为例 % clear;clc; ...

最新文章

  1. C++中MessageBox的常见用法
  2. 丁鹏:多角度回顾因果推断的模型方法
  3. [svc]ext4文件删除访问原理
  4. JSP传递值给servlet的方式
  5. 每天一道LeetCode-----找到给定序列中所有和为某个值的集合或集合个数,序列中可以有/无重复项,集合元素顺序不同算不同集合等
  6. ios NSAttributedString 具体解释
  7. 使用table ENLFDIR 快速找出function module和function group的对应关系
  8. 【英语】舞动奇迹--荡漾我心
  9. DIV+CSS如何让文字垂直居中
  10. [已送完]赠送Google Wave 邀请码
  11. matlab脑肿瘤识别与分割程序_车牌识别算法
  12. 详细说明自学Python需要具备什么?
  13. Unity2020打包ARCore项目apk
  14. ecshop 配置服务器文件夹,ECSHOP3.6安装教程【ECSHOP3.6安装教程步骤】ECSHOP3.6安装教程详细讲解-ECSHOP教程网...
  15. 解决表格刷新时抖动闪烁问题
  16. C++一本通题库1012
  17. window系统区别
  18. 证券公司信息化3-经纪业务收入大概是个什么水平?一个普通投资者的开户过程是怎样的?
  19. 智能安防监控系统的发展与应用
  20. 3.13课·········冒泡排序

热门文章

  1. 计算机英语实用教程课后答案,计算机英语实用教程课后题参考答案.pdf
  2. fedora利用vmlinuz和initrd制作linux启动u盘,fedora 14 livecd从U盘启动安装方法
  3. Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day16】—— Spring框架2
  4. ppt扇形图怎么显示数据_ppt如何制作扇形图 ppt如何画扇形统计图-泡泡糖办公
  5. hector-slam之杉川雷达配置过程
  6. 【Qt】弹出子窗口时禁用主窗口
  7. poj 2228 Naptime(DP的后效性处理)
  8. 数据版“吐槽大会”: 国产综艺节目年终盘点
  9. 方舟服务器 mod文件夹,方舟mod文件夹应该放在哪 | 手游网游页游攻略大全
  10. 经典:linux shell 正则表达式(BREs,EREs,PREs)差异比较