1
2013
Corporación Universitaria Del Caribe CECAR
Facultad de Ingeniería Ingeniería De Sistemas
Análisis De Algoritmos
DOCENTE
Guillermo Hernández
ESTUDIANTE
Jose Rios
2
Tabla de contenido Bibliografía .................................................................................................................................... 4
1. Análisis de Algoritmos ....................................................................................................... 5
1.1. Algoritmos De Búsquedas ............................................................................................. 5
1.1.1. Búsqueda Secuencial ................................................................................................. 5
1.1.1.1. Definición: ............................................................................................................. 5
1.1.1.2. Código:................................................................................................................... 5
1.1.1.3. Mejor Caso ............................................................................................................ 5
1.1.1.3.1. Definición .............................................................................................................. 5
1.1.1.3.2. Conteo de OE ......................................................................................................... 6
1.1.1.4. Peor Casos ............................................................................................................. 6
1.1.1.4.1. Definición .............................................................................................................. 6
1.1.1.4.2. Conteo de OE ......................................................................................................... 6
1.1.1.5. Pasos promedio ..................................................................................................... 7
1.1.1.6. Grafica Mejor casos vs Peor caso .......................................................................... 8
1.1.1.7. Teoría vs Practica del conteo de OE ...................................................................... 8
1.1.2. Búsqueda Binaria ....................................................................................................... 8
1.1.2.1. Definición .............................................................................................................. 8
1.1.2.2. Código .................................................................................................................... 9
1.1.2.3. Mejor Caso ............................................................................................................ 9
1.1.2.3.1. Definición .............................................................................................................. 9
1.1.2.3.2. Conteo de OE ....................................................................................................... 10
1.1.2.4. Peor Caso ............................................................................................................. 11
1.1.2.4.1. Definición ............................................................................................................ 11
1.1.2.4.2. Información para el peor caso ............................................................................ 11
1.1.2.4.3. Conteo de OE ....................................................................................................... 12
1.1.2.4.4. Teoría vs Practica Del Conteo OE ........................................................................ 12
1.1.2.4.5. Grafica Mejor Vs Peor Caso(Tiempo Ejecucion) .................................................. 13
1.1.3. Método Transponer ................................................................................................ 13
1.1.3.1. Definición ............................................................................................................ 13
1.1.3.2. Código .................................................................................................................. 14
Primera forma ......................................................................................................................... 14
3
Segunda forma ........................................................................................................................ 14
1.1.3.3. Evaluar casos ....................................................................................................... 14
1.1.3.4. Grados de complejidad ....................................................................................... 15
1.1.3.4.1. Primera forma ..................................................................................................... 15
1.1.3.4.2. Segunda Forma .................................................................................................... 15
1.1.3.4.3. Teoría vs Practica conteo OE ............................................................................... 15
1.1.3.4.4. Grafica Primer Método Vs Segundo Método ...................................................... 16
4
Bibliografía
UChile. (s.f.). Recuperado el 20 de Septiembre de 2013, de
http://users.dcc.uchile.cl/~rbaeza/inf/algoritmia.pdf
wikibooks. (s.f.). wikibooks. Recuperado el 19 de Septiembre de 3013, de wikibooks:
http://es.wikibooks.org/wiki/%C3%81lgebra_Lineal/Transpuesta_de_una_matriz
5
1. Análisis de Algoritmos
1.1. Algoritmos De Búsquedas
1.1.1. Búsqueda Secuencial
1.1.1.1. Definición: El método de búsqueda secuencial es la técnica más sencilla de buscar un
elemento en un vector, funciona de la siguiente manera; recorrer el vector
posición por posición e ir comparando con el valor de cada una de ellas hasta,
que encuentre el elemento buscado o hasta que vector sea recorrido totalmente.
1.1.1.2. Código:
1.1.1.3. Mejor Caso
1.1.1.3.1. Definición Para el método de búsqueda secuencial el mejor caso se presenta cuando el
elementos a buscar se encuentre alojado en la posición [0] del vector; es decir
que el datos este en la primera casilla de arreglo esto que conlleva que el ciclo
repetitivo solo hará una sola iteración ya que la instrucción if evalúa que el
después que se halle el dato en el índice [0] el ifhace un returnque evita que el
ciclo forhaga más de una iteración.
Ejemplo: queremos buscar a 1:
Datos 1 2 4 5 6 7 8 9 9 10
Índice 0 1 2 3 4 5 6 7 8 9
6
1.1.1.3.2. Conteo de OE Para el conteo de operaciones elementales de método del búsqueda
secuencial en su mejor caso se define tal y como se planteó en su definición y
dicho conteo será subrayado con color rojo todas y cada una de las OE que se
hagan en el algoritmo implementado en lenguaje Java.
Nota: Las OE que salgan subrayadas son las que te contaran en cuenta para
dicho conteo, si una instrucción sale doblemente subrayada es por sé hacer
dos OE en ella.
línea OE
1 4 2 3
3 1 Total 8 OE
1.1.1.4. Peor Casos
1.1.1.4.1. Definición Para el peor caso del método de búsqueda secuencia se puede presentar en
dosocasiones que el elemento que deseamos hallar esté en la última posición
del vector o que dicho elemento no ese encuentre en el arreglo; en ambos
casos el método tiene que recorrer todos las posiciones del arreglo es decir;
desde la primer hasta el último índice.
Ejemplo: queremos buscar a 10:
Datos 1 2 4 5 6 7 8 9 9 10
Índice 0 1 2 3 4 5 6 7 8 9
1.1.1.4.2. Conteo de OE Para el conteo de operaciones elementales en este caso se realiza de manera
similar al caso anterior.
7
Para este hacer una prueba a tomaremos el caso en que el elemento a buscar
se encuentre la última casilla de vector.
Nota: Las OE que salgan subrayadas son las que te contaran en cuenta para
dicho conteo, si una instrucción sale doblemente subrayada es por sé hacer
dos OE en ella.
Las OE que se realizan en las líneas 1 y 2 se ejecutan n veces entonces se
multiplican por n siendon el tamaño de los datos de entrada. La OE de la
línea 3 solo se realiza unas ves y es cuando se encuentra el elemento para
este caso en la última posición.
1.1.1.5. Pasos promedio El caso promedio o también llamado caso aleatorios no se puede hacer un coteo
de operaciones elementales exacto ya que el elemento a encontrar puede estar el
cualquier índice del vector; entonces para dar solución a este altercado se divide
el número datos de entradas del vector entre dos
vector[N/2]
línea OE
1 4n 2 3N 3 1 Total 7n+1 OE
8
1.1.1.6. Grafica Mejor casos vs Peor caso
1.1.1.7. Teoría vs Practica del conteo de OE
Datos De Entrada = 100,000
Caso Teoría Practica (Programa) Mejor 8 0 ut Peor (7*n)+1=700,001 4 ut
Conclusiones:De acuerdo con los pruebas realizadas entre la teoría de
conteo de operaciones elementales y el tiempo de ejecución del mismo
algoritmo implementado en un programa en lenguaje Java; puedo concluir
que de la teoría y práctica arrojan resultados totalmente distintos y se puede
apreciar el tabla de la (teoría vs práctica)
1.1.2. Búsqueda Binaria
1.1.2.1. Definición El método de búsqueda binaria es un excelente forma de buscar elementos
dentro de un vector, este algoritmos de búsqueda requiere que le vector se
encuentre ordenado previamente, se llama de búsqueda binaria por que el
algoritmo divide en dos y compra los elementos que se encuentren en la posición
de centro de arreglo.Esta búsqueda utiliza un método de “divide y vencerás” para
localizar el valor deseado
0
1
2
3
4
5
6
7
8
9
10
0 2 4 6 8 10
OE Mejor Caso
OE Peor Caso
9
1.1.2.2. Código
1.1.2.3. Mejor Caso
1.1.2.3.1. Definición Para el conteo de operaciones elementales del método de la búsqueda binaria
en su mejor caso se define de la siguiente manera; lo ideal es que en el datos
se halle en la posición centro del vector
Nota: Las OE que salgan subrayadas son las que te contaran en cuenta para
dicho conteo, si una instrucción sale doblemente subrayada es por sé hacer
dos OE en ella.
10
1.1.2.3.2. Conteo de OE Haciendo las operaciones de las primeras 5 filas con un vector de 10 posiciones
quedan de la siguiente manera
K=6;
cen=9/2 =4,5 peso como la variable cen es de tipo entero no se toman los
decimales entonces cen =4
Datos 1 2 4 5 6 7 8 9 9 10
Índice 0 1 2 3 4 5 6 7 8 9
Exactamente se van a cumplir la OE que están subrayadas en la imagen anterior
Línea 0E
1 1 2 1 3 2 4 3 5 4 10 2 11 1 Totales OE 140E
11
1.1.2.4. Peor Caso
1.1.2.4.1. Definición La definición de peor casos para el algoritmo de búsqueda binaria se presenta
cuando el elemento al que queramos encontrar no se encuentre almacenado o
este en algunos de los dos extremos la lista; esto conlleva a que el método
dividirá el vector varias veces y hará comparaciones en vanohasta la última
iteración del ciclo while.
1.1.2.4.2. Información para el peor caso
(UChile)
(UChile)
12
1.1.2.4.3. Conteo de OE Total OE=
1.1.2.4.4. Teoría vs Practica Del Conteo OE
Datos De Entrada = 100,000
Caso Teoría Practica (Programa)
Mejor 14 0 ut
Peor =325.58 0 ut
Según los resultados del tiempo de ejecución en el mejor caso y el peor caso
con el número de entrada = 100,00 No logra que programa calcule ninguna
unidad de tiempo, eso se debe a la misma eficiencia del algoritmo de búsqueda
13
1.1.2.4.5. Grafica Mejor Vs Peor Caso(Tiempo Ejecucion)
Podemos observar que las líneas que presentan el mejor y el peor caso para el
algoritmo de búsqueda binaria toma un valor de 0 ut esto sucede porque dicho
algoritmos no depende de los todos de entrada simpe y cuando el vector este
ordenado.
Nota:en tiempo de ejecución fue calculado con diferentes números de datos
de entrada, probado en el mismo programa, el mimos equipo y en situaciones
muy parecidas en cambios casos.
1.1.3. Método Transponer
1.1.3.1. Definición
Transpuesta de una matriz m x n, es la matriz n x m cuyas columnas son los
renglones de A en el mismo orden.(wikibooks)
En otras palabras se intercambia las los valores de las columnas por los de las filas
una matriz Ejemplo:sea B la matriz original y sea la matriz transpuesta
0
0.1
0.2
0.3
0.4
0.5
0.6
0.7
0.8
0.9
1
0 200000 400000 600000 800000 1000000 1200000
Mejor Caso
Peor Caso
14
1.1.3.2. Código
Primera forma
Segunda forma
1.1.3.3. Evaluar casos Como se definió anterior mente el método transponer (); transpone los datos de
una matriz ojo como en el cuerpo de ese método no tienes instrucciones de
condiciones ifentonces esto quiere decir que en el algoritmos de trasposición
NOaplican los casos y estos son (mejor caso), (caso promedio) y (peor caso) , la
explicación de ellos es que el único objetivo de método es transponer la matriz
dependiendo entonces del N que es el número de datos de entrada que en esta
implementación hecha en lenguaje JAVA, N= matriz.length.
Conclusión: el grada de complejidad de penderá de numero de OE del métodos
por el tamaño de datos de entrada.
15
1.1.3.4. Grados de complejidad
1.1.3.4.1. Primera forma Primera implementación de este método más eficiente que la segunda forma.
La diferencia de estos dos métodos está en la variable j, miremos la
codificación del forinterno “for (int j = i+1; j <matriz.length; j++) {” notamos
que la variable j toma el mismo valor i pero se le suma 1 esto quiere decir que
j siempre a tomar tener 1 valor más que i en 1 y realizar por cada un vez
menos por cada iteración del ciclo externo.
Línea OE
1 5(N-1) 2 5 (N-1)*(N-1) 3 3(N-1) *(N-1) 4 5(N-1) *(N-1) 5 3(N-1) *(N-1)
Total OE=
1.1.3.4.2. Segunda Forma Este algoritmos es más ineficiente con respecto al anterior su explicación es la
siguiente la imagen de código exenten foranidados entonces se presenta la
siguiente situación el for el extremo se ejecuta veces y le interno se
ejecutara (
Conteo de OE:
Línea OE
1 5N 2 5 3 4 4 7 5 4
Total OE=
1.1.3.4.3. Teoría vs Practica conteo OE
Datos De Entrada = 500
Método Teoría Practica (Programa) Primero 3,986,479 7 ut Segundo 4,982,515 13 ut
Conclusión: Si comparamos la teoría con la práctica al igual que el método de
búsqueda secuencial nos podemos apreciar que los resultados son totalmente
diferentes.
16
Pero si vamos un poco más allá de la situación y comparamos los resultados
entre los dos métodos (primero y segundo) nos damos cuenta que tanto en
operaciones elementales como en tiempo de ejecución el método 1 es más
eficiente que el 2 con el mismo número de datos de entrada y solucionado el
mismo problema(transponer una matriz).
Mi observación: La opción de modificar el algoritmo original fue algo que me
nació desde un principio y pude notar que hacer ciertos cambios en las
operaciones de un algoritmo se ve reflejado en las operaciones elementales y
en tiempo de ejecución.
1.1.3.4.4. Grafica Primer Método Vs Segundo Método
Apreciando el comportamiento de las curvas notamos que representa al
segundo método tiene un crecimiento mayor en tiempo de ejecución con los el
mismo número de datos de entrada, probado en el mismo programa, el
mimos equipo y en situaciones muy parecidas al primer método.
-5
0
5
10
15
20
25
30
35
40
0 200 400 600 800 1000 1200
1r Metodo
2do Metodo
Recommended