Estructuras de Datos - I.T.Informática Sistemas

Curso 99/00 - Primera Práctica

 

Apartado 1

Analizar experimentalmente la complejidad temporal, para el caso promedio (vector con valores al azar), de dos variantes del algoritmo de ordenación por intercambio (ordenación burbuja) que se exponen a continuación:

Modulo Burbuja
Entradas V: Vector[1..N] de TDato
Salidas  V: Vector[1..N] de TDato  
Variables I,J : Enteros;
          Cambio : Booleana
Inicio
  I <- 1
  Repetir
    Cambio <- Falso
    Para J <- N hasta I+1 incr 1
      Si V[J-1] > V[J] entonces
        Intercambiar(V,J-1,J)
        Cambio <- Cierto
      Fin_Si
  Fin_Para
  I <- I + 1
  Hasta_Que (I = N) O No Cambio
Fin
       Modulo Burbuja_Peinada
Entradas V: Vector[1..N] de TDato  
Salidas  V: Vector[1..N] de TDato
Variables I,D : Enteros;
Inicio
  D <- Truncar(N/1.3)
  Repetir
    Para I <- 1 hasta N-D incr 1
      Si V[I] > V[I+D] entonces
        Intercambiar(V,I,I+D)
      Fin_Si
    Fin_Para
    D <- Truncar(D/1.3)
  Hasta_Que D < 2
  Burbuja(V)
Fin
 
 

El método de análisis consistirá en implementar los algoritmos incluyendo instrucciones que cuenten el número de operaciones ejecutadas, T(n), para diversos tamaños, n, del vector. Tras obtener estos datos, se probarán distintas funciones de cota, f(n), hasta encontrar una que cumpla Ecuacion 1, lo que indica que el algoritmo pertenece a Ecuacion 2.

Nota: Sólo es necesario contar aquellas operaciones en las que interviene un elemento del vector.

Parte opcional: Analizar el comportamiento del segundo algoritmo cuando se cambia el valor 1.3 por otro.

Mostrar información adicional sobre este apartado

 

Apartado 2

Se dispone de un vector que almacena n puntos, p1..pn, el cual se encuentra ordenado por las coordenadas x de los puntos (pi.x <= pi+1.x), y se desea encontrar cual es el par de puntos más cercano.

Se define la distancia entre los puntos i y j del vector como Ecuacion 3. El problema consiste en encontrar los índices i y j que hacen mínima esa distincia. Por supuesto, los índices deben ser distintos, y no necesariamente contiguos.

Una solución obvia, de complejidad O(n2), es medir, para cada punto, la distancia entre él y el resto de puntos del vector, quedándonos con la distancia menor. Encontrar e implementar una solución menos costosa utilizando una estrategia divide y vencerás.

Parte opcional: Analizar matemáticamente el orden de complejidad de la solución obtenida, aplicando suposiciones razonables sobre los datos de entrada (por ejemplo, que se encuentran distribuidos mas o menos uniformemente respecto a la coordenada x).

Mostrar información adicional sobre este apartado

 

Apartado 3

Dado un conjunto de n objetos, o1..on, con valores asociados a1..an (enteros positivos no nulos), el problema del reparto equitativo consiste en determinar si se puede dividir el conjunto en dos partes que valgan exactamente lo mismo, y en ese caso, decir a cual de las dos partes pertenece cada objeto.

De forma más rigurosa, el problema se puede definir como encontrar (o demostrar que no existe) un subconjunto, C, del conjunto original de objetos, A, que cumpla:

Ecuacion 4

  1. Implementar una solución al problema obtenida mediante la estrategia de fuerza bruta, y analizar su complejidad espacial y temporal.
     
  2. Implementar una solución al problema obtenida mediante la estrategia de backtracking.
     
  3. Implementar una solución al problema planteado (o a un problema equivalente) obtenida mediante la estrategia de programación dinámica, y analizar su complejidad espacial y temporal.

Parte opcional: Analizar experimentalmente (usando las mismas técnicas que en el primer apartado) la solución obtenida por backtracking.

Cerrar información adicional sobre éste apartado

Puntos clave del problema propuesto:

 

Normas de entrega