سورس برنامه فروشنده دوره گرد tsp

سورس برنامه فروشنده دوره گرد 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;
}

——————————————- توضیحات ————————————-

13 دیدگاه

  1. Raha گفت،

    ژانویه 3, 2010 در 12:10 ق.ظ.

    kheyli komakam kardid………… mer30000000000000000

    • serojjamali گفت،

      ژانویه 4, 2010 در 10:18 ب.ظ.

      خوشحال شدم که تونستم به شما کمک کنم

  2. مهدی گفت،

    ژانویه 10, 2010 در 6:38 ب.ظ.

    خدا خیرت بده حداقل وقتی کدی رو کپی و پست می کنی اینکلود های اون رو هم قرار بده
    #include “tsp.h
    :-»

    • serojjamali گفت،

      ژانویه 12, 2010 در 9:09 ق.ظ.

      شرمنده من اين برنامرو قبلا نوشته بودم ولي ظاهرا برنامه ديگه اي رو اينجا گذاشتم
      حتما توي اولين فرصت برنامه خودمو ميذارم
      ممنون از نظرتون

  3. serojjamali گفت،

    ژانویه 12, 2010 در 9:46 ق.ظ.

    متاسفانه برنامه اي كه خودم نوشته بودمو پيدا نكردم
    ولي برنامه با لا رو اصلاح كردم
    برنامه خودمو هم اگه پيدا كردم براتوم مي زارم

  4. 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

  5. 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 ق.ظ.

        بستگی به تعداد شهر ها و فاصله شهر ها داره
        فایل راهنماشو سعی می کنم توی وبلاگ بزارم

  6. فوریه 5, 2011 در 1:24 ب.ظ.

    - مسئله فروشنده دوره گرد را پیاده سازی کنید. برنامه شما از ورودی ابتدا N<30را می گیرد و سپس برای هر شهر مختصات آن را به صورت 2 عدد صحیح x,y از ورودی دریافت می کند.پاسخ شما باید یک عدد باشد که طول کوتاهترین مسیر را نشان دهد.

    خیلی ممنون میشم اگه اینو بتونید تا فردا واسم جواب بدین

  7. فوریه 5, 2011 در 1:24 ب.ظ.

    ???

    • serojjamali گفت،

      فوریه 5, 2011 در 2:23 ب.ظ.

      جواب بستگی به فاصطه شهر ها داره
      آخر برنامه زیر قسمت توضیحات یک لینک گذاشتم به نام
      توضیحات برنامه

      http://serojjamali.files.wordpress.com/2009/07/tsp.doc

      این فایلو دانلود کنید امید وارم کمکتون بکنه

      با تشکر از بازدید تون
      سراج جمالی

  8. سعید گفت،

    دسامبر 3, 2011 در 2:27 ب.ظ.

    تشکر


پاسخی بگذارید

در پایین مشخصات خود را پر کنید یا برای ورود روی شمایل‌ها کلیک نمایید:

نشان‌وارهٔ وردپرس.کام

شما در حال بیان دیدگاه با حساب کاربری WordPress.com خود هستید. بیرون رفتن / تغییر دادن )

تصویر توییتر

شما در حال بیان دیدگاه با حساب کاربری Twitter خود هستید. بیرون رفتن / تغییر دادن )

عکس فیسبوک

شما در حال بیان دیدگاه با حساب کاربری Facebook خود هستید. بیرون رفتن / تغییر دادن )

درحال اتصال به %s

دنبال‌کردن

هر نوشتهٔ تازه‌ای را در نامه‌دان خود دریافت نمایید.