国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

基于貪心算法的TSP問題(c語言)

這篇具有很好參考價值的文章主要介紹了基于貪心算法的TSP問題(c語言)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

?data.txt

1 6734 1453
2 2233 10
3 5530 1424
4 401 841
5 3082 1644
6 7608 4458
7 7573 3716
8 7265 1268
9 6898 1885
10 1112 2049
11 5468 2606
12 5989 2873
13 4706 2674
14 4612 2035
15 6347 2683
16 6107 669
17 7611 5184
18 7462 3590
19 7732 4723
20 5900 3561
21 4483 3369
22 6101 1110
23 5199 2182
24 1633 2809
25 4307 2322
26 675 1006
27 7555 4819
28 7541 3981
29 3177 756
30 7352 4506
31 7545 2801
32 3245 3305
33 6426 3173
34 4608 1198
35 23 2216
36 7248 3779
37 7762 4595
38 7392 2244
39 3484 2829
40 6271 2135
41 4985 140
42 1916 1569
43 7280 4899
44 7509 3239
45 10 2676
46 6807 2993
47 5185 3258
48 3023 1942

代碼?

/*********************************************************************************************************************
 * TSP 算例來自TSPLIB,att48.tsp 數(shù)據(jù)集,其中有 48 個城市,距離為偽歐式距離
 * TSPLIB is a library of sample instances for the TSP (and related problems)from various sources and of various types.
 * 目前最佳解總距離為 10628,其中距離的計算方式為 sqrt((x*x + y*y)/10)
 * 使用貪心策略求解,解集總距離為 12861,可見貪心策略只是局部最優(yōu)解
**********************************************************************************************************************/
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<math.h>
#include<stdlib.h>
#include<time.h>

// 城市數(shù)量 N
#define N 48
// 城市距離矩陣
int distance[N][N];

/***********************************************************************
 * Function   :init()
 * Description:從文件中讀取城市坐標(biāo),并計算城市之間的距離 distance[N][N]
 * Input      :void
 * Output     :void
 * Return     :void
 ***********************************************************************/
void init()
{
	//城市的 x 和 y 坐標(biāo)
	int x[N] = { 0 };
	int y[N] = { 0 };
	//從 data.txt 文件讀取數(shù)據(jù)
	FILE* fp;
	if ((fp = fopen("data.txt", "r")) == NULL)
		//if ((fp = fopen("..//kroB100.txt", "r")) == NULL)
	{
		printf("can not open the file!");
		exit(0);
	}
	while (!feof(fp))
	{
		int count;
		fscanf(fp, "%d", &count);
		fscanf(fp, "%d%d", &x[count - 1], &y[count - 1]);
	}
	fclose(fp);
	//計算城市之間距離
	for (int i = 0; i < N - 1; i++)
	{
		distance[i][i] = 0;				// 對角線為0
		for (int j = i + 1; j < N; j++)
		{
			double dis = sqrt((pow((double)x[i] - x[j], 2) / 10 + pow((double)y[i] - y[j], 2) / 10));
			int disInt = (int)dis;
			distance[i][j] = dis == disInt ? disInt : disInt + 1;
			distance[j][i] = distance[i][j];
		}
	}
	distance[N - 1][N - 1] = 0;
}

/***********************************************************************
 * Function   :TSPGreedyAlgorithm()
 * Description:貪心策略求解 TSP 問題
 * Input      :void
 * Output     :TSP 路徑和對應(yīng)的總距離
 * Return     :void
 ***********************************************************************/
void TSPGreedyAlgorithm()
{
	//總路程
	int totalDistance = 0;
	//默認從 0 開始遍歷
	int current = 0;
	//標(biāo)識城市是否被訪問,訪問過置為 1
	bool visit[N] = { false };
	visit[0] = 1;
	printf("TSP 路徑為:%d ->", 1);

	//遍歷 N - 1 次
	for (int i = 1; i < N; i++)
	{
		//設(shè)置較大的距離初始值用來選取最近鄰
		int min_distance = 0x7fffffff;
		//保存當(dāng)前最近鄰城市
		int temp;
		//循環(huán)選取城市
		for (int j = 1; j < N; j++)
		{
			if (!visit[j] && distance[current][j] < min_distance)
			{
				min_distance = distance[current][j];
				temp = j;
			}
		}
		visit[temp] = 1;
		current = temp;
		totalDistance += min_distance;
		printf(" %d ->", temp + 1);
	}
	totalDistance += distance[current][0];
	printf(" %d\n", 1);
	printf("TSP 總距離為:%d\n", totalDistance);
}

int main()
{
	init();
	TSPGreedyAlgorithm();
	return 0;
}

基于貪心算法的TSP問題(c語言)

?文章來源地址http://www.zghlxwxcb.cn/news/detail-507849.html

到了這里,關(guān)于基于貪心算法的TSP問題(c語言)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費用

相關(guān)文章

  • (C語言貪心算法)0/1背包問題

    (C語言貪心算法)0/1背包問題

    已知一個載重為M的背包和n件物品,物品編號從0到n-1。第i件物品的重量為?wi,若將第i種物品裝入背包將獲益pi,這里,wi0,pi0,0=in。所謂0/1背包問題是指在物品不能分割,只能整件裝入背包或不裝入的情況下,求一種最佳裝載方案使得總收益最大。 第?1?行中有?2?個正整

    2024年02月08日
    瀏覽(24)
  • 貪心算法解決背包問題和動態(tài)規(guī)劃解決0-1背包問題(c語言)

    貪心算法解決背包問題和動態(tài)規(guī)劃解決0-1背包問題(c語言)

    運行結(jié)果如下: 運行結(jié)果如下: 總結(jié): 貪心算法: 每一步都做出當(dāng)時看起來最佳的選擇,也就是說,它總是做出局部最優(yōu)的選擇。 貪心算法的設(shè)計步驟: 對其作出一個選擇后,只剩下一個子問題需要求解。 證明做出貪心選擇后,原問題總是存在最優(yōu)解,即貪心選擇總是安

    2024年02月04日
    瀏覽(20)
  • 【回溯算法】旅行商問題--TSP問題

    【回溯算法】旅行商問題--TSP問題

    一銷售商從n個城市中的某一城市出發(fā),不重復(fù)地走完其余n—1個城市并回到原出發(fā)點,在所有可能的路徑中求出路徑長度最短的一條。本題假定該旅行商從第1個城市出發(fā)。 輸入 對每個測試例,第1行有兩個整數(shù):n(4≤n≤10)和m(4≤m≤20 ) ,n是結(jié)點數(shù),m是邊數(shù)。 接下來m行,描

    2024年02月08日
    瀏覽(25)
  • TSP問題的遺傳算法實現(xiàn)

    一.實驗?zāi)康?本實驗課程是計算機、智能、物聯(lián)網(wǎng)等專業(yè)學(xué)生的一門專業(yè)課程,通過實驗,幫助學(xué)生更好地掌握人工智能相關(guān)概念、技術(shù)、原理、應(yīng)用等;通過實驗提高學(xué)生編寫實驗報告、總結(jié)實驗結(jié)果的能力;使學(xué)生對智能程序、智能算法等有比較深入的認識。要掌握的知

    2024年02月03日
    瀏覽(24)
  • Matlab | 基于遺傳算法的TSP路徑優(yōu)化

    Matlab | 基于遺傳算法的TSP路徑優(yōu)化

    理論基礎(chǔ) 問題導(dǎo)入 MATLAB程序?qū)崿F(xiàn)及結(jié)果分析 總結(jié)與擴展 TSP (traveling salesman problem,旅行商問題)是典型的NP完全問題,即其最壞情況下的時間復(fù)雜度隨著問題規(guī)模的增大按指數(shù)方式增長,到目前為止還未找到一個多項式時間的有效算法。 TSP問題可描述為: 已知有 n 個城市,各城市

    2024年02月04日
    瀏覽(23)
  • 【LKH算法體驗】Python調(diào)用LKH算法求TSP問題

    【LKH算法體驗】Python調(diào)用LKH算法求TSP問題

    Keld Helsgaun 是丹麥 羅斯基勒大學(xué)計算機科學(xué)專業(yè)的名譽副教授。 他于 1973 年在 哥本哈根大學(xué)獲得DIKU 計算機科學(xué)碩士學(xué)位。他自 1975 年以來一直在羅斯基勒大學(xué)工作。他的研究興趣包括人工智能(問題解決和啟發(fā)式)和組合優(yōu)化。 LKH 是Lin-Kernighan解決旅行商(TSP)問題啟發(fā)式

    2024年02月05日
    瀏覽(26)
  • 人工智能導(dǎo)論——遺傳算法求解TSP問題實驗

    人工智能導(dǎo)論——遺傳算法求解TSP問題實驗

    一、實驗?zāi)康模?熟悉和掌握遺傳算法的原理、流程和編碼策略,并利用遺傳算法求解組合優(yōu)化問題,理解求解TSP問題的流程并測試主要參數(shù)對結(jié)果的影響。 二、實驗原理: 旅行商問題,即TSP問題(Traveling Salesman Problem)是數(shù)學(xué)領(lǐng)域中著名問題之一。假設(shè)有一個旅行商人要拜

    2023年04月13日
    瀏覽(22)
  • 算法設(shè)計 || 第7題:TSP問題的成本矩陣

    算法設(shè)計 || 第7題:TSP問題的成本矩陣

    ?看不懂可以觀看這個老師視頻學(xué)習(xí):分支限界法(TSP問題,多段圖的最短路徑問題,任務(wù)分配問題,批處理作業(yè)調(diào)度問題)(算法設(shè)計第十周二節(jié))_嗶哩嗶哩_bilibili ? ? 畫出計算求解最優(yōu)解的分支界限過程, 計算每個節(jié)點的C^(X)值。 一旦找到目標(biāo)排列,再需要殺手的節(jié)點下面用B標(biāo)記

    2024年02月10日
    瀏覽(16)
  • 如何使用Python輕松解決TSP問題(PSO算法)

    先前我們給出了遺傳算法的解決方案,那么同樣的我們,給出使用PSO的解決方案。其實對PSO算法比較了解的小伙伴應(yīng)該是知道的,這個PSO其實是比較適合解決連續(xù)問題的。而我們的TSP問題顯然是一個離散的問題。那么如何將連續(xù)問題轉(zhuǎn)化為離散問題呢,那么這個時候其實有一

    2024年02月06日
    瀏覽(24)
  • 人工智能原理實驗4(1)——遺傳算法、蟻群算法求解TSP問題

    人工智能原理實驗4(1)——遺傳算法、蟻群算法求解TSP問題

    TSP問題是組合數(shù)學(xué)中一個古老而又困難的問題,也是一個典型的組合優(yōu)化問題,現(xiàn)已歸入NP完備問題類。NP問題用窮舉法不能在有效時間內(nèi)求解,所以只能使用啟發(fā)式搜索。遺傳算法是求解此類問題比較實用、有效的方法之一。下面給出30個城市的位置信息: 應(yīng)用遺傳算法和蟻

    2024年01月24日
    瀏覽(22)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包