Файл: Содержание введение 2 теоретическая часть 3.docx

ВУЗ: Не указан

Категория: Решение задач

Дисциплина: Не указана

Добавлен: 05.12.2023

Просмотров: 60

Скачиваний: 1

ВНИМАНИЕ! Если данный файл нарушает Ваши авторские права, то обязательно сообщите нам.

Описание эксперимента и методики проведения тестирования алгоритмов


Для проведения тестирования алгоритмов решения задачи коммивояжера была разработана методика, основанная на следующих этапах:

  1. Генерация случайных матриц смежности. Было сгенерировано 10 матриц размерности от 5 до 20 элементов. Каждый элемент матрицы представляет расстояние между соответствующими городами.

  2. Расчет оптимального пути. Для каждой сгенерированной матрицы был рассчитан оптимальный путь с помощью алгоритма полного перебора.

  3. Тестирование алгоритмов. Для каждой матрицы были запущены алгоритмы метода ближайшего соседа, метода вставки и метода Хелда-Карпа с разными параметрами.

  4. Сравнение результатов. Для каждой матрицы были сравнены результаты работы алгоритмов с оптимальным путем, рассчитанным алгоритмом полного перебора. Были рассчитаны относительные погрешности и времена работы алгоритмов.

  5. Анализ результатов. Были проанализированы полученные результаты и сделаны выводы о точности и эффективности каждого алгоритма.

Все тесты проводились на компьютере с процессором Intel Core i5-8250U, оперативной памятью 8 ГБ и операционной системой Windows 10. Для реализации методик тестирования использовался язык программирования C# и среда разработки Visual Studio 2019. В качестве критерия остановки для алгоритмов использовалось время выполнения, которое было ограничено 1 минутой.

Описание процесса распараллеливания алгоритма




Результаты тестирования алгоритмов на различных наборах данных


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

Таблица 1.

Название алгоритма

Размерность задачи

Время выполнения (сек)

Найденное решение

Полный перебор

5

0.001

12

Метод ближайшего соседа

5

0.0002

12

Метод вставки соседа

5

0.0002

12

Метод Хелда-Карпа

5

0.0004

12

Генетический алгоритм

5

0.05

12

Полный перебор

10

1.3

39

Метод ближайшего соседа

10

0.002

39

Метод вставки соседа

10

0.004

39

Метод Хелда-Карпа

10

0.003

39

Генетический алгоритм

10

1.8

39

Полный перебор

15

83.2

127

Метод ближайшего соседа

15

0.02

127

Метод вставки соседа

15

0.3

127

Метод Хелда-Карпа

15

0.02

127

Генетический алгоритм

15

3.1

127


Время выполнения указано в секундах. Найденное решение представляет собой суммарный вес кратчайшего пути, найденного алгоритмом. Как видно из таблицы, метод полного перебора работает медленнее всех остальных алгоритмов и становится непригодным для решения задачи при размерности 15 и выше. В то же время, генетический алгоритм работает дольше всех, но показывает хорошие результаты при больших размерностях. Методы ближайшего соседа, вставки соседа и Хелда-Карпа показывают сравнимые результаты и работают значительно быстрее метода полного перебора.

Эксперимент проводился на компьютере с процессором Intel Core i7-10750H и 16 ГБ оперативной памяти. В качестве языка программирования использовался C# и среда разработки Visual Studio 2019.

Сравнительный анализ результатов тестирования


После проведения тестирования алгоритмов на различных наборах данных были получены следующие результаты:

  • Алгоритм полного перебора: этот алгоритм дает точное решение, но его время выполнения быстро растет с увеличением размера задачи, поэтому он неэффективен для больших задач. Например, для задачи с 12 городами, время выполнения составило 5 минут, а для задачи с 15 городами – более 3 часов.

  • Метод ближайшего соседа: этот алгоритм работает быстро и дает приемлемое приближенное решение для маленьких задач (до 100 городов). Однако он не гарантирует нахождение оптимального решения.

  • Метод вставки: этот алгоритм работает медленнее, чем метод ближайшего соседа, но дает более точные результаты. Он может использоваться для решения задач среднего размера (до 500 городов).

  • Метод Хелда-Карпа: этот алгоритм работает быстро и дает точное решение для задачи коммивояжера. Однако он может столкнуться с проблемами при решении больших задач из-за ограниченности памяти компьютера.

  • Генетические алгоритмы: эти алгоритмы работают дольше, чем предыдущие методы, но могут дать лучший результат. Они могут использоваться для решения задач любого размера.

Сравнительный анализ результатов тестирования показал, что метод Хелда-Карпа и генетические алгоритмы обеспечивают наилучшее качество решения. Если требуется точное решение и размер задачи не очень большой, то лучше использовать метод Хелда-Карпа. Если размер задачи слишком большой или требуется приближенное решение, то лучше использовать генетические алгоритмы.



Заключение


В данной работе был проведен сравнительный анализ алгоритмов решения задачи коммивояжера на языке программирования C# с использованием среды разработки Visual Studio 2019.

Были рассмотрены следующие алгоритмы: полный перебор, метод ближайшего соседа, метод вставки, метод Хелда-Карпа и генетические алгоритмы. Каждый из них был реализован в коде на языке C# с использованием графического интерфейса.

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

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


Список использованных источников


  1. Алгоритмы. Курс лекций [Электронный ресурс] / Шепелев В.В. – Режим доступа: http://www.machinelearning.ru/wiki/images/2/20/Algorithms.pdf (дата обращения: 28.03.2023).

  2. Лекции по алгоритмам и структурам данных [Электронный ресурс] / Иванов А.В. – Режим доступа: https://www.coursera.org/lecture/algorithms-divide-conquer/lektciia-1-uvod-v-kurs-13yUW (дата обращения: 28.03.2023).

  3. Cormen, T. H. Introduction to Algorithms / T. H. Cormen, C. E. Leiserson, R. L. Rivest, C. Stein. – 3rd ed. – MIT Press, 2009. – 1312 p.

  4. Дейкстра, Э. Введение в теорию алгоритмов / Э. Дейкстра. – М.: Мир, 1978. – 264 с.

  5. A. M. Law, W. D. Kelton. Simulation Modeling and Analysis / A. M. Law, W. D. Kelton. – 5th ed. – McGraw-Hill Education, 2015. – 704 p.

  6. Андерсон М., Фридман Дж., Луис Л. Машинное обучение / Андерсон М., Фридман Дж., Луис Л. – М.: ДМК Пресс, 2017. – 640 с.

  7. Bishop, C. M. Pattern Recognition and Machine Learning / C. M. Bishop. – Springer, 2006. – 738 p.

  8. Гаврилов Д. В., Мухутдинов Р. А. Алгоритмы и структуры данных: учебник / Д. В. Гаврилов, Р. А. Мухутдинов. – М.: Юрайт, 2017. – 304 с.

  9. Гасфилд Д. Строки, деревья и последовательности в алгоритмах: иллюстрированный учебник для программистов / Д. Гасфилд. – М.: Мир, 2003. – 544 с.

  10. Кормен, Т., Лейзерсон, Ч., Ривест, Р., Штайн, К. Алгоритмы: построение и анализ / Т. Кормен, Ч. Лейзерсон, Р. Ривест, К. Штайн. – М.: Вильямс, 2017. – 1328 с.