Docsity
Docsity

Prepara tus exámenes
Prepara tus exámenes

Prepara tus exámenes y mejora tus resultados gracias a la gran cantidad de recursos disponibles en Docsity


Consigue puntos base para descargar
Consigue puntos base para descargar

Gana puntos ayudando a otros estudiantes o consíguelos activando un Plan Premium


Orientación Universidad
Orientación Universidad


Practica 3, Ejercicios de Representación de Datos y Diseño de Algoritmos

Asignatura: Analisis y diseño de algoritmos I, Profesor: Francisco palomo, Carrera: I. T. Infor. Sistemas, Universidad: UCA

Tipo: Ejercicios

2013/2014

Subido el 08/01/2014

javierokdan
javierokdan 🇪🇸

4.7

(15)

11 documentos

1 / 3

Toggle sidebar

Esta página no es visible en la vista previa

¡No te pierdas las partes importantes!

bg1
An´alisis y Dise˜no de Algoritmos II
Pr´actica 3: Programaci´on din´amica
25 de abril de 2006
1. Programe un algoritmo para resolver el problema de la mochila discreta. Las descripciones
de los objetos se leer´an de un fichero llamado objetos.dat. Cada l´ınea contendr´a el nombre
de un objeto, su peso y su valor; por ejemplo:
Jade 1 1
Marfil 2 6
Platino 5 18
Oro 6 22
Plata 7 28
El programa principal leer´a las descripciones de dicho fichero, solicitar´a la capacidad de la
mochila, ejecutar´a el algoritmo y mostrar´a la composici´on ´optima de la mochila. Si ´esta
no se compone de ning´un ob jeto, lo indicar´a.
La funci´on que implementa el algoritmo deber´a tener el prototipo que se indica a conti-
nuaci´on:
typedef std::vector<Objeto>Objetos;
// ...
Objetos mochila(const Objetos&objetos,unsigned int capacidad);
La clase Objeto representa un objeto. Guardar´a su nombre, valor y peso. La funci´on
recibir´a una serie de objetos y una capacidad. Devolver´a los ob jetos correspondientes a la
composici´on ´optima de la mochila, es decir, aqu´ella que maximiza su valor total. Seguir´a el
siguiente esquema:
Objetos mochila(const Objetos&objetos,unsigned int capacidad)
{
// Tabla de subproblemas resueltos (TSP).
typedef Objetos::size type Indice ;
typedef std::vector<std::vector<double> > TSP;
const Indice n =objetos.size ();
TSP tsp(n,TSP::value type(capacidad + 1));
// alculo de los valores de la TSP.
1
pf3

Vista previa parcial del texto

¡Descarga Practica 3 y más Ejercicios en PDF de Representación de Datos y Diseño de Algoritmos solo en Docsity!

An´alisis y Dise˜no de Algoritmos II

Pr´actica 3: Programaci´on din´amica

25 de abril de 2006

  1. Programe un algoritmo para resolver el problema de la mochila discreta. Las descripciones de los objetos se leer´an de un fichero llamado objetos.dat. Cada l´ınea contendr´a el nombre de un objeto, su peso y su valor; por ejemplo: Jade 1 1 Marfil 2 6 Platino 5 18 Oro 6 22 Plata 7 28

El programa principal leer´a las descripciones de dicho fichero, solicitar´a la capacidad de la mochila, ejecutar´a el algoritmo y mostrar´a la composici´on ´optima de la mochila. Si ´esta no se compone de ning´un objeto, lo indicar´a. La funci´on que implementa el algoritmo deber´a tener el prototipo que se indica a conti- nuaci´on: typedef std::vector Objetos; // ... Objetos mochila(const Objetos& objetos, unsigned int capacidad);

La clase Objeto representa un objeto. Guardar´a su nombre, valor y peso. La funci´on recibir´a una serie de objetos y una capacidad. Devolver´a los objetos correspondientes a la composici´on ´optima de la mochila, es decir, aqu´ella que maximiza su valor total. Seguir´a el siguiente esquema: Objetos mochila(const Objetos& objetos, unsigned int capacidad) { // Tabla de subproblemas resueltos (TSP).

typedef Objetos::size type Indice; typedef std::vector<std::vector > TSP; const Indice n = objetos.size (); TSP tsp(n, TSP::value type(capacidad + 1));

// C´alculo de los valores de la TSP.

// Recuperaci´on de la soluci´on a partir de la TSP.

Objetos solucion; // ... return solucion; }

  1. En un fichero llamado dgt.dat se encuentran guardadas las distancias por carretera entre distintas ciudades. Todas las carreteras permiten la circulaci´on en ambos sentidos. Se desea una aplicaci´on que solicite por la entrada est´andar un origen y un destino y proporcione la ruta m´as corta entre ambas ciudades. Por ejemplo, si el contenido del fichero es el siguiente: C´adiz Sevilla 140 C´adiz Jerez 40 Jerez Sevilla 100 Sevilla Granada 350

´esta podr´ıa ser una sesi´on: Origen: C´adiz Destino: Granada

La ruta m´as corta (490km) es:

C´adiz Sevilla Granada

La aplicaci´on debe gestionar correctamente las siguientes situaciones:

a) Alguna de las ciudades especificadas puede no aparecer en el fichero, ya sea por un error del usuario o simplemente porque no conste en ´el. b) Puede que, aun existiendo ambas, no exista una ruta debido a que por una circuns- tancia excepcional ambas se encuentren incomunicadas entre s´ı.

La aplicaci´on estar´a basada en el algoritmo de Floyd. Las funciones principales deber´an tener los prototipos que se indican a continuaci´on: MatrizCaminos Floyd(MatrizPesos& p); // ... typedef list Camino; // ... Camino CaminoMinimo(const MatrizCaminos& c, size t i, size t j);

Donde los tipos MatrizPesos y MatrizCaminos ser´an los adecuados para el funcionamiento de ambos algoritmos, en los que los v´ertices se representar´an mediante el tipo size t y los pesos ser´an de tipo double.