نام پژوهشگر: عبدالرحیم بهرامی

پیاده سازی و بهبود الگوریتم هایی برای مسئله ارضاء پذیری و گونه هایی از آن
پایان نامه وزارت علوم، تحقیقات و فناوری - دانشگاه صنعتی اصفهان - دانشکده برق و کامپیوتر 1387
  عبدالرحیم بهرامی   رسول موسوی

در تیوری محاسبات مسایل تصمیم گیری به دو دسته تصمیم پذیر و تصمیم ناپذیر تقسیم می شوند. یک مسیله تصمیم پذیر مسیله ای است که قابل حل باشد به این معنی که بتوان یک الگوریتم برای آن طراحی کرد، در غیر این صورت مسیله مورد نظر تصمیم ناپذیر خواهد بود. مسایل تصمیم پذیر به نوبه خود و با توجه به مرتبه زمانی حل خود به دسته های متفاوتی تقسیم می شوند. دسته ای از آنها مسایلی هستند که برای آنها الگوریتمی با مرتبه زمانی چند جمله ای موجود می باشد. این مسایل به کلاس مرتبه زمانی p تعلق دارند. از طرف دیگر مسایلی وجود دارند که اثبات شده است الگوریتمی با مرتبه زمانی چند جمله ای برای آنها وجود ندارد. همچنین مسایلی وجود دارند که تعلق یا عدم تعلق آنها به کلاس p اثبات نشده است. تمام مسایل np-complete و برخی از مسایل np-hard از این دسته مسایل می باشند. مسیله ارضاءپذیری (sat) اولین مسیله ای بود که np-complete بودن آن اثبات شد. هدف این مسیله تشخیص وجود یا عدم وجود یک مقداردهی برای متغیرها به نحوی که یک عبارت منطقی داده شده مقدار true بگیرد، می باشد. تمام مسایل np-complete به طور موثری قابل کاهش به یکدیگر می باشند. بنابراین اگر یکی از آنها با یک مرتبه زمانی چند جمله ای بر حسب اندازه مسیله حل شود، تمامی آنها با این مرتبه زمانی قابل حل خواهند بود. کلاس np-hard شامل بسیاری از مسایل بهینه سازی از جمله مسیله max-sat می باشد، که این مسیله گونه بهینه سازی مسیله ارضاءپذیری می باشد. هدف این پروژه بررسی و بهبود برخی از الگوریتم های مسایل sat و max-sat می باشد. در ابتدا مسیله sat و برخی از الگوریتم های آن مورد بررسی قرار گرفتند. سپس کاهش مسیله sat به دیگر مسایل np-complete با الگوریتم های نسبتاً سریع مورد بررسی قرار گرفت. اگر چه کاهش پذیری با الگوریتمی با مرتبه زمانی چند جمله ای صورت می گرفت، اما اندازه نمونه مسیله با هر کاهش به طور موثری افزایش می یافت. سپس روش دیگری که روش بازه ای نامیده شد، پیشنهاد و مورد بررسی قرار گرفت. در روش بازه ای هر مقداردهی به متغیرها به صورت یک عدد در مبنای دو نمایش داده شد، هر بیت نشان دهنده مقدار یک متغیر بود. سپس یک جستجوی ویژه برای پیدا کردن یک مقداردهی درست در صورت وجود بر روی فضای حالت مقادیر مختلف عدد دودویی مربوطه انجام گرفت. روش های هرس کردن متفاوت و ویژه ای برای کاهش اندازه فضای حالت مورد استفاده قرار گرفت. همچنین یک مدار سخت افزاری طراحی شد و بر روی چند نمونه مورد آزمایش قرار گرفت. به هر حال هیچ یک از این روش ها در به دست آوردن یک راه حل سریع قابل اعتماد برای این مسیله موفق نبودند. به هر حال یک روش موفق در این پروژه پیشنهاد شد که در آن یک نمونه مسیله sat با استفاده از یک الگوریتم ساده سازی مورد پیش پردازش قرار می گرفت. الگوریتم مورد نظر بر روی نمونه ورودی عمل کرده و یک نمونه ساده تر و در عین حال معادل را به عنوان خروجی برمی گرداند. آزمایش های انجام شده که بر مبنای برخی از الگوریتم های استاندارد مسیله sat بودند، نشان دادند که الگوریتم پیشنهادی به طور قابل توجهی زمان مورد نیاز برای حل مسیله را کاهش داده است. به ویژه، الگوریتم مورد نظر زمان اجرای دو الگوریتم شناخته شده مسیله sat یعنی rsat و minisat را بر روی چندین نمونه پایگاه داده استاندارد نزدیک به 25 درصد کاهش داده است. در این پروژه، علاوه بر مسیله تصمیم گیری sat، مسیله بهینه سازی max-sat نیز مورد بررسی قرار گرفت. در ابتدا یک الگوریتم اکتشافی که k-half-sat نامیده شد، پیشنهاد شده و با یک الگوریتم که بر مبنای روش بهینه سازی کولونی مورچه ها بود، مقایسه شد. سپس، یکی از بهترین الگوریتم ها به نام maxsatz مورد بررسی قرار گرفته، پیاده سازی شده و با شرکت دادن یک جستجوی محلی بهبود داده شد. انتظار می رفت الگوریتم به دست آمده که ترکیبی از روش شاخه و حد و جستجوی تپه نوردی بود بتواند درخت جستجو را بهتر هرس کند. این روش با الگوریتم اصلی مقایسه شد که نتایج مثبتی بر روی بسیاری از پایگاه داده های استاندارد در بر داشت.