Кіріспе

Тағайындау мәселесі үшін полиномиалдық уақыт алгоритмі
Мажар әдісі – полиномиалдық уақытта тапсырма мәселесін шешетін және кейінгі бастапқы-қос әдістерге жол ашқан комбинаторлық оптимизация алгоритмі. Ол 1955 жылы Харольд Кун жасап, жариялаған, оған «Мажар әдісі» деген ат берген, себебі алгоритм негізінен екі мажар математигі – Денес Кениг және Йенё Егерваридің бұрынғы еңбектеріне негізделген. Дегенмен, 2006 жылы Карл Густав Якобидің 19 ғасырда тапсырма мәселесін шешкені анықталды, ал шешімі 1890 жылы латын тілінде жарияланды. Джеймс Мункрес 1957 жылы алгоритмді қарап шығып, оның (күшті) полиномиалды екенін байқады. Осыдан бері алгоритм Кун-Мункрес алгоритмі немесе Мункрестің тапсырма алгоритмі деп те аталады. Алғашқы алгоритмнің уақыт күрделілігі O(n^3) болса, алайда Эдмондс пен Карп, сондай-ақ тәуелсіз Томизава оны O(n^2) жұмыс уақытына дейін жетілдіруге болатынын көрсетті. Ең танымал нұсқаларының бірі – Джонкер-Волгенант алгоритмі. Форд пен Фулкерсон осы әдісті Форд-Фулкерсон алгоритмі түрінде жалпы максималды ағын мәселелеріне кеңейтті.

Екі жақты графиктің құрастырылуы

Алгоритмді екі жақты графты қолданып мәселені формулировкалау арқылы да сипаттауға болады. Бізде n жұмысшы төбесі (S) және n жұмыс төбесі (T) бар толық екі жақты граф бар, және қабырғаларының (E) әрқайсысының оң немесе нөлдік құны бар. Біз ең төменгі жалпы құны бар толық сәйкестікті табуды қалаймыз.

Алгоритмнің алға басуының дәлелі

Біз сәйкестіктің мүмкін болатын ең үлкен мөлшері болмаған кезде алгоритм әрқашан алға жылжуға қабілетті екенін көрсетуіміз керек, яғни сәйкестірілген қабырғалардың санын арттыру немесе кем дегенде бір қабырғаны кернеулі ету. Әрбір қадамда төмендегілердің кем дегенде біреуі орындалатынын көрсету жеткілікті: M – мүмкін болатын ең үлкен мөлшерде. Аузы кеңейтілген жолды қамтиды. G құрамында бос құйрықты жол бар: белгілі бір төбеден басқа төбеге дейінгі жол, ол кез келген (мүмкін нөл) кернеулі қабырғалардан және содан кейін бір бос қабырғадан тұрады. Осылайша, бос құйрықты жолдың соңғы бос қабырғасы , Δ дұрыс анықталғанын қамтамасыз етеді. Егер M мүмкін болатын ең үлкен мөлшерде болса, біз аяқтадық. Әйтпесе, Берж леммасы бойынша, негізгі граф G-де M-ге қатысты P аузы кеңейтілген жолы болуы керек. Дегенмен, бұл жол бола алмауы мүмкін: P-дегі әрбір жұп нөмірлі қабырға M анықтамасы бойынша кернеулі болса да, тақ нөмірлі қабырғалар бос болуы мүмкін және осылайша P-нің бір ұшы , екіншісі ; w. l. o. g., егер ол басталатын болса, егер P-дегі әрбір қабырға кернеулі болса, онда ол кеңейтілген жол болып қалады және біз аяқтадық. Әйтпесе, P-дегі бірінші бос қабырға болсын. Егер онда біз бос құйрықты жол таптық және аяқтадық. Әйтпесе, v басқа жолмен, Q кернеулі қабырғалардың жолынан жете алады, белгілі бір төбеден бастап v төбесіне дейін. P-нің v төбесінен басталып, соңына дейін жалғасатын кіші жолы болсын, ал Q бойымен Q-ға дейін саяхаттау арқылы және содан кейін соңына дейін жалғасатын жол болсын. P-ге қарағанда кем дегенде бір бос қабырғасы бар G-де кеңейтілген жол екенін байқаңыз. P-ні және бұл ойлау процесін қайталауға болады (формальды түрде, бос қабырғалар саны бойынша индукцияны қолдана отырып) G-де кеңейтілген жол немесе бос құйрықты жол табылғанға дейін.

Y потенциалын түзету M өзгермейтінін дәлелдеу

M жиегінің y-ді түзетуден кейін де сақталуын көрсету үшін, M-дегі кез келген жиектің екі ұшы да, немесе екеуі де Z жиымында екенін көрсету жеткілікті. Осы мақсатта, M жиегінен T нүктесінен S нүктесіне дейінгі жиек алсын. Егер v Z жиымында болса, онда u да сол жиымда болуы керек, себебі M жиегіндегі әрбір жиек тығыз. Енді, қарама-қайшылыққа алып келетіндей болжам жасайық, бірақ u өзі Z жиымында бола алмайды, өйткені ол жұптасқан жиектің соңғы нүктесі болып табылады, сондықтан Z жиымынан u нүктесіне дейін тығыз жиектерден тұратын бағытталған жол болуы керек. Бұл жол v нүктесінен өтуі керек емес, себебі ол Z жиымында емес деп болжанған, сондықтан осы жолдағы u нүктесіне тікелей жақын нүкте T-ден S-ке дейінгі тығыз жиек болып табылады және осылайша M жиымында болады. Бірақ сонда M жиымында u нүктесін ортақ нүкте ретінде бөлісетін екі жиек болады, бұл M жиымының жұптасқан жиектер жиыны екендігіне қайшы келеді. Осылайша, M жиымындағы әрбір жиектің екі ұшы да, немесе екеуі де Z жиымында орналасқан.

Мүмкіндіктер бар дәлел

y-нің түзетуден кейін де потенциал болып қалатынын көрсету үшін, ешбір қабырғаның жалпы потенциалы оның бағасынан артық көтерілмейтінін көрсету жеткілікті. Бұл M жиектері үшін алдыңғы абзацта жауапталған, сондықтан S-тен T-ге кездейсоқ uv қабырғасын қарастырайық. Егер оның потенциалы Δ-ға артса, онда , бұл жағдайда Δ-ға кемиді, қабырғаның жалпы потенциалы өзгермейді, немесе , бұл жағдайда Δ-ның анықтамасы осылай кепілдік береді. Осылайша y потенциал болып қала береді.

Алгоритм O ((n3) уақыт ішінде

Жұмыс орындары мен жұмысшылар бар делік. Біз әр жұмыс орналарының алдыңғы бөлігі үшін әрбір жұмысты ерекше жұмысшыларға тағайындаудың ең төменгі жалпы құнын қалай есептеу керектігін сипаттаймыз. Атап айтқанда, біз -шы жұмысты қосып, жалпы құнды уақыт ішінде жаңартамыз, нәтижесінде жалпы уақыт күрделігіне жетеміз. Жұмыстардың саны жұмысшылар санына қарағанда аз болған жағдайда бұл жақсырақ екенін ескеріңіз.

J-ші жұмысты 0 (jW) уақыт ішінде қосу

Біз алдыңғы бөлімдегідей белгілеулерді қолданамыз, бірақ қажет болған жағдайда олардың анықтамаларын өзгертеміз. Алғашқы жұмыстар жиынын деп, ал барлық жұмысшылар жиынын деп белгілейміз. Алгоритмнің қадамынан бұрын, бізде жұмыстардың барлығына сәйкес келетін және келесі шартты қанағаттандыратын сәйкестік бар деп есептейміз: сәйкестік потенциалдарға қатысты тығыз, барлық сәйкес келмеген жұмысшылардың потенциалы нөлге тең, ал барлық сәйкес келген жұмысшылардың потенциалы теріс емес. Мұндай потенциалдар сәйкестіктің оңтайлылығын куәландырады. қадамында біз жұмысты жиынына қосып, жасаймыз және бастамалаймыз. Кез келген уақытта, жиынындағы кез келген төбе жұмыстан қол жетімді болады. Егер жиынында жұмысқа бекітілмеген жұмысшы болмаса, және деп минимумға жеткен кез келген белгілейміз. Потенциалдарды алдыңғы бөлімде сипатталғандай реттегеннен кейін, енді төбесінен төбесіне тығыз қабырға бар. Егер сәйкес келмесе, онда жұмыстан басталатын тығыз қабырғалардың субграфигінде бізде кеңейту жолы бар. Осы жол бойынша сәйкестікті ауыстырғаннан кейін, біз енді алғашқы жұмысты сәйкестендірдік және бұл процедура аяқталады. Әйтпесе, біз жұмысын және оған сәйкес келген жұмысты жиынына қосамыз. Потенциалды реттеуге уақыт кетеді. Потенциалды өзгерткеннен және және қайта есептегеннен кейін, бұл да уақытта орындалуы мүмкін. 1-ші жағдай 2-ші жағдай орын алғанша ең көп рет пайда болуы мүмкін, содан кейін процедура аяқталады, нәтижесінде жалпы уақыт күрделілігі болады.

Матрицалық түсіндіру

Алгоритмнің бұл нұсқасы Флад ұсынған түсіндірмеге сәйкес келеді, ал кейіннен Мункрес оны одан да нақтырақ сипаттап, оның уақыт ішінде орындалатынын дәлелдеді. Ең аз сызықтар саны (ең аз нүктелік жабу) n-ге (максималды сәйкестіктің мөлшеріне) тең болады. Осылайша, n сызық қажет болған жағдайда, ең төменгі құнмен тапсыру матрицадағы тек нөлдерді қарастыру арқылы табылады.