![]() |
|
||||||||||
|
|||||
|
Наконец. Сделал.
Алгоритм Дейкстры: function Dijkstra(){ trace ("DIJKSTRA STARTED >>> "); var k, l, i, n, indexOfMin,s, m; var razmer_massiva = _global.razmernost; for (l = 0; l < razmer_massiva; l++) { //main cycle going through B[]of N elements N times var j = _global.inf; for (k = 0; k <razmer_massiva; k++) { if (!_root.A[k] && (_root.B[k]<j)) { j = _root.B[k]; indexOfMin = k; trace("Index of Minimum in B[]="+indexOfMin); } } _root.A[indexOfMin] = true; trace("_root.A["+indexOfMin+"]="+_root.A[indexOfMin]); for (t = 0; t <razmer_massiva; t++){ if (_root.B[t] > (_root.B[indexOfMin] + _root.matrix[indexOfMin][t])) { _root.B[t] =_root.B[indexOfMin]+_root.matrix[indexOfMin][t]; _root.C[t] =indexOfMin ; trace("_root.B["+t+"]="+_root.B[t]+newline); trace("_root.C["+t+"]="+_root.C[t]+newline); } } } trace("Final massive A[]="+_root.A); trace("Final massive B[]="+_root.B); trace("Final massive C[]="+_root.C+ newline); return _root.C; trace ("DIJKSTRA END <<< "); } Алгоритм Флойда: function Floyd () { trace ("FLOYD IMPLEMENTED >>> "); var i,j,k; var rzm = _global.razmernost; var T = new Array(rzm); var H = new Array(rzm); var MX = new Array(); for (k=0;k<rzm;k++){ T[k] = new Array(); H[k] = new Array() for (k1=0;k1<rzm;k1++){ T[k][k1] = 0 } } if (_root.matrix){ MX = _root.matrix; for (i= 0 ;i<rzm; i++){ for (j= 0 ;j<rzm; j++){ T[i][j] = MX[i][j]; if (MX[i][j] == _global.inf){ H[i][j] = 0; } else { H[i][j] = j; } } } //trace("MX[]="+MX) //trace("T[]="+T) //trace("H[]="+H) for (i = 0; i< rzm;i++){ for (j=0;j<rzm;j++){ for (k=0;k<rzm;k++){ if (i!=j && T[j][i]!=_global.inf && i!=k &&T[i][k]!=_global.inf && (T[j][k] == _global.inf || T[j][k]>(T[j][i]+ T[i][k]))){ //trace("H["+j+"]["+k+"]="+H[j][k]) //trace("H["+j+"]["+i+"]="+H[j][i]) //trace("H[][]="+H) H[j][k] = H[j][i]; T[j][k] = T[j][i]+T[i][k]; } } } for (g = 0 ;g< rzm;g++){ if (T[g][g]<0){ trace("stop") } } } trace("Final> T[]="+T); trace("Final> H[]="+H); } return H; trace ("FLOYD END <<< "); } Алгоритм Прима function Prima(){ var d = new Array(); d = _root.matrix; trace("Prima: C="+C); var rzm = _global.razmernost; var col = new Array(rzm); var resulting_array = new Array(rzm); var infin = _global.inf; var i,j,i1,j1,k,l,m,Min,n; for (i = 0;i<rzm;++i){ _root["node_mc"+(i+1)].gotoAndStop(1); trace("filling arrays") col[i] = i; resulting_array[i] = new Array(2); } trace("resulting_array array="+resulting_array) k = 0; l = 0; n = rzm; while (k<(n-1)){ Min = infin; for (i1=0;i1<(n-1);i1++){ for(j1=i1+1;j1<n;j1++){ if ((d[i1][j1]<Min) && (col[i1]!=col[j1])){ Min=d[i1][j1]; i=i1; j=j1; } } } k++; l+=Min; resulting_array[k][0]=i; resulting_array[k][1]=j; j1=col[j]; trace("k="+k); trace("l="+l); trace("resulting_array["+k+"]"+"[1]"+resulting_array[k][0]); trace("resulting_array["+k+"]"+"[2]"+resulting_array[k][1]); trace("j1="+j1); for(m=0;m<n;m++){ trace("final cycle") if (col[m]==j1){ trace("cols") col[m] = col[i]; } } } for (z=0;z<n;z++){ trace("resulting_array["+z+"]"+"[0]"+resulting_array[z][0]); trace("resulting_array["+z+"]"+"[1]"+resulting_array[z][1]); } return resulting_array; }
__________________
www.maxshaman.com |
![]() |
Часовой пояс GMT +4, время: 21:46. |
|
|
« Предыдущая тема | Следующая тема » |
|
|