Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > Горю!! Помогите написать Алгоритм Прима!!!


Автор: lleiton 8.11.2005, 01:02
если ест знающие люди , то прошу о помощи)
суть в следующем: надо написать программу на Делфи и реализовать в ней алгоритм Прима, причём граф должен вводиться пользователем , т.е. пользователь должен сам рисовать его мышкой.
алгоритм просто до ужаса....но КАК ЕГО РЕАЛИЗОВАТЬ НА ДЕЛФИ?? вот это для меня просто неразрешимый вопрос.
алгоритм Прима довольно часто применяется , поэтому может у кого то ест уже готовый текст программы) прошу выложить его тогда целиком сюда))
заранее балгодарен

Автор: Rick 8.11.2005, 07:51
простите, но "Прима" это алгоритм Дейкстра-Прима или это что-то другое smile

Автор: lleiton 8.11.2005, 19:52
ну скорее всего , я думаю что Дейкстера-Прима это немного изменённый алгоритм Прима. а может это одно и тоже , просто в некоторых книгах указывается как автор только Прима.
ПРОГА нужна)) времени в обрез...

Автор: lleiton 9.11.2005, 15:48
ну неужели этого никто не знает?)) вот не верю!

Автор: eskaflone 9.11.2005, 21:33
Код

program minim_tree_prim;
const maxn=100;
var a:array[1..maxn,1..maxn]of integer;
    n,i,j:integer;

procedure solve;
var sm,sp:set of 1..maxn;
    min,i,j,l,t:integer;
begin
   min:=maxint;
   sm:=[1..n];sp:=[];
   for i:=1 to n-1 do
      for j:=i+1 to n do
         if (a[i,j] < min) and (a[i,j] <> 0) then
            begin
               min:=a[i,j];
               l:=i;t:=j;
            end;
   sp:=[l,t];sm:=sm-[l,t];
   write(l,' ',t ,'  ');
   while sm <> [] do
      begin
         min:=maxint;
         l:=0;t:=0;
         for i:=1 to n do
            if not (i in sp) then
               for j:=1 to n do
                  if (j in sp) and (a[i,j] < min) and (a[i,j] <> 0) then
                     begin
                        min:=a[i,j];
                        l:=i;t:=j;
                     end;
         sp:=sp+[l];sm:=sm-[l];
         write(l,' ',t,'  ');
      end;
end;

begin
   read(n);
   for i:=1 to n do
      for j:=1 to n do
         read(a[i,j]);
   solve;
end.


под дельфу сам переделаешь?

Автор: lleiton 10.11.2005, 01:20
eskaflone ой....наверное не переделаю......был бы просто ОЧЕНЬ рад если бы Дельфийский год полностью предоставили)))

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)