Кіріспе
Графтың барлық төбелері арқылы цикл табу мәселесі – берілген графта Гамильтон жолы немесе циклдің болуын анықтаудың нақты мәселесі. Гамильтон жолы мәселесі күрделілік теориясы және граф теориясы салаларында талқыланатын тақырып. Ол бағытталған немесе бағытталмаған графтың, G, графтың әрбір төбесін дәл бір рет аралайтын Гамильтон жолын қамтиды ма, жоқ па, соны анықтайды. Мәселе жолдың басталуы мен аяқталуын көрсетуі мүмкін, онда бастапқы төбе s және соңғы төбе t анықталуы керек. Гамильтон циклы мәселесі Гамильтон жолы мәселесіне ұқсас, бірақ ол берілген графта Гамильтон циклы бар ма деп сұрайды. Бұл мәселе циклдің басталуын да көрсетуі мүмкін. Гамильтон циклы – егер екі қала бір-бірімен тікелей байланысты болса, екі қала арасындағы қашықтықты бірге, ал басқа жағдайда екіге теңестіріп, және барлық қашықтықтың қосындысы n-ге тең екенін тексеру арқылы алынатын саяхатшы сатушысы проблемасының ерекше жағдайы. Егер солай болса, маршрут Гамильтон циклы болып табылады. Гамильтон жолы мәселесі мен Гамильтон циклы мәселесі Майкл Грей мен Дэвид С. Джонсонның «Computers and Intractability: A Guide to the Theory of NP Completeness» және Ричард Карптың 21 NP-толық проблемалар тізімінде көрсетілгендей, NP-толық проблемалар класына жатады.
the specific problem of determining whether a Hamiltonian path or cycle exists in a given graph
The Hamiltonian path problem is a topic discussed in the fields of complexity theory and graph theory. It decides if a directed or undirected graph, G, contains a Hamiltonian path, a path that visits every vertex in the graph exactly once. The problem may specify the start and end of the path, in which case the starting vertex s and ending vertex t must be identified. The Hamiltonian cycle problem is similar to the Hamiltonian path problem, except it asks if a given graph contains a Hamiltonian cycle. This problem may also specify the start of the cycle. The Hamiltonian cycle problem is a special case of the travelling salesman problem, obtained by setting the distance between two cities to one if they are adjacent and two otherwise, and verifying that the total distance travelled is equal to n. If so, the route is a Hamiltonian cycle. The Hamiltonian path problem and the Hamiltonian cycle problem belong to the class of NP complete problems, as shown in Michael Garey and David S. Johnson's book Computers and Intractability: A Guide to the Theory of NP Completeness and Richard Karp's list of 21 NP complete problems.
Қиын күш
Графтың Гамильтондық жолы бар-жоғын шешу үшін, кіріс граф G-дегі барлық мүмкін жолдарды тексеру қажет. Берілген n төбелі графта (және толық графта) Гамильтондық жол болуы мүмкін н! түрлі төбелер тізбегі бар, сондықтан барлық мүмкін тізбектерді сынап көретін қара күшпен іздеу алгоритмі өте баяу болады.
Ішінара жолдар
Бағытталған графтағы Гамильтон циклін табуға арналған алғашқы дәл алгоритм – Мартеллоның тізімдеу алгоритмі болды. Бұл алгоритм графтың қабырғаларын үш санатқа бөледі: жолға міндетті түрде кіруі керек, жолға кіре алмайтын және белгісіз қабырғалар. Іздеу процесі кезінде шешім қабылдау ережелерінің жиынтығы белгісіз қабырғаларды жіктейді және іздеуді тоқтатуды немесе жалғастыруды анықтайды. Жолға кіре алмайтын қабырғаларды алып тастауға болады, сондықтан іздеу аймағы үнемі тарылады. Алгоритм графты жеке-жеке шешуге болатын компоненттерге де бөледі, бұл іздеу көлемін күрт азайтады. Іс жүзінде, бұл алгоритм әлі де ең жылдам алгоритм болып табылады.
Динамикалық бағдарламалау
Сондай-ақ, Беллман, Хелд және Карптың динамикалық бағдарламалау алгоритмі мәселені O(n² 2ⁿ) уақытында шешуге қолданылуы мүмкін. Бұл әдісте S жиынындағы әрбір төбе және S жиынындағы әрбір v төбесі үшін, S жиынындағы төбелерді дәл қамтитын және v төбесінде аяқталатын жол бар-жоғын анықтаймыз. S және v таңдауының әрқайсысы үшін (S, v) үшін жол бар, егер және тек қана v төбесінің w көршісі болса, онда (S − v, w) үшін жол бар, оны динамикалық бағдарламада бұрын есептелген мәліметтерден табуға болады.
Монте-Карло
Андреас Бьёрклунд Гамильтон циклдерінің санын есептеу мәселесін, белгілі бір матрицалық детерминанттарды есептеу арқылы шешілетін циклдік жабындарды есептеудің қарапайым мәселесіне дейін азайту үшін қосым-азайту принципін қолдана отырып, баламалы тәсіл ұсынды. Осы әдіс арқылы ол кез келген n төбелі графтардағы Гамильтон циклы мәселесін Монте-Карло алгоритмімен O(1.657n) уақытында шешуге болатынын көрсетті; екі бөлікті графтар үшін бұл алгоритмді O(1.415n) уақытында одан да жақсартуға болады.
Қайта қарау
Ең жоғары үш дәрежелі графтар үшін, сақтықпен жүргізілген кері іздеу Гамильтон циклін (егер ол болса) O(1.251n) уақытында таба алады.
Бульдік қанағаттанушылық
Гамильтондық жолдарды SAT шешуші арқылы табуға болады. Гамильтондық жол NP-толық болып табылады, яғни оны 3-SAT мәселесіне келтіріп қарастыруға болады. Осының салдарынан, Гамильтондық жол мәселесіне шешім табу 3-SAT мәселесіне шешім табумен эквивалентті.
Дәстүрлі емес әдістер
Гамильтондық жол және цикл мәселелерін дәстүрлі компьютерлерде шешудің қиындығы себепті, олар есептеудің дәстүрлі емес модельдерінде де зерттелді. Мысалы, Леонард Адлеман Гамильтондық жол мәселесін ДНК компьютері арқылы шешуге болатынын көрсетті. Химиялық реакцияларға тән параллелизмді пайдаланып, мәселені графтың төбелерінің санымен сызықтық сандағы химиялық реакция қадамдары арқылы шешуге болады; бірақ реакцияға қатысу үшін ДНК молекулаларының факториал саны қажет. Гамильтондық мәселенің оптикалық шешімі де ұсынылған. Идеясы – оптикалық кабельдер мен сәуле бөлігіштерден жасалған граф тәрізді құрылымды құру, одан жарық өтіп мәселенің шешімін табуға болады. Бұл тәсілдің кемшілігі – қажетті энергия мөлшері, ол түйіндер санының экспонентасымен өседі.
Көптік уақыт тексерушісі
Гамильтондық жол мәселесі NP-толық, яғни ұсынылған шешімді полиномиалдық уақытта тексеруге болады. Алгоритм c-ның G-де жарамды Гамильтондық жол екенін анықтайды және егер жарамды болса, қабылдайды. Бұл үшін алгоритм бірінші кезекте G-дегі барлық төбелердің c-де дәл бір рет кездесетінін тексереді. Егер бұл тексеруден өтетін болса, алгоритм c-дегі бірінші төбе s-ке, ал соңғы төбе t-ға тең екенін қамтамасыз етеді. Соңында, c-ның жарамды жол екенін растау үшін алгоритм c-дегі төбелер арасындағы әрбір қабырғаның G-де де бар екенін тексеруі керек. Егер осы тексерулердің кез келгені сәтсіз аяқтаса, алгоритм бас тартады. Әйтпесе, қабылдайды. Алгоритм G-дегі төбелердің c-де бір рет кездесуін полиномиалдық уақытта тексеруге қабілетті. Сонымен қатар, бастапқы және соңғы төбелерді, сондай-ақ төбелер арасындағы қабырғаларды тексеруге де полиномиалдық уақыт жұмсалады. Сондықтан, алгоритм Гамильтондық жол мәселесі үшін полиномиалдық уақыт тексеруші болып табылады. NoC-нің өнімділігі желі арқылы дерек пакеттерін жылжыту әдісімен анықталады. Гамильтондық жол мәселесін көп тарату маршрутизациясындағы жолға негізделген әдіс ретінде жүзеге асыруға болады. Жолға негізделген мультикаст алгоритмдері бастапқы төбеден әрбір соңғы төбеге Гамильтондық жолдың бар-жоғын анықтайды және сәйкес жол арқылы пакеттерді жібереді. Бұл стратегияны қолдану тұйықталу мен тірі тұйықталусыз маршрутизацияны қамтамасыз етеді, соның арқасында NoC-нің тиімділігі артады.
Компьютерлік графика
Рендерингтік қозғалтқыштар – кіріс деректерінен суреттерді немесе модельдерді жасау үшін компьютерлік графикада қолданылатын бағдарламалық жасақтаманың бір түрі. Үш өлшемді графикалық рендерингте қозғалтқышқа ең көп қолданылатын кіріс – көпбұрышты тор. Объектіні рендерингтеуге кететін уақыт кіріс деректерінің түсу жылдамдығына байланысты, яғни кіріс көлемі неғұрлым үлкен болса, рендеринг уақыты соғұрлым ұзақ болады. Дегенмен, үшбұрышты торлар үшін рендеринг уақытын үш есеге дейін қысқартуға болады. Бұл "үшбұрыштарды осылай реттеу арқылы, олардың тікелей жанасқан беттері болсын" арқылы жүзеге асырылады. Осылайша, әрбір екі тікелей үшбұрыстың арасында тек бір ғана төбесі өзгереді. Мұндай реттелу үшбұрышты тордың қос графигінде Гамильтондық жол болған жағдайда ғана мүмкін болады.