Информационный портал Media Systems & Bear Corp.

Главная Новости Delphi C&C++ Tеория Графов Web-Design Математика Исходники и Проекты Лисп и Пролог Ссылки

Портал :: Теория графов :: Генерация графов
 
TOOLBOX 7.25 XT
 
 

  • Функции генерации графов заданного типа
Rambler's Top100  
 


К вопросу о генерации графов заданного типа:

Без лишних комментариев привожу кусок кода честно выдранный из MEDIA DRAW GRAPH 7 GENERATOR избегая при этом:

// Создание графа-цикла вместо memo рекомендую сразу рисовать в файл
procedure TMDIChild.CreateCykl;
var i,j:integer;
begin
j:=m;
memo1.clear;
memo1.lines.append(inttostr(m));
memo1.lines.append('2 '+inttostr(j)+' 0');
for i:=1 to j-2 do
begin
memo1.lines.append(inttostr(i)+' '+inttostr(i+2)+' 0');
end;
memo1.lines.append('1 '+inttostr(j-1)+' 0');
memo1.lines.append('*');
memo1.lines.append('0');
end;

// Создание полного графа вместо memo рекомендую сразу рисовать в файл
procedure TMDIChild.CreateFull;
var i,j,k:integer;
str:string;
begin
j:=m;
memo1.lines.append(inttostr(m));
for i:=1 to j do
begin
str:='';
for k:=1 to j do
begin
if k<>i then
str:=str+inttostr(k)+' ';
end;
memo1.lines.append(str+'0');
end;
memo1.lines.append('*');
memo1.lines.append('0');
end;

// Создание цепи вместо memo рекомендую сразу рисовать в файл
procedure TMDIChild.CreateChain;
var i,j:integer;
begin
j:=m;
memo1.lines.append(inttostr(m));
memo1.lines.append('2 0');
for i:=2 to j-1 do
begin
memo1.lines.append(inttostr(i-1)+' '+inttostr(i+1)+' 0');
end;
memo1.lines.append(inttostr(j-1)+' 0');
memo1.lines.append('*');
memo1.lines.append('0');
end;

// Создание сильнорегулярного графа вместо memo рекомендую сразу рисовать в файл
procedure TMDIChild.CreateSRG;
var i1,i,j,k:integer;
a:array[1..800,1..800]of integer;
p,v:integer;
str:string;
begin
memo1.clear;
memo1.lines.append(inttostr(m));
j:=m;
v:=trunc(sqrt(j));
k:=0;
for i:=1 to v do
for i1:=1 to v do
begin
inc(k);
a[i,i1]:=k;
end;
p:=0;
for i:=1 to j do
begin
inc(p);
if p>=trunc(sqrt(j))+1 then p:=1;
str:='';
for k:=1 to trunc(sqrt(j)) do
if a[trunc(((i-1)/sqrt(j))+1),k]<>i then
str:=str+inttostr(a[trunc(((i-1)/sqrt(j))+1),k])+' ';
for k:=1 to trunc(sqrt(j)) do
if a[k,p]<>i then
str:=str+inttostr(a[k,p])+' ';
memo1.lines.append(str+'0');
end;
memo1.lines.append('*');
memo1.lines.append('0');
end;

// Создание графа-звезды вместо memo рекомендую сразу рисовать в файл
procedure TMDIChild.CreateStar;
var root:smallint;
j,i,k:smallint;
str:string;
begin
form3.trackbar1.max:=m;
form3.showmodal;
root:=form3.trackbar1.position;
memo1.clear;
memo1.lines.append(inttostr(m));
j:=m;
for i:=1 to j do
begin
if i<>root then
begin
memo1.lines.append(inttostr(root)+' 0');
end
else
begin
str:='';
for k:=1 to j do
if k<>root then
str:=str+inttostr(k)+' ';
memo1.lines.append(str+' 0');
end;
end;
memo1.lines.append('*');
memo1.lines.append('0');
end;


// Создание вершинного каркаса графа вместо memo рекомендую сразу рисовать в файл
procedure TMDIChild.MakeCarcas;
var j,i:smallint;
begin
memo1.clear;
memo1.lines.append(inttostr(m));
j:=m;
for i:=1 to j do
begin
memo1.lines.append('0');
end;
memo1.lines.append('*');
memo1.lines.append('0');
end;

По этим алгоритмам все должно быть понятно.Все алгоритмы максимально упрощены.

Написано Ioann 10.11.2000

 
     
  Гостевая книга . Связь с разработчиками: Bear Corporation, Media Studio.  
  Это место для вашей рекламы  

Дизайн: Bear Corner, Inc. & Media Sudio.
Последнее обновление: 11.04.2001.

 

Hosted by uCoz