Está en la página 1de 10

INFORME 2 ALGORITMOS

CARLOS ANDRES GUARIN DIAZ

RODOLFO LOPEZ GARIBELLO

UNIVERSIDAD DEL TOLIMA


INGENIERIA DE SISTEMAS
MATEMATICAS DISCRETAS II
IBAGUE
SEPTIEMBRE, 2020
1. ¿Qué es un Algoritmo? ¿Cuáles son sus principales características?
Se denomina algoritmo a un grupo finito de operaciones organizadas de manera
lógica y ordenada que permite solucionar un determinado problema. Se trata de
una serie de instrucciones o reglas establecidas que, por medio de una sucesión
de pasos, permiten arribar a un resultado o solución. Los algoritmos son el objeto
de estudio de la algoritmia.
Los algoritmos pueden ser expresados de muchas maneras, incluyendo el
lenguaje natural, pseudocódigo, diagramas de flujo y lenguajes de programación,
entre otros. Las descripciones en lenguaje natural tienden a ser ambiguas y
extensas. El usar pseudocódigo y diagramas de flujo evita muchas ambigüedades
del lenguaje natural. Dichas expresiones son formas más estructuradas para
representar algoritmos; no obstante, los algoritmos son independientes de los
lenguajes de programación. En cada problema el algoritmo puede escribirse y
luego ejecutarse en un lenguaje de diferente programación. El algoritmo es la
infraestructura de cualquier solución, escrita luego en cualquier lenguaje de
programación.
Los algoritmos se pueden clasificar en cuatro tipos:
Algoritmo computacional: Es un algoritmo que puede ser ejecutado en una
computadora. Ejemplo: Fórmula aplicada para un cálculo de la raíz cuadrada de
un valor x.
Algoritmo no computacional: Es un algoritmo que no requiere de una computadora
para ser ejecutado. Ejemplo: Instalación de un equipo de sonido.
Algoritmo cualitativo: Un algoritmo es cualitativo cuando en sus pasos o
instrucciones no están involucrados cálculos numéricos. Ejemplos: Las
instrucciones para desarrollar una actividad física, encontrar un tesoro.
Algoritmo cuantitativo: Un algoritmo es cuantitativo cuando en sus pasos o
instrucciones involucran cálculos numéricos. Ejemplo: Solución de una ecuación
de segundo grado.

Las características fundamentales que debe cumplir todo algoritmo


son:
Un algoritmo debe ser preciso: tiene que indicar el orden de realización
de cada paso.
Un algoritmo debe estar definido: Si se sigue un algoritmo dos veces, se
debe obtener el mismo resultado cada vez.
Un algoritmo debe ser finito: el algoritmo se debe terminar en algún
momento; o sea, debe tener un número finito de pasos.
Un algoritmo debe ser legible: El texto que lo describe debe ser claro, tal
que permita entenderlo y leerlo fácilmente.
Un algoritmo debe definir tres partes: Entrada, Proceso y Salida.

2. Describir un algoritmo para encontrar el máximo valor de una


sucesión finita de números enteros.
Algoritmo buscar Mayor
Dimension datos[100]
Escribir 'Ingrese la cantidad de datos (de 2 a 100)'
Leer n
Para i<-1 Hasta n Hacer
Escribir 'Ingrese dato ',i,':'
Leer datos(i)
FinPara
Si datos[1] > datos[2] Entonces
may1<-datos[1]
may2<-datos[2]
SiNo
may1<-datos[2]
may2 <-datos[1]
FinSi
Escribir 'El mayor es:',may1
FinProceso

3. ¿Qué es un pseudocódigo y cuáles son sus ventajas sobre el texto


común al escribir el algoritmo?
El pseudocódigo es una forma de expresar los distintos pasos que va a realizar un
programa, de la forma más parecida a un lenguaje de programación. Su principal
función es la de representar por pasos la solución a un problema o algoritmo, de la
forma más detallada posible, utilizando un lenguaje cercano al de programación.
El pseudocódigo no puede ejecutarse en un ordenador ya que entonces dejaría de
ser pseudocódigo, como su propio nombre indica, se trata de un código falso
(pseudo = falso), es un código escrito para que lo entienda el ser humano y no la
máquina.
Las ventajas del seudocódigo en comparación con el texto normal son que el
seudocódigo tiene más precisión, estructura y universalidad. Con frecuencia se
convierte de manera directa en el código de computadora.

4. La Conjetura de Goldbach establece que todo número par mayor que 2


es la suma de dos números primos.
var LIMITE=200;
var primos =[];
for (var i=2;i<LIMITE;i++) {
primos[i]=1;
}
for (var i=2;i<LIMITE;i++) {
for (var j=2*i;j<LIMITE;j+=i) {
primos[j]=0;
}
}
for (var n=2; n<LIMITE; n+=2) {
for (var i=2; i<LIMITE;i++)
{
if (primos[i]) {
if (primos[n-i]) {
alert (n+"= "+i+"+"+(n-i));
break;
}
}
}
}

5. Escriba un algoritmo que regrese el valor más pequeño en la sucesión


s1, s2, s3, … , sn

Algoritmo buscar Menor


Dimension datos[100]
Escribir 'Ingrese la cantidad de datos (de 2 a 100)'
Leer n
Para i<-1 Hasta n Hacer
Escribir 'Ingrese dato ',i,':'
Leer datos(i)
FinPara
Si datos[1] < datos[2] Entonces
men1>-datos[1]
men2>-datos[2]
SiNo
men1>-datos[2]
men2>-datos[1]
FinSi
Escribir 'El menor es:',men1
FinProceso

6. Dentro de las aplicaciones de los algoritmos están los de búsqueda.


¿Qué es una búsqueda de texto?
Describa en palabras un algoritmo que resuelva el problema de
búsqueda de texto.

Un algoritmo de búsqueda es un conjunto de instrucciones que están diseñadas


para localizar un elemento con ciertas propiedades dentro de una estructura de
datos; por ejemplo, ubicar el registro correspondiente a cierta persona en una
base de datos.
Entrada: p (indexada de 1 a m), m, t (indexada de 1 a n), n
Salida: i
busca_texto(p, m, t, n){
for i = 1 to n − m + 1{
j=1
// i es el índice en t del primer carácter de la
// subcadena para comparar con p, y j es el índice
// en p
// el ciclo “while” compara t i … t i+m −1 y p1 … pm

while ( t i+ j−1 =¿ p j){


j=j+1
if(j > m)
return i
}
}
return 0
}

7. Dado el siguiente algoritmo, hacer el seguimiento para la entrada 34,


20, 144, 55
Primero 20 se inserta en
34
Como 20 < 34, 34 debe moverse una posición a la derecha
34
Ahora se inserta 20
20 34
Como 144 > 34, se inserta justo a la derecha de 34
20 34 144
Como 55 < 144, 144 debe moverse una posición a la derecha
20 34 144
Como 55 > 34, se inserta 55
20 34 5 144
5
Ahora la sucesión está ordenada

8. ¿A qué se refiere el “análisis del algoritmo”? ¿Qué es el tiempo del


peor caso de un algoritmo? ¿Qué es el tiempo del mejor caso de un
algoritmo? ¿Qué es el tiempo del caso promedio de un algoritmo?
El análisis de un algoritmo se refiere al proceso de derivar estimaciones del
tiempo y el espacio necesario para ejecutarlo. En esta sección se aborda el
problema de estimar el tiempo requerido para ejecutar el algoritmo.
El tiempo necesario para ejecutar un algoritmo es una función de la entrada. Por lo
general, es difícil obtener una fórmula explícita para esta función, y nos
conformamos con menos. En lugar de manejar directamente los datos de entrada,
se usan parámetros que caracterizan el tamaño de la entrada. Por ejemplo, si la
entrada es un conjunto que contiene n elementos, se diría que el tamaño de la
entrada es n. Tal vez se quiera conocer el tiempo mínimo necesario para ejecutar
el algoritmo entre todas las entradas de tamaño n. Este tiempo se llama tiempo
del mejor caso para entradas de tamaño n.
También puede pedirse el tiempo máximo necesario para ejecutar el algoritmo
entre todas las entradas de tamaño n. Este tiempo se llama tiempo del peor caso
para entradas de tamaño n.
Otro caso importante es el tiempo del caso promedio, es decir, el tiempo
necesario para ejecutar el algoritmo para un conjunto finito de entradas todas de
tamaño n.

9. Defina f (n) = O(g(n)). ¿Cómo se llama esta notación?


- Sean f y g dos funciones con dominio {1, 2, 3, . . .}. Se escribe
f (n) = O(g(n))
y se dice que f(n) es del orden a lo más g(n), o f(n) es O mayúscula de g(n) si
existe una constante positiva C1 tal que:
|f (n)| ≤ C1|g(n)|

10. Defina f (n) = Ω(g(n)). ¿Cómo se llama esta notación?


- para todos los enteros positivos n, excepto un número finito de ellos.
Se escribe:
f (n) = (g(n))
y se dice que f(n) es del orden al menos g(n) o f(n) es omega de g(n) si existe
una constante positiva C2 tal que:
|f (n)| ≥ C2 |g(n)|

11. Defina f (n) = Θ(g(n)). ¿Cómo se llama esta notación?


- para todos los enteros positivos n, excepto un número finito de ellos.
Se escribe
f (n) = Θ (g(n))
y se dice que f(n) es del orden g(n) o f(n) es theta de g(n) si f(n) = O(g(n)) y f(n)
= Θ (g(n)).

12. Seleccione una notación theta de acuerdo a la tabla dada, para cada
una de las siguientes expresiones:
a. 6𝑛 + 1
Θ (n) lineal

b. 3𝑛2 + 2𝑛 𝑙𝑜𝑔 𝑛
Θ(n2) Cuadrática
c. 2+4+6+…+2 𝑛
Θ(n2) Cuadrática

13. ¿Qué es un algoritmo recursivo? Explique un ejemplo.


Una función recursiva (seudocódigo) es una función que se invoca a sí misma. Un
algoritmo recursivo es un algoritmo que contiene una función recursiva. La
recursión es una forma poderosa, elegante y natural de resolver una clase amplia
de problemas.
Un problema de esta clase se resuelve mediante una técnica de divide y vencerás
en la que el problema se descompone en problemas del mismo tipo que el
problema original. Cada subproblema, a su vez, se descompone aún más hasta
que el proceso produce subproblemas que se pueden resolver de manera directa.
Por último, las soluciones de los subproblemas se combinan para obtener una
solución del problema original.
El ejemplo más típico de algoritmo recursivo es el de una función para calcular el
factorial de un número. El factorial de un número es el resultado de multiplicar
dicho número por todos los precedentes, hasta llegar a 1. Por ejemplo, factorial(3)
= 3 * 2 * 1.
Si observamos que el factorial de un número es equivalente al producto de dicho
número por el factorial del número precedente:
factorial(3) = 3 * factorial(2)
podemos plantear una implementación recursiva:
función factorial(n)
si n = 1
devolver 1
sino
devolver n * factorial(n – 1)
fin si
fin función
En este caso, la sentencia
si n = 1 devolver 1
es la condición de salida o caso base que evita que la función se llame a sí misma
indefinidamente.

14. Use las fórmulas para escribir un algoritmo recursivo que calcule:
Entrada: n
Salida: 2 + 4 + · · · + 2n
1. suma(s, n) {
2. if (n == 1)
3. return 2
4. return suma(n − 1) + 2n
5. }

15. Escriba un algoritmo recursivo para encontrar el máximo de una


sucesión finita de números.
Entrada: La sucesión s1, . . . , sn y la longitud n de la sucesión
Salida: El valor máximo en la sucesión
encuentra_máx(s, n) {
if(n == 1)
return s1
x = encuentra_máx(s, n − 1)
if(x > sn
)
return x
else
return sn
}

También podría gustarte