Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm

Ang trabaho sa panukiduki tingali ang labing makapaikag nga bahin sa among pagbansay. Ang ideya mao ang pagsulay sa imong kaugalingon sa imong gipili nga direksyon samtang naa pa sa unibersidad. Pananglitan, ang mga estudyante gikan sa mga lugar sa Software Engineering ug Machine Learning kanunay nga mag-research sa mga kompanya (kasagaran JetBrains o Yandex, apan dili lamang).

Sa kini nga post maghisgot ako bahin sa akong proyekto sa Computer Science. Isip kabahin sa akong trabaho, nagtuon ko ug nagpraktis sa mga pamaagi sa pagsulbad sa usa sa labing inila nga problema sa NP-hard: problema sa pagtabon sa vertex.

Karong panahona, usa ka makaiikag nga pamaagi sa mga problema sa NP-lisud nga dali nga nag-uswag - mga parameter nga algorithm. Paningkamutan nako nga mapadali ka, isulti kanimo ang pipila ka yano nga parameterized algorithm ug ihulagway ang usa ka kusgan nga pamaagi nga nakatabang kaayo kanako. Gipresentar nako ang akong mga resulta sa kompetisyon sa PACE Challenge: sumala sa mga resulta sa bukas nga mga pagsulay, ang akong solusyon moabut sa ikatulo nga dapit, ug ang katapusang mga resulta mahibal-an sa Hulyo 1.

Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm

Mahitungod sa akong kaugalingon

Ang akong ngalan mao si Vasily Alferov, natapos na nako ang akong ikatulo nga tuig sa National Research University Higher School of Economics - St. Interesado ako sa mga algorithm sukad sa akong mga adlaw sa eskuylahan, sa dihang nagtuon ko sa Moscow school No. 179 ug malampuson nga miapil sa Computer Science Olympiads.

Ang usa ka limitado nga gidaghanon sa mga espesyalista sa mga parameterized algorithm mosulod sa bar...

Pananglitan nga gikuha gikan sa libro "Parameterized nga mga algorithm"

Hunahunaa nga ikaw usa ka bar security guard sa usa ka gamay nga lungsod. Kada Biyernes, katunga sa siyudad ang moanha sa imong bar aron mag-relax, nga naghatag kanimog daghang kasamok: kinahanglan nimong ilabay ang mga gubot nga kustomer gikan sa bar aron malikayan ang mga away. Sa kadugayan, napul-an ka ug nakahukom sa paghimog mga preventive measures.

Tungod kay gamay ang imong lungsod, nahibal-an nimo kung unsang mga pares sa mga patron ang lagmit nga mag-away kung magdungan sila sa usa ka bar. Aduna ka bay listahan sa n mga tawo nga moadto sa bar karong gabii. Nakahukom ka nga pugngan ang pipila ka mga taga-lungsod sa bar nga wala’y bisan kinsa nga makig-away. Sa parehas nga oras, ang imong mga boss dili gusto nga mawad-an sa kita ug dili malipay kung dili nimo tugutan ang labi pa sa k Tawo.

Ikasubo, ang problema sa imong atubangan usa ka klasiko nga NP-lisud nga problema. Tingali nakaila nimo siya Tabuni sa Vertex, o isip usa ka vertex nga nagtabon sa problema. Alang sa ingon nga mga problema, sa kinatibuk-ang kaso, wala’y mga algorithm nga molihok sa usa ka madawat nga panahon. Sa tukma, ang wala mapamatud-an ug medyo lig-on nga pangagpas nga ETH (Exponential Time Hypothesis) nag-ingon nga kini nga problema dili masulbad sa oras. Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm, kana mao, dili ka makahunahuna sa bisan unsa nga mas maayo kaysa usa ka kompleto nga pagpangita. Pananglitan, ingnon ta nga adunay moadto sa imong bar n = 1000 Tawo. Unya ang kompleto nga pagpangita Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm mga kapilian nga adunay gibanabana Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm - buang nga kantidad. Maayo na lang, ang imong pagdumala naghatag kanimo og limitasyon k = 10, mao nga ang gidaghanon sa mga kombinasyon nga kinahanglan nimong balikon mas gamay: ang gidaghanon sa mga subset sa napulo ka elemento mao ang Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm. Mas maayo kini, apan dili gihapon kini maihap sa usa ka adlaw bisan sa usa ka kusgan nga pungpong.
Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm
Aron mawagtang ang posibilidad sa usa ka away sa kini nga pagsumpo sa mga higpit nga relasyon tali sa mga bisita sa bar, kinahanglan nimo nga itago si Bob, Daniel ug Fedor. Walay solusyon nga duha na lang ang mahibilin.

Nagpasabot ba kini nga panahon na sa paghatag ug pagtugot sa tanan? Atong tagdon ang ubang mga kapilian. Aw, pananglitan, dili nimo pasudlon ang mga lagmit nga makig-away sa daghang mga tawo. Kung naay makaaway at least sa k+1 sa laing tawo, nan siguradong dili nimo siya pasudlon - kung dili kinahanglan nimo nga pugngan ang tanan k+1 taga lungsod, nga iyang maawayan, nga makapasuko gyud sa pamunoan.

Tugoti nga isalikway nimo ang tanan nga imong mahimo sumala niini nga prinsipyo. Unya ang tanan mahimo nga makig-away sa dili labaw pa kay sa k mga tawo. Paglabay kanila k tawo, dili ka makapugong sa bisan unsa gawas sa Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm mga panagsumpaki. Kini nagpasabot nga kon adunay labaw pa sa Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm Kung ang usa ka tawo nalambigit sa labing menos usa ka panagbangi, nan dili nimo mapugngan silang tanan. Tungod kay, siyempre, siguradong pasudlon nimo ang hingpit nga dili panagbangi nga mga tawo, kinahanglan nimo nga tun-an ang tanan nga mga subset sa gidak-on nga napulo gikan sa duha ka gatos nga mga tawo. Adunay gibanabana Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm, ug kini nga gidaghanon sa mga operasyon mahimo nang mahan-ay sa cluster.

Kung mahimo nimong luwas nga makuha ang mga indibidwal nga wala’y panagbangi, nan komosta kadtong miapil sa usa ra ka panagbangi? Gani, mahimo sab silang pasudlon pinaagi sa pagsira sa pultahan sa ilang kontra. Sa pagkatinuod, kung si Alice nakig-away lamang kang Bob, nan kung atong buhian si Alice gikan sa duha kanila, dili kita mapildi: Si Bob mahimong adunay uban nga mga panagbangi, apan si Alice siguradong wala kanila. Dugang pa, wala'y kahulogan alang kanamo nga dili pasudlon kaming duha. Human sa maong mga operasyon wala nay nahabilin Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm mga bisita nga adunay wala masulbad nga kapalaran: kami adunay lamang Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm mga panagbangi, ang matag usa adunay duha ka partisipante ug ang matag usa nalambigit sa labing menos duha. Mao nga ang nahabilin mao ang paghan-ay Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm mga kapilian, nga dali makonsiderar nga tunga sa adlaw sa usa ka laptop.

Sa tinuud, sa yano nga pangatarungan mahimo nimong makab-ot ang labi ka madanihon nga mga kahimtang. Timan-i nga kinahanglan gyud natong sulbaron ang tanan nga mga panaglalis, nga mao, gikan sa matag magkasumpaki nga pares, pagpili og labing menos usa ka tawo nga dili nato tugotan. Atong tagdon ang mosunod nga algorithm: kuhaa ang bisan unsa nga panagbangi, diin atong tangtangon ang usa ka partisipante ug balikbalik nga magsugod gikan sa nahibilin, unya kuhaa ang lain ug magsugod usab sa recursively. Tungod kay gilabay namo ang usa ka tawo sa matag lakang, ang recursion tree sa ingon nga algorithm usa ka binary tree sa giladmon k, mao nga sa kinatibuk-an ang algorithm nagtrabaho sa Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithmdiin n mao ang gidaghanon sa mga vertex, ug m - gidaghanon sa mga gusok. Sa among pananglitan, kini mga napulo ka milyon, nga mahimong kalkulado sa usa ka split second dili lamang sa usa ka laptop, apan bisan sa usa ka mobile phone.

Ang pananglitan sa ibabaw usa ka pananglitan parameterized algorithm. Ang mga parameter nga algorithm mao ang mga algorithm nga nagdagan sa oras f(k) poly(n)diin p - polynomial, f kay usa ka arbitraryong computable function, ug k - pipila ka mga parameter, nga, lagmit, mahimong mas gamay kaysa sa gidak-on sa problema.

Ang tanan nga pangatarungan sa wala pa kini nga algorithm naghatag usa ka pananglitan kernelization mao ang usa sa mga kinatibuk-ang mga teknik sa pagmugna parameterized algorithms. Ang Kernelization mao ang pagkunhod sa gidak-on sa problema ngadto sa usa ka bili nga limitado sa usa ka function sa usa ka parameter. Ang resulta nga problema sagad gitawag nga kernel. Mao nga, pinaagi sa yano nga pangatarungan bahin sa mga ang-ang sa mga vertices, nakakuha kami usa ka quadratic kernel alang sa problema sa Vertex Cover, nga gi-parameter sa gidak-on sa tubag. Adunay ubang mga setting nga mahimo nimong pilion alang niini nga buluhaton (sama sa Vertex Cover Above LP), apan kini ang setting nga atong hisgutan.

Pace Challenge

Kumpetisyon Hagit sa PACE (Ang Parameterized Algorithms ug Computational Experiments Challenge) natawo sa 2015 aron magtukod og koneksyon tali sa parameterized algorithms ug mga pamaagi nga gigamit sa praktis aron masulbad ang mga problema sa computational. Ang unang tulo ka kompetisyon gigahin sa pagpangita sa gilapdon sa kahoy sa usa ka graph (Lapad sa kahoy), nangita ug Steiner tree (Kahoy nga Steiner) ug pagpangita alang sa usa ka hugpong sa mga vertices nga nagputol sa mga siklo (Feedback Vertex Set). Karong tuiga, usa sa mga problema diin mahimo nimong sulayan ang imong kamot mao ang problema sa pagtabon sa vertex nga gihulagway sa ibabaw.

Ang kompetisyon nahimong popular matag tuig. Kung motuo ka sa pasiuna nga datos, karong tuiga 24 ka mga koponan ang miapil sa kompetisyon aron masulbad ang sulud nga sulud sa sulud sa sulud. Angay nga matikdan nga ang kompetisyon molungtad dili daghang oras o bisan usa ka semana, apan daghang mga bulan. Ang mga team adunay oportunidad sa pagtuon sa literatura, paghimo sa ilang kaugalingon nga orihinal nga ideya ug pagsulay sa pagpatuman niini. Sa esensya, kini nga kompetisyon usa ka proyekto sa panukiduki. Ang mga ideya alang sa labing epektibo nga mga solusyon ug paghatag sa mga mananaog ipahigayon kauban ang komperensya IPEC (International Symposium on Parameterized and Exact Computation) isip kabahin sa kinadak-ang tinuig nga algorithmic meeting sa Europe ALGO. Ang mas detalyado nga impormasyon bahin sa kompetisyon mismo makita sa site, ug ang mga resulta sa miaging mga tuig bakak dinhi.

Diagram sa solusyon

Aron masulbad ang problema sa pagtabon sa vertex, gisulayan nako ang paggamit sa mga parameterized algorithm. Kasagaran kini naglangkob sa duha ka bahin: mga lagda sa pagpayano (nga labing maayo nga hinungdan sa kernelization) ug mga lagda sa pagbahin. Ang mga lagda sa pagpayano mao ang preprocessing sa input sa polynomial time. Ang katuyoan sa pagpadapat sa ingon nga mga lagda mao ang pagpakunhod sa problema ngadto sa usa ka katumbas nga gamay nga problema. Ang mga lagda sa pagpayano mao ang pinakamahal nga bahin sa algorithm, ug ang pagpadapat niini nga bahin mosangpot sa kinatibuk-ang oras sa pagdagan Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm imbes nga simple nga polynomial nga panahon. Sa among kaso, ang mga lagda sa pagbahin gibase sa kamatuoran nga alang sa matag vertex kinahanglan nimo nga kuhaon kini o ang silingan niini ingon usa ka tubag.

Ang kinatibuk-ang laraw mao kini: atong gipadapat ang mga lagda sa pagpayano, unya atong pilion ang pipila ka vertex, ug himoon ang duha ka recursive nga mga tawag: sa una atong kuhaon kini isip tubag, ug sa lain atong kuhaon ang tanan nga mga silingan niini. Mao kini ang gitawag nato nga splitting (branching) subay niini nga vertex.

Eksakto nga usa ka pagdugang ang himuon sa kini nga laraw sa sunod nga parapo.

Mga ideya alang sa pagbahin (brunching) nga mga lagda

Atong hisgutan kung unsaon pagpili sa usa ka vertex diin mahitabo ang pagbahin.
Ang panguna nga ideya hakog kaayo sa algorithmic nga diwa: magkuha kita usa ka tumoy sa labing taas nga degree ug bahinon kini. Ngano daw mas maayo? Tungod kay sa ikaduhang sanga sa recursive nga tawag atong tangtangon ang daghang mga vertices niining paagiha. Makasalig ka sa gamay nga graph nga nahabilin ug mahimo namon kini nga dali.

Kini nga pamaagi, uban sa nahisgutan na nga yano nga mga teknik sa kernelization, nagpakita sa kaugalingon nga maayo ug nakasulbad sa pipila ka mga pagsulay sa pipila ka libo nga mga vertices ang gidak-on. Apan, pananglitan, kini dili maayo alang sa mga cubic graphs (nga mao, mga graph kansang degree sa matag vertex tulo).
Adunay lain nga ideya nga gibase sa usa ka medyo yano nga ideya: kung ang graph nadiskonekta, ang problema sa konektado nga mga sangkap mahimong masulbad nga independente, nga gihiusa ang mga tubag sa katapusan. Kini, sa laing bahin, usa ka gamay nga gisaad nga pagbag-o sa laraw, nga makapadali sa solusyon: kaniadto, sa kini nga kaso, nagtrabaho kami alang sa produkto sa mga panahon alang sa pagkalkula sa mga tubag sa mga sangkap, apan karon nagtrabaho kami alang sa ang suma. Ug aron mapadali ang pagsanga, kinahanglan nimo nga himuon ang usa ka konektado nga graph nga usa ka wala’y koneksyon.

Unsaon pagbuhat niini? Kung adunay usa ka articulation point sa graph, kinahanglan nimo nga awayon kini. Ang articulation point kay usa ka vertex nga kung kuhaon, ang graph mawad-an sa koneksyon niini. Ang tanang junction point sa usa ka graph makita gamit ang classical algorithm sa linear time. Kini nga pamaagi labi nga nagpadali sa pagsabwag.
Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm
Sa diha nga ang bisan unsa sa mga pinili nga vertices tangtangon, ang graph mabahin ngadto sa konektado nga mga sangkap.

Buhaton namo kini, apan gusto namo og dugang. Pananglitan, pangitaa ang gagmay nga mga pagputol sa vertex sa graph ug gibahin ang mga vertex gikan niini. Ang labing episyente nga paagi nga akong nahibal-an aron makit-an ang minimum nga global vertex cut mao ang paggamit sa usa ka kahoy nga Gomori-Hu, nga gitukod sa kubiko nga oras. Sa PACE Challenge, ang kasagarang gidak-on sa graph kay pila ka libo ka vertices. Niini nga sitwasyon, binilyon nga mga operasyon ang kinahanglan nga ipahigayon sa matag vertex sa recursion tree. Kini nahimo nga imposible nga masulbad ang problema sa gitakda nga oras.

Atong sulayan nga ma-optimize ang solusyon. Ang minimum nga vertex cut sa taliwala sa usa ka parisan sa vertices makit-an sa bisan unsang algorithm nga nagtukod sa usa ka maximum nga dagan. Mahimo nimo kini ibutang sa ingon nga network Dinitz algorithm, sa praktis kini molihok nga dali kaayo. Duna koy pagduda nga posible nga mapamatud-an ang usa ka banabana alang sa oras sa pag-operate Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm, nga madawat na.

Gisulayan nako ang daghang mga higayon sa pagpangita sa mga pagtibhang tali sa mga parisan sa random vertices ug pagkuha sa labing balanse. Ikasubo, nakahatag kini og dili maayo nga mga resulta sa bukas nga pagsulay sa PACE Challenge. Gikumpara nako kini sa usa ka algorithm nga nagbahin sa mga vertices sa labing taas nga degree, nga nagpadagan niini nga adunay limitasyon sa giladmon sa pagkunsad. Human sa usa ka algorithm nga naningkamot sa pagpangita sa usa ka cut sa niini nga paagi, mas dagkong mga graphs nahibilin. Kini tungod sa kamatuoran nga ang mga pagtibhang nahimo nga dili balanse: nga gikuha ang 5-10 nga mga vertices, posible nga mabahin lamang ang 15-20.

Angay nga hinumdoman nga ang mga artikulo bahin sa labing paspas nga mga algorithm nga gigamit ang labi ka abante nga mga pamaagi sa pagpili sa mga vertices alang sa pagbahin. Ang ingon nga mga pamaagi adunay labi ka komplikado nga pagpatuman ug kanunay nga dili maayo nga nahimo sa termino sa oras ug panumduman. Wala ako makaila sa mga madawat kaayo alang sa praktis.

Unsaon Pag-aplay sa Mga Lagda sa Pagpayano

Naa na mi mga ideya para sa kernelization. Pahinumdum ko nimo:

  1. Kung adunay usa ka nahilit nga vertex, kuhaa kini.
  2. Kung adunay usa ka vertex sa degree 1, kuhaa kini ug kuhaa ang silingan niini agig tubag.
  3. Kung adunay usa ka vertex sa degree labing menos k+1, bawia.

Uban sa unang duha ang tanan klaro, uban sa ikatulo adunay usa ka lansis. Kung sa usa ka problema sa komiks bahin sa usa ka bar gihatagan kami usa ka taas nga limitasyon sa k, unya sa PACE Challenge kinahanglan ra nimo pangitaon ang vertex cover sa pinakagamay nga gidak-on. Kini usa ka tipikal nga pagbag-o sa mga Problema sa Pagpangita ngadto sa mga Problema sa Desisyon; kasagaran walay kalainan tali sa duha ka matang sa mga problema. Sa praktis, kung nagsulat kita og solver alang sa vertex covering nga problema, mahimong adunay kalainan. Pananglitan, sama sa ikatulo nga punto.

Gikan sa panglantaw sa pagpatuman, adunay duha ka paagi sa pagpadayon. Ang una nga pamaagi gitawag nga Iterative Deepening. Kini mao ang mosunod: kita makasugod uban sa pipila ka makatarunganon nga pagpugong gikan sa ubos sa tubag, ug dayon ipadagan ang atong algorithm gamit kini nga pagpugong ingon nga usa ka pagpugong sa tubag gikan sa ibabaw, nga walay pagpaubos sa recursion kay niini nga pagpugong. Kung nakit-an namon ang pipila nga tubag, gigarantiyahan kini nga labing maayo, kung dili mahimo naton madugangan kini nga limitasyon sa usa ug magsugod pag-usab.

Ang laing pamaagi mao ang pagtipig sa pipila ka kasamtangan nga labing maayo nga tubag ug pagpangita og mas gamay nga tubag, pag-usab niini nga parameter kung makit-an k alang sa mas dako nga pagputol sa wala kinahanglana nga mga sanga sa pagpangita.

Pagkahuman sa pagpahigayon sa daghang mga eksperimento matag gabii, gihusay nako ang usa ka kombinasyon niining duha ka mga pamaagi: una, gipadagan nako ang akong algorithm nga adunay usa ka matang sa limitasyon sa giladmon sa pagpangita (gipili kini aron kini gamay nga oras kung itandi sa panguna nga solusyon) ug gigamit ang labing kaayo. solusyon nga nakit-an ingon usa ka taas nga limitasyon sa tubag - nga mao, sa parehas nga butang k.

Mga tumoy sa degree 2

Gihisgutan namon ang mga vertices sa degree 0 ug 1. Kini nahimo nga kini mahimo sa mga vertices sa degree 2, apan kini magkinahanglan og mas komplikado nga mga operasyon gikan sa graph.

Aron ipatin-aw kini, kinahanglan natong itudlo ang mga vertices. Tawgon nato ang vertex sa degree 2 nga vertex v, ug ang mga silingan niini - vertices x и y. Sunod kita adunay duha ka mga kaso.

  1. Kanus-a x и y - mga silingan. Unya makatubag ka x и yug v tangtangon. Sa tinuud, gikan sa kini nga triyanggulo labing menos duha ka vertices ang kinahanglan nga kuhaon agig balos, ug siguradong dili kita mapildi kung kuhaon naton. x и y: naa silay laing silingan, ug v Wala sila dinhi.
  2. Kanus-a x и y - dili silingan. Dayon giingon nga ang tanang tulo ka vertices mahimong ipapilit sa usa. Ang ideya mao nga sa niini nga kaso adunay usa ka kamalaumon nga tubag, diin atong gikuha bisan v, o pareho nga vertex x и y. Dugang pa, sa una nga kaso kinahanglan naton nga tubagon ang tanan nga mga silingan x и y, apan sa ikaduha dili kinahanglan. Kini tukma nga katumbas sa mga kaso kung dili naton makuha ang gipapilit nga vertex agig tubag ug kung buhaton naton. Nagpabilin lamang nga timan-an nga sa duha ka mga kaso ang tubag gikan sa ingon nga operasyon mikunhod sa usa.

Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm

Angay nga matikdan nga kini nga pamaagi lisud nga tukma nga ipatuman sa patas nga linear nga oras. Ang gluing vertices usa ka komplikado nga operasyon; kinahanglan nimo nga kopyahon ang mga lista sa mga silingan. Kung kini gihimo nga walay pagtagad, mahimo nimong matapos ang asymptotically suboptimal nga oras sa pagdagan (pananglitan, kung imong kopyahon ang daghang mga sulud pagkahuman sa matag gluing). Naghusay ako sa pagpangita sa tibuuk nga mga agianan gikan sa mga vertices sa degree 2 ug pag-analisar sa usa ka hugpong sa mga espesyal nga kaso, sama sa mga siklo gikan sa ingon nga mga vertex o gikan sa tanan nga mga vertex gawas sa usa.

Dugang pa, gikinahanglan nga kini nga operasyon mabalik, aron sa pagbalik gikan sa recursion atong ibalik ang graph sa orihinal nga porma niini. Aron masiguro kini, wala nako gilimpyohan ang mga lista sa ngilit sa mga gisagol nga vertices, ug nahibal-an ra nako kung unsang mga sulud ang kinahanglan moadto kung asa. Kini nga pagpatuman sa mga graph nanginahanglan usab og katukma, apan naghatag kini og patas nga linear nga oras. Ug alang sa mga graph sa pipila ka napulo ka libo nga mga ngilit, mohaum kini sa cache sa processor, nga naghatag daghang mga bentaha sa katulin.

Linear nga kernel

Sa katapusan, ang labing makapaikag nga bahin sa kernel.

Sa pagsugod, hinumdomi nga sa bipartite graphs ang minimum vertex cover makita gamit Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm. Aron mahimo kini kinahanglan nimo nga gamiton ang algorithm Hopcroft-Karp aron makit-an ang pinakataas nga pagpares didto, ug dayon gamita ang theorem König-Egervari.

Ang ideya sa usa ka linear kernel mao kini: una atong bifurcate ang graph, nga mao, inay sa matag vertex v magdugang ta ug duha ka taluktok Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm и Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm, ug inay sa matag ngilit ikaw - v dugangan ta ug duha ka gusok Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm и Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm. Ang resulta nga graph mahimong bipartite. Atong pangitaon ang minimum nga vertex cover niini. Ang ubang mga vertex sa orihinal nga graph moabut didto kaduha, ang uban kausa ra, ug ang uban dili. Ang Nemhauser-Trotter theorem nag-ingon nga sa niini nga kaso ang usa mahimong magtangtang sa mga vertices nga wala makaigo bisan kausa ug ibalik kadtong naigo sa makaduha. Dugang pa, siya nag-ingon nga sa nahabilin nga mga vertices (kadtong naigo sa makausa) kinahanglan nimo nga kuhaon ang labing menos katunga ingon usa ka tubag.

Bag-o lang kami nakakat-on sa pagbiya sa dili labaw pa kay sa 2k mga taluktok Sa tinuud, kung ang nahabilin nga tubag labing menos katunga sa tanan nga mga vertices, nan wala nay mga vertex sa kinatibuk-an kaysa 2k.

Dinhi ako nakahimo sa usa ka gamay nga lakang sa unahan. Klaro nga ang kernel nga gihimo niining paagiha nagdepende sa unsa nga klase sa minimal vertex cover nga atong gikuha sa bipartite graph. Gusto nakong kuhaon ang usa aron ang gidaghanon sa nahabilin nga mga vertex gamay ra. Kaniadto, mahimo ra nila kini sa oras Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm. Nagbuhat ako sa usa ka pagpatuman niini nga algorithm sa panahon Unsaon Pagsulbad sa NP-Hard nga mga Problema sa Parameterized Algorithm, sa ingon, kini nga kinauyokan mahimong pangitaon sa mga graph sa gatusan ka libo nga vertices sa matag branching stage.

resulta

Gipakita sa praktis nga maayo ang akong solusyon sa mga pagsulay sa pila ka gatos nga vertices ug pila ka libo nga mga sulud. Sa ingon nga mga pagsulay posible nga magdahum nga ang solusyon makit-an sa tunga sa oras. Ang kalagmitan sa pagpangita sa usa ka tubag sa usa ka madawat nga panahon, sa prinsipyo, nagdugang kung ang graph adunay igo nga gidaghanon sa mga vertices sa taas nga degree, pananglitan, degree 10 ug mas taas.

Aron makaapil sa kompetisyon, kinahanglan nga ipadala ang mga solusyon optil.io. Paghukom sa impormasyon nga gipresentar didto timaan, ang akong solusyon sa bukas nga mga pagsulay nahimutang sa ikatulo sa kawhaan, nga adunay dako nga gintang gikan sa ikaduha. Aron mahimong hingpit nga matinud-anon, dili kini hingpit nga tin-aw kung giunsa ang pagtimbang-timbang sa mga solusyon sa kompetisyon mismo: pananglitan, ang akong solusyon nagpasa sa gamay nga mga pagsulay kaysa sa solusyon sa ikaupat nga lugar, apan sa mga nakapasar, kini molihok nga mas paspas.

Ang mga resulta sa mga sirado nga pagsulay mahibal-an sa Hulyo XNUMX.

Source: www.habr.com