Вы находитесь на странице: 1из 8

UNIVERSIDAD NACIONAL DE SAN MARTN

Facultad de Ingeniera de Sistemas e Informtica

INTELIGENCIA ARTIFICIAL

DOCENTE INTEGRANTE TEMA

: : :

ING. PEDRO ANTONIO GONZALES LUDI YANETT ALVAREZ CHASQUERO

COMPLEJIDAD DE ALGORITMOS DE ORDENACIN

SEMESTRE

2014 I.

TARAPOTO PER 2014-I

COMPLEJIDAD DE ALGORITMOS DE ORDENACIN Y BSQUEDA

INTRODUCCIN

Dado un conjunto de n elementos a1, a2,..., an, y una relacin de orden total sobre ellos, el problema de la ordenacin consiste en encontrar una permutacin de esos elementos ordenada de forma creciente. Aunque tanto el tipo y tamao de los elementos como el dispositivo en donde se encuentran almacenados pueden influir en el mtodo que utilicemos para ordenarlos, en este tema vamos a solucionar el caso en que los elementos son nmeros enteros y se encuentran almacenados en un vector. Si bien existen distintos criterios para clasificar a los algoritmos de ordenacin, una posibilidad es atendiendo a su eficiencia. De esta forma, en funcin de la complejidad que presentan en el caso medio, podemos establecer la siguiente clasificacin: (n2): Burbuja, Insercin, Seleccin. (nlogn): Mezcla, Montculos, Quicksort. En el presente captulo desarrollaremos todos ellos con detenimiento, prestando especial atencin a su complejidad, no slo en el caso medio sino tambin en los casos mejor y peor, pues para algunos existen diferencias significativas.

ORDENACIN POR INSERCIN


El mtodo de Insercin realiza n1 iteraciones sobre el vector, dejando en la i sima etapa (2 i n) ordenado el subvector a [1i]. La forma de hacerlo es colocando en cada iteracin el elemento a[i] en su sitio correcto, aprovechando el hecho de que el sub vector a [1i1] ya ha sido previamente ordenado. Este mtodo puede ser implementado de forma iterativa como sigue:

Para estudiar su complejidad, vamos a estudiar los casos mejor, peor y medio de la llamada al procedimiento Insercin(a, 1, n).

En el caso mejor el bucle interno no se realiza nunca, y por tanto:

( )

((

En el caso peor hay que llevar cada elemento hasta su posicin final, con lo que el bucle interno se realiza siempre de i1 veces. As, en este caso:

( )

( (

((

))

En el caso medio, supondremos equiprobable la posicin de cada elemento dentro del vector. Por tanto para cada valor de i, la probabilidad de que el elemento se site en alguna posicin k de la i primera ser de 1/i. El nmero de veces que se repetir el bucle WHILE en este caso es (ik), con lo cual el nmero medio de operaciones que se realizan en el bucle es:

( (

))

Por tanto, el tiempo de ejecucin en el caso medio es:

( )

( (

))

Su complejidad es cuadrtica.

ORDENACIN POR SELECCIN

En cada paso (i =1... n 1) este mtodo busca el mnimo elemento del subvector a [i...n] y lo intercambia con el elemento en la posicin i .

En cuanto a su complejidad, vamos a estudiar los casos mejor, peor y medio de la llamada al procedimiento Seleccin (a, 1, n), que van a coincidir con los mismos casos (mejor, peor y medio) que los de la funcin Pos Mnimo.

En el caso mejor:

( )

((

))

))

En el caso peor:

( )

((

))

))

En el caso medio:

( )

( (

))

))

En consecuencia, el algoritmo es de complejidad cuadrtica

ORDENACIN BURBUJA

Este mtodo de ordenacin consiste en recorrer los elementos siempre en la misma direccin, intercambiando elementos adyacentes si fuera necesario.

El nombre de este algoritmo trata de reflejar cmo el elemento mnimo sube, a modo de burbuja, hasta el principio del subvector. Respecto a su complejidad, vamos a estudiar los casos mejor, peor y medio de a llamada al procedimiento Burbuja(a, 1, n).

En el caso mejor

( )

( (

((

))

En el caso peor:

( )

( (

((

))

En el caso medio:

( )

( (

( (

))

En consecuencia, el algoritmo es de complejidad cuadrtica.

ORDENACIN POR MECLA (MERGESORT)

Este mtodo utiliza la tcnica de Divide y Vencers para realizar la ordenacin del vector a. Su estrategia consiste en dividir el vector en dos sub vectores, ordenarlos mediante llamadas recursivas, y finalmente combinar los dos sub vectores ya ordenados. En cuanto al estudio de su complejidad, siguiendo el mismo mtodo que hemos utilizado en los problemas del primer captulo, se llega a que el tiempo de ejecucin de Mezcla(a, b, 1, n) puede expresarse mediante una ecuacin en recurrencia. T (n) = 2 T (n /2) + 16n + 17

Con la condicin inicial T (1) = 1. sta es una ecuacin en recurrencia no homognea cuya ecuacin caracterstica asociada es (x2)2(x1) = 0, lo que permite T (n) como: T (n) = c1n + c2log n + c3 El clculo de las constantes puede hacerse en base a la condicin inicial, lo que nos lleva a la expresin final: T (n) = 16 n log n + 18n 17 (n log n). Obsrvese que este mtodo ordena n elementos en tiempo (n log n) en cualquiera de los casos (peor, mejor o medio).

Sin embargo tiene una complejidad espacial, en cuanto a memoria, mayor que los dems (del orden de n).

ORDENACIN RPIDA DE HOARE (QUICKSORT)


Este mtodo es probablemente el algoritmo de ordenacin ms utilizado, pues es muy fcil de implementar, trabaja bien en casi todas las situaciones y consume en general menos recursos (memoria y tiempo) que otros mtodos.

Caso Mejor: Cuando el pivote, divide al conjunto en dos subconjuntos de igual tamao. En este caso hay dos llamadas con un tamao de la mitad de los elementos, y una

sobrecarga adicional lineal, igual que en MergeSort. En consecuencia el tiempo de ejecucin es O(nlogn).

Caso Peor: Se podra esperar que los subconjuntos de tamao muy distinto proporcionen resultados malos. Supongamos que en cada paso de recursin slo hay un elemento menor a pivote. En tal caso el subconjunto I (elementos menores que pivote) ser uno y el subconjunto D (elementos mayores o igual a pivote) sern todos los elementos menos uno. El tiempo de ordenar 1 elemento es slo 1 unidad, pero cuando n > 1. ( ) ( ( ( ) ( ) ) ) ( ) ( ) ( ( ) ( ) ( ) ( ) ( ) ) ( ( ) )

Caso Medio: Complejidad O (nlogn).

ORDENACIN POR INCREMENTOS (SHELL)


La ordenacin por insercin puede resultar lenta pues slo intercambia elementos adyacentes. As, si por ejemplo el elemento menor est al final del vector, hacen falta n pasos para colocarlo donde corresponde. El mtodo de Incrementos es una extensin muy simple y eficiente del mtodo de Insercin en el que cada elemento se coloca casi en su posicin definitiva en la primera pasada.

En cuanto al estudio de su complejidad, este mtodo es diferente al resto de los procedimientos vistos en este captulo. Su complejidad es difcil de calcular y depende mucho de la secuencia de incrementos que utilice.

Por ejemplo, para la secuencia dada existen dos conjeturas en cuanto a su orden de complejidad: nlog2n y n1.25. En general este mtodo es el escogido para muchas aplicaciones reales por ser muy simple teniendo un tiempo de ejecucin aceptable incluso para grandes valores de n.

Anlisis de algoritmos Algoritmo Burbuja Insercin Seleccin Shell Merge Quick Operaciones mximas (n2) (n2/4) (n2) (n log2n) (nlogn) (n2) en peor de los casos y (nlogn) en el promedio de los casos.

Вам также может понравиться