EgtNumKernel :
- piccole migliorie.
This commit is contained in:
+5
-5
@@ -67,7 +67,7 @@ Dijkstra::SetGraph( DBLMATRIX AdjMatrix, int nDestInd) {
|
|||||||
|
|
||||||
// per sicurezza assegno agli elementi sulla diagonale la massima distanza
|
// per sicurezza assegno agli elementi sulla diagonale la massima distanza
|
||||||
for ( int i = 0 ; i < nRows ; ++ i)
|
for ( int i = 0 ; i < nRows ; ++ i)
|
||||||
m_AdjMatrix[i][i] = MAXDIST ;
|
m_AdjMatrix[i][i] = WEIGHT_NO_ADJ ;
|
||||||
|
|
||||||
// il grafo è valido
|
// il grafo è valido
|
||||||
m_bValid = true ;
|
m_bValid = true ;
|
||||||
@@ -100,7 +100,7 @@ Dijkstra::GetPath( INTVECTOR& vNodePath)
|
|||||||
for ( int i = 0 ; i < DIM ; ++ i) {
|
for ( int i = 0 ; i < DIM ; ++ i) {
|
||||||
sNode_toCheck.insert( i) ;
|
sNode_toCheck.insert( i) ;
|
||||||
vNodePath[i] = -1 ;
|
vNodePath[i] = -1 ;
|
||||||
vDists[i] = MAXDIST ;
|
vDists[i] = WEIGHT_NO_ADJ ;
|
||||||
}
|
}
|
||||||
// il nodo sorgente ( in posizione zero) ha distanza nulla
|
// il nodo sorgente ( in posizione zero) ha distanza nulla
|
||||||
vDists[0] = 0. ;
|
vDists[0] = 0. ;
|
||||||
@@ -110,7 +110,7 @@ Dijkstra::GetPath( INTVECTOR& vNodePath)
|
|||||||
// cerco il nodo ( tra quelli non ancora visitati) a cui è associata la distanza minima
|
// cerco il nodo ( tra quelli non ancora visitati) a cui è associata la distanza minima
|
||||||
// ( alla prima iterazione il nodo è lo 0)
|
// ( alla prima iterazione il nodo è lo 0)
|
||||||
int nMinInd = -1 ;
|
int nMinInd = -1 ;
|
||||||
double dDistRef = MAXDIST - 1 ;
|
double dDistRef = WEIGHT_NO_ADJ - 1 ;
|
||||||
for ( int i = 0 ; i < DIM ; ++ i) {
|
for ( int i = 0 ; i < DIM ; ++ i) {
|
||||||
// cerco un nodo i disponibile
|
// cerco un nodo i disponibile
|
||||||
set<int>::iterator iter = sNode_toCheck.find( i) ;
|
set<int>::iterator iter = sNode_toCheck.find( i) ;
|
||||||
@@ -122,8 +122,8 @@ Dijkstra::GetPath( INTVECTOR& vNodePath)
|
|||||||
nMinInd = i ;
|
nMinInd = i ;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// se nodo non trovato o coincidente alla sorgente ( se presente), allora il percorso è terminato
|
// se nodo non trovato o coincidente alla destinazione ( se presente), allora il percorso è terminato
|
||||||
if ( nMinInd == -1)
|
if ( nMinInd == -1 || nMinInd == m_nDest)
|
||||||
break ;
|
break ;
|
||||||
|
|
||||||
// escludo il nodo i-esimo trovato
|
// escludo il nodo i-esimo trovato
|
||||||
|
|||||||
@@ -36,5 +36,3 @@ class Dijkstra : public IDijkstra
|
|||||||
bool m_bValid ;
|
bool m_bValid ;
|
||||||
} ;
|
} ;
|
||||||
|
|
||||||
const double DIST_NO_ADJ = 1073741823U ;
|
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user