Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Problema del agente viajero

Estas en el tema de Problema del agente viajero en el foro de C/C++ en Foros del Web. Hola se supone que tengo que hacer el programa que muestre el costo minimo y la ruta la cual debe de tomar . El programa ...
  #1 (permalink)  
Antiguo 16/11/2013, 13:50
 
Fecha de Ingreso: marzo-2013
Mensajes: 11
Antigüedad: 11 años, 1 mes
Puntos: 0
Pregunta Problema del agente viajero

Hola se supone que tengo que hacer el programa que muestre el costo minimo y la ruta la cual debe de tomar . El programa que hice pide el tamaño de un arreglo que seria las ciudades a las que debe ir el agente, despues es pide los costos del trayecto; el profesor nos puso un ejemplo en el cual me estoy basando para hacer el programa el ejemplo es el siguiente:

tabla de costos:
| 999,10,15,20 |
| 5,999,9,10 |
| 6,13,999,12 |
| 8 ,8,9,999|

Costo minimo 35
Trayecto 1a2, 2a4, 4a3, 3a1

El programa Calcula el costo minimo pero no se como hacer que la funcion tps muestre el trayecto o tendría que crear otra funcion que haga el trayecto la verdad no tengo idea de como hacer que el programa haga eso en eso necesito su ayuda.

El 999 es que noo existe una ruta .

Aqui el codigo:
Código C:
Ver original
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. int tsp(int **c, int *g, int ini, int n);
  4. main (){
  5.      int t,i,j,**c,*g,cost;
  6.      printf("ingrese el tamaño del arreglo: ");
  7.      scanf("%d",&t);
  8.      c=(int**)calloc(t+1,sizeof(int*));
  9.      for(i=0;i<t;i++){
  10.          c[i]=(int*)calloc(t+1,sizeof(int));
  11.          }
  12.      for(i=0;i<t;i++){
  13.          for(j=0;j<t;j++){
  14.              printf("ingrese los valores [%d][%d]: ",i+1,j+1);
  15.              scanf("%d",&c[i][j]);
  16.              }        
  17.          }
  18.      g=(int*)calloc(t+1,sizeof(int));
  19.      for(i=0;i<t;i++)
  20.      g[i]=i;
  21.      cost=tsp(c,g,0,t);
  22.      printf("costo minimo: %d",cost);
  23.      getchar();
  24.      getchar();
  25. }
  26. int tsp(int **c, int *g, int ini, int n){
  27.     int i, j, k,*temp,*ming, mincost, ccost;
  28.     if(ini==n-2)
  29.     return c[g[n-2]][g[n-1]]+c[g[n-1]][0];
  30.     mincost=999;  
  31.     temp=(int*)calloc(n+1,sizeof(int));
  32.     for(i=ini+1;i<n;i++){
  33.         for(j=0;j<n;j++)
  34.              temp[j]=g[j];
  35.             temp[ini+1]=g[i];
  36.             temp[i]=g[ini+1];
  37.             if(c[g[ini]][g[i]]+(ccost=tsp(c,temp,ini+1,n))<mincost){
  38.                mincost=c[g[ini]][g[i]]+ccost;
  39.                ming=(int*)calloc(n+1,sizeof(int));
  40.                for(k=0;k<n;k++)
  41.                ming[k]=temp[k];
  42.                }
  43.     }
  44.     return mincost;
  45. }

Espero puedan ayudarme

Etiquetas: agente, funcion, int, programa
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 09:45.