elhacker.net cabecera Bienvenido(a), Visitante. Por favor Ingresar o Registrarse
¿Perdiste tu email de activación?.

 

 


Tema destacado: Rompecabezas de Bitcoin, Medio millón USD en premios


+  Foro de elhacker.net
|-+  Programación
| |-+  Programación General
| | |-+  Java
| | | |-+  Ejercicio de grafos en Java
0 Usuarios y 1 Visitante están viendo este tema.
Páginas: [1] Ir Abajo Respuesta Imprimir
Autor Tema: Ejercicio de grafos en Java  (Leído 7,098 veces)
alais

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Ejercicio de grafos en Java
« en: 26 Diciembre 2013, 12:30 pm »

Buenos días compañeros, tengo un problemilla con un método que tengo que hacer en Java. Tengo que hacer lo siguiente:

Se pide implementar en Java un método para obtener los caminos mas cortos entre todos los pares de vértices de un grafo dirigido valorado, en el cual:

1. Los vértices del grafo contienen su número de orden 0, 1, 2, 3,..., n.

2. La matriz de adyacencias contiene el valor de las aristas.
-Si no hay arista entre dos vértices, su valor es infinito.
-Las aristas no tienen valores negativos.

Apartado a: Hacerlo para que devuelva una matriz con el número de vértices que hay en cada camino.

Apartado b: Hacerlo para que esta vez devuelva una matriz con el número de aristas de cada camino.



Bien, para el apartado a, lo que yo he hecho es esto:

Código:
    public static int[][] caminosCortos(int[][] adyacentes) {
        int n = adyacentes.length, infitito = Integer.MAX_VALUE;
        int[][] salida = new int[adyacentes.length][adyacentes.length];
        for (int i = 0; i < adyacentes.length; i++) {
            for (int j = 0; j < adyacentes[i].length; j++) {
                salida[i][j] = j;
            }
        }
        for (int k = 0; k < n; k++) {
            for (int i = 0; i < n; i++) {
                for (int j = 0; j < n; j++) {
                    if ((i != j) && (adyacentes[i][k] != infitito) && (adyacentes[k][j] != infitito)) {
                        if (adyacentes[i][j] > (adyacentes[i][k] + adyacentes[k][j])) {
                            adyacentes[i][j] = adyacentes[i][k] + adyacentes[k][j];
                            salida[i][j] = k;
                        }
                    }
                }
            }
        }
        return salida;
    }


El problema se me presenta en el b. Si bien lo único que se tiene que hacer es que devuelva uno menos que el número de vértices (si el camino mide 8 vértices, medirá 7 aristas), por mucho que cambio k, me sigue dando la misma salida  >:(
Es decir, lo que yo hago es que, en la parte de
Código:
salida[i][j] = k
, pongo que sea igual a k-1, pero me sigue dando la misma salida.

¿Alguien puede guiarme?


« Última modificación: 30 Diciembre 2013, 11:12 am por alais » En línea

alais

Desconectado Desconectado

Mensajes: 16


Ver Perfil
Re: Ejercicio de grafos en Java
« Respuesta #1 en: 2 Enero 2014, 15:32 pm »

¿Nadie?


En línea

Páginas: [1] Ir Arriba Respuesta Imprimir 

Ir a:  

Mensajes similares
Asunto Iniciado por Respuestas Vistas Último mensaje
Ejercicio Java
Ejercicios
incog 4 7,878 Último mensaje 13 Noviembre 2005, 03:14 am
por Hadess_inf
Ejercicio Java
Ejercicios
enrique8923 3 8,515 Último mensaje 6 Marzo 2009, 20:29 pm
por juancho77
ejercicio en java
Ejercicios
apolo85 5 10,456 Último mensaje 19 Noviembre 2009, 15:51 pm
por apolo85
ejercicio java
Ejercicios
eltiquillo86 2 5,764 Último mensaje 21 Marzo 2010, 01:20 am
por eltiquillo86
[JAVA] Grafos
Java
digitalcirc123 0 2,210 Último mensaje 13 Junio 2013, 21:21 pm
por digitalcirc123
WAP2 - Aviso Legal - Powered by SMF 1.1.21 | SMF © 2006-2008, Simple Machines