Uprość swój przepływ pracy: Wyszukaj miniwebtool.
Dodaj
Strona główna > Matematyka > Zaawansowane działania matematyczne > Solver Problemu Komiwojażera (TSP)
 

Solver Problemu Komiwojażera (TSP)

Znajdź najkrótszą trasę, która odwiedza każde miasto dokładnie raz i wraca do punktu startowego. Dokładne programowanie dynamiczne (Held-Karp) dla małych instancji oraz heurystyka najbliższego sąsiada + 2-opt dla większych. Akceptuje współrzędne lub macierz odległości i generuje animowaną trasę SVG.

Solver Problemu Komiwojażera (TSP)
Linie współrzędnych: A, 10, 20 lub 10 20. Wiersze macierzy: 0 10 15 20 — jeden wiersz na linię, macierz kwadratowa, nieujemna. Maksymalnie 40 miast.
Etykiety oddzielone przecinkami lub spacjami, jedna na wiersz macierzy. Domyślnie A, B, C... jeśli pominięto.

Embed Solver Problemu Komiwojażera (TSP) Widget

O Solver Problemu Komiwojażera (TSP)

Solver Problemu Komiwojażera TSP to praktyczny kalkulator edukacyjny dla klasycznego problemu komiwojażera (TSP): mając zestaw miast i odległości między nimi, należy znaleźć najkrótszą możliwą trasę, która odwiedza każde miasto dokładnie raz i powraca do punktu wyjścia. Ten solver akceptuje współrzędne płaskie lub niestandardową macierz odległości, automatycznie wybiera najlepszy algorytm na podstawie wielkości problemu i renderuje wynikową trasę jako animowaną mapę SVG.

Co to jest problem komiwojażera?

Formalnie, mając pełny graf ważony G = (V, E) ze zbiorem wierzchołków V = {1, 2, ..., n} i wagami krawędzi d(i, j), TSP poszukuje takiej permutacji π wierzchołków, która minimalizuje wyrażenie:

minimalizuj Σi=1n-1 d(π(i), π(i+1)) + d(π(n), π(1))

Ostatni człon zamyka pętlę. TSP jest jednym z najstarszych i najbardziej badanych problemów w optymalizacji kombinatorycznej — jest on NP-trudny w ogólnym przypadku, co oznacza, że żaden znany algorytm nie rozwiązuje każdej instancji w czasie wielomianowym. Mimo to pojawia się on w niezliczonych zastosowaniach rzeczywistych: planowaniu tras pojazdów, wierceniu płytek drukowanych PCB, sekwencjonowaniu DNA, trasach kompletacji w magazynach, harmonogramach obserwacji astronomicznych, a nawet w doręczaniu poczty wiejskiej.

Jak działa ten solver?

Programowanie dynamiczne Helda–Karpa (Dokładne)

Dla małych instancji (do 12 miast) solver oblicza trasę o udowodnionej optymalności przy użyciu algorytmu Helda–Karpa, opublikowanego niezależnie przez Richarda Bellmana oraz Michaela Helda i Richarda Karpa w 1962 roku. Kluczowa rekurencja, gdzie C(S, j) jest najkrótszą ścieżką od wierzchołka 1 do wierzchołka j odwiedzającą dokładnie podzbiór S:

C(S, j) = mink ∈ S \ {j} [ C(S \ {j}, k) + d(k, j) ]

Optymalny koszt trasy to wtedy minj [C({1,...,n}, j) + d(j, 1)]. Algorytm Helda–Karpa działa w czasie O(2n · n²) i wymaga pamięci O(2n · n) — co stanowi ogromną poprawę w stosunku do metody brute force n!, ale nadal jest to wzrost wykładniczy. Powyżej około 20 miast zapotrzebowanie na pamięć staje się niepraktyczne.

Najbliższy sąsiad + 2-opt (Heurystyka)

Dla większych instancji solver używa dwuetapowej heurystyki. Najpierw algorytm najbliższego sąsiada konstruuje szybką trasę, chciwie przechodząc do najbliższego nieodwiedzonego miasta z każdego wierzchołka startowego. Solver wypróbowuje wiele wierzchołków startowych i zachowuje najlepszą trasę. Następnie przeszukiwanie lokalne 2-opt ulepsza trasę poprzez iteracyjne usuwanie dwóch krawędzi i ponowne łączenie dwóch wynikowych ścieżek w jedyny inny możliwy sposób:

Przed: ... a — b ... c — d ... Po zamianie 2-opt: ... a — c ... b — d ... Jeśli d(a,c) + d(b,d) < d(a,b) + d(c,d) → zaakceptuj zamianę, odwróć podtrasę b..c

Geometrycznie 2-opt usuwa każde „skrzyżowanie” w trasie: każde dwa przecinające się odcinki można zawsze rozprostować, aby uzyskać krótszą długość całkowitą. Algorytm zatrzymuje się w lokalnym optimum, w którym żadna pojedyncza zamiana już nie pomaga, co nazywa się trasą 2-optymalną. W rzeczywistych instancjach euklidesowych 2-opt zazwyczaj znajduje trasy w granicach 2–5% od prawdziwego optimum w ułamku sekundy.

Formaty wejściowe

Tryb współrzędnych (x, y)

Jedno miasto w linii. Każda linia to etykieta, x, y — etykieta jest opcjonalna. Solver automatycznie oblicza odległości euklidesowe i wizualizuje miasta w ich rzeczywistych pozycjach.

A, 10, 20 B, 40, 70 C, 75, 30 Paris: 2.35, 48.86 10 20 ← automatyczna etykieta C1

Tryb macierzy odległości

Kwadratowa macierz odległości nieujemnych o wymiarach n × n, jeden wiersz na linię, wartości oddzielone spacjami lub przecinkami. Macierze mogą być symetryczne lub asymetryczne — macierze asymetryczne modelują ulice jednokierunkowe, ceny lotów o różnej dostępności oraz podróże zależne od wiatru. Opcjonalnie można podać etykiety w polu Etykiety macierzy.

0 10 15 20 10 0 35 25 15 35 0 30 20 25 30 0

Porównanie algorytmów

Algorytm Złożoność czasowa Pamięć Jakość wyniku Praktyczny rozmiar
Brute force O(n!) O(n) Optymalny n ≤ 10
Held–Karp DP O(2n · n²) O(2n · n) Optymalny n ≤ 20
Najbliższy sąsiad O(n²) O(n) ~25% gorszy od optymalnego n ≤ tysiące
NN + 2-opt O(n² · przebiegi) O(n) ~2–5% gorszy od optymalnego n ≤ setki

Jak korzystać z tego solvera

  1. Wybierz tryb wprowadzania. Współrzędne, jeśli miasta mają znaczące pozycje (x, y); Macierz odległości, jeśli koszty są nieeuklidesowe lub asymetryczne.
  2. Wklej lub wpisz swoje dane. Jedno miasto lub wiersz na linię. Kliknij przycisk szybkiego przykładu nad formularzem, aby wstępnie wypełnić poprawny przykład.
  3. Wybierz algorytm. Pozostaw na Auto dla odpowiedniego domyślnego wyboru: Held–Karp, gdy instancja jest wystarczająco mała dla udowodnionej optymalności, w przeciwnym razie NN + 2-opt. Wymuś konkretny algorytm, jeśli chcesz je porównać.
  4. Wybierz trasę zamkniętą lub otwartą. Trasa zamknięta powraca do punktu wyjścia — to tradycyjny TSP. Tryb ścieżki otwartej rozwiązuje powiązany problem ścieżki Hamiltona, w którym sprzedawca kończy w innym mieście.
  5. Kliknij Rozwiąż. Strona wyników pokazuje całkowitą długość trasy, animowany obraz SVG trasy (kliknij „Powtórz animację”, aby ją odtworzyć), pełną sekwencję miast, podział na poszczególne krawędzie oraz macierz odległości z podświetlonymi krawędziami trasy.

Przykład krok po kroku

Rozważmy pięć miast — prostokąt plus szczyt: A (0, 0), B (4, 0), C (4, 3), D (0, 3), E (2, 5). Solver zwraca:

Zastosowania w świecie rzeczywistym

Często zadawane pytania

Co to jest problem komiwojażera?

Problem komiwojażera (TSP) polega na znalezieniu najkrótszej możliwej trasy, która odwiedza każde miasto dokładnie raz i powraca do miasta startowego. Jest to jeden z najsłynniejszych problemów optymalizacji kombinatorycznej i jest NP-trudny w ogólnym przypadku, co oznacza, że żaden znany algorytm nie rozwiązuje każdej instancji w czasie wielomianowym.

Co to jest algorytm Helda–Karp?

Held–Karp to algorytm programowania dynamicznego, który rozwiązuje TSP dokładnie w czasie O(2n · n²) i pamięci O(2n · n). Jest on znacznie szybszy niż metoda brute force (n silnia), ale nadal wykładniczy, więc w praktyce jest używany tylko dla instancji do około 20 miast. Ten solver używa algorytmu Helda–Karpa, gdy miast jest 12 lub mniej.

Co to jest 2-opt i dlaczego jest używany?

2-opt to heurystyka wyszukiwania lokalnego, która wielokrotnie usuwa dwie krawędzie z bieżącej trasy i łączy dwie wynikowe ścieżki w inny możliwy sposób. Gdy nowa trasa jest krótsza, zamiana zostaje zachowana. 2-opt działa w czasie wielomianowym na iterację i konsekwentnie znajduje trasy w granicach kilku procent od optymalnej, dlatego jest klasyczną heurystyką pierwszego wyboru dla większych instancji TSP.

Kiedy powinienem użyć współrzędnych, a kiedy macierzy odległości?

Użyj współrzędnych, gdy Twoje miasta znajdują się na płaszczyźnie z odległościami w linii prostej — na przykład punkty na mapie, lokalizacje magazynów lub otwory wiertnicze na płytce drukowanej. Użyj macierzy odległości, gdy koszt pary nie jest euklidesowy — na przykład ceny lotów, czasy podróży z ruchem drogowym, odległości drogowe w jedną stronę lub koszty asymetryczne. Tryb macierzy akceptuje wszelkie nieujemne odległości, nawet asymetryczne.

Czy rozwiązanie 2-opt jest optymalne?

Nie, 2-opt zwraca trasę 2-optymalną, co oznacza, że żadna pojedyncza para krawędzi nie może zostać zamieniona w celu uzyskania krótszej trasy. Jest to lokalne optimum i zazwyczaj mieści się w granicach kilku procent od globalnego optimum w dobrze uwarunkowanych instancjach, ale nie gwarantuje, że jest to najlepsze rozwiązanie globalne. Aby uzyskać trasę o udowodnionej optymalności dla małych instancji, wybierz Held–Karp.

Czy to narzędzie obsługuje asymetryczne macierze odległości?

Tak. W trybie macierzy odległości można wprowadzić dowolną nieujemną macierz kwadratową, w tym asymetryczną, gdzie D[i][j] różni się od D[j][i]. Zarówno Held–Karp, jak i 2-opt poprawnie obsługują macierze asymetryczne. Jest to przydatne w rzeczywistych problemach z trasowaniem z ulicami jednokierunkowymi, ruchem drogowym lub kosztami lotów zależnymi od wiatru.

Dalsza lektura

Cytuj ten materiał, stronę lub narzędzie w następujący sposób:

"Solver Problemu Komiwojażera (TSP)" na https://MiniWebtool.com/pl/solver-problemu-komiwojazera-tsp/ z MiniWebtool, https://MiniWebtool.com/

przez zespół miniwebtool. Aktualizacja: 21 kwietnia 2026

Możesz także wypróbować nasz AI Rozwiązywacz Matematyczny GPT, aby rozwiązywać swoje problemy matematyczne poprzez pytania i odpowiedzi w języku naturalnym.

Inne powiązane narzędzia:

Zaawansowane działania matematyczne:

Polecane narzędzia:

Kalkulator Kompatybilności MiłosnejKalkulator znaków słońca, księżyca i ascendentu 🌞🌙✨Losowy Generator GrupKalkulator Znaku WenusRozdzielacz obrazówPrzelicznik stóp na metryKalkulator numerów aniołaKalkulator kompatybilności znaków KsiężycaKonwerter Radianów na StopnieLosowanie listyGenerator Prawda czy WyzwanieGenerator losowych słów angielskichLosowy generator zwierzątKalkulator Liczby ImieniaLosowy generator przedmiotówLosowy selektor filmówwyszukiwanie-adresu-MACMagiczna Kula 8Kalkulator Obwodu ElipsyKalkulator ciąży u psaSortować alfabetycznieNotatnik OnlineKalkulator pochodnych cząstkowychCyfrowy Kalkulator DuszyGenerator losowej godzinyKalkulator prędkości jazdy na rowerzeGenerator wykreślanekGenerator kodu Morse'aLosowy Generator Drabinki TurniejowejKalkulator PrzeciwprostokątnejKalkulator liczby ścieżek życiaKalkulator testu chi-kwadratGenerator krzyżówekKalkulator przedawkowania kofeinyGenerator losowych krajówKalkulator Dnia Roku - Który Dzień Roku Jest Dzisiaj?Konwerter liczb rzymskichRozdzielacz AudioKalkulator współczynnika zmienności⏱️ Kalkulator GodzinKalkulator znaku księżycowegoLosowy Generator KolorówGenerator Losowych UrodzinKalkulator nachylenia i stopniaZaawansowany analizator kompatybilności znaków zodiakuKonwerter szesnastkowy na binarnyGenerator Losowych PosiłkówKonwerter ułamkowy czasuJaki jest mój szczęśliwy numer?Kalkulator Trójkąta ProstokątnegoGenerator losowych ciągówSortuj LiczbyUsuwacz Niewidocznych ZnakówGenerator losowych datKalkulator schodówKalkulator zarobków YouTubeStatystyki Kanału YouTubeKalkulator inflacji w USAKalkulator nachylenia dachuKalkulator odwrotnej transformaty Laplace'aGenerator Małego Tekstu ⁽ᶜᵒᵖʸ ⁿ ᵖᵃˢᵗᵉ⁾Kalkulator transformaty Laplace'aKalkulator Czasu TrwaniaKalkulator Liczby OsobowościKalkulator Wspolczynnika KorelacjiKonwerter dziesiętny na szesnastkowyPołącz filmyGenerator Kart BingoKalkulator bonusówKalkulator Szczęśliwych LiczbKalkulator konwersji skali modeluKonwerter binarny na szesnastkowyGenerator szablonu rozwinięcia stożkaKalkulator Względnego Odchylenia StandardowegoDetektor treści AIKalkulator Znaku MarsaRzut kostkąUsuń dźwięk z wideoKalkulator arcus tangensaKalkulator decybeli (dB)Kalkulator ułamka zwykłego na dziesiętnyGenerator anagramówGenerator losowych kart kredytowychKalkulator TransformatoraKonwerter szesnastkowy na dziesiętnyKalkulator wiekuKonwerter binarny na dziesiętnyKalkulator rozkładu dwumianowegoKalkulator ilości cyfrPrzelicznik cm na stopy i caleNazwij generator losowyKalkulator Długości ŁukuKonwerter HTML na tekstPrzelicznik Metrów na StopyGenerator schematów kolorówKalkulator podwójnych całekKalkulator prawdopodobieństwa kościGenerator losowego adresu IPKalkulator deficytu kalorycznegoSprawdzanie Ścieżki HamiltonaSolver Problemu Komiwojażera (TSP)Solver Programowania LiniowegoKalkulator Włączeń i WyłączeńSolver Zależności RekurencyjnychKalkulator Macierzy SąsiedztwaKalkulator Sortowania TopologicznegoKalkulator Kolorowania GrafówSymulator Bramek LogicznychSolver Tablicy Karnaugha (K-Map)Upraszczacz Algebry Boole’aKalkulator Funkcji PodziałuKalkulator Pierwiastka CyfrowegoSprawdzacz Liczb FibonacciegoKalkulator ułamków egipskichKalkulator Funkcji MöbiusaWeryfikator Hipotezy GoldbachaTest Liczb Pierwszych Mersenne’aWyszukiwarka Liczb Pierwszych BliźniaczychSprawdzacz Liczb ZaprzyjaźnionychSprawdzacz Liczb DoskonałychKalkulator Potęgowania ModularnegoKalkulator Permutacji z PowtórzeniamiKalkulator Wielkości EfektuKalkulator Ryzyka WzględnegoKalkulator Ilorazu SzansKalkulator Tabeli KontyngencjiKalkulator Dokładnego Testu FisheraKalkulator Korelacji Rangowej SpearmanaKalkulator Rozkładu BetaKalkulator Rozkładu WeibullaKalkulator Rozkładu WykładniczegoKalkulator Rozkładu GeometrycznegoKalkulator Rozkładu Ujemnego DwumianowegoKalkulator Rozkładu HipergeometrycznegoKalkulator Testu F i Rozkładu FKalkulator Twierdzenia BayesaKalkulator Wielomianu CharakterystycznegoKalkulator Potęgi MacierzyKalkulator Dekompozycji CholeskiegoKalkulator Rozkładu QRKalkulator Diagonalizacji MacierzyKalkulator Wzory CrameraKalkulator Przestrzeni KolumnowejNull Space CalculatorKalkulator Kąta Między WektoramiKalkulator Wektora JednostkowegoKalkulator Długości WektoraKalkulator Iloczynu WektorowegoKalkulator Iloczynu SkalarnegoKalkulator Mnożenia MacierzyKalkulator Macierzy OdwrotnejKalkulator RREF (Postać Schodkowa Zredukowana)Kalkulator Metody NewtonaKalkulator Macierzy JakobianuKalkulator Całki PowierzchniowejKalkulator Całki KrzywoliniowejKalkulator RotacjiKalkulator DywergencjiKalkulator Gradientu WielozmiennowyKalkulator Optymalizacji (Rachunek Różniczkowy)Kalkulator Pochodnych PowiązanychKalkulator Chwilowego Tempa ZmianKalkulator Średniego Tempa ZmianKalkulator Sumy Szeregów NieskończonychKalkulator Testu Zbieżności SzeregówKalkulator Szeregów PotęgowychKalkulator Szeregu MaclaurinaKalkulator Reguły L'HospitalaKalkulator Całki NiewłaściwejKalkulator Reguły SimpsonaKalkulator Reguły TrapezówKalkulator Sumy RiemannaKreślarz Krzywych ParametrycznychKalkulator Powierzchni ObrotowejKalkulator Objętości Bryły ObrotowejKalkulator Odległości Geometria WspółrzędnychKalkulator Wzoru HeronaKalkulator Stycznej do OkręguKalkulator Dwusiecznej KątaKalkulator Okręgu WpisanegoKalkulator Okręgu OpisanegoKalkulator Odległości OrtodromicznejKalkulator Odległości 3DKalkulator TorusaKalkulator Ściętego StożkaKalkulator Pola Wielokąta NieregularnegoKalkulator Wielokąta ForemnegoIdentyfikator Przekroju StożkowegoKalkulator HiperboliKalkulator ParaboliKalkulator Rozwinięcia DwumianowegoGenerator Trójkąta PascalaKalkulator Notacji Iloczynowej (Notacja Pi)Kalkulator Notacji Sigma (Sumowanie)Kalkulator Twierdzenia o Pierwiastkach WymiernychKalkulator Reguły Znaków KartezjuszaKalkulator Linii Równoległych i ProstopadłychKalkulator Równania ProstejKonwerter Postaci Ogólnej na KierunkowąKalkulator Formy Punkt-NachylenieRozwiązywacz Układu Równań NieliniowychRozwiązywanie Równań WymiernychRozwiązywanie Równań LiterowychRozwiązywacz Równań TrygonometrycznychRozwiązywanie Równań WykładniczychKalkulator Równań LogarytmicznychKalkulator Równania Czwartego StopniaKalkulator Równania SześciennegoKalkulator SzacowaniaKonwerter Liczby na UłamekGenerator Liczenia ze SkokiemKalkulator Ceny JednostkowejKalkulator Funkcji Sufitu i PodłogiKalkulator Wartości BezwzględnejWyszukiwarka Wzorców LiczbowychGenerator Wykresu Wartości PozycyjnejKalkulator Kolejności Działań PEMDASKalkulator Dodawania i Odejmowania PisemnegoKalkulator Mnożenia PisemnegoGenerator Tabliczki Mnożenia🎮 Konwerter Waluty Gry🎲 Kalkulator Prawdopodobieństwa Dropu🎰 Kalkulator Pity Gacha⚔️ Kalkulator DPS🎮 Konwerter Czułości Gier❄️ Kalkulator Dnia Śnieżnego🚚 Kalkulator Kosztów Przeprowadzki🔍 Sprawdzacz Plagiatu📷 OCR / Obraz na Tekst📈 Kreator Wykresów Liniowych🥧 Kreator Wykresów Kołowych📊 Kreator Wykresów Słupkowych🔊 Generator Tonów🖱️ Licznik Kliknięć⬛ Kalkulator Proporcji Ekranu🌍 Kalkulator Śladu Węglowego👙 Kalkulator Rozmiaru BiustonoszaKalkulator Rozmiaru OponKalkulator Kosztów Paliwa💧 Kalkulator Punktu Rosy🌡️ Kalkulator Indeksu Cieplnego🌬️ Kalkulator Odczuwalnej Temperatury Wiatru⏰ Budzik Online⏰ Kalkulator Karty Czasu Pracy📅 Kalkulator Różnicy Dat🕐 Konwerter Czasu Wojskowego⏱️ Stoper Online⏱️ Timer Odliczania🌐 Konwerter Stref CzasowychKalkulator DywanówKalkulator Muru OporowegoKalkulator Doboru HVACKalkulator IzolacjiKalkulator Kostki BrukowejKalkulator ZbrojeniaKalkulator DrewnaKalkulator PowierzchniKalkulator Mnożenia KrzyżowegoKalkulator Podsumowania Pięciu LiczbKalkulator PercentylaKalkulator Rozkładu NormalnegoKalkulator Wartości pKalkulator ProporcjiKalkulator Uzupełniania KwadratuKalkulator ZaokrąglaniaKalkulator Dzielenia PisemnegoKalkulator NaukowyMinutnik Pomodoro do naukiKalkulator Cyfr ZnaczącychKalkulator Wyników TestuKalkulator Ocen WażonychKalkulator Oceny KońcowejKalkulator OcenKalkulator częstotliwości rezonansowejKalkulator impedancjiKalkulator Współczynnika MocyKalkulator stałej czasowej RCKalkulator przekroju przewoduKalkulator Timera 555Kalkulator KondensatoraKalkulator Rezystancji RównoległejKalkulator Dzielnika NapięciaKalkulator Rezystora LEDKonwerter Mol/Gram/CząstkaKalkulator MiareczkowaniaKalkulator Temperatury WrzeniaKalkulator Wzoru EmpirycznegoKalkulator Wydajności ProcentowejKalkulator StechiometriiBilansowanie Równań ChemicznychKalkulator RozcieńczaniaKalkulator Koni MechanicznychKalkulator Momentu ObrotowegoKalkulator swobodnego spadkuKalkulator równania stanu gazu doskonałegoKalkulator CiśnieniaKalkulator GęstościKalkulator Pracy i MocyKalkulator Energii PotencjalnejKalkulator Energii KinetycznejKalkulator Ruchu PociskuKalkulator PęduKalkulator PrędkościKalkulator PrzyspieszeniaKalkulator SiłyKalkulator ROI InfluenceraKalkulator ROASKalkulator CTRSprawdzacz Nazwy Użytkownika w Mediach SpołecznościowychOptymalizator Czasu Publikacji w Mediach SpołecznościowychKalkulator ROI Mediów SpołecznościowychKalkulator Kosztów Reklam na FacebookuKalkulator Monetyzacji YouTube ShortsKalkulator Zarobków na TwitchKalkulator Czasu Oglądania YouTubeKonwerter Znacznika Czasu Twitter/XKalkulator Zarobków na TikTokuPrzewodnik po Rozmiarach Obrazów w Mediach SpołecznościowychGenerator Czcionek na InstagramLicznik Znaków Twitter/XLosowanie komentarzy YouTubeEkstraktor tagów YouTubePobieracz Miniatur YouTubeLosowy Generator Postaci RPG