Documentos de Académico
Documentos de Profesional
Documentos de Cultura
Presentado Por:
Andrea del pilar castao Lpez
Diego Fernando Rojas Goyeneche
Presentado a:
Alonso Guevara Prez
1. Introduccin
A travs del tiempo se han ido mejorando los mtodos para dar solucin a
cualquier problema de programacin, ya que hoy en da se brindan ms
herramientas que facilitan la solucin de estos; pero los algoritmos desde su
aparicin hasta el da de hoy son de vital importancia para el desarrollo de
cualquier aplicacin, nos brinda el dominio sobre la lgica de programacin para
resolver cualquier problema presentado.
El anlisis de complejidad de los algoritmos de rotacin nos brinda informacin
importante sobre cul de los utilizados es el ms adecuado segn sea el caso
presentado, para cada problema determinaremos una medida N de su tamao
(por nmero de datos) e intentaremos hallar respuestas en funcin de dicho N. El
concepto exacto que mide N depende de la naturaleza del problema. As, para un
vector se suele utilizar como N su longitud; para una matriz, el nmero de
elementos que la componen; para un grafo, puede ser el nmero de nodos (a
veces es ms importante considerar el nmero de arcos, dependiendo del tipo de
problema a resolver); en un fichero se suele usar el nmero de registros, etc.
En esta prctica se pretende validar la complejidad y el tiempo de ejecucin de los
algoritmos de rotacin, as verificando cul de estos es el ms complejo de
utilizar, el conlleva menos tiempo en ser ejecutado; por consiguiente brindado
informacin clara para demostrar en estos las diferentes caractersticas.
Tamao de la imagen
Si k=5
25
tamao=32x32n=32
Si k=8 28 tamao=256x256n=256
Si k=5 210 tamao=1024x1024n=1024
Si k=5 212 tamao=4096x4096n=4096
Complejidad espacial=fe=n2+ n2=O (2n2)
Numero de asignaciones
1.024
65.536
1.048.576
16.177.216
Algoritmo:
Z:=imagen [i1, j1]
Imagen [i1, j1]:=imagen [i1+1, j1]
Imagen [i1+1, j1]:= [i1+1, j1+1]`
Imagen [i1+1, j1+1]:= [i1+1, j1+1]
Imagen [i1, j1+1]:=z
Complejidad espacial: O (1)
3.3 Algoritmo Divide y vencers de rotacin
El Algoritmo de traslacin consistir en iterar para todos los puntos de la
subimagen superior izquierda, y en cada paso de iteracin se har:
Algoritmo:
--
nlog4=n2
Ft: O (n2)
4. Implementacin de algoritmos
4.1 Algoritmo Clsico de Rotacin
El algoritmo clsico de rotacin se apoya en una matriz auxiliar para realizar este
proceso de rotacin.
Cdigo:
If (n > 1) {
Int matrices = 4;
// Comenzamos la
// reparticion de los subarreglos
pthread_t *thread;
Thread = malloc (matrices*sizeof (pthread_t));
// Creamos los auxiliares
BMPAux * c11 = (BMPAux *) malloc (sizeof (BMPAux));
(*c11).i = i;
(*c11).j = j;
(*c11).i1 = (n / 2) + i;
(*c11).j1 = (n / 2) + j;
(*c11).n = (n / 2);
(*c11).imagen = imagen;
(*c21).i = i + (n / 2);
(*c21).j = j + (n / 2);
(*c21).i1 = n + i;
(*c21).j1 = n + j;
(*c21).n = (n / 2);
(*c21).imagen = imagen;
Exit (-1);
}
If (pthread_create (&thread [1], NULL, ejecutaRotacion, (void
*) c12)! = 0)
{
Perror ("El thread no
Exit (-1);
}
If (pthread_create (&thread [2], NULL, ejecutaRotacion, (void
*)c21) != 0)
{
Perror ("El thread no
Exit (-1);
}
If (pthread_create (&thread [3], NULL, ejecutaRotacion, (void
*) c22)! = 0)
{
Perror ("El thread no
Exit (-1);
}
// Esperamos a los hilos
Int i;
For (i=0; i<matrices; i++) pthread_join (thread[i], NULL);
Free (thread);
}
Traslacion (i, j, i1, j1, imagen, n / 2);
}
Void Traslacion (int i, int j, int i1, int j1, BMP * imagen, int
n) {
If (i < i1 - n) {
RotacionBaseM (i, j, i1, j1, imagen->pixelB, n);
Void traslacionM (int i, int j, int i1, int j1, unsigned char **
matriz, int n) {
If (i < i1 - n) {
RotacionBaseM (i, j, i1, j1, matriz, n);
TraslacionM (i + 1, j, i1, j1, matriz, n);
}
}
5. Actividades y Pruebas
5.10 La implementacin con n threads reduce el tiempo en 1/n vs. El algoritmo
DyV? Porque sucede esto?
El algoritmo reduce el tiempo de ejecucin en 1/n sobre el algoritmo de divide y
vencers ya que este mtodo en java nos permite ejecutar varios procesos a la
vez, es decir de forma recurrente y por tanto nos permite realizar programas en
menos tiempo y ms eficientes. Por lo cual cuando lo utilizamos no estamos en
matriz auxiliar y estamos ejecutando el cdigo de manera paralela.
11. Preguntas:
1. Cul de los tres algoritmos es ms fcil de implementar?
El algoritmo ms fcil de implementar es el Algoritmo clsico de rotacin.
2. Cul de los tres algoritmos es ms difcil de implementar?
El algoritmo ms difcil de implementar es el de divide y vencers utilizando
theards.
3. Cul de los algoritmos tiene menor complejidad temporal?
El algoritmo con menor complejidad es el de el de divide y vencers utilizando
theards.
4. Cul algoritmo es ms rpido y porque?
El algoritmo de divide y vencers con threads reduce el tiempo de ejecucin en 1/n
sobre el algoritmo de divide y vencers ya que este mtodo en java nos permite
ejecutar varios procesos a la vez, es decir de forma recurrente y por tanto nos
permite realizar programas en menos tiempo y ms eficientes. Por lo cual cuando
lo utilizamos no estamos en matriz auxiliar y estamos ejecutando el cdigo de
manera paralela.
5. El comportamiento experimental de los algoritmos era el esperado
porque?
6. Problemas De implementacin
Cuando se implementa el cdigo existen problemas en las libreras de java, ya que
no reconoce en el cdigo unas libreras se valida que si se encuentran pero
eclipse el compilador asume que no estn por lo cual no se puede ejecutar el
cdigo en ese equipo y es necesario se ejecute en otro pc donde fue generado, no
se puede resolver el inconveniente; adicional se presentan inconvenientes con el
ingreso de la imagen al programa para que ejecute los mtodos, se puede
solucionar inconveniente.
7. Plataforma Experimental
Conclusiones
1. Cuando se ejecuta un algoritmo se valida a priori la eficiencia de estos, en el
caso de algoritmos de rotacin se valida la complejidad espacial antes de ejecutar
el programa, brindando as informacin vital para la realizacin de cualquier
programa ejecutando este cdigo.
2. A travs de la prctica se permite evidenciar que el algoritmo de divide y
vencers implementado con theards nos permite ejecutar el cdigo de manera
ms rpida y eficiente.
Bibliografa
3. Algoritmo de Rotacion
Anlisis de Algoritmos de bsqueda
En: http://www.mediavida.com/foro/dev/ayuda-algoritmo-rotacioncontinua-453406