EduardoMartinez Control4

Descargar como docx, pdf o txt
Descargar como docx, pdf o txt
Está en la página 1de 3

Introducción a los Algoritmos

Eduardo Martínez V.

Análisis de Algoritmos

Instituto IACC

10-08-2020
1. Se dice que una palabra es palíndroma cuando se lee de la misma forma hacia
adelante y hacia atrás. Por ejemplo: oso, ara, arenera, anilina, radar o reconocer.
Cree un algoritmo, en pseudocódigo, que reconozca cuándo una palabra es
palíndroma.

Función palindromo
Var palabraoriginal [], palabrainvertida[] – Crear variables de tipo arreglo
Begin
Lee palabraoriginal
For (i=largo(palabraoriginal), i = 0, i--)
For (j=0; j < largo(palabraoriginal), j++)
Palabrainvertida[j] <= palabraoriginal[i];-- Asignacion
End for;

End for;

If (palabrainvertida = palabraoriginal) then


Escribir “ES PALINDROMO”
Else
Escribir “NO ES PALINDROMO”
End if;
End

a) ¿Qué complejidad tiene su algoritmo? ¿Por qué?


Inicialmente es de complejidad temporal, ya que dependerá de la palabra
ingresada dentro del arreglo lo que permitirá la ejecución del algoritmo, el
tiempo de esto y eficiencia.
Entonces, tenemos que asignamos un valor en caracteres no numéricos a la
cadena, por lo que se debe recorrer la cadena con la palabra original desde el
final, por cada caracter encontrado éste es asignado a una segunda cadena
recorriéndola, en este caso, desde el inicio o primer elemento de la Cadena.
Por cada asignación, es una operación elemental y para ello dependemos de la
palabra seleccionada. Si usamos la palabra OSO, serán 3 asignaciones, 3
incrementos (primera cadena) y 3 decrementos (segunda cadena). Luego,
tenemos una comparación (consideramos el IF, no el ELSE)
Considerando que podemos poner cualquier palabra, la complejidad ya no es
solo temporal y plana, por lo que pasaría a ser de una complejidad cuadratica,
aumentando solo la cantidad de elementos en la cadena a recorrer, pero no altera
las comparaciones o el ciclo propiamente tal.
b) ¿Es posible mejorar su rendimiento? ¿Cómo?
Se puede mejorar el rendimiento si en vez de letras usamos números. Otra
alternativa es comparar en un solo ciclo las variables i y j (dentro de un mismo
ciclo FOR) iniciando una en 0 y la otra desde el fin de la palabra. Si ambas son
iguales, sigue el recorrido de la palabra hasta que llegue al centro (letra central
de la palabra) o la última comparación sea igual. Por ejemplo, si tengo la palabra
ROTOR, la primera y ultima letra de la palabra es la misma, por lo que al
compararelas y detectar esa igualdad, las saco de la palabra, quedándome una
nueva palabra OTO, comparo nuevamente y al ser iguales las elimino, faltando
solo la letra T. Entonces, podríamos comparar y quitar elementos a modo de
desapilacion. Si no me da ninguna comparativa distinta entonces la palabra seria
palindromo

c) ¿Cómo sería un algoritmo exponencial para calcular esto?


Quizas la alternativa sea ir sumando letras a la palabra para detectar si sigue
siendo palindroma y manteniéndolo en un bucle hasta que se cumpla cierta
condición dada por el programador (por ejemplo una condición de salida).
Otra opción es agregar instrucciones adicionales de acuerdo a ciertas
condiciones que se entreguen , por ejemplo, si es palíndromo, haga otra
instrucción o realice una comparación con un IF y realizar mas acciones.

2. Dado el algoritmo

a) ¿Qué complejidad tiene este algoritmo? ¿Es lineal, cuadrático, logarítmico o


exponencial? ¿Por qué?

Es de complejidad cuadrática, ya que un ciclo dentro de otro aumenta al


cuadrado las veces de ejecución de una instrucción quedando de la forma n^2 +1
(parábola en el plano)
Consideramos que es solo una asignación o instrucción que existe dentro de
ambos bucles

También podría gustarte

pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy