Разработка алгоритма и обоснование выбора языка программирования

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

Рубрика Программирование, компьютеры и кибернетика
Вид реферат
Язык русский
Дата добавления 11.07.2011
Размер файла 130,5 K

Отправить свою хорошую работу в базу знаний просто. Используйте форму, расположенную ниже

Студенты, аспиранты, молодые ученые, использующие базу знаний в своей учебе и работе, будут вам очень благодарны.

Размещено на http://www.allbest.ru/

Содержание

Введение

1. Формализация исходных данных

1.1 Анализ современного состояния проблемы поиска кратных центров графа

1.2 Анализ существующих методов

1.3 Перспективы развития методов поиска кратчайших путей

Выводы

2. Разработка алгоритма и программы поиска кратных центров графа

2.1 Разработка алгоритма

2.2 Обоснование выбора языка программирования

2.3 Разработка программы

Выводы

3. Экспериментальное исследование алгоритма и программы

3.1 Тестовый пример

3.2 Тестирование программы

3.3 Вычислительный эксперимент

Выводы

Заключение

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

Введение

Современное планирование мероприятий в Вооружённых Силах тесно связано с применением теории графов. Так как охрана государственной границы, учебные мероприятия и проведение боевых операций требуют частой перегруппировки войск, совершения маршей, а время и ресурсы на их проведение ограничены, то теория графов с её богатым математическим аппаратом оказывает помощь при решении поставленных задач. Часто бывает полезно и наглядно изображать некоторую ситуацию в виде рисунка, состоящего из точек вершин, представляющих основные элементы ситуации, и линий (ребер), соединяющих определенные пары этих вершин и представляющих связи между ними. Такие рисунки известны под общим названием графов. Благодаря своему широкому применению теория графов в последние годы интенсивно развивается. В большой мере этому способствует также прогресс в области развития больших быстродействующих вычислительных машин. Непосредственное и детальное представление практических систем, таких, как распределительные сети и системы связи, приводит к графам большого размера успешный анализ которых зависит в равной степени как от существования "хороших" алгоритмов, так и от возможности использования быстродействующих вычислительных машин.

В практической деятельности постоянно возникают задачи «наилучшего» размещения оборудования (или средств обслуживания) в сетях или графах. В частности, если граф представляет сеть дорог и вершины соответствуют отдельным районам, то можно поставить задачу оптимального размещения больниц, полицейских участков, пожарных частей и многих других крайне необходимых предприятий и служб. В таких случаях критерий оптимальности может состоять в минимизации расстояния (или времени проезда) от пункта обслуживания до самой отдаленной вершины графа, т. е. в оптимизации «наихудшего варианта». В более общей задаче требуется разместить несколько таких пунктов обслуживания (а не только один). При этом самая отдаленная вершина графа должна находиться по крайней мере от одного пункта обслуживания на минимально возможном расстоянии. К таким задачам относятся задачи размещения аварийных служб, и поэтому объективным требованием здесь является минимизация наибольшего расстояния от произвольной вершины графа до ближайшего к ней пункта обслуживания. По очевидным причинам задачи такого типа называются минимаксными задачами размещения. Полученные при решении этих задач места размещения пунктов обслуживания называются центрами графа. В некоторых задачах размещения лучше всего было бы минимизировать сумму всех расстояний от вершин графа до центра обслуживания (если предполагать, что ищется место для размещения только одного такого пункта обслуживания). Такой критерий является наиболее подходящим, например, в задаче о размещении склада в сети дорог, где вершины представляют потребителей, обслуживаемых этим складом, или в задаче размещения телефонных станций в телефонной сети, где вершины представляют абонентов. Задачи такого типа вообще относятся к минимаксным задачам размещения, хотя целевая функция является часто не просто суммой расстояний, а суммой различных функций от расстояний.

1. Формализация исходных данных

1.1 Анализ современного состояния проблемы поиска кратных центров графа

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

Первые задачи теории графов были связаны с решением математических развлекательных задач и головоломок (задача о Кенигсбергских мостах, задача о расстановке ферзей на шахматной доске, задачи о перевозках, задача о кругосветном путешествии и другие). Одним из первых результатов в теории графов явился критерий существования обхода всех ребер графа без повторений, полученный Л. Эйлером при решении задачи о Кенигсбергских мостах.

Родившись при решении головоломок и занимательных игр, теория графов стала в настоящее время простым, доступным и мощным средством решения вопросов, относящихся к широкому кругу проблем. Графы буквально вездесущи. В XX в. задачи, связанные с графами, начали возникать не только в физике, химии, электротехнике, биологии, экономике, социологии и т.д., но и внутри математики, в таких разделах, как топология, алгебра, теория вероятностей, теория чисел. Не обошла она и Вооружённые Силы.

Значительно расширились исследования по теории графов в конце 40-х - начале 50-х годов, прежде всего в силу развития кибернетики и вычислительной техники. Благодаря развитию вычислительной техники, изучению сложных кибернетических систем, интерес к теории графов возрос, а проблематика теории графов существенным образом обогатилась. Кроме того, использование ЭВМ позволило решать возникающие на практике конкретные задачи, связанные с большим объемом вычислений, прежде не поддававшиеся решению. Для ряда экстремальных задач теории графов были разработаны методы их решения, например, один из таких методов позволяет решать задачи о построении максимального потока через сеть. Для отдельных классов графов (деревья, плоские графы и т. д.), которые изучались и ранее, было показано, что решения некоторых задач для графов из этих классов находятся проще, чем для произвольных графов (нахождение условий существования графов с заданными свойствами, установление изоморфизма графов и др.).

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

На практике часто имеет место такая ситуация, когда одного пункта обслуживания недостаточно, поскольку он не в состоянии обслужить все поступающие вызовы, и тогда возникает задача о наилучшем размещении нескольких таких пунктов обслуживания. Эту задачу можно сформулировать так. Найти наименьшее число пожарных депо (например) и такое их размещение, чтобы расстояние от каждого жилого района до ближайшего к нему пожарного депо не превышало наперед заданной величины. Если же число пожарных депо известно, то требуется разместить их так, чтобы было минимально возможным расстояние от любого района до ближайшего к нему депо. Если предположить, что пожарные должны размещаться в вершинах соответствующего графа G, то задача будет состоять в нахождении р-центров графа для p = 1, 2, 3, ... и т. д. до тех пор, пока число разделения р-центра не станет меньше или равно заданному расстоянию. Полученное (последнее) значение числа p будет наименьшим числом пожарных депо, а р-центр -- их

оптимальным размещением, удовлетворяющим предъявляемым требованиям.

1.2 Анализ существующих методов

Понятие центра графа допускает следующее обобщение: можно рассматривать не отдельную точку (центр), а множество из p точек, которые образуют кратный центр (p-центр).

Пусть Хp-- подмножество (содержащее p вершин) множества X вершин графа G = (X, Г). Через d (Хp, xi) будем обозначать наикратчайшее из расстояний между вершинами множества Хp и вершиной xi, т. е. d(Xp , xi)=min[d(xj,xi)].

Аналогично, символом d (xt, Хp) обозначается min [d (xi, xj)]. Подобно тому, как определялись числа разделения вершин , мы можем определить числа разделения для множеств вершин:

s0 (Xp) = max [vj d(Хp, xj)] (1)

st(Xp) = max [vj d(xj, Хp)]

где s0p) и stp) -- числа внешнего и внутреннего разделения множества Xp.

Множество Хp0, для которого

S0(Xp0)= min [s0(Xp)], (2)

называется р-кратным внешним центром графа G; аналогично определяется р-кратный внутренний центр Xpt. Центры графа легко могут быть получены из матрицы взвешенных расстояний (полным перебором). При таком подходе надо построить всевозможные множества вершин Хp, содержащие p вершин, а затем, используя формулы (1) и (2), непосредственно найти множества Xp0 и Xt0, образующие р-центры.

1.3 Перспективы развития методов

Достоинством данного метода является его простота и понятность. К недостаткам можно отнести необходимость составлять всевозможные подмножества из вершин графа заключенные в p-центре. Для достаточно больших графов число таких подмножеств достигает огромной величины.

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

Выводы

1) Произведён анализ современного состояния проблемы поиска кратчайшего расстояния;

2) Рассмотрены существующие методы поиска кратчайшего расстояния;

3) Выявлены их недостатки;

4) Предложен путь дальнейшего развития методов поиска кратчайшего расстояния.

алгоритм кратный центр граф

2. Разработка алгоритма и программы поиска кратных центров графа

2.1 Разработка алгоритма

1) Составим всевозможные подмножества состоящие из р вершин.

2) Найдем минимальные расстояния от вершин подмножества до оставшихся вершин графа. Данную процедуру проделаем для всех подмножеств из р вершин.

3) Выберем из этих минимальных расстояний максимальное и припишим его данному подмножеству.

4) Выберем из всех подмножеств те, для которых минимаксное расстояние минимально. Они и будут р-центрами графа.

2.2 Выбор языка программирования

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

С++ - это универсальный язык программирования, задуманный так, чтобы сделать программирование более приятным для серьёзного программиста. За исключением второстепенных деталей С++ является надмножеством языка программирования С. Помимо возможностей, которые дает С, С++ предоставляет гибкие и эффективные средства определения новых типов. Используя определения новых типов, точно отвечающих концепциям приложения, программист может разделять разрабатываемую программу на легко поддающиеся контролю части. Такой метод построения программ часто называют абстракцией данных. Информация о типах содержится в некоторых объектах типов, определённых пользователем. Такие объекты просты и надёжны в использовании в тех ситуациях, когда их тип нельзя установить на стадии компиляции. Программирование с применением таких объектов часто называют объектно-ориентированным. При правильном использовании этот метод даёт более короткие, проще понимаемые и легче контролируемые программы.

С++ обеспечивает полный набор операторов структурного программирования. Он также предлагает необычно большой набор операций. Многие операции С++ соответствуют машинным командам, и поэтому допускают прямую трансляцию в машинный код. Разнообразие операций позволяет выбирать их различные наборы для минимизации результирующего поля.

С++ поддерживает указатели не переменные и функции. Указатель на объект программы соответствует машинному адресу этого объекта. Посредством разумного использования указателей можно создавать эффективно-выполняемые программы, так как указатели позволяют ссылаться на объекты тем же самым путём, как это делает машина. Си ++ поддерживает арифметику указателей, и тем самым позволяет осуществлять непосредственный доступ и манипуляции с адресами памяти.

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

С++ - гибкий язык, позволяющий принимать в конкретных ситуациях самые разные решения.

В языке С++ полностью поддерживаются принципы объектно-ориентированного программирования, включая три кита, на которых оно стоит: инкапсуляцию, наследование и полиморфизм. Инкапсуляция в С++ поддерживается посредством создания нестандартных (пользовательских) типов данных, называемых классами. Язык С++ поддерживает наследование. Это значит, что можно объявить новый тип данных (класс), который является расширением существующего.
Хотя язык С++ справедливо называют продолжением С и любая работоспособная программа на языке С будет поддерживаться компилятором С++, при переходе от С к С++ был сделан весьма существенный скачок. Язык С++ выигрывал от своего родства с языком С в течение многих лет, поскольку многие программисты обнаружили, что для того, чтобы в полной мере воспользоваться преимуществами языка С++, им нужно отказаться от некоторых своих прежних знаний и приобрести новые, а именно: изучить новый способ концептуальности и решения проблем программирования. Перед тем как начинать осваивать С++, Страуструп и большинство других программистов, использующих С++ считают изучение языка С необязательным.

Исходя из вышеизложенного для написания программы, был выбран язык программирования Visual С ++ версии 6.0.

2.3 Разработка программы

Тело программы состоит из главной функции и четырех впомогательных. Программа начинается с подключения стандартных библиотек (iostream, fstream и conio).

Далее производится объявление вспомогательных функций:

void threecentr(int N,int pc,int kol)-данная функция предназначена для поиска 3-центров графа;

void fourcentr(int N,int pc,int kol)-данная функция предназначена для поиска 4-центров графа;

void fivecentr(int N,int pc,int kol)-данная функция предназначена для поиска 5-центров графа;

int faktorial(int N,int pc)-данная функция предназначенна для поиска числа множеств вершин образующих p-центр.

Далее следует главная функция. В ней объявляется двумерный массив mas[100][100]. Затем предлагается ввести код операции. В зависимости от введенного значения массив mas инициализируется либо из файла (если введена 1), либо с клавиатуры (если введена 2), либо случайными числами (если введена 3). При вводе числа, не предусмотренного программой, выводится сообщение о неправильности ввода. Далее программа преобразует массив mas, после чего он представляет собой матрицу полных расстояний.

Затем массив mas записывается в файл matr.txt.

Далее происходит обращение к объявленным ранее функциям.

В функцию factorial() передается размерность массива mas и число вершин в p-центре. Возвращает функция максимальное число различных сочетаний из p вершин.

В функцию threecentr() передается размер массива mas, число вершин в p-центре и число, вычисленное функцией factorial(). В начале функция считывает из файла matr.txt массив mas. Затем производится вычисление 3-центров и вывод их на экран.

Функции fourcentr() и fivecentr() аналогичны функции threecentr(). В них вычисляются и выводятся на экран 4- и 5-центры соответственно.

Выводы:

1) Произведённые в предыдущих главах исследования позволили составить

алгоритм поиска p-центров;

2) Обоснован выбор языка программирования;

3) На основе алгоритма составлена программа поиска

p-центров.

3. Экспериментальное исследование алгоритма и программы

3.1 Тестовый пример

Для тестового примера был выбран граф, состоящий из шести вершин (рис. 1). Для него была записана матрица смежности.

7

10 8

1

6

Рис. 1

Матрица смежности.

Х1

Х2

Х3

Х4

Х5

Х6

Х1

0

0

0

1

0

8

Х2

0

0

0

0

4

0

Х3

0

0

0

2

0

6

Х4

1

0

2

0

0

10

Х5

0

4

0

0

0

7

Х6

8

0

6

10

7

0

Далее матрица смежности была преобразована в матрицу полных расстояний при помощи алгоритма Флойда.

Матрица расстояний.

Х1

Х2

Х3

Х4

Х5

Х6

Х1

0

19

3

1

15

8

Х2

19

0

17

19

4

11

Х3

3

17

0

2

13

6

Х4

1

19

2

0

15

8

Х5

15

4

13

15

0

7

Х6

8

11

6

8

7

0

Найдем 3-центры данного графа. Составим все возможные подмножества вершин графа состоящие из трех вершин. Возьмем первое подмножество из вершин Х1, Х2, Х3.

Найдем минимальное расстояние от вершин подмножества до оставшихся вершин графа.

Х1

Х2

Х3

Х4

Х5

Х6

Х1

0

19

3

1

15

8

Х2

19

0

17

19

4

11

Х3

3

17

0

2

13

6

Х4

1

19

2

0

15

8

Х5

15

4

13

15

0

7

Х6

8

11

6

8

7

0

Теперь найдем максимальное из этих минимальных расстояний, назовем его минимаксным расстоянием для данного подмножества. Аналогично найдем минимаксные расстояния для всех подмножеств. Подмножества, у которых минимаксное расстояние минимально и будут 3-центрами графа.

Подмножество

вершин

Минимаксное расстояние

123

6

124

8

125

7

126

4

134

17

135

6

136

11

145

7

146

11

156

4

234

6

235

6

236

4

245

7

246

4

256

8

345

6

346

11

356

4

456

4

Аналогично найдем 4- и 5-центры соответственно.

Для 4-центров:

X1

X2

X3

X4

X5

X6

X1

0

19

3

1

15

8

X2

19

0

17

19

4

11

X3

3

17

0

2

13

6

X4

1

19

2

0

15

8

X5

15

4

13

15

0

7

X6

8

11

6

8

7

0

Подмножество вершин

Минимаксное расстояние

1234

6

1235

6

1236

4

1245

7

1246

4

1256

3

1345

6

1346

11

1356

4

1456

4

2345

6

2346

4

2356

3

2456

2

3456

4

Для 5-центров:

X1

X2

X3

X4

X5

X6

X1

0

19

3

1

15

8

X2

19

0

17

19

4

11

X3

3

17

0

2

13

6

X4

1

19

2

0

15

8

X5

15

4

13

15

0

7

X6

8

11

6

8

7

0

Подмножество вершин

Минимаксное расстояние

12345

6

12346

4

12356

1

12456

2

13456

4

23456

1

3.2 Тестирование программы

При запуске программа предлагает ввести код операции.

В зависимости от введенного значения заполняется матрица смежности. Если введена единица, матрица смежности заполняется из файла. Если введена двойка, матрица смежности заполняется с клавиатуры. Если введена тройка, матрица смежности заполняется случайными числами. Далее предлагается ввести размер массива. Затем программа преобразует матрицу смежности и выводит на экран матрицу полных расстояний.

Далее программа вычисляет р-центры и выводит результат на экран.

Сравнивая результаты полученные при решении тестового примера и результаты работы программы делаем вывод о ее работоспособности.

3.3 Вычислительный эксперимент

Измерим время выполнения программы для различного количества вершин графа и запишем результаты в таблицу.

Количество вершин

Время выполнения программы с

6

0,829

7

0,832

8

0,848

9

0,858

10

0,867

11

0,879

12

0,926

13

0,998

14

1,181

15

1,264

16

1,288

17

1,291

18

1,299

19

1,313

20

1,339

21

1,353

22

1,377

23

1,391

24

1,401

25

1,424

26

1,439

27

1,443

28

1,457

29

1,473

30

1,492

Среднее значение

1,21

Выводы:

1) В данной главе произведен поиск р-центров тестового графа;

2) Произведено решение тестового примера с помощью составленной программы;

3) На основании совпадения результатов сделан вывод о работоспособности программы;

4) Указаны необходимые требования для пользования программой.

Заключение

Данная работа посвящена разработке алгоритма и программы решения задачи нахождения кратных центров графа. Сложность поставленной задачи обуславливается тем, что для поиска кратных центров необходимо составлять подмножества из р вершин графа, и затем перебором находить эти р-центры. Число подмножеств для больших графов достигает огромной величины и полный перебор этих подмножеств требует больших затрат времени.

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

Основные результаты работы сводятся к тому, что указывается важная роль применения теории графов в Вооруженных Силах, разрабатывается математическая модель поиска р-центров графа и проводится её экспериментальное исследование.

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

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

1. Н. Кристофидес, Теория графов. М.: «Мир» 1978г. ;

2. Вялых Б.И,, Сукманов С.А. Дискретная математика. ТАИИ 2004г;

3. О. Оре Графы и их применение. Пер. с англ. под ред. И.М. Яглома. - М., “Мир”, 1965г;

4. Е.П. Липатов. Теория графов и её применения. - М., Знание, 1986г.

Размещено на Allbest.ru


Подобные документы

Работы в архивах красиво оформлены согласно требованиям ВУЗов и содержат рисунки, диаграммы, формулы и т.д.
PPT, PPTX и PDF-файлы представлены только в архивах.
Рекомендуем скачать работу.