Форум Flasher.ru
Ближайшие курсы в Школе RealTime
Список интенсивных курсов: [см.]  
  
Специальные предложения: [см.]  
  
 
Блоги Правила Справка Пользователи Календарь Сообщения за день
 

Вернуться   Форум Flasher.ru > Архив Flasher.ru > Flash > ActionScript

Версия для печати  Отправить по электронной почте    « Предыдущая тема | Следующая тема »  
Опции темы Опции просмотра
 
Создать новую тему  
Старый 23.04.2004, 02:57
Sh@man вне форума Посмотреть профиль Отправить личное сообщение для Sh@man Найти все сообщения от Sh@man
  № 1  
Sh@man
 
Аватар для Sh@man

Регистрация: Mar 2002
Сообщений: 840
Отправить сообщение для Sh@man с помощью AIM Отправить сообщение для Sh@man с помощью Skype™
По умолчанию Дейкстра, Флойд, Прима.

Наконец. Сделал.
Алгоритм Дейкстры:
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.
Быстрый переход
  « Предыдущая тема | Следующая тема »  

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.


 


Часовой пояс GMT +4, время: 21:46.


Copyright © 1999-2008 Flasher.ru. All rights reserved.
Работает на vBulletin®. Copyright ©2000 - 2026, Jelsoft Enterprises Ltd. Перевод: zCarot
Администрация сайта не несёт ответственности за любую предоставленную посетителями информацию. Подробнее см. Правила.