Je suis novice et débutant en java et j'essaye de développer pour un TP de cours, l'algo de dijkstra.
Voici le début de mon code mais je galère un peu, car ce dernier ne vas pas plus loin que le résultat de la 1° itération.
Quelqu'un pourrait-il me venir en aide ? Merci d'avance pour vos contributions....
voici le code:
public class Dijkstra {
//private static Double INFINITY = Double.MAX_VALUE;
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
int INFINITY = Integer.MAX_VALUE;
// je définie en premier, la matrice initiale
int [][] mat = {{0,3,1, INFINITY, INFINITY},{INFINITY, 0, INFINITY, 2, 4}, {INFINITY, 1, 0, 2, INFINITY}, {INFINITY, INFINITY, INFINITY, 0, 3}, {2, INFINITY, INFINITY, INFINITY, 0}};
int i,j,k;
int pos_min = 0;
int vec = 0;
int [] tab = mat[vec];
int [] tab_temp = new int [5];
int min = 99999;
for (i=0; i<tab.length; i++){
if (tab[i]==0) {tab[i]=-1;} // on passe à "-1" les valeurs nulles se trouvant dans le tableau tab
if ((min > tab[i]) && (tab[i] != -1)) // On recherche la valeur minimum dans le tableau ainsi que sa position
{min = tab[i];
pos_min = i;}
for (j=0; j<tab_temp.length; j++){
tab_temp [j] = tab[j];
if (j == pos_min ){tab_temp[j]= -1;} //on passe à "-1" la valeur minimum trouvée précédement
if (tab_temp[j] != -1){ //on applique Dijkstra
tab_temp[j] = Math.min(tab_temp[j], (tab[pos_min] + mat[pos_min][j]));
}
}
}
for (int x: tab_temp )
System.out.print(x+ " ");
System.out.println();
j'obtiens un tableau tab_temp avec des valeurs que je voudrais reprendre et exécuter de nouveau le code au dessus pour trouver le nouveau minimum et appliquer la suite du code.
La boucle devra s'arréter une fois que tous les minimums seront passer à -1