Разработка приложения, предназначенного для нахождения раскраски заданного неориентированного графа с использованием метода Зыкова
Разработка и отладка графического приложения со стандартизированным интерфейсом. Переборный и последовательный алгоритмы раскраски неориентированного графа. Описание модулей uMain, uData, uFiling, uColoring, uInputk, uHelp. Тестирование работы приложения.
Рубрика | Программирование, компьютеры и кибернетика |
Вид | курсовая работа |
Язык | русский |
Дата добавления | 11.02.2016 |
Размер файла | 1,0 M |
Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже
Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.
ColFound:
if Colorable then
begin // Пометканайденнойвершиныцветом CurColor
VColor[VNumber[VCur-1]-1]:=CurColor;
exclude(Uncolored,VNumber[VCur-1]);
result:=CurColor;
end
// В текущий цвет вершины раскрасить нельзя, берем следующий
else inc(CurColor);
until Uncolored=[];
VDegree:=Nil;
VNumber:=Nil
end;
// Раскраска графа в NewColorCount цветов по найденной минимальной раскраске
procedure DoNonminColoring(VCount: Cardinal; VColor: TColoring;
MinColorCount, NewColorCount: Byte);
var i,j: Byte;
begin
if MinColorCount >= NewColorCount then Exit;
for i:=1 to VCount - 1 do
for j:=i+1 to VCount do
if VColor[j-1] = VColor[i-1] then
begin
inc(MinColorCount);
VColor[j-1]:=MinColorCount;
if MinColorCount >= NewColorCount then Exit;
end;
end;
// Обнуление массива цветов вершин графа
function ResetColoring(VCount: Cardinal; VColor: TColoring): boolean;
var i: Byte;
begin
result:=false;
if VCount = 0 then Exit;
for i:=0 to VCount - 1 do
if VColor[i] > 0 then
begin
result:=true;
VColor[i]:=-1;
end;
end;
begin
// Установка цветов для раскраски вершин графа на форме
RealColors[0]:=clYellow;
RealColors[1]:=clAqua;
RealColors[2]:=clMaroon;
RealColors[3]:=clRed;
RealColors[4]:=clSkyBlue;
RealColors[5]:=clGreen;
RealColors[6]:=clPurple;
RealColors[7]:=clTeal;
RealColors[8]:=clSilver;
RealColors[9]:=clOlive;
RealColors[10]:=clNavy;
RealColors[11]:=clltGray;
RealColors[12]:=clLime;
RealColors[13]:=clFuchsia;
RealColors[14]:=clMedGray;
RealColors[15]:=clMoneyGreen;
RealColors[16]:=clBlue;
RealColors[17]:=clCream;
RealColors[18]:=clWhite;
end.
unit uData;
interface
uses Types, Graphics;
const MaxVCount = 50; // Максимальное число вершин графа
type // Глобально используемые типы
TAdMatrix = array of array of Byte; // Матрица смежности графа
TColoring = array of ShortInt; // Векторцветоввершин
TRealColors = array[0..MaxVCount-1] of TColor; // Системныеименацветов
TVertices = array of TPoint; // Координатыцентроввершин
TGraphFile = file of Byte; // Файлграфа
implementation
end.
unit uFiling;
// Функция сохранения графа в файле по матрице смежности
function DoSaveFile(const FileName: string; const AdMatrix: TAdMatrix): Boolean;
var VCount,FileSize: Word;
FileImage: array of Byte;
i,j,Bit,m,u: Byte;
begin
result:=False;
if (FileName='') or (AdMatrix=Nil) then Exit;
AssignFile(GraphFile,FileName);
try // Открытиефайланазапись
Rewrite(GraphFile);
except
Exit
end;
VCount:=High(AdMatrix)+1; // Создание массива для образа файла
FileSize:=Ceil(VCount*(VCount-1)/16);
SetLength(FileImage,FileSize+1);
FileImage[0]:=VCount;
Write(GraphFile,FileImage[0]);
m:=1; u:=0; Bit:=0;
for i:=0 to VCount - 2 do
for j:=i+1 to VCount - 1 do
begin // Перезапись матрицы смежности в массив
if Bit > 0 then u:=u shl 1;
inc(Bit);
if AdMatrix[i,j] > 0 then u:=u or $1;
if Bit >= 8 then
begin
Bit:=0;
FileImage[m]:=u;
Write(GraphFile,FileImage[m]);
inc(m);
u:=0;
end;
end;
if Bit > 0 then // Дозапись последнего байта
begin
FileImage[m]:=u;
Write(GraphFile,FileImage[m]);
end;
CloseFile(GraphFile);
FileImage:=Nil;
result:=True;
end;
// Функция чтения графа из файла в матрицу смежности
function DoReadFile(const FileName: string;
var VCount: Byte; var AdMatrix: TAdMatrix): Boolean;
var OldVCount,FileSize: Word;
FileImage: array of Byte;
i,j,k,mask,q: Byte;
begin
result:=True;
if FileName='' then Exit;
AssignFile(GraphFile,FileName);
try // Открытиефайланачтение
Reset(GraphFile);
except
result:=False;
Exit
end;
OldVCount:=VCount;
Read(GraphFile,VCount); // Чтениечиславершинграфа
if VCount > MaxVCount then begin
VCount:=OldVCount; // Некорректноечисловершин
result:=False;
end
else
begin // Считывание матрицы смежности в массив
FileSize:=Ceil(VCount*(VCount-1)/16);
SetLength(FileImage,FileSize);
k:=0;
while not eof(GraphFile) do
begin
Read(GraphFile,FileImage[k]);
inc(k);
end;
if k = 0 then result:=False
else
begin
// Преобразование массива в матрицу смежности графа
SetLength(AdMatrix,VCount,VCount);
i:=0; j:=1;
for k:=0 to FileSize - 1 do
begin // Преобразование k-гоэлементамассива
if k = FileSize - 1 then
begin
mask:=1; // Расчет числа значащих бит последнего элемента
q:=(VCount*(VCount-1) div 2) mod 8;
mask:=mask shl (q-1);
end
else mask:=$80;
repeat // Распаковка битового образа элемента массива
if mask and FileImage[k] > 0 then
begin
AdMatrix[i,j]:=1;
AdMatrix[j,i]:=1;
end;
inc(j);
if j = VCount then
begin
inc(i);
j:=i+1;
end;
mask:=mask shr 1;
until mask = 0;
end;
end;
FileImage:=Nil;
end;
CloseFile(GraphFile);
end;
end.
unit uHelp;
implementation
procedure TfmHelp.FormActivate(Sender: TObject);
begin // Окно используется в режиме "о программе"
self.Caption:='Опрограмме';
self.Position:=poMainFormCenter;
RichEdit.Lines.Clear;
RichEdit.ScrollBars:=ssNone;
RichEdit.Font.Size:=10;
RichEdit.Font.Color:=clBlue;
RichEdit.Lines.Append('Курсовая работа по дисциплине: Моделирование и оптимальное проектирование технических систем.');
RichEdit.Lines.Append('');
RichEdit.Lines.Append('Тема работы: Раскраска графа методом Зыкова');
RichEdit.Lines.Append('');
RichEdit.Lines.Append('Выполнил студент гр. 107221 Иванчик Сергей Александрович');
end;
procedure TfmHelp.FormDeactivate(Sender: TObject);
begin
RichEdit.Font.Size:=8;
RichEdit.Font.Color:=clBlack;
end;
end.
unit uInputk;
implementation
procedure TfmInputk.btnSetClick(Sender: TObject);
begin
if ComboBox.Text = '' then ModalResult:=mrNone
else ModalResult:=mrOk;
end;
procedure TfmInputk.btnCanselClick(Sender: TObject);
begin
ModalResult:=mrCancel;
fmMain.StatusBar.SimpleText:='Готово';
end;
procedure TfmInputk.ComboBoxChange(Sender: TObject);
var i: Integer;
begin
i:=StrToIntDef(ComboBox.Text,0);
if (i < 1) or (i > ComboBox.Tag) then
ComboBox.Text:='';
end;
procedure TfmInputk.FormActivate(Sender: TObject);
begin
ComboBox.Text:='';
end;
end.
Размещено на Allbest.ru
...Подобные документы
Разработка граф-схемы алгоритма раскраски на языке Object Pascal. Формат файла для хранения графов. Выбор удобочитаемых идентификаторов. Переменные, константы, типы, компоненты, процедуры и функции модулей uMain, uInputk, uFiling, uColoring, uHelp.
курсовая работа [1,3 M], добавлен 22.11.2013Этапы нахождения хроматического числа произвольного графа. Анализ примеров раскраски графа. Характеристика трудоемкости алгоритма раскраски вершин графа Мейниеля. Особенности графов, удовлетворяющих структуру графов Мейниеля, основные классы графов.
курсовая работа [1,1 M], добавлен 26.06.2012Математические графы, области их применения. Способы раскраски вершин и ребер графов, задачи на их применение. Разработка алгоритма, работающего на основе операций с матрицей смежности. Описание логической структуры программы. Пример зарисовки графа.
курсовая работа [145,5 K], добавлен 27.01.2013Создание многоуровневого приложения с Web-интерфейсом выставления оценки фильму и просмотра оценок других пользователей. Клиентская часть приложения. Разработка многопользовательского веб-приложения на ASP.NET MVC 3 с разграничением доступа к данным.
курсовая работа [949,7 K], добавлен 22.02.2015Характеристика объекта автоматизации. Создание многоуровневой архитектуры приложения, отладка метода безошибочной идентификации пользователей системы. Разработка нестандартного метода преобразования объектов базы данных в объекты классов приложения.
курсовая работа [395,4 K], добавлен 28.04.2015Разработка клиент-серверного приложения, позволяющего взаимодействовать друг с другом с использованием доступа к базам данных. Проектирование связи сервера с базой данных с помощью технологии ODBC. Разработка интерфейса программы, ее тестирование.
курсовая работа [352,0 K], добавлен 24.08.2016Возможности среды программирования delphi при разработке приложения с визуальным интерфейсом. Отладка программных модулей с использованием специализированных программных средств. Тестирование программного обеспечения. Оптимизация программного кода.
курсовая работа [974,0 K], добавлен 21.12.2016Основные инструменты построения Web-приложения. Язык сценариев PHP. Системный анализ предметной области базы данных. Коды SQL запросов на создание таблиц. Разработка Web-приложения. Описание функциональности модулей. Система управления содержимым статей.
курсовая работа [4,8 M], добавлен 28.04.2014Изучение возможностей среды программирования delphi при разработке приложения с визуальным интерфейсом. Отладка программных модулей с использованием специализированных средств. Способы работы с динамическими массивами. Оптимизация программного кода.
курсовая работа [1,0 M], добавлен 23.12.2016Способы построения остовного дерева (алгоритма поиска в глубину и поиска в ширину). Вид неориентированного графа. Понятие и алгоритмы нахождения минимальных остовных деревьев. Последовательность построения дерева графов по алгоритмам Крускала и Прима.
презентация [22,8 K], добавлен 16.09.2013Автоматизация системы снятия показаний счетчиков энергии. Разработка базы данных и клиентского приложения для структур жилищно-коммунального хозяйства, занимающихся составлением квитанций. Описание предметной области. Тестирование клиентского приложения.
курсовая работа [953,3 K], добавлен 01.09.2016Описание технологии asp.net. Страницы веб-приложения, тестирование системы. Описание функциональной, динамической модели системы. Диаграммы вариантов использования, последовательности, база данных приложения. Реализация программы, интерфейс, тестирование.
курсовая работа [3,2 M], добавлен 30.01.2013Возможности среды программирования delphi при разработке приложения с визуальным интерфейсом. Разработка спецификации программного обеспечения и на ее основе кода программного продукта. Отладка программы "трассировкой", ее тестирование и оптимизация.
курсовая работа [501,4 K], добавлен 07.12.2016Анализ предметной области. Диаграмма классов. Проектирование программного продукта "Часы". Тестирование и отладка, руководство программиста. Описание работы приложения. Руководство оператора, модель жизненного цикла. Файл Times.cs, Arrow.cs, Form1.cs.
курсовая работа [1,7 M], добавлен 20.04.2015Разработка программного приложения по автоматизированному учету поступающего довольствия. Описание среды программирования. Тестирование и отладка приложения. Анализ результатов решения. Инструкция пользователю. Требования к техническому обеспечению.
дипломная работа [946,0 K], добавлен 18.07.2014Разработка Web-приложения для ООО "Научно-производственная фирма по применению информационных технологий в электрических сетях". Техническое задание, проектирование процессов, создание базы данных, разработка дизайна, тестирование и отладка сайта.
дипломная работа [3,8 M], добавлен 24.06.2011Общая схема работы приложения Android. Разработка обучающего приложения для операционной системы Android, назначение которого - развитие речи посредством произнесения скороговорок. Описание компонентов разработанного приложения, его тестирование.
дипломная работа [1,2 M], добавлен 04.02.2016Фильтрация шумов изображения. Алгоритмы его бинаризации и поворота. Формирование информативных признаков для распознавания нот. Схема программного обеспечения. Описание классов, функций, методов, реализованных в программе. Тестирование приложения.
курсовая работа [2,0 M], добавлен 17.12.2013Структура базы данных web-приложения предприятия ООО "Седово"; автоматизация процесса передачи документов. Разработка технического задания, проектирование БД, функциональное назначение web-приложений, тестирование, отладка и размещение в сети Internet.
дипломная работа [5,3 M], добавлен 24.06.2011Создание, изучение и разработка приложение на Android. Среда разработки приложения DelphiXE5. Установка и настройка среды программирования. Этапы разработки приложения. Инструменты для упрощения конструирования графического интерфейса пользователя.
курсовая работа [1,6 M], добавлен 19.04.2017