سورس برنامه فروشنده دوره گرد tsp
#include
#define MAX 100
#define INFINITY 999
int tsp_dp (int c[][MAX], int tour[], int start, int n);
int main()
{
printf («This program demonstrates the TSP problem.»);
printf («\nHow many cities to traverse? «);
scanf («%d», &n);
printf («Enter the cost matrix: (999: no connection)\n»);
for (i=0; i<n; i++)
for (j=0; j<n; j++)
scanf («%d», &c[i][j]);
for (i=0; i<n; i++)
tour[i] = i;
cost = tsp_dp (c, tour, 0, n);
printf («Minimum cost: %d.\nTour: «, cost);
for (i=0; i<n; i++)
printf («%d «, tour[i]+1);
printf («1\n»);
}
int tsp_dp (int c[][MAX], int tour[], int start, int n)
{
int i, j, k; /* Loop counters. */
int temp[MAX]; /* Temporary during calculations. */
int mintour[MAX]; /* Minimal tour array. */
int mincost; /* Minimal cost. */
int ccost; /* Current cost. */
/* End of recursion condition. */
if (start == n – 2)
return c[tour[n-2]][tour[n-1]] + c[tour[n-1]][0];
/* Compute the tour starting from the current city. */
mincost = INFINITY;
for (i = start+1; i<n; i++)
{ for (j=0; j<n; j++)
temp[j] = tour[j];
/* Adjust positions. */
temp[start+1] = tour[i];
temp[i] = tour[start+1];
/* Found a better cycle? (Recurrence derivable.) */
if (c[tour[start]][tour[i]] +
(ccost = tsp_dp (c, temp, start+1, n)) < mincost) {
mincost = c[tour[start]][tour[i]] + ccost;
for (k=0; k<n; k++)
mintour[k] = temp[k];
}
}
/* Set the minimum-tour array. */
for (i=0; i<n; i++)
tour[i] = mintour[i];
return mincost;
}
——————————————- توضیحات ————————————-
Raha گفت،
ژانویه 3, 2010 در 12:10 ق.ظ.
kheyli komakam kardid………… mer30000000000000000
serojjamali گفت،
ژانویه 4, 2010 در 10:18 ب.ظ.
خوشحال شدم که تونستم به شما کمک کنم
مهدی گفت،
ژانویه 10, 2010 در 6:38 ب.ظ.
خدا خیرت بده حداقل وقتی کدی رو کپی و پست می کنی اینکلود های اون رو هم قرار بده
#include “tsp.h
:-»
serojjamali گفت،
ژانویه 12, 2010 در 9:09 ق.ظ.
شرمنده من اين برنامرو قبلا نوشته بودم ولي ظاهرا برنامه ديگه اي رو اينجا گذاشتم
حتما توي اولين فرصت برنامه خودمو ميذارم
ممنون از نظرتون
serojjamali گفت،
ژانویه 12, 2010 در 9:46 ق.ظ.
متاسفانه برنامه اي كه خودم نوشته بودمو پيدا نكردم
ولي برنامه با لا رو اصلاح كردم
برنامه خودمو هم اگه پيدا كردم براتوم مي زارم
eli گفت،
ژوئیه 10, 2010 در 8:57 ب.ظ.
salam, aghaye jamali mishe lotf konid va ye tozihe farsi raje be nahveye anjame in code baram befrestin,vaghan lotfe bozorgi mikonin
man ye daneshjoo hastam,ziad barname nevisim khoob nist
e.gh1368@gmail.com
vaghan mamnoon
serojjamali گفت،
ژوئیه 13, 2010 در 8:28 ب.ظ.
#include
#define MAX 100
حداکثر تعداد شهر ها
#define INFINITY 999
در صورتی بینهایت خواهد شد که بیش از 999 بار به جواب نرسد، میتوان این مقدار را را تغغیر داد
int tsp_dp (int c[][MAX], int tour[], int start, int n);
زیر برنامه تعیین مسیر
int main()
{
int n; /* Number of cities. */
متغییری جهت ذخیره تعداد شهرها
int i, j; /* Loop counters. */
int c[MAX][MAX]; /* Cost matrix. */
آرایه ای جهت ذخیره تعداد شهر ها
int tour[MAX]; /* Tour matrix. */
آرایه ای جهت ذخیره مسیر
int cost; /* Least cost. */
printf («This program demonstrates the TSP problem.»);
printf («\nHow many cities to traverse? «);
تعداد شهر های موجود
scanf («%d», &n);
printf («Enter the cost matrix: (999: no connection)\n»);
تعداد دفعات چک کردن مسیر
for (i=0; i<n; i++)
for (j=0; j<n; j++)
scanf ("%d", &c[i][j]);
ورود اطلاعات مسیر به صورت یک ماتریس
برای مثال
فاصله شهر 1 تا 1 مساوی 0
فاصله شهر 1 تا 2 مساوی 10
فاصله شهر 2 تا 4 مساوی 14
4 3 2 1
15 20 10 0 1
14 12 0 10 2
16 0 12 20 3
0 16 14 15 4
for (i=0; i<n; i++)
tour[i] = i;
cost = tsp_dp (c, tour, 0, n);
تعیین کوتاهترین مسیر موجود
printf ("Minimum cost: %d.\nTour: ", cost);
for (i=0; i<n; i++)
printf ("%d ", tour[i]+1);
چاپ کوتاه هترین مسیر ممکن
printf ("1\n");
}
int tsp_dp (int c[][MAX], int tour[], int start, int n)
{
int i, j, k; /* Loop counters. */
int temp[MAX]; /* Temporary during calculations. */
int mintour[MAX]; /* Minimal tour array. */
int mincost; /* Minimal cost. */
int ccost; /* Current cost. */
/* End of recursion condition. */
if (start == n – 2)
return c[tour[n-2]][tour[n-1]] + c[tour[n-1]][0];
/* Compute the tour starting from the current city. */
mincost = INFINITY;
for (i = start+1; i<n; i++)
{ for (j=0; j<n; j++)
temp[j] = tour[j];
/* Adjust positions. */
temp[start+1] = tour[i];
temp[i] = tour[start+1];
/* Found a better cycle? (Recurrence derivable.) */
if (c[tour[start]][tour[i]] +
(ccost = tsp_dp (c, temp, start+1, n)) < mincost) {
mincost = c[tour[start]][tour[i]] + ccost;
for (k=0; k<n; k++)
mintour[k] = temp[k];
}
}
/* Set the minimum-tour array. */
for (i=0; i<n; i++)
tour[i] = mintour[i];
return mincost;
}
nazanin گفت،
فوریه 2, 2011 در 2:47 ق.ظ.
salam .mamnoon az soors barname foroshandeh doregard.momkene zaman masrafi in barname ra baram send konid ?????
serojjamali گفت،
فوریه 3, 2011 در 8:45 ق.ظ.
بستگی به تعداد شهر ها و فاصله شهر ها داره
فایل راهنماشو سعی می کنم توی وبلاگ بزارم
احمد تداین گفت،
فوریه 5, 2011 در 1:24 ب.ظ.
- مسئله فروشنده دوره گرد را پیاده سازی کنید. برنامه شما از ورودی ابتدا N<30را می گیرد و سپس برای هر شهر مختصات آن را به صورت 2 عدد صحیح x,y از ورودی دریافت می کند.پاسخ شما باید یک عدد باشد که طول کوتاهترین مسیر را نشان دهد.
خیلی ممنون میشم اگه اینو بتونید تا فردا واسم جواب بدین
احمد تداین گفت،
فوریه 5, 2011 در 1:24 ب.ظ.
???
serojjamali گفت،
فوریه 5, 2011 در 2:23 ب.ظ.
جواب بستگی به فاصطه شهر ها داره
آخر برنامه زیر قسمت توضیحات یک لینک گذاشتم به نام
توضیحات برنامه
http://serojjamali.files.wordpress.com/2009/07/tsp.doc
این فایلو دانلود کنید امید وارم کمکتون بکنه
با تشکر از بازدید تون
سراج جمالی
سعید گفت،
دسامبر 3, 2011 در 2:27 ب.ظ.
تشکر