Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
lista
ligada
de
int c;
int id;
struct l *izq;
struct l *der;
};
3
0
0
2
1
1
0
3
2
2
0
3
1
1
4
0
2
5
1
0
6
0
1
7
}
sino
{
Si (quedan combinaciones opuestas y no inversas)
{
Darle hijo[sig]
p es hijo[sig];
}
sino //si ya no quedan hijos para evaluar, es porque el pap es
infrtil
{
eliminar descendencia de p
p es INFRTIL;
}
}
}
sino // si la jugada p no es FERTIL (REPETIDA,INFERTIL, etc...)
{
Si (p es la raz) // rbol n-ario abortado...
return NULL;
sino
{
p es INFERTIL;
p=p->papa; // probaremos con el papa nuevamente
}
}
}
//en caso de que hubiese sido hallada la jugada terminal, se rompe el
while y...
return p;
}
Bsicamente ese es el razonamiento (algoritmo o secuencia de pasos)
que pens para solucionar el problema. Pero cuando cre haber
terminado este programa, me top con otro grave:
Bsqueda de Jugadas Repetidas.
Problema grave? Por qu, si es cosa de recorrer recursivamente el
rbol n-ario e ir comparando las jugadas?
Eso fue lo primero que hice. La verdad es que funciona relativamente
bien, pero, en especial a la hora de analizar casos sin solucin, deja
harto que desear: consume mucho tiempo. Recorrer un rbol n-ario por
cada jugada que se le aade es muy ineficiente; adems, el rbol va
creciendo, por lo que por cada jugada aadida se demora ms y ms en
1202
TIEMPO DE CPU
180,180,3
0
190,190,3
0
191,191,3 S.O. informa de errores
200000,199999,30 (25587
jugadas)
48
500000,499999,30 (68965
jugadas)
445
MEMORIA RAM
EMPLEADA
396 KB
420 KB
18.8 MB
42.8 MB