Lineær flaskehals tildelingsproblem

I kombinatorisk optimering forstås linear bottleneck assignment problem (LBAP ) som et problem svarende til tildelingsproblemet [1] .

Med enkle ord er opgaven stillet som følger:

Der er et vist antal udøvende kunstnere og et vist antal værker . Enhver udøvende kunstner kan udføre et hvilket som helst arbejde, hvis udførelse kan koste en bestemt pris , som afhænger af udførelsens tildeling. Det er påkrævet at fuldføre alle opgaver, samtidig med at der tildeles præcis én udøver til hvert job på en sådan måde, at den maksimale pris , der opstår under opgaverne, minimeres.

Begrebet " flaskehals " forklares ved den sædvanlige måde, opgaven bruges på, når varigheden af ​​udførerens arbejde tages som prisen. Under disse forhold bliver "maksimumprisen" til "maksimal varighed", som er flaskehalsen i planlægningen af ​​et komplet værk, og denne maksimale varighed bør gøres så lille som muligt.

Det lineære flaskehals-tildelingsproblem blev først introduceret af Fulkerson, Glicksberg og Gross i deres arbejde med at tildele job til maskiner for at minimere gennemløbstiden [2] .

Formel definition

Den formelle definition af flaskehals-tildelingsproblemet er som følger:

Givet to sæt, A og T , sammen med en vægtfunktion C  : A × T → R . Find en bijektion f  : A → T , således at omkostningsfunktionen er: minimal.

Normalt er vægtfunktionen givet som en kvadratisk reel matrix C , så omkostningsfunktionen kan skrives som følger:

Problemformulering som et matematisk programmeringsproblem

under forhold:

Løsningsmetoder

Følgende lemma er nyttigt til at løse problemet:

Lemma. [1] Lad os være omkostningsmatrixen for problemet

1. Den optimale værdi af problemet bestemmes af et af elementerne i matricen . 2. Den optimale løsning afhænger kun af den relative rækkefølge af matrixelementerne og ikke af deres numeriske værdier

Eksempel. Lad matrixen

Arranger elementerne i matrixen .

Vi erstatter det mindste element −2 med 0, det næste 0 med 1, så erstatter vi med 2, og så videre. Vi får følgende matrix :.

Den optimale løsning på problemet vil være permutationen {2, 1, 3} med den maksimale værdi for matricen 5, som svarer til værdien 4 i den oprindelige matrix .

Tærskelalgoritme

Ideen om at bruge tærskelmetoden tilhører Garfinkel [3] .

Vi tildeler begyndelsesværdier . Hvis , så optimal værdi = og enhver permutation {1, 2, . . . , n} er optimal. Ellers, mens de eksisterer , udføres Vi finder medianen , t tal Vi bygger en graf Hvis den indeholder en perfekt match , så accepterer vi ellers acceptere Afslut Hvis slutningen af ​​cyklussen Hvis kontrollen for eksistensen af ​​en perfekt matchning for ikke blev udført, udfører vi den. Vi bygger en graf for Hvis indeholder en perfekt matchning, vi tager Afslut Hvis Afslut Hvis

Den optimale værdi vil være , og den optimale løsning kan findes ud fra den tilsvarende graf.

Som du kan se, gennemgår 'tærskelalgoritmen' to trin ved hvert trin i cyklussen. I det første trin vælges en 'tærskelværdi' og en 'tærskelmatrix' , som er defineret som følger:

1 hvis 0 ellers.

Det andet trin tjekker, om der er en aftale med en pris på nul (for prismatricen ). For at kontrollere dette konstruerer vi en todelt graf G = (U, V; E) med |U| = |V| = n og buer hvis og kun hvis . (Med andre ord skal vi kontrollere, om den todelte graf, der svarer til tærskelmatricen, indeholder en perfekt matchning eller ej). Den mindste tærskelværdi , for hvilken den tilsvarende todelte graf indeholder en perfekt matchning, er den optimale værdi af problemet. Der er flere måder at implementere tærskelalgoritmen på. En mulighed er at bruge binær søgning i det første trin. Dette vil føre til en algoritme, hvor der er tidskompleksitet for at kontrollere eksistensen af ​​en perfekt matchning. Vi kan bruge matrixalgoritmen fra Ybarre og Moran [4] til at finde ud af, om der findes en perfekt matchning. Så kan den optimale løsning findes med bitkompleksitet . Multiplikation af to n × n matricer kræver aritmetiske operationer, og k er et heltal, der opstår fra operationer på lange heltal. Coppersmith og Winograd [5] viste, at matrixmultiplikation kan udføres med . Hvis vi ønsker at få den tilsvarende optimale løsning, kan vi bruge metoden fra Alt, Blum, Mehlhorn og Paul [6] og få den fulde kompleksitet i tilfælde af en tæt matrix. Her betyder tæthed, at antallet af matrixelementer, der ikke er nul , er .

Denne metode er teoretisk set den bedst kendte metode til at løse problemet.

Dobbelt algoritme

Nært forbundet med tærskelmetoden er følgende dobbeltalgoritme.

Beregn Lad (tomt sæt). Mens |M| < n, udføre Lad os definere en todelt graf G svarende til tærskelværdien t. Find den maksimale match i G. Hvis |M| < n altså Lad og være sæt af hjørner i den minimale dækning af grafen G. Lad os sætte Afslut Hvis slutningen af ​​cyklussen

Algoritmen bruger nogle oplysninger om tærskelværdien t, nemlig det faktum, at den optimale værdi ikke kan være mindre end den maksimale værdi af minimumselementerne i rækkerne, samt maksimumværdien af ​​minimumselementerne i kolonnerne i matricen C Som den første tærskelværdi kan du således tage

Den dobbelte metode starter med denne værdi af t og skaber minimumssæt (indekser) af kolonner og rækker , der dækker alle elementer i matrixen . Dette kan gøres ved at finde det maksimale sæt af buer i grafen G, der definerer matchningen. Her er grafen G en todelt graf med buer (r,j) for hvilke . Hvis matchningen ikke indeholder alle rækker og kolonner, er der matrixelementer, der bestemmer den optimale værdi, og disse elementer er større end t. Som et resultat kan vi tage en ny værdi og bygge en ny graf G. Denne graf indeholder alle kanterne af den forrige graf og mindst én ny kant, så vi kan starte søgningen efter den maksimale matchning fra den, der allerede findes i det forrige trin. Vi fortsætter, indtil vi finder et perfekt match.

Sekventiel stigningsalgoritme

En anden tilgang til at løse problemet kan være brugen af ​​ideerne fra den ungarske metode [7] . I Rusland er denne metode kendt som 'Gross Algorithm'. Vi præsenterer metoden i implementeringen af ​​Derigs og Zimmerman [8] .

Lad os introducere nogle definitioner.

En komplementær matchningssti er en sti, der indeholder de matchende buer, mens en af ​​de to nabobuer nødvendigvis hører til matchningen (dvs. buerne er sammenflettet - en bue fra matchningen efterfølges af en bue, der ikke hører til den, og vice omvendt).

Lad være en komplementær vej til at matche M.

Flaskehalsens størrelse er defineret som

.

En komplementær sti kaldes en b-korteste sti, hvis størrelsen af ​​flaskehalsen er minimal blandt alle komplementære stier M.

Lad være en todelt graf med buelængder for buer Find den nedre grænse t for objektivfunktionen (dvs. ) Find den maksimale matchende M i en graf G med buer [i, j] if hvis |M| = |U|, så har vi fået en optimal løsning t med et optimalt forhold M, og vi er færdige. Afslut Hvis Lad L være det sæt af elementer i U, som der ikke er nogen overensstemmelse for. indtil L er tomt, udfør Vælg et toppunkt P = Dijkstra(i) Kommentar: Dijkstra(i)-funktionen returnerer den komplementære sti, der starter ved node i Hvis stien ikke findes, så Lad os sætte Lad os sætte Afslut Hvis ende farvel Kommentar: M er den maksimale matchning med minimumsprisen t.

Den B-korteste komplementære sti findes af Dijkstra()-funktionen.

Under søgningen efter den b-korteste vej mærker vi toppunktet med værdien , hvor er størrelsen på flaskehalsen på den b-korteste vej fra til dette toppunkt, og betyder den umiddelbare forgænger i den b-korteste vej fra til toppunkt .

På samme måde mærker vi vertexet med værdien , hvor er størrelsen af ​​flaskehalsen på den b-korteste vej fra til dette vertex, og betyder den umiddelbare forgænger i den b-korteste vej fra til toppunktet .

Dijkstra(i) funktion Kommentar: Ændret Dijkstras algoritme for flaskehals-tildelingsproblemet. Vi mærker alle hjørner ved at indstille . Lad R = V Kommentar: R indeholder uscannede hjørner V a(i) = t, P = tom For alle naboer til vertex i, udfør Hvis , så Lad os sætte Afslut Hvis slutningen af ​​cyklussen mens R er tom, udfør Lad os finde toppunktet med minimum ; Hvis , så Lad os sætte Ellers hvis r ikke er i matchningen, så Find stien P dannet af sekvensen af ​​toppunkter Ellers Lad [s, r] være en kant af matchningen Mark s: Lad For alle naboer til toppunkt s, udfør Hvis , så Lad os sætte Afslut Hvis slutningen af ​​cyklussen Afslut Hvis Afslut Hvis ende farvel

Asymptotisk adfærd

Lad betegne den optimale værdi af funktionen for n udøvere og n job. Hvis priserne vælges fra en ensartet fordeling på segmentet (0,1), så [9]

og

Links

  1. 1 2 Opgaveproblemer Arkiveret 8. juli 2013 på Wayback Machine , Rainer Burkard, Mauro Dell'Amico, Silvano Martello, 2009, kapitel 6.2 " Lineær flaskehalstildelingsproblem " (s. 172)
  2. D. R. Fulkerson, I. Glicksberg og O. Gross. Et problem med tildeling af produktionslinje. Tech. Rep. RM-1102, The Rand Corporation, Santa Monica, CA, 1953.)
  3. R. Garfinkel. En forbedret algoritme til flaskehals-tildelingsproblemet. opera. Res. 19:1747-1751, 1971.
  4. OH Ibarra og S. Moran. Deterministiske og probabilistiske algoritmer til maksimal todelt matchning via hurtig matrixmultiplikation. meddele. behandle. Lett., 13:12-15, 1981.
  5. D. Kobbersmed og S. Winograd. Matrix multiplikation via aritmetiske progressioner. J. Symbolic Computing, 9:251-280, 1990.
  6. H. Alt, N. Blum, K. Mehlhorn og M. Paul. Beregning af en maksimal kardinalitetsmatch i en todelt graf i tid . meddele. behandle. Lett. 37:237-240, 1991.
  7. O. Gross. Problemet med flaskehalsopgaver. Tech. Rep. P-1630, The Rand Corporation, Santa Monica, CA, 1959.
  8. U. Derigs og U. Zimmermann. En augmenting path-metode til løsning af lineære flaskehalsopgaver. Computing, 19:285-295, 1978.
  9. Michael Z. Spivey, "Asymptotic Moments of the Bottleneck Assignment Problem," Mathematics of Operations Research , 36 (2): 205-226, 2011.