Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen

Fuerschungsaarbecht ass vläicht den interessantsten Deel vun eiser Formatioun. D'Iddi ass Iech selwer an Ärer gewielter Richtung ze probéieren wärend Dir nach op der Uni sidd. Zum Beispill, Studenten aus de Beräicher Software Engineering a Machine Learning ginn dacks Fuerschung an Firmen (haaptsächlech JetBrains oder Yandex, awer net nëmmen).

An dësem Post wäert ech iwwer mäi Projet am Computer Science schwätzen. Als Deel vu menger Aarbecht hunn ech studéiert a praktizéiert Approche fir ee vun de bekanntste NP-hard Problemer ze léisen: Vertex Covering Problem.

Hautdesdaags entwéckelt sech eng interessant Approche fir NP-haard Probleemer ganz séier - parametriséiert Algorithmen. Ech probéieren Iech op d'Geschwindegkeet ze kréien, soen Iech e puer einfache parametriséiert Algorithmen a beschreiwen eng mächteg Method déi mir vill gehollef huet. Ech hunn meng Resultater um PACE Challenge Concours virgestallt: laut de Resultater vun oppenen Tester, meng Léisung hëlt drëtt Plaz, an d'Finale Resultater ginn den 1. Juli bekannt.

Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen

Iwwer mech selwer

Mäin Numm ass Vasily Alferov, ech maachen elo mäi drëtt Joer op der National Research University Higher School of Economics - St. Ech sinn interesséiert algorithms zanter meng Schoul Deeg, wann ech zu Moskau Schoul studéiert Nr 179 an erfollegräich an Computer Wëssenschaft Olympiads deelgeholl.

Eng endlech Unzuel vu Spezialisten a parametriséierten Algorithmen kommen an d'Bar ...

Beispill aus dem Buch geholl "Parameteriséiert Algorithmen"

Stellt Iech vir datt Dir e Bar Sécherheetsbeamten an enger klenger Stad sidd. All Freideg kënnt d'Halschent vun der Stad op Är Bar fir ze relaxen, wat Iech vill Ierger gëtt: Dir musst rowdy Clienten aus der Bar geheien fir Kämpf ze verhënneren. Schliisslech gëtt Dir midd an décidéiert fir präventiv Moossnamen ze huelen.

Zënter datt Är Stad kleng ass, wësst Dir genee wéi eng Pair vu Patréiner wahrscheinlech kämpfen wa se zesummen an enger Bar ophalen. Hutt Dir eng Lëscht vun n Leit, déi den Owend an d'Bar kommen. Dir décidéiert e puer Stadbewunner aus der Bar ze halen ouni datt iergendeen an de Kampf kënnt. Zur selwechter Zäit wëllen Är Cheffen kee Gewënn verléieren a wäerten onglécklech sinn wann Dir net méi wéi k Leit.

Leider ass de Problem virun Iech e klassesche NP-haard Problem. Dir kennt hatt vläicht als Vertex Cover, oder als Wirbeldeckungsproblem. Fir esou Probleemer, am allgemenge Fall, ginn et keng Algorithmen déi an enger akzeptabeler Zäit funktionnéieren. Fir präzis ze sinn, seet déi onbewisen an zimlech staark Hypothese ETH (Exponential Time Hypothesis) datt dëse Problem net an der Zäit geléist ka ginn Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen, dat ass, Dir kënnt näischt bemierkenswäert besser denken wéi eng komplett Sich. Zum Beispill, loosst eis soen datt een op Är Bar kënnt n = 1000 Mënsch. Da wäert déi komplett Sich sinn Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen Optiounen datt et ongeféier Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen - verréckten Betrag. Glécklecherweis huet Är Gestioun Iech eng Limite ginn k = 10 dir, sou datt d'Zuel vun de Kombinatiounen, déi Dir braucht fir ze iteréieren, vill méi kleng ass: d'Zuel vun de Subsets vun zéng Elementer ass Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen. Dëst ass besser, awer et gëtt nach ëmmer net an engem Dag gezielt och op engem mächtege Stärekoup.
Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen
Fir d'Méiglechkeet vun engem Kampf an dëser Konfiguratioun vun ustrengenden Relatiounen tëscht de Besucher vun der Bar eliminéiert, musst Dir Bob, Daniel a Fedor aushalen. Et gëtt keng Léisung an där nëmmen zwee hannerloosse wäerten.

Heescht dat datt et Zäit ass fir opzeginn a jidderee eran ze loossen? Loosst eis aner Optiounen betruechten. Gutt, zum Beispill, Dir kënnt net nëmmen déi loossen, déi wahrscheinlech mat enger ganz grousser Zuel vu Leit kämpfen. Wann een kann op d'mannst kämpfen mat k + 1 an eng aner Persoun, da kënnt Dir him definitiv net eraloossen - soss musst Dir jidderengem eraushalen k + 1 an Stadbewunner, mat deenen hie kämpfe kann, wat definitiv d'Leedung opreegt.

Kënnt Dir jiddereen erauswerfen, deen Dir no dësem Prinzip kéint. Da kann all aner Kampf mat net méi wéi k Leit. Geheien se eraus k Mann, Dir kënnt näischt méi verhënneren wéi Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen Konflikter. Dat heescht, datt wann et méi wéi Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen Wann eng Persoun op d'mannst ee Konflikt involvéiert ass, da kënnt Dir se sécher net all verhënneren. Well, natierlech, wäert Dir definitiv komplett Net-Konflikt Leit loosse, Dir musst duerch all subsets vun Gréisst zéng vun zwee honnert Leit goen duerch. Et ginn ongeféier Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen, an dës Zuel vun Operatiounen kann schonn op de Cluster zortéiert ginn.

Wann Dir sécher Leit kënnt huelen, déi guer kee Konflikt hunn, wat iwwer déi, déi nëmmen un engem Konflikt deelhuelen? Tatsächlech kënnen se och eragelooss ginn andeems se d'Dier op hirem Géigner zoumaachen. Tatsächlech, wann d'Alice nëmme mam Bob a Konflikt ass, da wa mir d'Alice aus deenen zwee loossen, verléiere mir net: Bob kann aner Konflikter hunn, awer d'Alice huet se sécher net. Ausserdeem mécht et kee Sënn fir eis eis zwee net eran ze loossen. No esou Operatiounen bleift et net méi Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen Gäscht mat engem ongeléiste Schicksal: mir hunn nëmmen Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen Konflikter, jidderee mat zwee Participanten a jidderee bei op d'mannst zwee involvéiert. Also alles wat bleift ass ze sortéieren Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen Optiounen, déi einfach en halleft Dag op engem Laptop ugesi kënne ginn.

Tatsächlech, mat einfache Begrënnung kënnt Dir nach méi attraktiv Konditiounen erreechen. Bedenkt datt mir definitiv all Streidereien mussen léisen, dat ass, aus all konfliktende Pair, wielt op d'mannst eng Persoun déi mir net eraloossen. Loosst eis de folgenden Algorithmus betruecht: all Konflikt huelen, aus deem mir ee Participant ewechhuelen a rekursiv vum Rescht ufänken, dann deen aneren ewechhuelen an och rekursiv ufänken. Well mir bei all Schrëtt een erauswerfen, ass de Rekursiounsbam vun esou engem Algorithmus e binäre Bam vun der Déift k, also am Ganzen funktionnéiert den Algorithmus an Wéi léisen NP-Hard Problemer mat Parameterized Algorithmenwou n ass d'Zuel vun de Wirbelen, an m - Zuel vu Rippen. An eisem Beispill sinn dat ongeféier zéng Milliounen, déi an enger Split-Sekonn net nëmmen op engem Laptop, mä och um Handy berechent kënne ginn.

Dat Beispill hei uewen ass e Beispill Parameteriséiert Algorithmus. Parameteriséiert Algorithmen sinn Algorithmen déi an der Zäit lafen f(k) poly(n)wou p - polynomial, f ass eng arbiträr berechnbar Funktioun, an k - e puer Parameteren, déi, ganz méiglecherweis, vill méi kleng wäert sinn wéi d'Gréisst vum Problem.

All Begrënnung virun dësem Algorithmus gëtt e Beispill kernelization ass eng vun den allgemengen Technike fir parametriséiert Algorithmen ze kreéieren. Kerneliséierung ass d'Reduktioun vun der Problemgréisst op e Wäert limitéiert duerch eng Funktioun vun engem Parameter. De resultéierende Problem gëtt dacks e Kernel genannt. Also, duerch einfache Begrënnung iwwer d'Grad vun de Wirbelen, hu mir e quadrateschen Kernel fir de Vertex Cover Problem kritt, parametriséiert duerch d'Gréisst vun der Äntwert. Et ginn aner Astellungen, déi Dir fir dës Aufgab wielt (wéi Vertex Cover Above LP), awer dëst ass de Kader, dee mir diskutéieren.

Pace Challenge

Konkurrenz PACE Challenge (The Parameterized Algorithms and Computational Experiments Challenge) gouf am Joer 2015 gebuer fir eng Verbindung tëscht parameteriséierter Algorithmen an Approchen, déi an der Praxis benotzt ginn, fir computational Probleemer ze léisen. Déi éischt dräi Concourse ware gewidmet fir d'Baumbreet vun enger Grafik ze fannen (Bambreet), op der Sich no engem Steinerbaum (Steiner Baum) a sicht no enger Rei vu Wirbelen déi Zyklen schneiden (Feedback Vertex Set). Dëst Joer, ee vun de Probleemer, an deenen Dir Är Hand konnt probéieren, war de uewen beschriwwene Vertexbedeckungsproblem.

De Concours gewënnt all Joer Popularitéit. Wann Dir déi virleefeg Donnéeën gleeft, hunn dëst Joer 24 Teams un der Konkurrenz deelgeholl fir eleng d'Vertexbedeckungsproblem ze léisen. Et ass derwäert opgeschriwwen dass de Concours net e puer Stonnen oder souguer eng Woch dauert, mä e puer Méint. D'Equipen hunn d'Méiglechkeet d'Literatur ze studéieren, mat hirer eegener origineller Iddi ze kommen a probéieren se ëmzesetzen. Am Wesentlechen ass dëse Concours e Fuerschungsprojet. Iddie fir déi effektivste Léisungen an Auszeechnung vun de Gewënner ginn a Verbindung mat der Konferenz ofgehalen IPEC (International Symposium on Parameterized and Exact Computation) als Deel vun der gréisster alljährlecher algorithmescher Reunioun an Europa ALGO. Méi detailléiert Informatiounen iwwer de Concours selwer fannt Dir op Site, an d'Resultater vun de Jore virdrun leien hei.

Léisung Diagramm

Fir d'Vertexbedeckungsproblem ze léisen, hunn ech probéiert parametriséiert Algorithmen ze benotzen. Si besteet normalerweis aus zwee Deeler: Vereinfachungsregelen (déi am Idealfall zu Kerneliséierung féieren) a Spaltungsregelen. Vereinfachungsregele si Virveraarbechtung vum Input an der Polynomzäit. Den Zweck vun esou Reegelen z'applizéieren ass de Problem op en gläichwäerteg méi klengt Problem ze reduzéieren. Vereinfachungsregele sinn den deiersten Deel vum Algorithmus, an d'Applikatioun vun dësem Deel féiert zu der Gesamtlaufzäit Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen amplaz einfach polynomial Zäit. An eisem Fall sinn d'Spaltungsregele baséiert op der Tatsaach datt fir all Wirt Dir entweder et oder säin Noper als Äntwert huelen musst.

D'allgemeng Schema ass dat: mir applizéieren d'Vereinfachung Regelen, dann wielt mir e puer Wirbelen, a maachen zwee rekursiv Uriff: an der éischter huelen mir et an Äntwert, an déi aner huelen mir all seng Noperen. Dëst ass wat mir Spalten (Verzweigung) laanscht dësem Wirbel nennen.

Genau eng Ergänzung gëtt zu dësem Schema am nächste Paragraphe gemaach.

Iddien fir opzedeelen (brunching) Regelen

Loosst eis diskutéieren wéi Dir e Wirbel wielt, laanscht deen d'Spaltung geschitt.
D'Haaptidee ass ganz gourmandseg am algorithmesche Sënn: loosst eis e Spëtzt vum maximale Grad huelen a sech domat opdeelen. Firwat schéngt et besser? Well an der zweeter Branche vum rekursive Ruff wäerte mir op dës Manéier vill Wirbelen ewechhuelen. Dir kënnt op eng kleng Grafik zielen, déi bleift a mir kënne séier dru schaffen.

Dës Approche, mat de schonn diskutéierten einfache Kerneliséierungstechniken, weist sech gutt a léist e puer Tester vun e puer dausend Wirbelen an der Gréisst. Awer zum Beispill funktionnéiert et net gutt fir kubesch Grafiken (dat ass Grafiken deenen hir Grad vun all Wirbels dräi ass).
Et gëtt eng aner Iddi baséiert op enger zimlech einfacher Iddi: wann d'Grafik getrennt ass, kann de Problem op seng verbonne Komponenten onofhängeg geléist ginn, andeems d'Äntwerten um Enn kombinéiert ginn. Dëst, iwwregens, ass eng kleng versprach Ännerung am Schema, déi d'Léisung wesentlech beschleunegt: virdrun, an dësem Fall, hu mir fir d'Produkt vun der Zäit geschafft fir d'Äntwerte vun de Komponenten ze berechnen, awer elo schaffen mir fir der Zomm. A fir d'Verzweigung ze beschleunegen, musst Dir eng verbonne Grafik an eng deconnectéiert maachen.

Wéi maachen ech et? Wann et en Artikulatiounspunkt an der Grafik ass, musst Dir dorop kämpfen. En Artikulatiounspunkt ass e Vertex sou datt wann se ewechgeholl gëtt, d'Grafik seng Konnektivitéit verléiert. All Kräizungspunkten an enger Grafik kënne mat engem klassesche Algorithmus an der linearer Zäit fonnt ginn. Dës Approche beschleunegt d'Verzweigung wesentlech.
Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen
Wann ee vun de gewielte Wirbelen ewechgeholl gëtt, gëtt d'Grafik a verbonne Komponenten opgedeelt.

Mir wäerten dat maachen, awer mir wëllen méi. Zum Beispill, kuckt no klenge Wirbelschnëtt an der Grafik a spalt laanscht d'Wirkelen dovun. De effizientesten Wee, deen ech weess, fir de minimale globale Vertexschnëtt ze fannen ass e Gomori-Hu Bam ze benotzen, deen an der Kubikzäit gebaut gëtt. Am PACE Challenge ass déi typesch Grafikgréisst e puer dausend Wirbelen. An dëser Situatioun musse Milliarden Operatiounen op all Wirtpunkt vum Rekursionsbaum gemaach ginn. Et stellt sech eraus datt et einfach onméiglech ass de Problem an der zougewisener Zäit ze léisen.

Loosst eis probéieren d'Léisung ze optimiséieren. De Minimum Wirbelschnëtt tëscht e Paar Wirbelen kann duerch all Algorithmus fonnt ginn, deen e maximale Flow konstruéiert. Dir kënnt et op esou engem Netz loossen Dinitz Algorithmus, an der Praxis funktionnéiert et ganz séier. Ech hunn e Verdacht datt et theoretesch méiglech ass eng Schätzung fir d'Betribszäit ze beweisen Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen, wat scho ganz akzeptabel ass.

Ech hunn e puer Mol probéiert no Schnëtt tëscht Pairen vun zoufälleg Wirbelen ze sichen an déi equilibréiert ze huelen. Leider huet dëst schlecht Resultater am oppenen PACE Challenge Testen produzéiert. Ech hunn et mat engem Algorithmus verglach deen Wirbelen vu maximalem Grad opgedeelt huet, se mat enger Begrenzung vun der Ofstamungsdéift lafen. En Algorithmus dee probéiert e Schnëtt op dës Manéier ze fannen huet méi grouss Grafike hannerlooss. Dëst ass wéinst der Tatsaach, datt d'Schnëtt ganz onbalancéiert waren: 5-10 Wirbelen ewechgeholl hunn, war et méiglech nëmmen 15-20 ze trennen.

Et ass derwäert ze bemierken datt Artikelen iwwer déi theoretesch schnellsten Algorithmen vill méi fortgeschratt Technike benotze fir Wirbelen fir Spaltung ze wielen. Esou Techniken hu ganz komplex Implementatioun an dacks schlecht Leeschtung am Sënn vun Zäit an Erënnerung. Ech konnt net déi identifizéieren déi ganz akzeptabel sinn fir d'Praxis.

Wéi vereinfacht Regelen

Mir hu schonn Iddien fir Kerneliséierung. Loosst mech Iech drun erënneren:

  1. Wann et en isoléierte Wirbel ass, läscht se.
  2. Wann et e Spëtzt vum Grad 1 ass, ewechzehuelen et an huelen säin Noper an Äntwert.
  3. Wann et op d'mannst en Héichpunkt vum Grad ass k + 1 an, huelt et zréck.

Bei deenen éischten zwee ass alles kloer, bei deem drëtte gëtt et een Trick. Wann an engem Comic Problem iwwer eng Bar mir eng iewescht Limite vun k, dann am PACE Challenge musst Dir just e Wirbeldeckel vun der Mindestgréisst fannen. Dëst ass eng typesch Transformatioun vu Sichprobleemer an Entscheedungsprobleemer; dacks gëtt et keen Ënnerscheed tëscht den zwou Aarte vu Probleemer. An der Praxis, wa mir e Solver fir de Vertexbedeckungsproblem schreiwen, kann et en Ënnerscheed sinn. Zum Beispill, wéi am drëtte Punkt.

Aus enger Ëmsetzung Siicht ginn et zwee Weeër fir weiderzekommen. Déi éischt Approche gëtt Iterative Deepening genannt. Et ass wéi follegt: mir kënne mat e puer raisonnabelen Aschränkung vun ënnen op d'Äntwert ufänken, an dann eisen Algorithmus ausféieren mat dëser Aschränkung als Aschränkung op d'Äntwert vun uewen, ouni méi niddereg an der Rekursioun ze goen wéi dës Aschränkung. Wa mir eng Äntwert fonnt hunn, ass et garantéiert optimal, soss kënne mir dës Limite vun engem Erhéijung an erëm ufänken.

Eng aner Approche ass eng aktuell optimal Äntwert ze späicheren an no enger méi klenger Äntwert ze sichen, dëse Parameter z'änneren wann se fonnt ginn k fir méi grouss Ofschneiden vun onnéidege Filialen an der Sich.

Nodeems ech e puer Nuetsexperimenter gemaach hunn, hunn ech mech op eng Kombinatioun vun dësen zwou Methoden niddergelooss: als éischt lafen ech mäi Algorithmus mat enger Aart Limit op der Sichtiefe (auswielen et sou datt et vernoléisseg Zäit dauert am Verglach mat der Haaptléisung) a benotzen déi bescht Léisung fonnt als ieweschte Limite fir d'Äntwert - dat ass, op déi selwecht Saach k.

Vertices vum Grad 2

Mir hu mat Wirbelen vum Grad 0 an 1 beschäftegt. Et stellt sech eraus datt dëst mat Wirbelen vum Grad 2 gemaach ka ginn, awer dëst wäert méi komplex Operatiounen aus der Grafik erfuerderen.

Fir dëst z'erklären, musse mir iergendwéi d'Wénkelen designéieren. Loosst eis en Héichpunkt vum Grad 2 e Spëtzt nennen v, a seng Noperen - Wirbelen x и y. Als nächst wäerte mir zwee Fäll hunn.

  1. Wéini x и y - Noperen. Da kënnt Dir äntweren x и yan v läschen. Tatsächlech, aus dësem Dräieck mussen op d'mannst zwee Wirbelen zréckgeholl ginn, a mir verléieren definitiv net wa mir huelen x и y: si hu wahrscheinlech aner Noperen, an v et gëtt keen vun hinnen.
  2. Wéini x и y - net Noperen. Da gëtt festgehalen, datt all dräi Wirbelen an een gekollt ginn. D'Iddi ass datt et an dësem Fall eng optimal Äntwert gëtt, an där mir entweder huelen v, oder béid Wirbelen x и y. Ausserdeem musse mir am éischte Fall all Noperen an Äntwert huelen x и y, awer an der zweeter ass et net néideg. Dëst entsprécht genee de Fäll wou mir de gekollt Wirbel net als Äntwert huelen a wa mir dat maachen. Et bleift nëmmen ze bemierken datt a béide Fäll d'Äntwert vun esou enger Operatioun ëm ee reduzéiert.

Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen

Et ass derwäert ze bemierken datt dës Approche zimmlech schwéier ass an enger fairer linearer Zäit präzis ëmzesetzen. Wirbelen ze pechen ass eng komplex Operatioun; Dir musst Lëschte vun den Noperen kopéieren. Wann dëst suergfälteg gemaach gëtt, kënnt Dir mat asymptotesch suboptimaler Laafzäit ophalen (zum Beispill wann Dir vill Kanten no all Klebstoff kopéiert). Ech hu mech decidéiert ganz Weeër aus Wirbelen vum Grad 2 ze fannen an eng Rëtsch speziell Fäll ze analyséieren, wéi Zyklen vun esou Wirbelen oder vun all esou Wirbelen ausser engem.

Ausserdeem ass et néideg datt dës Operatioun reversibel ass, sou datt mir d'Grafik op seng ursprénglech Form zréckginn wann Dir aus der Rekursioun zréckkënnt. Fir dëst ze garantéieren, hunn ech d'Kantelëschte vun de fusionéierte Wirbelen net geläscht, an dunn wousst ech just wéi eng Kanten wou musse goen. Dës Ëmsetzung vu Grafike erfuerdert och Genauegkeet, awer et gëtt eng fair linear Zäit. A fir Grafike vun e puer Zéngdausende vu Kanten passt et an de Prozessor Cache, wat grouss Virdeeler an der Geschwindegkeet gëtt.

Linearer Kär

Endlech, den interessantsten Deel vum Kärel.

Fir unzefänken, erënneren datt an bipartite Grafiken de Minimum Wirbeldeckung benotzt ka fonnt ginn Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen. Fir dëst ze maachen, musst Dir den Algorithmus benotzen Hopcroft-Karp fir do déi maximal Passung ze fannen, a benotzt dann den Theorem König-Egervari.

D'Iddi vun engem linearem Kär ass dëst: als éischt bifurcéiere mir d'Grafik, dat heescht, amplaz vun all Wirtpunkt v loosst eis zwee Peaks derbäi Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen и Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen, an amplaz vun all Rand u - v loosst eis zwee Rippen derbäi Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen и Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen. Déi resultéierend Grafik wäert bipartite sinn. Loosst eis de Minimum Wirbeldeckung dran fannen. E puer Wirbelen vun der ursprénglecher Grafik kommen zweemol dohinner, e puer nëmmen eemol, an e puer ni. Den Nemhauser-Trotter-Theorem seet, datt een an dësem Fall Wirbelen ewechhuelen kann, déi net mol eng Kéier getraff hunn an déi zweemol getraff hunn. Ausserdeem seet si datt vun de verbleiwen Wirbelen (déi déi eemol getraff hunn) Dir musst op d'mannst d'Halschent als Äntwert huelen.

Mir hu just geléiert net méi ze verloossen wéi 2k Biergspëtzten Tatsächlech, wann de Rescht Äntwert op d'mannst d'Halschent vun alle Wirbelen ass, da sinn et net méi Wirbelen am Ganzen wéi 2k.

Hei konnt ech e klenge Schrëtt no vir maachen. Et ass kloer datt de Kärel, deen op dës Manéier konstruéiert ass, hänkt dovun of wéi eng Zort Minimalvertexdeckung mir an der bipartite Grafik geholl hunn. Ech géif gären een huelen fir datt d'Zuel vun de verbleiwen Wirbelen minimal ass. Virdrun konnten se dat nëmme mat Zäit maachen Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen. Ech koum mat enger Ëmsetzung vun dësem Algorithmus an der Zäit Wéi léisen NP-Hard Problemer mat Parameterized Algorithmen, also kann dëse Kär a Grafike vun honnertdausende Wirbelen an all Verzweigungsstadium gesicht ginn.

Resultat

Praxis weist datt meng Léisung gutt op Tester vun e puer honnert Wirbelen an e puer dausend Kanten funktionnéiert. An esou Tester ass et ganz méiglech ze erwaarden datt eng Léisung an enger hallwer Stonn fonnt gëtt. D'Wahrscheinlechkeet fir eng Äntwert an enger akzeptabel Zäit ze fannen, am Prinzip, erhéicht wann d'Grafik eng genuch grouss Zuel vu Wirbelen vun héijen Grad huet, zum Beispill Grad 10 a méi héich.

Fir un de Concours deelzehuelen, misste Léisunge geschéckt ginn optil.io. No der Informatioun, déi do presentéiert gëtt, beurteelen Zeechen, meng Léisung an oppenen Tester ass drëtt vun zwanzeg, mat enger grousser Spalt vun zweeter. Fir ganz éierlech ze sinn, ass et net ganz kloer wéi Léisunge bei der Konkurrenz selwer bewäert ginn: Zum Beispill, meng Léisung passéiert manner Tester wéi d'Léisung op der véierter Plaz, awer bei deenen déi passéieren, funktionnéiert se méi séier.

D'Resultater vun zouenen Tester ginn den XNUMX. Juli bekannt.

Source: will.com

Setzt e Commentaire