實(shí)驗(yàn)源代碼
//Warshall.cpp #include<stdio.h> void warshall(int k,int n) { int i , j, t; int temp[20][20]; for(int a=0;a<k;a++) { printf("請輸入矩陣第%d 行元素:",a); for(int b=0;b<n;b++) { scanf ("%d",&temp[a][b]); } } for(i=0;i<k;i++){ for( j=0;j<k;j++){ if(temp[ j][i]==1) { for(t=0;t<n;t++) { temp[ j][t]=temp[i][t]||temp[ j][t]; } } } } printf("可傳遞閉包關(guān)系矩陣是:\n"); for(i=0;i<k;i++) { for( j=0;j<n;j++) { printf("%d", temp[i][ j]); } printf("\n"); } } void main() { printf("利用 Warshall 算法求二元關(guān)系的可傳遞閉包\n"); void warshall(int,int); int k , n; printf("請輸入矩陣的行數(shù) i: "); scanf("%d",&k);
四川大學(xué)實(shí)驗(yàn)報告 printf("請輸入矩陣的列數(shù) j: "); scanf("%d",&n); warshall(k,n); }
標(biāo)簽:
warshall
離散
實(shí)驗(yàn)
上傳時間:
2016-06-27
上傳用戶:梁雪文以
98年全國大學(xué)生數(shù)學(xué)建模競賽B題“水災(zāi)巡視問題”,是一個推銷員問題,本題有53個點(diǎn),所有可能性大約為exp(53),目前沒有好方法求出精確解,既然求不出精確解,我們使用模擬退火法求出一個較優(yōu)解,將所有結(jié)點(diǎn)編號為1到53,1到53的排列就是系統(tǒng)的結(jié)構(gòu),結(jié)構(gòu)的變化規(guī)則是:從1到53的排列中隨機(jī)選取一個子排列,將其反轉(zhuǎn)或?qū)⑵湟浦亮硪惶?能量E自然是路徑總長度。具體算法描述如下:步1: 設(shè)定初始溫度T,給定一個初始的巡視路線。步2 :步3 --8循環(huán)K次步3:步 4--7循環(huán)M次步4:隨機(jī)選擇路線的一段步5:隨機(jī)確定將選定的路線反轉(zhuǎn)或移動,即兩種調(diào)整方式:反轉(zhuǎn)、移動。步6:計算代價D,即調(diào)整前后的總路程的長度之差步7:按照如下規(guī)則確定是否做調(diào)整:如果D0,則按照EXP(-D/T)的概率進(jìn)行調(diào)整步8:T*0.9-->T,降溫
標(biāo)簽:
大學(xué)生
數(shù)學(xué)建模
巡視
競賽
上傳時間:
2015-03-14
上傳用戶:himbly