Escolar Documentos
Profissional Documentos
Cultura Documentos
Conocer las diferencias y semejanzas existentes entre ambas clases para su discusin y
anlisis
Marco terico:
Problemas P y NP
Existen diferentes modelos que suponen que una computadora es determinista (dado el estado
actual de la computadora y las variables de entrada, existe una nica accin posible que la
computadora puede tomar) y secuencial (realiza las acciones una despus de la otra).
La clase P: son aquellos problemas de decisin que pueden ser resueltos en un tiempo
polinmico en una mquina determinista secuencial tomando en cuenta todos sus
datos.
La clase NP: consiste de todos aquellos problemas de decisin que pueden ser
verificadas en tiempo polinmico a partir de ser alimentadas con la informacin
apropiada, o en forma equivalente, cuya solucin puede ser hallada en tiempo
polinmico en una mquina no determinista.
Para la resolucin de este tipo de problemas hacemos uso de la teora de la complejidad cuya
finalidad es la creacin de mecanismos y herramientas capaces de describir y analizar la
complejidad de un algoritmo y la de un problema en general.
A esto se suma la complejidad computacional donde se toman en cuenta 2 rasgos importantes:
Desarrollo de la prctica:
Los problemas aqu presentados forman parte del anlisis de otros problemas previamente
resueltos en el anlisis del curso, as:
Algoritmo sobre NP
public class Hannoi {
public static void main(String[] args) {
int num=0;
Scanner discos= new Scanner(System.in);
System.out.println("Ingrese el numero de discos: ");
num = discos.nextInt();
Hannoi(num,1,2,3);
}
public static void Hannoi(int n, int origen, int auxiliar, int destino){
if(n==1)
System.out.println("Moviendo el disco de: " + origen + " a " + destino);
else{
Hannoi(n-1, origen, destino, auxiliar);
System.out.println("Moviendo el disco de: "+ origen + " a " + destino);
Hannoi(n-1, auxiliar, origen, destino);
}
}
}
Algoritmo sobre P
Bsqueda Secuencial
public static boolean secuencial(int[] array, int dato){ //busca el element comparando uno por
uno en un bucle
for(int i = 0; i < array.length; i++){
if(array[i]==dato) {
System.out.println("El elemento " + dato + " esta en la posicin
" + (i+1) + ".");
return true; /
}
}
System.out.println("El elemento " + dato + " no existe en el arreglo.");
return false;
}
{
asig=random(cant ); for(int l=0;l<cant ;l++)
{
if(crom[i][l]==asig)
{
asig++;
if(asig>=cant ) asig=0; l=-1;
}
}
crom[i][j]=asig;
}
for(int i=0;i<cant ;i++)
{
crom[i][cant ]=ciu;
}
}
}
hj[0][i]=tmp;
}
for(int i=1;i<cpar;i++)
{
tmp=pdr[0][i];
for(int j=0;j<=cret;j++)
{
if(hj[1][j]==tmp)
{
tmp++;
if(tmp>=cant ) tmp=0; j=-1;
}
}
hj[1][i]=tmp;
}
for(int i=cret+1;i<cant ;i++)
{
tmp=pdr[1][i];
for(int j=0;j<cant ;j++)
{
if(hj[0][j]==tmp)
{
tmp++;
if(tmp>=cant ) tmp=0; j=-1;
}
}
hj[0][i]=tmp;
}
for(int i=cret+1;i<cant ;i++)
Anlisis de resultados:
Para las torres de Hanoi, NP, realizamos un anlisis de complejidad [1] con los siguientes
resultados:
La expresin recursiva del algoritmo es la siguiente:
Tn = 2Tn1 + 1 T0 = 0
Expansin de recurrencias:
Tn = 2Tn1 + 1
Tn= 2(2Tn2 + 1) + 1 = 22Tn2 + 2 + 1
Tn= 2(2(2Tn3 + 1) + 1) + 1 = 23Tn3 + 4 + 2 + 1
Tn= 2(2(2(2Tn4 + 1) + 1) + 1) + 1 = 24Tn4 + 8 + 4 + 2 + 1
Se puede ver, por tanto, que la expresin general es:
Conclusiones y recomendaciones:
Como se puede ver analizar los problemas P y NP es dar un recorrido por cada uno de
los distintos algoritmos estudiados en el presente curso, pero desde el punto de vista
de la complejidad para ser separados en estos 2 tipos.
Bibliografa