Advertisement
Guest User

Untitled

a guest
Dec 21st, 2014
144
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 2.08 KB | None | 0 0
  1. void AsignacionRyP(nodo * s) {
  2.     lista LNV; // Lista de nodos vivos
  3.     crea(&LNV);
  4.     nodo raiz, x, y;
  5.     posicion pos;
  6.     Inicializar(&raiz);
  7.     Inicializar(&x);
  8.     Inicializar(&y);
  9.     Inicializar(s);
  10.  
  11.     inserta(&LNV, raiz);
  12.     int c = raiz.CI;
  13.  
  14.     while (!esvacia(LNV)) {
  15.         pos = Seleccionar(LNV, &x);
  16.         suprime(&LNV, pos);
  17.         if (x.CS > c) {
  18.             for (short i = 0; i < n; i++) {
  19.                 y.nivel = x.nivel + 1;
  20.                 for (short t = 0; t < n; t++)
  21.                     y.tupla[t] = x.tupla[t];
  22.                
  23.                 if (Usada(x, i) == 0) {
  24.                     y.tupla[y.nivel] = i;
  25.                     for (short t = 0; t < n; t++)
  26.                         y.usadas[t] = x.usadas[t];
  27.                     y.usadas[i] = 1;
  28.                     y.bact = x.bact + B[y.nivel][i];
  29.                    
  30.                     if (TrivialesoPrecisas == 1) {
  31.                         y.CI = y.bact;
  32.                         y.CS = y.bact + (n -1- y.nivel) * max(B);
  33.                         y.BE = (y.CI + y.CS) / 2;
  34.                     } else if (TrivialesoPrecisas == 0) {
  35.                         y.CI = y.bact + AsignacionVoraz(y);
  36.                         y.CS = y.bact + MaximosTareas(y);
  37.                         y.BE = (y.CI + y.CS) / 2;
  38.                     }
  39.  
  40.                     if (Solucion(y) && (y.bact > s->bact)) {
  41.                         s->BE = y.BE;
  42.                         s->CI = y.CI;
  43.                         s->CS = y.CS;
  44.                         s->bact = y.bact;
  45.                         s->nivel = y.nivel;
  46.                         for (short i = 0; i < n; i++) {
  47.                             s->usadas[i] = y.usadas[i];
  48.                              s->tupla[i] = s->tupla[i];
  49.                         }
  50.                        
  51.                         if (y.bact > c)
  52.                             c = y.bact;
  53.                     } else if (!Solucion(y) && (y.CS > c)) {
  54.                         inserta(&LNV, y);
  55.                         if (y.CI > c)
  56.                             c = y.CI;
  57.                     }
  58.                 }
  59.             }
  60.         }
  61.     }
  62.  
  63.  
  64. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement