الگوریتم FKT
الگوریتم FKT که نام آن از ابتدای نام‌های , و گرفته شده‌است، الگوریتمی است که به شمارش تعداد تطابق کامل در یک گراف مسطح با زمان چندجمله ای می‌پردازد. این کار برای گراف‌های عمومی به صورت P-کامل می‌باشد. شمارش تعداد تطابق، حتی برای گراف‌های مسطح نیز به صورت P-کامل می‌باشد. ایده اصلی، تبدیل مسئله به یک پردازش از ماتریس متقارن مورب که از جاسازی مسطح گراف به دست آمده است می‌باشد. بدین ترتیب این ماتریس به سرعت از الگوریتم استاندارد دترمینان محاسبه می‌گردد.
مسئله شمارش تعداد تطابق کامل مسطح، ریشه در مکانیک آماری و شیمی دارد، در آنجا سؤال اصلی این بوده‌است که آیا مولکول‌های دو اتمی که بر روی یک سطح جذب می‌شوند و تشکیل یک لایه می‌دهند به چند طریق می‌توان آن‌ها را مرتب نمود؟ تابع پارتیشن یک کمیت بسیار مهم می‌باشد که ویژگی‌های آماری یک سیستم در حال تعادل را رمز می‌کند و می‌توان از آن برای حل مسئله پیشین استفاده نمود. هرچند که تلاش برای محاسبه تابع پارتیشن از تعریف آن، چندان عملی نیست؛ بنابراین برای حل دقیق یک سیستم فیزیکی باید شکل مشابهی از تابع پارتیشن را برای آن سیستم فیزیکی خاص پیدا کنیم که محاسبه آن به اندازه کافی ساده باشد. در اوایل ۱۹۶۰، تعریف دقیقاً قابل حل، چندان ملموس نبود. در ۱۹۶۵، علم کامپیوتر یک تعریف جدی با معرفی زمان چندجمله‌ای ارائه نمود. به‌طور مشابه در سال ۱۹۷۹، تعریف نه چندان دقیق قابل حل که به مسائل P-سختی برمی گردد، ارائه شد. نوع دیگری از سیستم فیزیکی که قابل بررسی است ترکیبی از دیمرها می‌باشد. دیمرها، پلیمری با دو اتم می‌باشند. مدل دیمر، تعداد پوشش‌های دیمر از یک گراف را می‌شمارد. یک سیستم فیزیکی قابل بررسی دیگر، اتصال مولکول‌های آب HO که تشکیل یخ می‌دهند می‌باشد . این سیستم را می‌توان به عنوان یک گراف جهت دار منظم ۳ تایی که جهت یال‌ها در هر راس آن نمی‌تواند یکسان باشد، مدل نمود. سؤال این است که چه تعداد جهت یال در این گراف می‌تواند در این گراف وجود داشته باشد؟ با انگیزه سیستم‌های فیزیکی که دیمرها هم شامل آن‌ها می‌شود در سال ۱۹۶۱، Kasteleyn, Temperley و Fisher هر کدام به‌طور مستقل تعداد کاشی کاری‌های دومینو را برای یک مستطیل m در n پیدا کردند. این فرمول برابر با شمارش تعداد تطابق کامل برای یک یک گراف شبکه m در n می‌باشد. در ۱۹۶۷، این نتیجه را برای تمام گراف‌های مسطح گسترش داد.
دید کلی این است که هر جمله غیر صفر در Pfaffian از ماتریس مجاورت گراف G با یک تطابق کامل مرتبط است؛ بنابراین اگر جهت‌گیری ای از G پیدا شود که مطابق تمام علائم جملات موجود در Pfaffian باشد (مثبت یا منفی بودن فرقی نمی‌کند)، آنگاه می‌توان گفت قدرمطلق Pfaffian نشان دهنده تعداد تطابق کامل گراف G می‌باشد. الگوریتم FKT این کار را برای یک گراف مسطح G انجام می‌دهد. فرض کنیم ("G" = ("V", "E" یک گراف بدون جهت با ماتریس مجاورت A باشد. ("PM"("n" را به عنوان مجموعه ای از پارتیشن‌های عناصر n به صورت جفتی تعریف می‌کنیم، سپس تعداد تطابق کامل در G به صورت زیر بدست می‌آید:
formula_1
فرمول مرتبط به این موضوع، فرمول Pfaffian برای هر ماتریس n در n مانند A می‌باشد:
formula_2
در نهایت، برای هر ماتریس متقارن مورب A داریم:
formula_3
که در آن ("det("A نشان دهنده دترمینان A می‌باشد. این نتجه از زحمات Cayley می‌باشد. از آنجا که دترمینان به راحتی قابل محاسبه است، فرمول بدست آمده هم قابل محاسبه خواهد بود.مجموع تطابق کامل وزن دار را نیز می‌توان با استفاده از ماتریس Tutte برای ماتریس مجاورت در گام نهایی انجام داد. تئوری Kuratowski اثبات می‌کند که: یک گراف کامل، مسطح است اگر و فقط اگر شامل هیچ زیر گرافی که با گراف کامل ۵ تایی یا با گراف جفت کامل سه تایی (گرافی جفت کامل با دو بخش با اندازه 3) homeomorphic نباشد. Vijay Vazirani الگوریتم FKT را برای گراف‌هایی که شامل زیر گراف جفت کامل سه تایی نمی‌شوند گسترش داده است. از آنجا که شمارش تعداد تطابق کامل در یک گراف عمومی P-کامل می‌باشد، محدودیت‌هایی بر روی گراف ورودی باید اعمال شود مگر اینکه FP (نسخه ای تابعی از P) برابر با P باشد. شمارش تطابق‌ها، که با نام اندیس Hosoya شناخته می‌شود نیز حتی برای گراف‌های مسطح هم، یک مسئله P-کامل می‌باشد.
الگوریتم FKT کاربرد زیادی در الگوریتم‌های هولوگرافیک بر روی گراف‌های مسطح در میان دروازه‌های انطباق دارد. برای مثال، نسخه مسطح از مدل یخ آورده شده در بالا را در نظر بگیرید که نام تکنیکی آن PL-3-NAE-SAT می‌باشد (که NAE در آن به معنای همه برابر نیستند می‌باشد). Valiant یک الگوریتم زمان چندجمله ای برای این مسئله پیدا نموده است که از دروازه‌های انطباق استفاده می‌کند.