viernes, 29 de junio de 2012

Evaluacion de función objetivo, factibilidad de la solución y soluciones iniciales

Evaluación Función Objetivo
El Objetivo es cubrir la mayor cantidad de aristas con la menor cantidad de nodos  (vertices).
Área Factible  se  define como los vértices que cubren la cantidad de aristas totales en el grafo. En el peor de los casos serian todos los vértices, pero se necesita una solución inicial  que cumpla con la condición que sean la menor cantidad de vértices para esto compararemos a la par el vértice que contiene la mayor cantidad de vecinos  para poder cubrir así la mayor área, ya teniendo ese vértice eliminaremos de una lista las aristas que están cubiertas por ese vértice y volveremos a verificar el siguiente vértice que tiene la mayor cantidad de vecinos (aristas) y lo pondremos en nuestra lista de vértices que constituyen la solución inicial y seguiremos eliminando de la lista de aristas las que ya están cubiertas y si en esta lista ya no existen aristas disponibles termina la función de evaluar el área factible.



Generar una Solución Inicial constituye el hecho de que sea una solución dentro del área factible para poder partir de ahí y poder mejorarla, esto se definiría como la cantidad de vértices utilizados representados de alguna forma por ejemplo vértice A vértice C y vértice F cubren todos los aristas por ello es una solución inicial más no la óptima.

for(i=1;i<=vertices;i++){

      for(j=1;j<=maxar;j++){


 g[i][j] = conectado(densidad);  

        
 if(g[i][j]==1 && c[j]<2){

   printf("%d - %d \n", i, j);

   fprintf(datos, "a %d - %d \n", i, j);

   c[j]=c[j]+1;

   arist[j]=1;
}}}


    for(i=1;i<=vertices;i++){

      for(j=1;j<=maxar;j++){ 

           

 if(g[i][j]==1 && c[j]<2 && arist[j]!=0){

   arist[j]=0;

   verti[i]=1;

                         
}}}
    for(i=1;i<=vertices;i++){

      for(j=1;j<=maxar;j++){ 

         if(arist[j]==2){

   verti[i]=1;
           }
      } 
    }                         
                       
    printf("\n Vertices que cubren todas las aristas:\n");
    for(j=1;j<=maxar;j++){

      if(verti[j]==1){
 printf("%d \n", j);                                 }

    }



1 comentario:

  1. Intenten separar en el código la generación y el análisis. No estoy segura si esté funcionando como quieren el código. Cuiden la redacción, ambos los acentos y el contenido. Por ejemplo, las soluciones no son vértices, sino subconjuntos de vértices. Van 5 pts por hoy.

    ResponderEliminar