До портфоліо

Розв’язувач задачі комівояжера

Навчальний desktop-застосунок для розв’язання задачі комівояжера з матричним введенням, візуалізацією маршруту та покроковим виводом алгоритму.

Навчальний/академічний проект. Скріншоти та технічні деталі можуть публікуватися відкрито.

Категорія

Desktop Apps

Дата

2026-05

Статус

Completed

Роль

Архітектура, реалізація, розробка UI

Технології

C#, .NET 8, WPF

Теги

C#, WPF, Algorithms, Optimization, Educational Software

Огляд

Traveling Salesman Problem Solver — це навчальний desktop-застосунок для розв’язання та візуалізації задачі комівояжера (Traveling Salesman Problem, TSP).

Програма поєднує алгоритми оптимізації, матричне введення даних, графічну візуалізацію маршруту та текстовий пояснювальний вивід у межах автономного Windows-застосунку.

Проект створювався як навчальна та демонстраційна утиліта з акцентом на візуалізацію алгоритмів, перевірку даних та зрозумілість процесу розв’язання.


Контекст

Метою проекту було створення desktop-застосунку, здатного:

  • розв’язувати задачі комівояжера;
  • перевіряти коректність матриць відстаней;
  • візуалізувати побудований маршрут;
  • демонструвати алгоритми оптимізації;
  • формувати зрозумілі навчальні пояснення процесу обчислень.

Застосунок орієнтувався на курсові, демонстраційні та навчальні сценарії, пов’язані з оптимізацією та алгоритмами на графах.


Відповідальність

У межах проекту були реалізовані:

  • архітектура застосунку;
  • алгоритми розв’язання TSP;
  • графічний інтерфейс;
  • обробка матриць;
  • система валідації;
  • візуалізація маршруту;
  • форматований навчальний вивід;
  • проектування workflow оптимізації.

Рішення

Рішення реалізоване як WPF desktop-застосунок на .NET 8 із використанням стандартних бібліотек платформи.

Програма дозволяє:

  • генерувати та редагувати матриці відстаней;
  • обирати стартове місто;
  • обчислювати оптимізовані маршрути;
  • візуалізувати побудований шлях;
  • переглядати покроковий журнал роботи алгоритму.

Система підтримує:

  • повний перебір для невеликих наборів даних;
  • евристичний алгоритм найближчого сусіда для більших задач.

Інтерфейс був спроектований так, щоб залишатися навчальним та візуально зрозумілим при роботі з алгоритмами оптимізації.


Технічні деталі

Стек

  • C#
  • .NET 8
  • WPF
  • System.Data

Архітектура

У проекті розділено:

  • парсинг та перевірку матриць;
  • алгоритми оптимізації;
  • візуалізацію маршруту;
  • форматування результатів;
  • GUI-логіку.

Для ізоляції обчислювальної логіки використовуються окремі моделі:

  • опису задачі;
  • представлення результату;
  • solver-компонента.

Функціональність

Реалізовано:

  • редаговані матриці відстаней;
  • генерацію симетричних demo-матриць;
  • перевірку коректності матриці;
  • brute-force розв’язання для малих наборів;
  • евристичне nearest-neighbor розв’язання для більших наборів;
  • обчислення довжини маршруту;
  • покрокові журнали алгоритму;
  • кругову візуалізацію маршруту через Canvas.

Візуальний шар допомагає користувачу зрозуміти побудований маршрут та поведінку алгоритму.


Виклики

Основними викликами були:

  • баланс між складністю алгоритмів та швидкодією desktop-застосунку;
  • безпечна перевірка великих матриць;
  • візуалізація маршрутів у легковаговому навчальному інтерфейсі;
  • зрозуміле розділення точного та евристичного підходів;
  • підтримка читабельності UI при одночасному відображенні журналу та графічного результату.

Результат

У результаті було створено застосунок, який демонструє:

  • структуровану WPF-архітектуру;
  • реалізацію алгоритмів оптимізації та роботи з графами;
  • обробку матричних даних;
  • графічну візуалізацію маршрутів;
  • навчальне представлення алгоритмів;
  • розділення обчислювальної логіки та UI-компонентів.

Проект також став прикладом поєднання алгоритмів оптимізації, візуалізації та desktop GUI-розробки на .NET.


Медіа

Галерея містить:

  • приклади введення матриць;
  • попередній перегляд візуалізації маршруту;
  • результати роботи алгоритмів та журнали обчислень.

Примітки

  • Навчальний/демонстраційний проект.
  • Україномовний інтерфейс.
  • Використовує brute-force та евристичні алгоритми залежно від розміру задачі.
  • Реалізовано без сторонніх залежностей.

Галерея

Відео

Відеоогляд ще не опубліковано.

Посилання

Зовнішнє посилання недоступне для цього кейсу.