در مجموعه‌ای از افراد، هر فرد با برخی از افراد دیگر سازگار است، یافتن شرایطی که تحت آن بتوانیم افراد را به صورت جفت سازگار باهم دسته‌بندی کنیم. بسیاری از کاربردهای گراف‌ها تضمین‌کنندهٔ چنین جفت سازی‌هایی هستند.

تعریف
-----

یک جورسازی در یک گراف بی سوی G مجموعه‌ای از یال‌های دو به دو مجزا می‌باشد. رأس‌های متعلق به یال‌های یک جورسازی، اشباع شده و سایر رأس‌ها اشباع نشده هستند.
اگر یک جورسازی هر راس از G را اشباع کند، آن گاه یک جورسازی تام یا جورسازی کامل است.

انواع جورسازی‌ها
----------------

### جورسازی بیشینه

برای جستجوی یک جورسازی بزرگ، می‌توانیم به‌طور مکرر یالی مجزا شده از یال‌های بیشتر انتخاب شده، را، در نظر بگیریم.
این روند یک جورسازی ماکسیمال را به دست می‌دهد، اما لزومی ندارد که یک جورسازی بیشینه رابدهد.
یک جورسازی ماکسیمال را نمی‌توان بیشتر نمود، زیرا یال‌های آن با همهٔ یال‌های دیگر متلاقی می‌باشد ولی یک جورسازی بیشینه، یک جورسازی با حداکثر اندازه‌است.
طبق  قضیه برژ جورسازی‌های بیشینه هیچ مسیر افزوده‌ای ندارند.

* **تعریف**

اگر *G*و*H* گراف‌هایی با مجموعهٔ رأس‌های *V* باشند، آنگاه تفاضل متقارن *GΔH*، گرافی با مجموعهٔ رأس‌های *V*است که یال‌هایش همهٔ یال‌هایی هستند که دقیقادر *G* یا *H* ظاهر شوند. بنابراین اگر *M*و*N* جورسازی باشند آن گاه داریم:

{\displaystyle M\Delta \ N=(M\cup N)-(M\cap N)}

### جورسازی هال

اگر گراف *X*، گراف*M*را اشباع کند، آن گاه برای هر{\displaystyle S\subseteq X} باید حداقل{\displaystyle |S|}راس وجود داشته باشند که دارای همسایه‌هایی در {\displaystyle |S|} باشند.قضیه هال ثابت می‌کند که این شرط لازم و کافی است.

### جورسازی دوبخشی بیشینه

شکل ۱
مشخص‌سازی مسیر-افزوده برای جورسازی‌های بیشینه به الگوریتم تطابق بیشینه در گراف دوبخشی برای یافتن جورسازی‌های بیشینه می‌انجامد.
جستجوی پیاپی مسیرهای افزوده و افزایش آن به اندازهٔ یک یال موجب یافتن این مسیر می‌شود که در صورت عدم پیدا کردن یک مسیر افزوده، پوشش راسی با اندازهٔ جورسازی جاری یافت می‌شود.

### جورسازی دوبخشی سریع

زمان اجرای الگوریتم جورسازی دو بخشی را می‌توان با ترتیبی ماهرانه در جستجوی مسیرهای افزوده بهبود بخشید.
درصورتی که مسیرهای افزودهٔ کوتاه در دسترس باشند، نیاز به جستجوی یال‌های فراوان جهت یافتن یک یال نیست.
بااستفاده از الگوریتم تطابق بیشینه در گراف دوبخشی به‌طور هم زمان از تمام رأس‌های اشباع نشدهٔ گراف *X*، می‌توانیم با یک بررسی مجموعهٔ یال‌ها مسیرهای فراونی با طول یکسان را بیابیم.
هاپکرافت و کارپ [۱۹۷۵]ثابت کرده‌اند که افزوده‌های بعدی باید از مسیرهای طولانی تری استفاده کنند، بنابراین جستجوها را می‌توان در فازهایی که مسیرهای با طول یکسان را پیدا می‌کنند، گروه بندی کرد.
به این شکل جورسازی بیشینه در گراف‌های دوبخشی را می‌توان در زمان (O(*n*2.5 یافت.

### جورسازی پایدار

استفاده از ارجحیت‌ها برای جورسازی رأس‌های گراف به جای بهینه ساختن وزن کل آن یک جورسازی پایدار را ایجاد می‌کند. در واقع باید رأس‌ها طوری جفت شوند که ترجیعی مبنی بر برهم زدن آن رابطه وجود نداشته باشد.

کاربردها و الگورتیم‌ها
----------------------

1. **الگوریتم شکوفه ادموندز**
2. **الگوریتم مسیر افزوده**

شکل ۲
* **ورودی**:

یک گراف دوبخشی G، با افراز از مضاعف Y،X یک جورسازی Mدر G، ومجموعهٔ U از همهٔ رأس‌های M-اشباع نشده در X.

* **حکم**:

مسیرهای M- متناوب را از U جستجو کنید، با فرض اینکه {\displaystyle S\subseteq X} و {\displaystyle T\subseteq Y} مجموعهٔ راس‌هایی باشند که به آن‌ها رسیده اید. راس‌هایی از S را که علامت دارند برای بسط مسیرها جستجو کنید. برای هر{\displaystyle x\in (S\cup T)-U} راس پیش از x را روی یک مسیر M-متناوب از U ثبت کنید.

* **ارزش دهی آغازی**: T=\varnothing  S=U

* **تکرار**:

اگر S دارای هیچ راس علامت‌گذاری شده‌ای نباشد، متوقف شوید و{\displaystyle T\cup (X-U)} را به عنوان یک پوشش کمینه و M را به عنوان یک جورسازی بیشینه گزارش دهید. در غیر این صورت، یک {\displaystyle x\in S} علامتدار نشده را انتخاب کنید. برای جستجوی x، هر{\displaystyle y\in N(x)} را طوری در نظر بگیرید که {\displaystyle xy\not \in M}. اگر y اشباع نشده باشد، به کار پایان دهید و ازy به عقب جستجو کنید تا یک مسیر M- افزوده را از U به y گزارش نمایید. در غیر این صورت،y با یک {\displaystyle w\in X} به وسیلهٔ M جور می‌شود. در این حالت،y را به T اضافه کنید( از x به آن رسیده ایم) و w را به S اضافه نمایید(از y به آن رسیده ایم). پس از جستجوی همهٔ چنین یال‌های متصل به x،x را علامتدار کنید و تکرار نمایید.

منابع
-----

* intruduction to graph theory,Douglas B.west
* en:Edmonds's matching algorithm