Estructuras de Datos - I.T.Informática Gestión

Curso 00/01 - Primera Práctica

 

- Apartado 1 -

Analizar experimentalmente la complejidad temporal, para el caso promedio (vectores con valores al azar), de las 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 : Booleano
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, en las que interviene algún elemento del vector. El algoritmo se ejecutará para diversos tamaños del vector, obteniendo una tabla de valores de T en función de n (es recomendable ejecutar el programa varias veces, 100 como mínimo, para cada tamaño dado y calcular el valor medio de T(n) y su desviación estándar).
Tras obtener estos datos, se probarán distintas funciones de cota, f(n), hasta encontrar una que cumpla Ecuacion 1 , lo que será un indicio que el algoritmo pertenece a Ecuacion 2.

La documentación que se debe aportar consistirá en:

 

- Apartado 2 -

Se dispone de un vector que almacena n puntos, p1..pn, ordenado por sus coordenadas horizontales, (pi.x <= pi+1.x), y se desea encontrar cual es el par de puntos que estén separados por una distancia mínima.

Se define la distancia entre dos puntos i y j del vector como Ecuacion 3. El problema consiste en encontrar los índices i y j que hacen mínima esa distancia. Por supuesto, los índices deben ser distintos, y no necesariamente contiguos. En el caso en que varios pares de puntos estuvieran separados por la misma distancia mínima, cualquiera de ellos serviría como solución.
Una solución obvia, de complejidad O(n2), es medir, para cada punto, la distancia entre él y el resto de puntos del vector, manteniendo la información del resultado menor. Encontrar e implementar una solución menos costosa utilizando una estrategia divide y vencerás.

La documentación que se debe aportar consistirá en:

 

- Apartado 3 -

Desarrollar un programa que obtenga, para una determinada competición deportiva, la quiniela con mayor probabilidad de obtener un pleno y cuyo coste sea menor que uno dado.

Una quiniela consiste en realizar un pronóstico sobre el resultado de cada uno de n partidos. En cada partido se enfrentan dos equipos, uno de ellos juega en casa, y el resultado puede ser victoria, empate o derrota (siempre desde la perspectiva del equipo que juega en casa).

Disponemos de tres vectores, v1..vn, e1..en y d1..dn, donde los valores vi, ei, di, indican, respectivamente, la probabilidad de que el partido i acabe en victoria, empate o derrota. Por supuesto, se cumple que para todo i que vi+ei+di = 1.

Para simplificar el problema supondremos que hacer un pronóstico sobre un partido consiste en proporcionar un valor en el rango de 1 a 7, con el significado mostrado en la tabla siguiente:

 
Valor
Pronóstico
Probabilidad de acertar
Simples
1
Victoria
vi
2
Empate
ei
3
Derrota
di
Dobles
4
Victoria o empate
vi + ei
5
Victoria o derrota
vi + di
6
Empate o derrota
ei + di
Triples
7
Victoria, empate o derrota
vi + ei + di

Se supondrá que el precio de una quiniela donde todos los pronósticos sean simples es de 1 euro. Se puede apreciar que cada pronóstico doble debe duplicar el precio de la quiniela, ya que escribir un pronóstico doble para el partido i equivale a presentar dos quinielas con el resto de pronósticos iguales y un pronóstico simple con cada uno de los dos casos pronosticados en el partido i. Igualmente, cada pronóstico triple debe triplicar el coste.

Por lo tanto, el coste de una quiniela con a pronósticos dobles y b pronósticos triples será de 2a·3b euros. Supondremos que el precio máximo que nos podemos permitir pagar por la quiniela son C euros.

La probabilidad de que tengamos un pleno en la quiniela (todos los pronósticos sean correctos) será igual al producto de las probabilidades de acertar cada pronóstico. El objetivo será encontrar la quiniela con mayor probabilidad de tener un pleno pero cuyo precio no supere el valor C.

Se deberá presentar la siguiente documentación:

Como parte opcional, se propone el adaptar el problema anterior a las características de la quiniela futbolística española.

 

- Normas de entrega -