Buscar
Social
Ofertas laborales ES

Foro sobre Java SE > Ayuda ejercicio Algoritmia y estructura de datos

Una empresa de electricidad quieren planificar la construcción de una nueva red de distribución que conecta entre sus localizaciones n . Tenemos las coordenadas geográficas de x [ i], y [ i ] para cada ubicación, i = 0 , ... N - 1 , expresado en km utilizando un sistema de referencia cartesiano . La empresa puede construir
líneas eléctricas que conectan en línea recta entre dos lugares. El costo de una línea de alta tensión que conecta las localidades i y j es proporcional a la dij distancia entre ellos, calculado con la fórmula habitual para la distancia euclídea :
d ij = √ (x [i ] -x [ j] ) 2 + (y [i ] - y [ j] ) 2
Para asegurarse de que la red de distribución está funcionando correctamente , es suficiente que todas las ubicaciones estén conectados por medio de un árbol de expansión . La compañía tiene la intención de planificar cuidadosamente las conexiones con el fin de minimizar la suma de las longitudes de todas las líneas creadas .
Escriba un programa en Java que se lee de un archivo de entrada , el valor de n y las coordenadas geográficas de lugares, como en el ejemplo siguiente :

7 n número de lugares en este archivo
0 0 x [ 0 ] y [ 0 ]
1 0
2 0
0,5 0,5
0 1
1 1
2 1 x [n - 1 ] y [n - 1 ]

que corresponde a la situación en la parte izquierda de la figura :

0 1 2 | (conectado al 3) 0 (conectado al 2) 1 (conectado al 6) 2
3 | (conectado al1 y al 5) 3
4 5 6 | (conectado al 3) 4 5 6

El programa debe imprimir en la pantalla n - 1 líneas de texto, cada una de las cuales indica una de las n - 1 líneas eléctricos que deben ser fabricados y su longitud. Por último, se debe imprimir una línea adicional de texto que indique la longitud total de todas las conexiones realizadas. En el ejemplo anterior, el programa puede imprimir :

0 3 0,7071067811865476
1 3 0,7071067811865476
3 4 0,7071067811865476
3 5 0,7071067811865476
1 2 1,0
2 6 1,0
4.82842712474619

que corresponde al árbol que se muestra a la derecha (la elección de los arcos puede ser dado en cualquier orden). Si hay más de una solución óptima, es suficiente con visualizar una.

abril 28, 2014 | Registered Commenterpedritobnk90

"Escriba un programa en Java..."

Cuando empieces a escribirlo, y se te presente dudas concretas, ¡Pregunta!.

abril 28, 2014 | Registered Commenterchoces

Es verdad, no he realizado la pregunta que quería hacer. Mi problema es que no sé cómo introducir los datos con un programa input. Perdona las molestias.

abril 28, 2014 | Registered Commenterpedritobnk90

Buenas,

Tambien te has olvidado de lo mas importante, que es decir: hola, adios y gracias.

Que es un programa input? Te estan pidiendo un programa de consola que tiene que leer un fichero para luego procesar su informacion?

Para leer el fichero, lo puedes hacer, por ejemplo, con Scanner:


Scanner scanner = null;
try {
File file = new File(fileName);
scanner = new Scanner(file);
while (scanner.hasNextLine()) {
//Aniades la informacion a un lista, por ejemplo, para luego procesarla
}
} catch (FileNotFoundException e) {
e.printStackTrace();
} finally {
scanner.close();
}

Un saludo

abril 28, 2014 | Unregistered CommenterUnoPorAhi

Muchas gracias, así me es más fácil meterle mano a este ejercicio.

abril 28, 2014 | Registered Commenterpedritobnk90