Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void AsignacionRyP(nodo * s) {
- lista LNV; // Lista de nodos vivos
- crea(&LNV);
- nodo raiz, x, y;
- posicion pos;
- Inicializar(&raiz);
- Inicializar(&x);
- Inicializar(&y);
- Inicializar(s);
- inserta(&LNV, raiz);
- int c = raiz.CI;
- while (!esvacia(LNV)) {
- pos = Seleccionar(LNV, &x);
- suprime(&LNV, pos);
- if (x.CS > c) {
- for (short i = 0; i < n; i++) {
- y.nivel = x.nivel + 1;
- for (short t = 0; t < n; t++)
- y.tupla[t] = x.tupla[t];
- if (Usada(x, i) == 0) {
- y.tupla[y.nivel] = i;
- for (short t = 0; t < n; t++)
- y.usadas[t] = x.usadas[t];
- y.usadas[i] = 1;
- y.bact = x.bact + B[y.nivel][i];
- if (TrivialesoPrecisas == 1) {
- y.CI = y.bact;
- y.CS = y.bact + (n -1- y.nivel) * max(B);
- y.BE = (y.CI + y.CS) / 2;
- } else if (TrivialesoPrecisas == 0) {
- y.CI = y.bact + AsignacionVoraz(y);
- y.CS = y.bact + MaximosTareas(y);
- y.BE = (y.CI + y.CS) / 2;
- }
- if (Solucion(y) && (y.bact > s->bact)) {
- s->BE = y.BE;
- s->CI = y.CI;
- s->CS = y.CS;
- s->bact = y.bact;
- s->nivel = y.nivel;
- for (short i = 0; i < n; i++) {
- s->usadas[i] = y.usadas[i];
- s->tupla[i] = s->tupla[i];
- }
- if (y.bact > c)
- c = y.bact;
- } else if (!Solucion(y) && (y.CS > c)) {
- inserta(&LNV, y);
- if (y.CI > c)
- c = y.CI;
- }
- }
- }
- }
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement