Keliaujančio pirklio uždavinys arba komivojažieriaus uždavinys – grafų teorijos uždavinys, kai pilnajame ieškoma mažiausio svorio Hamiltono ciklo. Neformaliai jis nusakomas taip:
![image](https://www.wiki-data.lt-lt.nina.az/image/aHR0cHM6Ly93d3cud2lraS1kYXRhLmx0LWx0Lm5pbmEuYXovaW1hZ2UvYUhSMGNITTZMeTkxY0d4dllXUXVkMmxyYVcxbFpHbGhMbTl5Wnk5M2FXdHBjR1ZrYVdFdlkyOXRiVzl1Y3k5MGFIVnRZaTlqTDJNMEwxUlRVRjlFWlhWMGMyTm9iR0Z1WkY4ekxuQnVaeTh5TWpCd2VDMVVVMUJmUkdWMWRITmphR3hoYm1SZk15NXdibWM9LnBuZw==.png)
- Turint tam tikrą skaičių miestų, taip pat kelionės iš vieno miesto į kitą kainas, reikia rasti pigiausią maršrutą, kad aplankius kiekvieną miestą, maršrutas baigtųsi pradiniame mieste.
Algoritmai
Tikslūs algoritmai
Akivaizdžiausias uždavinio sprendimas – visų įmanomų maršrutų perrinkimas. Tačiau tokio sprendimo sudėtingumas N! (miestų skaičiaus faktorialas), taigi didėjant miestų skaičiui sprendimas pasidaro nepraktiškas.
Tikslų atsakymą pateikiantys algoritmai sprendžia problemą tik su nedideliu miestų skaičiumi:
- Įvairūs algoritmai, dažniausiai tinkami suskaičiuoti sprendimą daugiausiai 40-60 miestų.
- Geriau veikia algoritmai, kurie remiasi . Tokie algoritmai gali būti efektyviai naudojami tikslaus maršruto tarp 120–200 miestų radimui.
2001 metais buvo suskaičiuotas tikslus maršrutas 15 112 Vokietijos miestų naudojant tiesiniu programavimu paremtą metodą. Skaičiavimui buvo naudojamas 110 procesorių tinklas. Galutinis apskaičiuotas maršrutas yra apie 66 000 kilometrų ilgio. [1]
Euristiniai algoritmai
Įvairūs aproksimaciniai algoritmai gana greitai ir su pakankamai dideliu tikslumu sprendžia keliaujančio pirklio uždavinį. Moderniausi algoritmai gali rasti sprendimus su ypač dideliu kiekiu miestų (milijonais) per protingą laiką ir yra įrodyta, kad atsakymas nuo optimalaus sprendimo nėra nutolęs toliau nei 2-3 %.
Artimiausio kaimyno metodas
Pradėdami nuo kažkurios grafo viršūnės, kaskart renkamės iš neaplankytų viršūnių pačią „artimiausią“ (su kuo mažesniu briaunos svoriu). Kai nebelieka neaplankytų viršūnių – grįžtame į pradinę.
Pigiausios jungties algoritmas
Pradėdami nuo bet kurios grafo viršūnės,
- Imame mažiausio svorio briauną (jei yra kelios vienodai mažo svorio – renkamės bet kurią). Pasirinktą briauną pažymime.
- Imame kitą mažiausio svorio briauną ir ją pažymime. Briauna yra tinkama, jei
- ji nepažymėta;
- ji neuždaro mažesnio ciklo;
- ji nėra paskutinė nepažymėta briauna, išeinanti iš vienos viršūnės;
- kartojame 2 žingsnį, kol gausime Hamiltono ciklą.
2-jų pasirinktųjų sukeitimo algoritmas
Šio algoritmo veikimo principas yra dviejų briaunų panaikinimas, sujungiant viršūnes kitokiu būdu, tikintis gauti trumpesnį maršrutą. Jei pasiūlytas naujasis kelias yra trumpesnis (jei panaikintų briaunų svorių suma didesnė už sujungtų kitokiu būdu), tuomet juo pakeičiame pradinį. Visada yra tik vienas būdas perjungti lankus, kurie įeina į maršrutą, kad išliktų ciklas.
vikipedija, wiki, lietuvos, knyga, knygos, biblioteka, straipsnis, skaityti, atsisiųsti, nemokamai atsisiųsti, mp3, video, mp4, 3gp, jpg, jpeg, gif, png, pictu , mobilusis, telefonas, android, iOS, apple, mobile telefl, samsung, iPhone, xiomi, xiaomi, redmi, honor, oppo, Nokia, Sonya, mi, pc, web, kompiuteris