Practica 01

23
Practica 01 : Pruebas a posteriori (Algoritmos de Ordenamiento) Entrega vía Web: Miércoles 10 de Septiembre de 2014 1 Análisis de algoritmos M. en C. Edgardo Adrián Franco Martínez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom

description

Analisis de algoritmos

Transcript of Practica 01

  • Practica 01 : Pruebas a posteriori (Algoritmos de Ordenamiento) Entrega va Web: Mircoles 10 de Septiembre de 2014

    1

    Anlisis de algoritmos

    M. en C. Edgardo Adrin Franco Martnez http://www.eafranco.com [email protected] @edfrancom edgardoadrianfrancom

    http://www.eafranco.com/mailto:[email protected]
  • Contenido Definicin del problema

    Actividades

    Observaciones

    Reporte de prctica

    Entrega va Web

    Fecha de entrega

    2

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

  • Definicin del problema

    Compiladores (Anlisis Lxico II - Edgardo A. Franco)

    Con base en el archivo de entrada proporcionado que tiene 10,000,000 nmeros diferentes. Ordenarlo bajo los siguientes mtodos de ordenamiento y comparar experimentalmente las complejidades de estos. Burbuja (Bubble Sort)

    Burbuja Simple

    Burbuja Mejorada

    Insercin (Insertion Sort)

    Seleccin (Selection Sort )

    Shell (Shell Sort)

    Ordenamiento con rbol binario de busqueda (Binary Search Tree) 3

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

  • Ordenamiento Burbuja

    Compiladores (Anlisis Lxico II - Edgardo A. Franco)

    Burbuja Simple

    El mtodo de la burbuja es uno de los mas simples, es tan fcil como comparar todos los elementos de una lista contra todos, si se cumple que uno es mayor o menor a otro, entonces los intercambia de posicin.

    4

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    Procedimiento BurbujaSimple(A,n)

    para i=1 hasta (i

  • Compiladores (Anlisis Lxico II - Edgardo A. Franco)

    Burbuja Mejorada

    El hecho que los elementos que estn detrs del que se esta comparando, ya estn ordenados, permite realizar un numero menor de comparaciones.

    5

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    Procedimiento BurbujaMejorada(A,n)

    para i=1 hasta (i

  • Ordenamiento por insercin

    Compiladores (Anlisis Lxico II - Edgardo A. Franco)

    Es una manera muy natural de ordenar para un ser humano, y puede usarse fcilmente para ordenar un mazo de cartas numeradas en forma arbitraria.

    Inicialmente se tiene un solo elemento, que obviamente es un conjunto ordenado. Despus, cuando hay k elementos ordenados de menor a mayor, se toma el elemento k+1 y se compara con todos los elementos ya ordenados, detenindose cuando se encuentra un elemento menor (todos los elementos mayores han sido desplazados una posicin a la derecha) o cuando ya no se encuentran elementos (todos los elementos fueron desplazados y este es el ms pequeo). En este punto se inserta el elemento k+1 debiendo desplazarse los dems elementos.

    6

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

  • Compiladores (Anlisis Lxico II - Edgardo A. Franco)

    7

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez Procedimiento Insercion(A,n)

    {

    para i=1 hasta itemp)&&(j>=0)) hacer

    A[j+1]=A[j]

    j--

    fin mientras

    A[j+1]=temp

    fin para

    fin Procedimiento

  • Ordenamiento por seleccin

    Compiladores (Anlisis Lxico II - Edgardo A. Franco)

    Se basa en buscar el mnimo elemento de la lista e intercambiarlo con el primero, despus busca el siguiente mnimo en el resto de la lista y lo intercambia con el segundo, y as sucesivamente.

    Algoritmo

    Buscar el mnimo elemento entre una posicin i y el final de la lista Intercambiar el mnimo con el elemento de la posicin i.

    8

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

  • Compiladores (Anlisis Lxico II - Edgardo A. Franco)

    9

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    Procedimiento Seleccion(A,n)

    para k=0 hasta kn-1 hacer

    si A[i]

  • Ordenamiento Shell

    Compiladores (Anlisis Lxico II - Edgardo A. Franco)

    El Shell es una generalizacin del ordenamiento por insercin, teniendo en cuenta dos observaciones: 1. El ordenamiento por insercin es eficiente si la entrada

    est "casi ordenada". 2. El ordenamiento por insercin es ineficiente, en

    general, porque mueve los valores slo una posicin cada vez.

    El algoritmo Shell mejora el ordenamiento por insercin

    comparando elementos separados por un espacio de varias posiciones. Esto permite que un elemento haga "pasos ms grandes" hacia su posicin esperada. Los pasos mltiples sobre los datos se hacen con tamaos de espacio cada vez ms pequeos. El ltimo paso del ordenamiento Shell es un simple ordenamiento por insercin, pero para entonces, ya est garantizado que los datos del vector estn casi ordenados.

    10

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

  • Shell propone que se haga sobre el array una serie de ordenaciones basadas en la insercin directa, pero dividiendo el array original en varios sub-arrays tales que cada elemento est separado k elementos del anterior (a esta separacin a menudo se le llama salto o gap)

    Se debe empezar con k=n/2, siendo n el nmero de elementos de array, y utilizando siempre la divisin entera

    Despus iremos variando k hacindolo ms pequeo mediante sucesivas divisiones por 2, hasta llegar a k=1.

    Co

    mp

    ilad

    ore

    s (

    An

    lis

    is L

    xic

    o II

    -

    Edga

    rdo

    A. F

    ran

    co)

    11

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

  • Compiladores (Anlisis Lxico II - Edgardo A. Franco)

    12

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    Procedimiento Shell(A,n)

    k = n / 2;

    mientras k >= 1 hacer

    para i=k hasta i>=n hacer

    v = A[i]

    j = i - k;

    mientras j >= 0 && A[j] > v hacer

    A[j + k] = A[j];

    j -= k;

    fin mientras

    A[j + k] = v;

    fin para

    k/=2;

    fin mientras

    fin Procedimiento

  • Ordenamiento con un rbol binario de bsqueda

    Compiladores (Anlisis Lxico II - Edgardo A. Franco)

    El ordenamiento con la ayuda de un rbol binario de bsqueda es muy simple debido a que solo requiere de dos pasos simples. 1. Insertar cada uno de los nmeros del vector a

    ordenar en el rbol binario de bsqueda.

    2. Remplazar el vector en desorden por el vector resultante de un recorrido InOrden del rbol Binario, el cual entregara los nmeros ordenados.

    La eficiencia de este algoritmo esta dada segn la eficiencia en la implementacin del rbol binario de bsqueda, lo que puede resultar mejor que otros algoritmos de ordenamiento.

    13

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

  • Compiladores (Anlisis Lxico II - Edgardo A. Franco)

    14

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    Procedimiento OrdenaConArbolBinario(A,n)

    para i=0 hasta i>=n hacer

    Insertar(ArbolBinBusqueda,A[i]);

    fin para

    GuardarRecorridoInOrden(ArbolBinBusqueda,A);

    fin Procedimiento

  • Actividades

    Compiladores (Anlisis Lxico II - Edgardo A. Franco)

    1. Programar en ANSI C, cada uno de los algoritmos de ordenamiento mencionados.

    2. Adaptar el programa para que sea capaz de recibir un parmetro n que indica el numero de enteros a ordenar a partir de un archivo con mximo 10,000,000 de nmeros en desorden.

    15

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    4

    9

    1

    2

    5

    6

    9

    0 2 5

    1

    1

    3

    2

    2

    2 7

    9

    9

    0

    2

    3

    5 1

    4

    9

    1

    2

    5

    6

    9

    0 2 5

    1

    1

    3

    2

    2

    2 7

    9

    9

    0

    2

    3

    5 1

    4

    9

    1

    2

    5

    6

    9

    0 2 5

    1

    1

    3

    2

    2

    2 7

    9

    9

    0

    2

    3

    5 1

  • Compiladores (Anlisis Lxico II - Edgardo A. Franco)

    3. Medir el tiempo que tarda cada algoritmo en ordenar el archivo completo (n=10,000,000) y compare los tiempos (Real y de CPU) de cada algoritmo grficamente en una grafica de barras (2 graficas de barras).

    Auxiliarse de la librera de C proporcionada para medir tiempos de ejecucin bajo Linux.

    16

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    Algoritmo Tiempo Real Tiempo CPU

    Tiempo E/S % CPU/Wall

  • 4. Realizar un anlisis temporal para cada algoritmo, ordenando:

    Los primeros 100, 1000, 5000, 10000, 50000, 100000, 200000, 400000, 600000, 800000, 1000000, 2000000, 3000000, 4000000, 5000000, 6000000, 7000000, 8000000, 9000000 y 10000000.

    Graficar el comportamiento temporal de cada algoritmo

    5. Graficar una comparativa de los 5 algoritmos de ordenamiento (Tiempo real).

    Compiladores (Anlisis Lxico II - Edgardo A. Franco)

    17

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

    0

    1000

    2000

    3000

    4000

    5000

    6000

    7000

    0 5000 10000 15000 20000 25000 30000 35000

    TIEM

    PO

    (SE

    G)

    TAMAO DE PROBLEMA (N)

    Ordenamiento Shell

    Tiempo real

    Tiempo CPU

    Tiempo E/S

  • 6. Realizar una aproximacin polinomial del comportamiento temporal (tiempo real), de cada uno de los algoritmos probados segn el punto 4.

    Aproximar cada algoritmo con un polinomio de grado 1, 2, 3, 4 y 8.

    7. Mostrar grficamente la comparativa de las aproximaciones para cada algoritmo (5 graficas) y determinar de manera justificada cul es la mejor aproximacin para cada algoritmo.

    8. Determine con base en las aproximaciones obtenidas cual ser el tiempo real de cada algoritmo para 50000000, 100000000, 500000000, 1000000000 y 500000000 de nmeros a ordenar.

    Compiladores (Anlisis Lxico II - Edgardo A. Franco)

    18

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

  • 9. Finalmente responda a las siguientes preguntas: i. Cul de los 5 algoritmos es ms fcil de implementar? ii. Cul de los 5 algoritmos es el ms difcil de

    implementar? iii. Cul algoritmo tiene menor complejidad temporal? iv. Cul algoritmo tiene mayor complejidad temporal? v. Cul algoritmo tiene menor complejidad espacial?

    Por qu? vi. Cul algoritmo tiene mayor complejidad espacial?

    Por qu? vii. El comportamiento experimental de los algoritmos era

    el esperado? Por que? viii. Sus resultados experimentales difieren mucho de los

    del resto de los equipos? A que se debe? ix. Existi un entorno controlado para realizar las pruebas

    experimentales? Cul fue? x. Qu recomendaciones daran a nuevos equipos para

    realizar esta practica?

    Compiladores (Anlisis Lxico II - Edgardo A. Franco)

    19

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

  • Observaciones Utilizar solo ANSI C.

    La programacin de cada uno de los mtodos de ordenamiento

    no deber de incluir recursividad (Algoritmos secuenciales). Por lo tanto buscar una implementacin no recursiva para la insercin en un rbol binario y para realizar el recorrido inOrden.

    Indique cual fue su plataforma experimental (Caractersticas del hardware, compilador, sistema operativo y entorno controlado)

    Se sugiere crear scripts que faciliten la experimentacin. En el laboratorio mostrar el funcionamiento de los programas,

    estos ya deber de contar con la documentacin necesaria. Autodocumentacin Documentacin de funciones y algoritmos 20

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

  • Reporte de practica Portada

    Introduccin

    Planteamiento del problema

    Algoritmos (Descripcin de la abstraccin del problema y los algoritmos de ordenamiento que dan solucin, apoyndose de pseudocdigo, diagramas y figuras en un lenguaje claro)

    Implementacin de los algoritmos (Dados los algoritmos de ordenamiento como se implementaron en el cdigo)

    Actividades y Pruebas (Verificacin de la solucin, pruebas y resultados de la prctica segn lo solicitado)

    Errores detectados (Si existe algn error detectado, el cul no fue posible resolver o se desconoce el motivo y solo ocurre con ciertas condiciones es necesario describirlo)

    Posibles mejoras (Describir posibles disminuciones de cdigo en la implementacin o otras posibles soluciones)

    Conclusiones (Por cada integrante del equipo)

    Anexo (Cdigos fuente *con colores e instrucciones de compilacin)

    Bibliografa (En formato IEEE)

    21

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

  • Entrega va Web

    En un solo archivo comprimido (ZIP, RAR, TAR, JAR o GZIP) Reporte (DOC, DOCX o PDF)

    Cdigos fuente (.C, .H, etc.) Cdigo documentado: Titulo, descripcin, fecha, versin, autor.

    (Funciones y Algoritmos: Qu hace?, Cmo lo hace?, Qu recibe?, Qu devuelve?, Causa de errores?).

    OBSERVACIONES

    *NO enviar ejecutables o archivos innecesarios, las instrucciones de compilacin van en el anexo del reporte. (Yo compilare los fuente).

    *NO enviar archivo de nmeros en desorden ni archivo de numeros ordenados.

    22

    Grupo Contrasea

    3CM5 analisis3cm5

    3CM6 analisis3cm6

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez

  • Fecha de entrega

    Compiladores (Anlisis Lxico II - Edgardo A. Franco)

    Demostracin (Laboratorio de Sistemas 1)

    3CM5 Mircoles 03 de Septiembre de 2014

    3CM6 Mircoles 03 de Septiembre de 2014

    Entrega de reporte y cdigo

    En un solo archivo comprimido

    Fecha y hora limite de entrega va Web

    Mircoles 10 de Septiembre de 2014 a las 23:59:59 hrs.

    23

    An

    lis

    is d

    e al

    gori

    tmo

    s P

    ract

    ica

    01

    : P

    rueb

    as a

    po

    ster

    iori

    P

    rof.

    Edga

    rdo

    Ad

    rin

    Fra

    nco

    Mar

    tn

    ez