În teoria grafurilor, o potrivire sau un set independent de muchii dintr-un graf este un set de muchii neadiacente în perechi.
Fie dat un grafic G = ( V , E ), o potrivire M în G este o mulțime de muchii neadiacente în perechi, adică muchii care nu au vârfuri comune, i.e. .
O potrivire maximă este o potrivire M într-un grafic G care nu este conținut în nicio altă potrivire a acestui grafic, adică este imposibil să-i adăugați o singură muchie care nu este adiacentă tuturor muchiilor potrivirii. Cu alte cuvinte, o potrivire M a unui grafic G este maximă dacă orice muchie din G are o intersecție nevidă cu cel puțin o muchie din M . Mai jos sunt exemple de potriviri maxime (margini roșii) în trei grafice [1] .
Cea mai mare potrivire (sau potrivirea dimensiunii maxime [2] ) este potrivirea care conține numărul maxim de muchii. Numărul de potrivire [3] al unui grafic este numărul de muchii din cea mai mare potrivire. Un grafic poate avea un set de potriviri cele mai mari. În plus, orice potrivire cea mai mare este maximă, dar nu orice maxim va fi cel mai mare. Următoarele trei figuri arată cele mai mari potriviri în aceleași trei coloane [1] .
Unii autori folosesc termenul „potrivire maximă” pentru cea mai mare potrivire [4] [5] [6] [7] .
O potrivire perfectă (sau 1-factor ) este o potrivire la care participă toate vârfurile graficului. Adică, orice vârf al graficului este incident cu exact o muchie inclusă în potrivire. Figura (b) din figura de mai sus este un exemplu de astfel de potrivire. Orice potrivire perfectă este cea mai mare și maximă. O potrivire perfectă este și o acoperire de margine de dimensiune minimă. În cazul general , unde este numărul capacului de margine al graficului , cu alte cuvinte, dimensiunea celei mai mari potriviri nu depășește dimensiunea celui mai mic capac de margine.
O potrivire aproape perfectă este o potrivire la care nu participă exact un vârf. Acest lucru se poate întâmpla dacă graficul are un număr impar de vârfuri. În figura de mai sus, potrivirea din coloana (c) este aproape perfectă. Dacă pentru orice vârf din grafic există o potrivire aproape perfectă care nu conține exact acest vârf, graficul se numește factor critic .
Fie dat un M potrivit .
Lema lui Berge afirmă că o potrivire este maximă dacă și numai dacă nu există o cale complementară.
Funcția generatoare a numărului de potriviri k -muchii dintr-un grafic se numește polinom de potrivire . Fie G un grafic și m k numărul de potriviri k -muchii. Polinomul de potrivire al graficului G este
Există o altă definiție a polinomului de potrivire
,unde n este numărul de vârfuri din grafic. Ambele definiții au propriile lor domenii de aplicare.
Probleme de potrivire apar adesea atunci când lucrați cu grafice bipartite . Găsirea celei mai mari potriviri într-un graf bipartit [9] este poate cea mai simplă problemă. Algoritmul căii de umplutură îl obține găsind calea de umplutură de la fiecare vârf și adăugând-o la potrivire dacă este găsită o cale. O soluție alternativă este ca potrivirea să fie completată atâta timp cât există căi complementare în extindere:
O cale de creștere este o cale de forma pentru care este adevărată pentru . O cale de creștere se numește cale de extindere dacă .
Lema: Pentru orice grafic , potrivire și completare calea potrivirea și este validă . Demonstrație: Fie , și să fie vârful inițial al lui , deci și , și să fie ultimul vârf al , astfel încât și , și să fie un vârf intermediar al , deci . De aici rezultă că în grafic va fi adăugată încă o muchie decât îndepărtată din acesta.
Lema: Pentru orice grafic și potriviri astfel încât următoarele sunt adevărate: graficul conține un minim de căi de completare care nu se intersectează la vârfuri în raport cu . Dovada: Fie și , în timp ce cu adevărat și și astfel urmează . Fie pentru componentele conectate ale graficului . Din urmează
Vârfurile în provin alternativ de la și . Lăsa
, dar numai dacă este o cale de creștere. și asta înseamnă că trebuie să existe un minim de componente cu și, în consecință, trasee complementare. Conform definiției componentelor conectate, astfel de căi complementare nu se vor intersecta la vârfuri.
Puteți găsi calea complementară astfel:
Deoarece calea de creștere poate fi găsită în timpul DFS, timpul de rulare al algoritmului este . Această soluție este echivalentă cu adăugarea unei supersurse cu muchii la toate nodurile și a unui superstock cu muchii de la toate nodurile (transformarea graficului va dura și găsirea fluxului maxim de la până la . Toate muchiile care curg de la pentru a forma o potrivire maximă și dimensiunea din cea mai mare potrivire va fi egală cu Algoritmul timpHopcroft-Karp rapid. O altă abordare se bazează pe algoritmul de multiplicare rapidă a matricei și oferă complexitate [10] , care este mai bună în teorie pentru grafice suficient de dense , dar în practică algoritmul este mai lent. [11]
Într -un grafic bipartit ponderat , fiecărei muchii i se atribuie o pondere. O potrivire maximă a greutății într-un grafic bipartit [9] este definită ca o potrivire pentru care suma greutăților muchiilor potrivirii are o valoare maximă. Dacă graficul nu este un bipartit complet , muchiile lipsă sunt adăugate cu greutate zero. Problema găsirii unei astfel de potriviri este cunoscută sub numele de problema de atribuire . Remarcabilul algoritm maghiar rezolvă problema de atribuire și a fost unul dintre primii algoritmi de optimizare combinatorie . Problema poate fi rezolvată folosind o căutare modificată pe calea cea mai scurtă în algoritmul de creștere a căii. Dacă se folosește algoritmul Bellman-Ford , timpul de rulare va fi , sau prețul marginii poate fi deplasat pentru a ajunge la momentul când se aplică algoritmul lui Dijkstra cu un heap Fibonacci [12] . [13]
Există un algoritm de timp polinomial pentru găsirea celei mai mari potriviri sau a ponderii maxime într-un grafic non-bipartit. După Jack Edmonds se numește metoda cale, arbore și culoare sau pur și simplu algoritmul de potrivire Edmonds . Algoritmul folosește arce bidirecționale . O generalizare a aceleiași tehnici poate fi folosită pentru a găsi setul independent maxim în grafice fără gheare . Algoritmul lui Edmods a fost ulterior îmbunătățit la timpul de rulare , care corespunde algoritmilor pentru graficele bipartite [14] . Un alt algoritm (randomizat) dezvoltat de Mucha și Sankovsim (Mucha, Sankowski) [10] , bazat pe produsul rapid al matricelor , dă complexitate .
Potrivirea maximă poate fi găsită cu un algoritm simplu lacom . Cea mai mare potrivire maximă este cea mai mare potrivire care poate fi găsită în timp polinomial. Implementare folosind pseudocod:
Cu toate acestea, nu se cunoaște niciun algoritm în timp polinomial care să găsească cea mai mică potrivire maximă , adică potrivirea maximă care conține cel mai mic număr posibil de muchii.
Rețineți că cea mai mare potrivire de k muchii este un set dominant de muchii cu k muchii. Dimpotrivă, având în vedere un set dominant de muchii minime cu k muchii, putem construi cea mai mare potrivire cu k muchii în timp polinomial. Astfel, problema găsirii dimensiunii minime a potrivirii maxime este echivalentă cu problema găsirii muchiei dominante a muchiei minime [15] . Ambele probleme de optimizare sunt cunoscute ca NP-hard , iar versiunile lor de recunoaștere sunt exemple clasice de probleme NP-complete [16] . Ambele probleme pot fi aproximate cu un factor de 2 cu timp polinomial - doar găsiți o potrivire maximă arbitrară M [17] .
Numărul de potriviri dintr-un grafic este cunoscut sub numele de indicele Hosoyya . Calcularea acestui număr este #P-complet . Problema rămâne #P-completă în cazul special de enumerare a potrivirilor perfecte într-un grafic bipartit , deoarece calcularea permanentei unei matrice aleatoare 0-1 (o altă problemă #P-completă) este la fel cu calcularea numărului de potriviri perfecte în un graf bipartit cu o matrice dată ca matrice de adiacență . Există, totuși, o schemă de aproximare polinomială aleatorie în timp pentru a calcula numărul de potriviri într-un grafic bipartit [18] . O minunată teoremă a lui Casteleyn care afirmă că numărul de potriviri perfecte dintr-un graf plan poate fi calculat exact în timp polinomial folosind algoritmul FKT .
Numărul de potriviri perfecte dintr-un grafic complet K n (cu n par ) este dat de factorialul dublu ( n − 1)!! [19] . Numărul de potriviri dintr-un grafic complet fără limită, astfel încât potrivirea să fie perfectă, este dat de numerele de telefon [20] .
Una dintre principalele probleme în teoria potrivirilor este găsirea tuturor marginilor care pot fi extinse la cea mai mare potrivire. Cel mai bun algoritm determinist pentru rezolvarea acestei probleme rulează în timp [21] . Există un algoritm randomizat care rezolvă problema în timp [22] . În cazul unui graf bipartit, puteți găsi cea mai mare potrivire și o puteți utiliza pentru a găsi toate muchiile de potrivire maximă în timp liniar [23] ; ceea ce va rezulta pentru grafurile bipartite generale si pentru grafurile bipartite dense cu . Dacă una dintre cele mai mari potriviri este cunoscută dinainte [24] , timpul total de rulare al algoritmului va fi .
Teorema lui König afirmă că, în graficele bipartite, dimensiunea celei mai mari potriviri este egală cu dimensiunea celui mai mic înveliș de vârf . De aici rezultă că, pentru grafurile bipartite, problemele de găsire a celei mai mici acoperiri de vârfuri , a celei mai mari mulțimi independente și a biclicului maxim de vârfuri pot fi rezolvate în timp polinomial .
Teorema lui Hall (sau teorema nunții) oferă o caracterizare a graficelor bipartite care au potriviri perfecte, în timp ce teorema lui Tutt oferă o caracterizare a graficelor arbitrare.
O potrivire perfectă generează un subgraf cu 1 regulat , adică un factor 1 . În general, un subgraf k-regular care se întinde este un factor k .
Formula structurală Kekule a compușilor aromatici constă în potriviri perfecte ale scheletului lor de carbon , arătând locația dublelor legături în structura chimică . Aceste structuri sunt numite după Friedrich August Kekule , care a arătat că benzenul (din punct de vedere al teoriei grafurilor, este un ciclu de 6 vârfuri) poate fi reprezentat ca o astfel de structură [25] .
Indicele Hosoyya este numărul de potriviri nevide plus unu. Este folosit în chimia computațională și matematică pentru a studia compușii organici.