12
Gabriela Alemán García Daniela Aguilar Guerra Salomon Karr Hector Tinajero

PROY 3: VERIFICACION DE PALINDROMOS

  • Upload
    gaby

  • View
    1.534

  • Download
    7

Embed Size (px)

DESCRIPTION

CLASE DE ALGORITMOS COMPUTACIONALES, COMPLEJIDAD ASINTOTICA. VERIFICACION DE PALINDROMOS, MARTES.

Citation preview

Page 1: PROY 3: VERIFICACION DE PALINDROMOS

Gabriela Alemán GarcíaDaniela Aguilar GuerraSalomon KarrHector Tinajero

Page 2: PROY 3: VERIFICACION DE PALINDROMOS

En la verificacion de palindromos usando la iteración tenemos la opcion de verificar mas de un palindromo.

En cambio con la recursión se llama asi misma la funcion para leer el primer texto y compararlo con su lectura al reves y asi define si es o no un palindromo.

Los primeros palindromos se le atribuyen al filosofo griego Socrates (III a.c).

Page 3: PROY 3: VERIFICACION DE PALINDROMOS

En la verificación de palindromos. La relación del tamaño del problema y su tiempo de ejecución es polinomica por tal motivo nuestro problema es del tipo P, la maquina determinista lo puede resolver en tiempo real y razonable.

La clase de complejidad P es el conjunto de los problemas de decisión que pueden ser resueltos en una máquina determinista en tiempo polinómico, lo que corresponde intuitivamente a problemas que pueden ser resueltos aún en el peor de sus casos.

Existe una solución en tiempo P para todos los problemas de NP-completo, SOLO si se llega a encontrar una solucion en tiempo P para algun miembro del conjunto (cualquiera de los problemas de Np-HArd)

Page 4: PROY 3: VERIFICACION DE PALINDROMOS

La declaracion f(x)=O(g(x)) donde se relaciona el tiempo de ejecucion con el espacio de memoria utilizado, de alli se le dan los valores en segundos, pero como se extiende, tendemos a utilizar la funcion logaritmica para determinar el comportamiento conresecto al tiempo y espacio en la solucion de nuestro problema.

Page 5: PROY 3: VERIFICACION DE PALINDROMOS

#include <stdio.h> //incluimos librerias#include <string.h>char inverso(char *arreglo); //declaramos funcion que va a realizar la inversaint main() { //iniciamos funcion principal int opcion; char arreglo[255]; //declaramos el arreglo de 255 caracteres, el arreglo es una cadena de caracteres.

printf("\n\n\t\tPROGRAMA VERIFICADOR DE PALINDROMOS\n\n");do{printf("Ingresa el texto que deseas verificar "); //imprime mensaje al usuario

gets(arreglo); //utilizamos funcion gets para que pueda leer toda la cadenainverso(arreglo); //manda llamar a la funcion del inverso y se lleva lo que

escribimos en arreglodo{

printf("\t\n\nDesea verificar otro texto\n\t\n1.-Si\n2.-No\n"); scanf("%d",opcion); }while(opcion<1 || opcion>2); }while(opcion==1); return 0; }

char inverso(char *arreglo) { // inicia funcion inverso int conta, longitud; //declaramos contadores y la variable que tendra el numero de caracteres

longitud=strlen(arreglo); //ulilizamos la funcion strlen para saber la longitud de la cadena

conta=longitud; //contador que va a hacer igual a longitud de la cadena while(conta >= 0){ //mientras contador sea mayor o igual que 0 printf("%c", arreglo[conta]); //imprima el caracter del ultimo al primero conta--; //va a ir en decremento }

return 0;}

Page 6: PROY 3: VERIFICACION DE PALINDROMOS

#include <stdio.h>#include <stdlib.h>#include <string.h> int palindromo(char * principio, char *

final){ if ((final - principio) < 2)return 1;elseif( (*principio) != (*final) )return 0;elsereturn palindromo(++principio, --final);}main(){char cadena[20];char * final;int cuenta; system("cls"); printf("¿Cual es tu Cadena de

caracteres? ");gets(cadena); final=cadena + strlen(cadena) - 1; if (palindromo(cadena, final))printf("Es palindroma \n");elseprintf("No es palindroma \n"); system("pause");printf ("Fin de la ejecucion.\n");return 0;}

Page 7: PROY 3: VERIFICACION DE PALINDROMOS

ITERATIVO RECURSIVO

Page 8: PROY 3: VERIFICACION DE PALINDROMOS

RECURSIVIDADITERATIVIDAD Se debe usar cuando

realmente se necesite y cuando el problema no se puede resolver facilmente con la iteracion.

  Se usan cuando no

se conoce un metodo para encontrar la solucion de forma exacta.

Cuando el numero de iteraciones es poco.

Page 9: PROY 3: VERIFICACION DE PALINDROMOS

VENTAJAS DESVENTAJAS

Soluciones simples y claras.

Eficientes Soluciones a

problemas complejos.

Sobrecarga relacionadas con las llamadas a los subalgoritmos, (una simple llamada puede generar un gran numero de llamadas recursivas).

La claridad no recompensa la sobrecarga.

Page 10: PROY 3: VERIFICACION DE PALINDROMOS

VENTAJAS DESVENTAJAS

La programacion es simple.

Es facilmente aplicable cuando los coeficientes son no lineales.

No se puede aplicar a cada sistema.

Page 11: PROY 3: VERIFICACION DE PALINDROMOS

Nosotros como equipo concluimos en que antes buscar una solucion para cierto problema, primero se tiene que analizar todas las posibles vias hacia esta solucion, buscando la manera mas eficiente y descartando las que nos compliquen llegar exitosamente a nuestro destino.

Page 12: PROY 3: VERIFICACION DE PALINDROMOS

www.lcc.uma.es/~lopez/modular/recursion/transp_recursion.pdf

Fundamentos de la programación. Joyanes Aguilar, Mc Graw Hill, 1988.

www.mty.itesm.mx/etie/deptos/m/ma95-843/.../l843-13.pdf

http://students.kennesaw.edu/~kjj6794/class/math3261/Iteration%20Methods.ppt