Тип работы:
Предмет:
Язык работы:


Программная реализация алгоритма решения задачи о раскраске

Работа №126124

Тип работы

Бакалаврская работа

Предмет

программирование

Объем работы42
Год сдачи2020
Стоимость4550 руб.
ПУБЛИКУЕТСЯ ВПЕРВЫЕ
Просмотрено
39
Не подходит работа?

Узнай цену на написание


Введение 3
Постановка задачи 3
Глава 1. Используемые термины 4
Глава 2. Условные обозначения 4
Глава 3. Вспомогательные алгоритмы и структуры данных 5
3.1. Битовые множества 5
3.2. Алгоритм Брона-Кербоша 6
Глава 4. Алгоритм Олемского 8
4.1. Описание множеств и переменных 8
4.2. Описание проверок 10
4.3. Описание алгоритма 11
4.4. Псевдокод алгоритма 15
Глава 5. Алгоритмы перебора независимых множеств 20
5.1. Перебор всех возможных вариантов 20
5.2. Оптимизированный перебор 21
5.3. Перебор в матричном виде 23
Глава 6. Измерение быстродействия алгоритмов 26
6.1. Алгоритм Олемского И.В 26
6.2. Алгоритм перебора независимых множеств 29
6.3. Оптимизированный перебор 32
6.4. Перебор в матричном виде 34
Глава 7. Сравнение быстродействия алгоритмов 36
Глава 8. Заключение 40
Список литературы 41

Впервые проблема раскраски графа была официально поднята на встре­че Лондонского математического сообщества в 1878 году, где она рассмат­ривалась в контексте задачи о раскраске карты. В 1970-х годах раскраска графа стала рассматриваться как алгоритмическая проблема.
Данная задача постоянно исследуется по двум основным причинам:
1. Она находит применение в реальных задачах, например в составле­нии расписаний[1], распределение регистров в микропроцессорах^], распараллеливание численных методов[3].
2. На данный момент не найдено точного и эффективного алгоритма её решения, т.к. доказано что задача о раскраске является NP-полной.
Точные алгоритмы в основном используют полный перебор возмож­ных вариантов раскраски. Таким образом, основным отличием таких алго­ритмов является порядок перебора и используемые отсечения.
Например, в данной работе рассматривается алгоритм основанный на переборе максимальных независимых множеств, описанный в книге Нови­кова Ф.А.[4] и две его модификации.
Главным объектом исследования является разработанный Олемким И.В. алгоритм, и его сравнение с другими существующими алгоритмами.

Возникли сложности?

Нужна помощь преподавателя?

Помощь в написании работ!


В результате проделанной работы были реализованы[14] алгоритмы раскраски графа Олемского И.В. и Новикова Ф.А. Было доказано утвержде­ние, позволившее разработать и реализовать две модификации алгоритма Новикова Ф.А.
Для всех реализованных алгоритмов было измерено время работы на графах с различным число вершин и плотностью. Результаты были пред­ставлены в виде трёхмерного графика зависимости времени от числа вер­шин и плотности. По полученным результатам было решено провести пря­мое сравнение алгоритма Олемского И.В. и двух модификаций алгоритма Новикова Ф.А.
Сравнение показало, что алгоритм Олемского И.В. работает дольше на графах малой размерности. Однако имеет более низкую скорость при­роста требуемого на раскраску времени. Поэтому при раскраске небольших графов с числом вершин менее 12 применение модифицированных алгорит­мов Новикова Ф.А. предпочтительнее, но с ростом числа вершин алгоритм Олемского И.В. становится более рациональным выбором.


[1] Marx, Daniel (2004). "Graph Coloring Problems and Their Applications in Scheduling". in Proc. John von Neumann PhD Students Conference: 1-2.
[2] Боханко, А. С; А. Ю Дроздов, С. В Новиков, С. Л Шлыков «Распреде­ление регистров методом раскраски графа несовместимости для VLIW- архитектур»Russian Academy of Science : журнал. — 2005. — Т. 8.
[3] Jones, Mark T.; Paul E. Plassmann. «Scalable Iterative Solution of Sparse Linear Systems»Parallel Computing : journal. — 1994. — Vol. 20, no. 5. — P. 753—773.
[4] Новиков Ф. А. «Дискретная математика для программистов»стр.358-359 Питер, 2009 г.
[5] Bron C., Kerbosh J. (1973) «Algorithm 457 — Finding all cliques of an undirected graph»Comm. of ACM, 16, p. 575—577 https://dl.acm.org/doi/10.1145/362342.362367
[6] Карп Р. (1972) «Reducibility Among Combinatorial Problems» https://people.eecs.berkeley.edu/ luca/cs172/karp.pdf
[7] Время выполнения операций в Python https://wiki.python.org/moin/TimeComplexity
[8] Модуль bitarray для Python https://pypi.org/project/bitarray/
[9] Олемской И.В. «Методы интегрирования систем структурно разде­ленных дифференциальных уравнений»стр.180, Издательство Санкт- Петербургского университета, 2009 г.
[10] Пакет numpy для Python https://numpy.org/
[11] Технология Precision Boost https://www.amd.com/ru/support/kb/faq/cpu-pb2
[12] Модуль timeit https://docs.python.Org/3/library/timeit.html
[13] Бибилиотека matplotlib для Python https://matplotlib.Org/3.2.1/index.html
[14] Реализация всех использованных алгоритмов https://github.com/N0fail/GraphsColorize


Работу высылаем на протяжении 30 минут после оплаты.



Подобные работы


©2025 Cервис помощи студентам в выполнении работ