using System; using System.Diagnostics; namespace Algorithms { class LSAP { /// /// Lsap di burkard /// /// num righe / colonne /// costo assegnamento /// duali righe /// duali colonne /// costi monodim. (indice i*n+j) /// assegnamento ottimo public int[] lsap(int n,ref int z, int[] Ys, int[] Yt, int[] CostoAss) { int[] Riga,dminus,dplus,Davanti; int index,dd,CostoCorr,Ui=0,Vj,j0,w,vgl,ind; bool[] label; int i,j; int[] Colonna; Riga = new int[n]; dminus = new int[n]; dplus = new int[n]; Davanti = new int[n]; label = new bool[n]; Colonna = new int[n]; Trace.WriteLine("\n....................................Inizio procdura LSAP"); /* ................................ Inizializzazione variabili */ for(i=0;i alla Riga 0 e Colonna 1 c'e' il valore minore */ Colonna[i]=j0; /* clonna[0]=1 => alla Colonna 1, Riga 1 c'e' il valore minore */ } } /* END FOR 2 */ /* ...................................INIZIALIZZAZIONE DI Yt IN BASE AI */ /* RISULTATI PRECEDENTI */ for (j=0;j0) { CostoCorr = CostoAss[i*n+j] - Ui; if (CostoCorrvgl) { dminus[i] = vgl; Davanti[i] = w; } } } /* END FOR 130 */ } /* END FOR 105 */ for (;;) /* FOR 400 */ { w=Davanti[index]; Riga[index]=w; ind=Colonna[w]; Colonna[w]=index; if(w==j) break; index = ind; } /* END FOR 400 */ /* ............................................................. */ for(i=0;i