Нахождение всех гамильтоновых циклов заданного графа

Автор работы: Пользователь скрыл имя, 03 Июня 2015 в 22:05, курсовая работа

Описание работы

В результате курсовой работы были выполнены следующие этапы:
Обследование и разработка технического задания
Построение блок-схемы программы
Разработка программы.
Тестирование и устранение ошибок.
Данная прикладная программа поможет при выполнении вычислений цикломатических чисел графов и нахождении матриц смежности.
При создании курсового проекта я лучше познакомилась со свойствами некоторых компонент, глубже изучила теорию графов.

Содержание работы

Задание на курсовой проект 2
Краткая теория графов 2
Характеристика программного обеспечения 6
Структура среды программирования 9
Алгоритм и исходный код программы 12
Исходный код главной формы 18
Вывод 30
Содержание 31
Библиография 32

Файлы: 1 файл

курсовой по программированию.doc

— 572.50 Кб (Скачать файл)

if (X+20>=gCanv.Width) then X:=gCanv.Width-20;

if (X<=0) then X:=1;

if (Y+20>=gCanv.Height) then Y:=gCanv.Height-20;

if (Y<=0) then Y:=1;

vertex_list[vertex_moves].x:=X;

vertex_list[vertex_moves].y:=Y;

paint_system_graph;

end;

for i:=0 to ListBox1.Items.Count-1 do

begin

if (vertex_list[i].x<=X) and (vertex_list[i].y<=Y) and (vertex_list[i].x+20>=X) and (vertex_list[i].y+20>=Y) then

begin

vertex_moves:=i;

StatusBar1.Panels[1].Text:='P№='+inttostr(i);

StatusBar1.Panels[2].Text:='PX='+inttostr(vertex_list[i].X);

StatusBar1.Panels[3].Text:='PY='+inttostr(vertex_list[i].Y);

break;

end

elsevertex_moves:=-1;

end;

end;

procedure TForm1.gCanvMouseUp(Sender: TObject; Button: TMouseButton;

  Shift: TShiftState; X, Y: Integer);

begin

mpress:=false;

end;

procedure TForm1.N2Click(Sender: TObject);

begin

vertex_add:=false;

ridge_add:=true;

end;

procedure TForm1.ListBox1Click(Sender: TObject);

begin

ifvertex_select<ListBox1.Items.Count then

begin

vertex_select:=ListBox1.ItemIndex;

StatusBar1.Panels[1].Text:='P№='+inttostr(vertex_select);

StatusBar1.Panels[2].Text:='PX='+inttostr(vertex_list[vertex_select].X);

StatusBar1.Panels[3].Text:='PY='+inttostr(vertex_list[vertex_select].Y);

paint_system_graph;

end;

end;

procedure TForm1.Button2Click(Sender: TObject);

function  ridge_count:integer;

varms_i,ms_j:integer;

count:integer;

begin

count:=0;

forms_i:=0 to ListBox1.Items.Count-1 do

forms_j:=0 to ListBox1.Items.Count-1 do

begin

ifmassiv_of_connectivity[ms_i, ms_j]=1 then

begin

inc(count);

end;

ridge_count:=count;

end;

end;

begin

Label1.Caption:=inttostr(ridge_count-(ListBox1.Items.Count)+1);

end;

procedure TForm1.N7Click(Sender: TObject);

begin

SaveDialog1.Filter:='*.bmp|*.bmp';

if SaveDialog1.Execute then

gCanv.Picture.SaveToFile(SaveDialog1.FileName);

end;

procedure TForm1.N8Click(Sender: TObject);

var i:integer;

begin

ListBox1.Items.Delete(vertex_select);

for i:=0 to ListBox1.Count-1 do ListBox1.Items.Strings[i]:='Вершина   -   '+inttostr(i)+'   =   '+vertex_list_mass[i];

if ListBox1.Count-1>=0 then

for i:=0 to ListBox1.Count-1 do

begin

ifmassiv_of_connectivity[i, vertex_select]=1 then massiv_of_connectivity[i, vertex_select]:=0;

ifmassiv_of_connectivity[vertex_select, i]=1 then massiv_of_connectivity[vertex_select, i]:=0;

vertex_list_mass[vertex_select]:=inttostr(-1);

end;

paint_system_graph;

end;

procedure TForm1.N10Click(Sender: TObject);

begin

if Form3.ShowModal>=2 then

begin

vertex_list_mass[vertex_select]:=Form3.Edit1.Text;

ListBox1.Items.Strings[vertex_select]:='Вершина   -   '+inttostr(vertex_select)+' = '+vertex_list_mass[vertex_select];

end;

Form3.Edit1.Text:='';

paint_system_graph;

end;

procedure TForm1.N5Click(Sender: TObject);

begin

Form2.Button1.Caption:='Удалить';

if Form2.ShowModal>=2 then

begin

massiv_of_connectivity[strtoint(form2.Edit1.Text),strtoint(form2.Edit2.Text)]:=0;

massiv_of_connectivity[strtoint(form2.Edit2.Text),strtoint(form2.Edit1.Text)]:=0;

end;

paint_system_graph;

end;

procedure TForm1.N12Click(Sender: TObject);

vari,j:integer;

begin

for i:=0 to ListBox1.Count-1 do

form4.StringGrid1.Cells[0, i+1]:=inttostr(i);

for i:=0 to ListBox1.Count-1 do

form4.StringGrid1.Cells[i+1,0]:=inttostr(i);

for i:=0 to ListBox1.Count-1 do

for j:=0 to ListBox1.Count-1 do

begin

form4.StringGrid1.Cells[i+1, j+1]:=inttostr(massiv_of_connectivity[i, j]);

end;

form4.ShowModal;

end;

procedure TForm1.N15Click(Sender: TObject);

begin

SaveDialog1.Filter:='*.bmp|*.bmp';

if SaveDialog1.Execute then

gCanv.Picture.SaveToFile(SaveDialog1.FileName);

end;

procedure TForm1.N16Click(Sender: TObject);

begin

form1.Close;

end;

procedure TForm1.N17Click(Sender: TObject);

begin

ridge_add:=false;

vertex_add:=true;

end;

procedure TForm1.N18Click(Sender: TObject);

begin

vertex_add:=false;

ridge_add:=true;

end;

procedure TForm1.N22Click(Sender: TObject);

begin

if Form3.ShowModal>=2 then

begin

vertex_list_mass[vertex_select]:=Form3.Edit1.Text;

ListBox1.Items.Strings[vertex_select]:='Вершина   -   '+inttostr(vertex_select)+' = '+vertex_list_mass[vertex_select];

end;

Form3.Edit1.Text:='';

paint_system_graph;

end;

procedure TForm1.N19Click(Sender: TObject);

var i:integer;

begin

ListBox1.Items.Delete(vertex_select);

for i:=0 to ListBox1.Count-1 do ListBox1.Items.Strings[i]:='Вершина   -   '+inttostr(i)+'   =   '+vertex_list_mass[i];

if ListBox1.Count-1>=0 then

for i:=0 to ListBox1.Count-1 do

begin

ifmassiv_of_connectivity[i, vertex_select]=1 then massiv_of_connectivity[i, vertex_select]:=0;

ifmassiv_of_connectivity[vertex_select, i]=1 then massiv_of_connectivity[vertex_select, i]:=0;

vertex_list_mass[vertex_select]:=inttostr(-1);

end;

paint_system_graph;

end;

procedure TForm1.N21Click(Sender: TObject);

vari,j:integer;

begin

for i:=0 to ListBox1.Count-1 do

form4.StringGrid1.Cells[0, i+1]:=inttostr(i);

for i:=0 to ListBox1.Count-1 do

form4.StringGrid1.Cells[i+1,0]:=inttostr(i);

for i:=0 to ListBox1.Count-1 do

for j:=0 to ListBox1.Count-1 do

begin

form4.StringGrid1.Cells[i+1, j+1]:=inttostr(massiv_of_connectivity[i, j]);

end;

form4.ShowModal;

end;

end.

Вывод. 

В результате курсовой работы были выполнены  следующие этапы:

  1. Обследование и разработка технического задания
  2. Построение блок-схемы программы
  3. Разработка программы.
  4. Тестирование и устранение ошибок.

Данная прикладная программа поможет при выполнении вычислений цикломатических чисел графов и нахождении матриц смежности.

При создании курсового проекта я лучше познакомилась со свойствами некоторых компонент, глубже изучила теорию графов.

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Содержание

    • Задание на курсовой проект       2
    • Краткая теория графов        2
    • Характеристика программного обеспечения    6
    • Структура среды программирования     9
    • Алгоритм и исходный код программы            12
    • Исходный код главной формы             18
    • Вывод                 30
    • Содержание                 31
    • Библиография                 32

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Список литературы:

    1. Касьянов В.Н., Евстигнеев В.А. Графы в программировании: обработка, визуализация и применение. - СПб.: БХВ-Петербург, 2003
    2. Костевич Л.С., Лапко А.А. Теория игр. Исследование операций. - Мн.: Вышэйшая школа, 1982
    3. Оре О. Теория графов. - М.: Наука, 1980
    4. Харари Ф. Теория графов. - М.: Едиториал УРСС, 2003
    5. http://www.realcoding.net/teach/Delphi_7/ - самоучитель программирования в среде Delphi для начинающих

Информация о работе Нахождение всех гамильтоновых циклов заданного графа