procedure TMainGraf.StringGrid1SetEditText(Sender: TObject; ACol

ARow: Integer; const Value: String);

begin

if Acol=Arow then StringGrid1.Cells[Arow, Acol]:='0';

if Acol<>Arow then

begin

StringGrid1.Cells[Arow, Acol]:=StringGrid1.Cells[ACol, ARow];

end;

end;

procedure TMainGraf.SpeedButton1MouseMove(Sender: TObject;

Shift: TShiftState; X, Y: Integer);

begin

SpeedButton1.Hint:='Заполнить таблицу рандомно, причем частота выпадения "0" задается в Настройка: '+#13+'в пункте Вероятность выпадения 0 при генерации.';

SpeedButton1.ShowHint:=true;

end;

procedure TMainGraf.SpeedButton2MouseMove(Sender: TObject;

Shift: TShiftState; X, Y: Integer);

begin

SpeedButton2.Hint:='Графически отобразить граф. Настройки внешнего вида графа, хранятся в Настройках - '+#13+'где можно задать цвет, вид и посмотреть координаты вершин если граф уже построен.';

SpeedButton2.ShowHint:=true;

end;

procedure TMainGraf.SpeedButton5MouseMove(Sender: TObject;

Shift: TShiftState; X, Y: Integer);

begin

SpeedButton5.Hint:='У связанного графа всего одна компонента связности и равна самому графу';

SpeedButton5.ShowHint:=true;

end;

//-------------------------------------------------------------

procedure TMainGraf.SpeedButton3MouseMove(Sender: TObject;

Shift: TShiftState; X, Y: Integer);

begin

SpeedButton3.Hint:='Нйти точки сочленения графа и обозначить их если он построен. Точки сочления - вершины'+#13+' графа при удалении которых число компонент связности увеличится или уменьшится.';

SpeedButton3.ShowHint:=true;

end;

procedure TMainGraf.SpeedButton4MouseMove(Sender: TObject;

Shift: TShiftState; X, Y: Integer);

begin

SpeedButton4.Hint:='Найти и отобразить компоненты связности графа, т.е. подграфы данного графа, вв виде'+#13+' связанных между собой групп вершин, не связанных с отсавшимися вершинами данного графа.';

SpeedButton4.ShowHint:=true;

end;

Procedure TMainGraf.SpeedButton6MouseMove(Sender: TObject;

Shift: TShiftState; X, Y: Integer);

begin

SpeedButton6.Hint:='Найти компоненты двусвязности. Т.е. найти группы связных вершин в которых нет точек'+#13+' сочленения.';

SpeedButton6.ShowHint:=true;

end;

procedure TMainGraf.SpeedButton7MouseMove(Sender: TObject;

Shift: TShiftState; X, Y: Integer);

begin

SpeedButton7.Hint:='Стандартный обход графа начиная с вершины указанной нижев ширину. Чтобы выделить '+#13+'верину с которой начать обход на построенном графе просто нажмите по нужной вершине.';

SpeedButton7.ShowHint:=true;

end;

procedure TMainGraf.SpeedButton8MouseMove(Sender: TObject;

Shift: TShiftState; X, Y: Integer);

begin

SpeedButton8.Hint:='Стандартный обход графа, начиная с вершины указанной ниже, в глубину. Чтобы выделить'+#13+' верину с которой начать обход на построенном графе просто нажмите по нужной вершине.';

SpeedButton8.ShowHint:=true;

end;

procedure TMainGraf.BitBtn1MouseMove(Sender: TObject; Shift: TShiftState;

X, Y: Integer);

begin

BitBtn1.Hint:='Задать массив цветов для выделения вершинв компоненты связности и двусвязности..';

BitBtn1.ShowHint:=true;

end;

procedure TMainGraf.CheckBox1MouseMove(Sender: TObject; Shift: TShiftState;

X, Y: Integer);

begin

CheckBox1.Hint:='Функция позволяет перемещать вершины в любую позицию на выделленном для рисования графе участке экрана';

CheckBox1.ShowHint:=true;

end;

procedure TMainGraf.StringGrid1KeyPress(Sender: TObject; var Key: Char);

begin

if (Key<>char('1')) and (key<>char('0')) then key:=char('0');

end;

procedure TMainGraf.ColorBox2Change(Sender: TObject);

begin

Label8.Color:=ColorBox2.Selected;

end;

procedure TMainGraf.ColorBox3Change(Sender: TObject);

begin

Label9.Color:=ColorBox3.Selected;

end;

procedure TMainGraf.ColorBox1Change(Sender: TObject);

begin

Label7.Color:=ColorBox1.Selected;

end;

procedure TMainGraf.ColorBox7Change(Sender: TObject);

begin

Label1.Color:=ColorBox7.Selected;

end;

procedure TMainGraf.ColorBox4Change(Sender: TObject);

begin

Label10.Color:=ColorBox4.Selected;

end;

procedure TMainGraf.ColorBox5Change(Sender: TObject);

begin

Label12.Color:=ColorBox5.Selected;

end;

procedure TMainGraf.ColorBox6Change(Sender: TObject);

begin

Label11.Color:=ColorBox6.Selected;

end;

procedure TMainGraf.Edit2KeyPress(Sender: TObject; var Key: Char);

begin

Key:=#0;

end;

procedure TMainGraf.Memo1KeyPress(Sender: TObject; var Key: Char);

begin

key:=#0;

end;

End.


Приложение 4

Руководство пользователя.

Программа “NeoGraf” предназначена для нахождения точек сочленения и компонент двусвязности неориентированного невзвешенного графа. Для запуска программы необходимо запустить exe файл: NeoGraf_V4.3.exe В одном каталоге с файлом должен присутствовать файл help.txt:

Рис. П3.1. Запуск программы

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

Рис. П4.2. Стартовое окно программы

После ввода количества вершин, Открывается вкладка «Параметры»:

Рис. П4.3. Параметры

В данной кладке можно:

1) Ввести матрицу смежности графа в таблицу, где 1 означает что дуга между вершинами есть или 0 – если отсутствует;

2) Построить граф, нажав кнопку Визуализация, причем если в таблице пропущены поля, или введены некорректно, то они автоматически заполнятся нулями;

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

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

5) Найти на графе точки сочленения, нажав соответствующую кнопку, которые запишутся в поле в верхнем правом углу и отображается на графе определённым цветом, причем точки сочленения – это вершины графа при удалении которых изменяется число компонент связности;

6) Найти компоненты связности графа, нажав соответствующую кнопку, связные вершины будут перечислены в верхнем правом углу экрана и отображаются в виде групп вершин, одного цвета. Компонентами связности графа считается группа связных между собой вершин графа, т.е. связные подграфы данного графа;

7) Найти компоненты двусвязности графа, нажав соответствующую кнопку, т.е. группы вершин графа, связанные между собой и у которых нет точек сочленения. Группы двусвязных компонент также выделятся на изображении определенным цветом;

8) Выбрав вершину, через нее можно реализовать два прохода в глубину и в ширину. Результат прохода запишется в верхнем правом углу в виде набора последовательностей вершин.

Для настройки визуализации графа можно перейти во вкладку «Настройки»:

Рис. П4.4. Настройки графа

В настройках можно:

1) Задать цвета дуг, вершин, и массив цветов для компонент связности.

2) Вид отображения графа включает в себя 3 различных варианта построения графа:

- По окружности, максимальное количество вершин, которое может быть построено не должно превышать 60;

- По квадрату, максимальное количество вершин, которое может быть построено не должно превышать 80;

- В произвольном месте, возможно построение вершин ограниченное максимальным вводом количества вершин: 255;

3) Ели вершин много, то при нажатии кнопки Авто заполнение, выпадет много дуг между вершинами графа, для того что бы количество дуг, соединяющее вершины графа было меньше, то можно задать вероятность выпадения «0», что делает выпадение «1» реже;

4) В пункте: Координаты вершин указываются координаты, по порядку, всех построенных вершин;

5) Подтверждение перемещения вершин позволяет пользователю свободно перемещать вершины н изображении графа.

Во вкладке «О программе», содержится небольшая информация о графах:

Рис. П4.5. О программе

Все кнопки в программе и вкладки можно переключать как мышью, так и путем нажатия сочетаний клавиш, таких как “Alt” + выделенная буква в нужной кнопке (вкладке).


Понравилась статья? Добавь ее в закладку (CTRL+D) и не забудь поделиться с друзьями:  



double arrow
Сейчас читают про: