Está en la página 1de 7

Control Semana 4

ANÁLISIS DE ALGORITMOS
PREGUNTAS:

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.

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

b) ¿Es posible mejorar su rendimiento? ¿Cómo?

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

2. Suponga que tiene un algoritmo con un ciclo “for” anidado, es decir un ciclo “for” dentro de un
ciclo “for”, como muestra el ejemplo:

a) ¿Qué complejidad tiene este algoritmo?

b) ¿Es lineal, cuadrático, logarítmico o exponencial? ¿Por qué?


Desarrollo

1.- De acuerdo con el enunciado de la pregunta de esta semana, partiremos definiendo que
es un Palíndromo.

La Real Academia de la Lengua española define un palíndromo como: “Palabra o frase


cuyas letras están dispuestas de tal manera que resulta la misma leída de izquierda a
derecha que de derecha a izquierda”.
Es por eso que el Pseudocódigo presentado más abajo será expuesto y demostrado
con 2 ejemplos.

El programa PSelnt ocupamos funciones y comandos que son similares a otros


lenguajes, como las siguientes:

Longitud: Indica la cantidad de caracteres de la cadena S

Subcadena: Retorna una nueva cadena que consiste en la parte de la cadena S que va
desde la posición X hasta la posición Y (incluyendo ambos extremos). Las posiciones
utilizan la misma base que los arreglos, por lo que la primera letra será la 0 o la 1 de
acuerdo al perfil del lenguaje utilizado.

Para: Esta instrucción ubicada al costado derecho del panel de programación ejecuta
una secuencia de instrucciones un número determinado de veces.

Para <variable> <- <inicial> Hasta <final> Con Paso <paso> Hacer

<instrucciones>

FinPara

Al ingresar al bloque, la variable <variable> recibe el valor <inicial> y se ejecuta la secuencia de


instrucciones que forma el cuerpo del ciclo. Luego se incrementa la variable <variable> en
<paso> unidades y se evalúa si el valor almacenado en <variable> superó al valor <final>. Si
esto es falso se repite hasta que <variable> supere a <final>. Si se omite la cláusula Con Paso
<paso>, la variable <variable> se incrementará en 1.
PSEUDOCÓDIGO

La demostración del funcionamiento del pseudocódigo es el siguiente, donde primero se


ingresa un apalabra NO cumple, de ante mano, con la condición de ser palíndroma, puesto que
lo que deseamos es cerciorarnos del correcto funcionamiento.

En este ejemplo ingresamos una palabra que, SI cumple con la condición de ser
palíndroma, para de igual manera que en el ejemplo anterior, poder cerciorarnos del
correcto funcionamiento del programa

DEMOSTRACIÓN

Para ambos casos se demuestra el correcto funcionamiento del Pseudocódigo digitado


en el programa PSelnt.
a.- La complejidad de este programa está dada por lo siguiente:

Línea 4 = t(a)
Línea 7 = 5*t(c)
Línea 8 = t(c)+ t(c)
Línea 11= t(c)+ t(c)

Suma de las líneas:

t(a)+ 5t(c) + t(c)+ t(c)+ t(c) + t(c)


9 t(c)+ t(a), Como t(c) y t(a) son operaciones elementales entonces el
resultado es:
10 OE

Lo que nos interesa saber en el análisis de complejidades es el hecho de que es


lo que pasa con la función contadora de instrucciones a medida que crece la
entrada “n” de nuestro programa.
Línea 4 muestra la asignación de una cadena de caracteres no superior a 5
unidades.
Línea 7 una comparación de las variables de entrada e invertida
Línea 8 una operación aritmética
Línea 11 una comparación.

b.- Todo algoritmo es perfectible, ya que en el cibermundo virtual, podemos expresar


un problema con mas de una solución, eventualmente podríamos generar
subrutinas que fueran llamadas si y solo si fuera necesario ocuparlas, o haciendo
el programa fuera lo mas lineal posible, evitando programar estructuras de control
como un FOR o un WHILE, así evitamos que un ciclo se repita cierta cantidad de
veces y podemos obtener un resultado más directo, es decir, es mejor tener una
complejidad constante antes que una complejidad cuadrática o exponencial, que
es considerada la mas mala de las categorías.
c.- Si este algoritmo palíndromo fuese exponencial este tendría que buscar la palabra
en un listado que no sería determinada, teniendo el algoritmo que buscar en cada
una de ellas, comparar y seguir con la siguiente palabras, hasta encontrarla o
llegar a final de ella y determinar que la palabra no se encuentra en el listado.

2.- Los bucles en general son de la forma

f(n)=n

al ser un bucle anidado este es considerado como un bucle dentro de otro o lo que
matemáticamente sería un:

f(n)= n*n
f(n)= n²

a.- f(n)=T(n)=n²

b.- Basado en lo anterior podemos decir que, este algoritmo de bucle for anidado o
de “for” dentro de “for” es del tipo cuadrático, o seas que el ciclo que primero
aparece se ejecuta una cantidad “n” de veces para los “i” menores que “a”, y
el segundo “for” se ejecuta mientras “j” sea mayor a cero.
Bibliografía

[Haga triple clic en cualquier parte de este párrafo para escribir la primera referencia

bibliográfica.]

Instrucciones para la sección de las citas bibliográficas:


Escriba la bibliografía aquí en orden alfabético (empezando por el apellido del primer autor o, de
no haber autor, por la primera palabra del título). Esta página ya está formateada con sangrías
francesas. Incluya sólo las citas bibliográficas a las que haya hecho referencia en su trabajo y
asegúrese de incluir todas las citas bibliográficas a las que se haya referido en el mismo.

Ejemplos de un artículo:

Apellido, A. A., Apellido, B. B., y Apellido, C. C. (año). Título del artículo específico. Título
de la Revista, número de la revista, número de página.
https://doi.org/xx.xxxxxxxxxx

Lee, H. W. (2005). Los factores que influyen en los expatriados. Journal of American Academy of
Business, 6(2), 273-279.

Osorio-Delgado, M. A., Henao-Tamayo, L. J., Velásquez-Cock, J. A., Cañas-Gutiérrez, A. I.,


Restrepo-Múnera, L. M., Gañán-Rojo, P. F., Zuluaga-Gallego, R. O., Ortiz-Trujillo, I C. y
Castro-Herazo, C. I. (2017). Aplicaciones biomédicas de biomateriales poliméricos.
DYNA, 84(201), 241-252. https://doi.org/10.15446/dyna.v84n201.60466

Nota: Si el artículo de la revista no tiene un DOI y proviene de una base de datos de investigación académica,
finalice la referencia después del rango de páginas. No incluya información de la base de datos en la
referencia. La referencia en este caso es la misma que para un artículo de revista impresa. Si el artículo de la
revista no tiene un DOI, pero tiene una URL que resolverá para los lectores (por ejemplo, es de una revista en
línea que no forma parte de una base de datos), incluya la URL del artículo al final de la referencia, en vez del
DOI.

También podría gustarte