【算法】旅行商A*算法
#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*算法相关推荐
- 蚁群算法--旅行商(TSP)问题详解
蚁群算法--旅行商(TSP)问题详解 蚁群算法 问题与分析 结果显示与分析 蚁群算法 蚁群算法(ant colony optimization)最早是由Marco Dorigo等人在1991年提出,他 ...
- a算法TSP旅行商java_A*算法实现旅行商问题(人工智能报告,付代码)
一. 问题描述 "旅行商问题"常被称为"旅行推销员问题",是指一名推销员要拜访多个地点时,如何找到在拜访每个地点一次后再回到起点的最短路径.规则虽然简单,但在地 ...
- a算法TSP旅行商java_A*算法解决旅行商问题
[实例简介] 估价函数为f(n)=h(n)+g(n).其中h(n)表示已经走过的实际路程.g(n)表示未走过路程到终点(起点)最短的距离. [实例截图] [核心代码] jtulyo └── 源码 ├─ ...
- matlab算法大全 pdf_遗传模拟退火算法求解旅行商(TSP)问题
hello大家好,很高兴又和大家见面了.在之前的遗传算法(GA)求解旅行商问题(TSP)MATLAB代码讲解和模拟退火(SA)算法求解旅行商 (TSP)问题MATLAB代码讲解这两篇推文中,分别讲解了 ...
- 模拟退火(SA, Simulated Annealing)算法解决旅行商TSP问题
01 什么是旅行商问题(TSP)? TSP问题(Traveling Salesman Problem,旅行商问题),由威廉哈密顿爵士和英国数学家克克曼T.P.Kirkman于19世纪初提出.问题描述如 ...
- 鲸鱼优化算法WOA求解旅行商TSP优化问题(2022.6.2)
鲸鱼优化算法WOA求解旅行商TSP优化问题(2022.6.2) 引言 1.鲸鱼优化算法WOA 1.1 WOA算法原理介绍 1.1.1 包围猎物 1.1.2 气泡网式攻击猎物(开发阶段) 1.1.3 寻 ...
- 单目标应用:足球联赛竞争算法(Soccer league competition algorithm,SLC)求解多仓库多旅行商问题MD-MTSP(可更改旅行商个数及起点)
一.足球联赛竞争算法 足球联赛竞争算法(Soccer league competition algorithm,SLC)由Naser Moosavian和Babak Kasaee Roodsari于2 ...
- 单目标应用:世界杯优化算法(World Cup Optimization,WCO)求解单仓库多旅行商问题SD-MTSP(可更改旅行商个数及起点)
一.世界杯优化算法 世界杯优化算法(World Cup Optimization,WCO)由Navid Razmjooy等人于2016年提出,该算法模拟了国际足联世界杯比赛,思路新颖,收敛速度快,全局 ...
- matlab最短路径问题(旅行商模型)—模拟退火算法、禁忌搜索算法解决中国省会间最短路径问题
matlab最短路径问题(模拟退火算法.禁忌搜索算法) 模拟退火算法 禁忌搜索算法 模拟退火算法 %%% 模拟退火算法源程序 % 此题以中国31省会城市的最短旅行路径为例 % clear;clc; ...
最新文章
- C++中MessageBox的常见用法
- 丁鹏:多角度回顾因果推断的模型方法
- [svc]ext4文件删除访问原理
- JSP传递值给servlet的方式
- 每天一道LeetCode-----找到给定序列中所有和为某个值的集合或集合个数,序列中可以有/无重复项,集合元素顺序不同算不同集合等
- ios NSAttributedString 具体解释
- 使用table ENLFDIR 快速找出function module和function group的对应关系
- 【英语】舞动奇迹--荡漾我心
- DIV+CSS如何让文字垂直居中
- [已送完]赠送Google Wave 邀请码
- matlab脑肿瘤识别与分割程序_车牌识别算法
- 详细说明自学Python需要具备什么?
- Unity2020打包ARCore项目apk
- ecshop 配置服务器文件夹,ECSHOP3.6安装教程【ECSHOP3.6安装教程步骤】ECSHOP3.6安装教程详细讲解-ECSHOP教程网...
- 解决表格刷新时抖动闪烁问题
- C++一本通题库1012
- window系统区别
- 证券公司信息化3-经纪业务收入大概是个什么水平?一个普通投资者的开户过程是怎样的?
- 智能安防监控系统的发展与应用
- 3.13课·········冒泡排序
热门文章
- 计算机英语实用教程课后答案,计算机英语实用教程课后题参考答案.pdf
- fedora利用vmlinuz和initrd制作linux启动u盘,fedora 14 livecd从U盘启动安装方法
- Java岗大厂面试百日冲刺 - 日积月累,每日三题【Day16】—— Spring框架2
- ppt扇形图怎么显示数据_ppt如何制作扇形图 ppt如何画扇形统计图-泡泡糖办公
- hector-slam之杉川雷达配置过程
- 【Qt】弹出子窗口时禁用主窗口
- poj 2228 Naptime(DP的后效性处理)
- 数据版“吐槽大会”: 国产综艺节目年终盘点
- 方舟服务器 mod文件夹,方舟mod文件夹应该放在哪 | 手游网游页游攻略大全
- 经典:linux shell 正则表达式(BREs,EREs,PREs)差异比较