关于TSP动态规划的问题

问题描述

usingSystem;usingSystem.Collections.Generic;usingSystem.Linq;usingSystem.Text;usingSystem.Threading.Tasks;namespaceConsoleApplication5{classProgram{staticvoidMain(string[]args){TestT=newTest();//T.Init(T.E);T.dis=T.TSP(T.StartCity,T.Q);System.Console.WriteLine(T.dis);//System.Console.WriteLine(T.path);System.Console.Read();}}classTest{publicstringpath="";publicintStartCity=1;publicintdis=0;publicint[,]G;publicList<int>Q;publicTest(){G=newint[4,4]{{0,3,6,7,},{5,0,2,3,},{6,4,0,2,},{3,7,5,0,},};Q=newList<int>();Q.Add(1);Q.Add(2);Q.Add(3);}publicList<int>Delete(List<int>arr,inta){arr.Remove(arr[a]);returnarr;//返回该数组}publicintMin(List<int>Q){inta=Q[0];foreach(intbinQ){if(b<=a){a=b;}}returna;}publicintTSP(intc,List<int>Q){List<int>distemp=newList<int>();//distemp:储存当前点到各点距离List<int>distemp1=newList<int>();foreach(intainQ){distemp.Add(a);distemp1.Add(a);}for(inta=0;a<Q.Count;a++){distemp[a]=TSP1(Q[a],distemp1,a)+G[c,distemp[a]];}returnMin(distemp);}publicintTSP1(intc,List<int>Q,intd){List<int>distemp=newList<int>();//distemp:储存当前点到各点距离List<int>distemp1=newList<int>();foreach(intainQ){distemp.Add(a);distemp1.Add(a);}Delete(distemp,d);Delete(distemp1,d);if(distemp.Count==0){path+=StartCity.ToString();returnG[c,StartCity];}for(inta=0;a<distemp.Count;a++){distemp[a]=TSP1(distemp[a],distemp1,a)+G[c,distemp[a]];System.Console.WriteLine("*");}returnMin(distemp);}}}请问如何能记录最短路径,我写的以上代码只能求出最短路径值,希望能帮忙完善或给个思路

解决方案

解决方案二:
我这两天也在研究这个问题。方便的话能否加个微信一起研究下?我的IDyang_guang_

时间: 2024-10-14 21:45:01

关于TSP动态规划的问题的相关文章

【DP专辑】ACM动态规划总结

转载请注明出处,谢谢.   http://blog.csdn.net/cc_again?viewmode=list          ----------  Accagain  2014年5月15日 动态规划一直是ACM竞赛中的重点,同时又是难点,因为该算法时间效率高,代码量少,多元性强,主要考察思维能力.建模抽象能力.灵活度. 本人动态规划博客地址:http://blog.csdn.net/cc_again/article/category/1261899 ******************

经典动态规划基础题-三角形最大和问题

三角形最大和问题 Time Limit:1000MS Memory Limit:65536K Total Submit:79 Accepted:22 Description 现在经常有一些数学问题困扰着小明.有如下一个三角形, 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 小明想求出从顶至底的某处的一条路径,使该路径所经过的数字的总和最大.现在想请你编一个程序实现这个问题. 说明: (1)每一步可沿左斜线向下或右斜线向下: (2)1<三角形行数≤100; (3)三角形中的数字为0,

代码-动态规划问题,求答案

问题描述 动态规划问题,求答案 Description 一个国家有n个城市(n不超过1000),一名旅行家住在最西边的城市里,他希望不重不漏地将每个城市浏览一遍.他的路线将是先向东经过一些城市到达最东边的城市,再向西依次经过剩余城市回到原来所在城市,任意两个城市均可直接相互到达.现给出所有城市的坐标,两个城市间的距离即为坐标两点间的直线距离.求旅行家所需走过的最短距离.Input第一行为整数n,是城市个数.接下来n行,每行两个整数xy,表示某个城市的坐标.保证坐标在32位整数范围内.保证最西和最

模拟退火算法求解TSP问题

一.问题描述 旅行商问题,即TSP问题(Travelling Salesman Problem)是数学领域中著名问题之一.假设有一个旅行商人要拜访n个城市,他必须选择所要走的路径,路经的限制是每个城市只能拜访一次,而且最后要回到原来出发的城市.路径的选择目标是要求得的路径路程为所有路径之中的最小值. 图1 TSP问题的示意图 二.遍历算法 一个最容易想到的方法是利用排列组合的方法把所有的路径都计算出来,并逐一比较,选出最小的路径.虽然该方法在理论上是可行的,但路径的个数与城市的个数成指数增长,当

博弈树,动态规划(计算好的子问题存储起来,以后直接取用)

public class GameTree { /** * 判断剩余球数,谁能取到最后谁赢, * ,一人取一次,默认我方先取,,能否必胜,能就返回true,否则false * @param x剩余球数 * @return */ static boolean f(int x){ int[] op={1,3,7,8};//每次取球只能有四种情况 for(int i=0;i<op.length;i++){ if (x>=op[i]) { if(f(x-op[i])==false)return tru

PSP/TSP/CMMI构建高绩效团队

当今社会对软件的需求在不断变化,企业必须具备快速开发的能力来应对这样的需求.许多企业同时面临预算.人员的削减或者是为了提高利润,必须控制项目时间与费用.软件质量在这种快速的市场环境压力下往往得不到保障.美国卡内基梅隆大学软件工程学院(SEI)20多年来一直致力于创建并推广一系列方法来帮助企业有效地开发高质量软件.其中CMMI模型已经被中国诸多软件开发组织所认可,CMMI能够评估并改进过程,从而稳定.协调并提高这些组织绩效的根本能力.尽管这一模型提供了强大的改进框架,但它关注的是企业应该做什么而不

从装配线到DNA比对——神器动态规划

对于一个问题,我们如果可以枚举所有的解,那么这个解空间我们是知道的.那么如何在解空间里面找到最优解呢?这时有一个非常好的方法,从底向上地构造整个解,而每一步都是从地层寻求最优解,这样就能保证在最终得到的一定是最优解.这就是最优子结构,有这种结构的问题,通常都可以用动态规划的办法来寻求最优解.而且它是从小规模(子问题)到大规模问题的构造,而常常这样的解法能够用一张表直观地表现出来.表中的元素是一个表达式的某个特定值,这个表达式表现的是问题和子问题的关系,也就是如何在子问题中的解中寻找最优的关系,这

动态规划(DP)入门

零.先修课程 首先,在开始理解DP的思想前,你需要 1. 完成HDU里面的递推求解专题练习(For Beginner)那7道题(这些题很简单,题解请在博客中搜索),这对你理解DP有很大的帮助. 2. 对递归搜索(比如深度优先搜索,DFS)有一定了解. 一.递归与记忆化搜索 我们从POJ 3176入手来学习这一思想.(题目很短,请快速读完) 从上往下看,最大和值无非是往左走和往右走这两条路的较大者.这样,我们可以写出下面这个重要的递归函数:(这里i表示行,j表示列) int f(int i, in

UVa 116 Unidirectional TSP (DP)

116 - Unidirectional TSPTime limit: 3.000 seconds http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&category=114&page=show_problem&problem=52 Background Problems that require minimum paths through some domain appear in m