Anda di halaman 1dari 14

Algoritmos

Definicin Un algoritmo es un mtodo, descrito paso a paso para resolver agn problema y cumple con las siguientes caracterstcas: Precisin: los pasos se enuncian con precisin Unicidad: los resultados intermedios en cada paso quedan definidos de manera nica y solo dependen de las entradas y los resultados de los pasos anteriores. Carcter finito: El algoritmo se detiene despus de ejecutar un nmero finito de instrucciones Entrada: El algoritmo recibe una entrada Salida : El algoritmo produce una salida Generalidad : El algoritmo se aplica a un conjunto de entradas

Algoritmos
Uno de los algoritmos ms antiguos conocidos es el algoritmo de Euclides. El trmino algoritmo proviene del matemtico Muhammad ibn Musa al-Khwarizmi, que vivi aproximadamente entre los aos 780 y 850 d.C. en la actual nacin Iran. El describi la realizacin de operaciones elementales en el sistema de numeracin decimal. De al-Khwarizmi se obtuvo la derivacin algoritmo. Clasificacin de algoritmos Algoritmo determinista: en cada paso del algoritmo se determina de forma nica el siguiente paso. Algoritmo no determinista: deben decidir en cada paso de la ejecucin entre varias alternativas y agotarlas todas antes de encontrar la solucin. Todo algoritmo requiere una serie de recursos, algo que es fundamental considerar a la hora de implementarlos en una mquina. Estos recursos son principalmente: El tiempo: perodo transcurrido entre el inicio y la finalizacin del algoritmo. La memoria: la cantidad (la medida vara segn la mquina) que necesita el algoritmo para su ejecucin.

Algoritmos
Notacin Aunque a veces el lenguaje comn es adecuado para expresar un algoritmo, muchos investigadores en matemticas y ciencias de la computacin prefieren un pseudocdigo, por su precisin, estructura y universalidad. Recibe este nombre porque se asemeja al cdigo real de programas como Pascal o C.

Ejemplo1: El siguiente algoritmo verifica si el entero positivo m es primo. La salida es true si es primo o false si no lo es. Procedure es_primo(m) For i:=2 to m-1 do if m mod i = 0 then / i divide a m return(false) return(true) End es_primo

Algoritmos
Ejemplo2: El siguiente algoritmo determina el mximo de los nmeros a, c y b. Procedure max(a,b,c) x:=a if b > x then // si b es mayor que x, actualizar x x:=b if c > x then //si c es mayor que x, actualizar x x:=c return(x) End max

Algoritmos
Ejemplo3: Algoritmo para calcular el rea de un cuadrado 1. Inicio 2. Declarar variables y constantes A, L: real 3. Escribir (Introduzca la medida del lado: ) 4. Leer (L) 5. A L * L 6. Escribir (El rea del cuadrado es: , A) 7. Fin

Algoritmos
Ejemplo4: Algoritmo para calcular el rea de un crculo 1. Inicio 2. Declarar variables y constantes Ac, R: real -- PI: 3,1416 3. Escribir (Introduzca la medida del radio: ) 4. Leer (R) 5. Ac PI * (R * R) 6. Escribir (El rea del cuadrado es: , Ac) 7. Fin

Algoritmos
Analisis de Algoritmos

El analisis de algoritmos se refiere al proceso de estimacin del tiempo y el espacio necesario para ejecutar un algoritmo.
A continuacion se define lo que se entiende por el tiempo en el mejor de los casos, en el peor de los casos y en el caso promedio. Definicion : Si un algoritmo necesita T(n) unidades de tiempo para terminar en el mejor de los casos para una entrada de tamao n y T(n) = O(g(n)). Decimos que el tiempo necesario en el mejor de los casos es de orden a lo ms g(n) o que el tiempo requerido por el algoritmo en el peor de los casos es O(g(n)). Utilizando una notacin Theta, tendramos (g(n))

Algoritmos
Tabla: Funciones de crecimiento comunes

Forma Theta (1)


(lg lg n) (lg n) (n) (n lg n) (n2) (n3) (nm) (mn),m >= 2 (n!)

Nombre Constante
Log log Logaritmica Lineal N log n Cuadratica Cubica Polinomial Exponencial Factorial

Algoritmos
Teorema

Sean aknk+ ak-1 nk-1 + +a1n+a0 Un polinomio en n de grado k, donde cada ai es no negativo. Entonces aknk+ ak-1 nk-1 + +a1n+a0 Es (nk) Ejemplos:
Seleccionar una notacin Theta de la tabla anterior para las siguientes expresiones:

1. 6n+1 2. 6n3+12n2 + 1

Algoritmos
Determine una notacin Theta en terminos de n para el numero de veces que se ejecuta la expresin X:=X +1 1. For i:=1 to n do 2. For j := 1 to i do 3. X:=X+1

Algoritmos
Anlisis de algoritmos de ordenamiento bsqueda

El mtodo de ordenamiento Burbuja 1. Algoritmo burbuja 2. Declarar variables Aux, j, i 3. Inicio 4. Desde i = 1 hasta n-1 5. Desde j = 1 hasta j = n-1 6. Si B[j] > B[j+1] entonces 7. Aux = B[j] 8. B[i] = B[j+1] 9. B[j+1] = Aux 10. fin si 11. Fin desde 12.Fin burbuja

Algoritmos
Anlisis de algoritmos de ordenamiento bsqueda

El mtodo de Busqueda lineal 1. Algoritmo busqueda_lineal 2. Declarar variables encontro,i,t,n 3. Inicio 4. encontro = falso 5. Leer (t) 6. Desde i = 1 hasta n hacer 7. Si A[i] = t entonces 8. encontro = verdadero 9. Fin si 10. Fin desde 11.Fin busqueda_lineal

Algoritmos
El mtodo de Busqueda binaria 1. Algoritmo busqueda_binaria 2. Declarar variables Bajo, Alto, Central, k 3. Inicio 4. Leer(k) 5. Bajo = 1 6. Alto = N 7. Central = Ent((Bajo+Alto)/2) Mientras (Bajo <= Alto) y (X[Central] <> k ) hacer 1. Si k < X[central] entonces 2. Alto = Central -1 3. Si no 4. Bajo = Central + 1 5. Fin si 6. Central = Ent((Bajo+Alto)/2) 7. Fin mientras 8. Fin busqueda_binaria

Algoritmos
Anlisis

Para el caso del metodo de la burbuja este tiene un tiempo de (n2), dado que para cada instancia del ciclo ms exterior se hacen n en el segundo ciclo. Este metodo es muy ineficiente.
Para la bisqueda lineal en el mejor de los casos se encuentra al inicio y en el peor de los casos al final que seria (n). Se toma el promedio (n+1)/2 En el caso de la bsqueda binaria si hacemos n = 7 y n+1 = 8. Tenemos que el arreglo se debe partir 3 veces hasta alcanzar la solucin, esto en trminos matemticos se expresa como 3 = Log2(8) = 23 = 8. En terminos, generales para N tenemos K = Log2(N+1) = 2k = N+1 Para este mtodo el mejor de los casos es 1 comparacin, el peor de los casos es Log2(N+1) y un caso promedio Log2(N+1)/2

Anda mungkin juga menyukai