الگوریتم WalkSAT, درس هوش مصنوعی, مسئله SAT

آموزش الگوریتم WalkSAT

الگوریتم WalkSAT

آموزش الگوریتم WalkSAT

الگوریتم WALKSAT خانواده ای از الگوریتم های کارآمد در استنتاج گزاره ای مبتنی بر بازرسی مدل است که به جست وجوی تپه نوردی مربوط میشود و بخشی از “فناوری” منطق گزاره ای می باشد.

الگوریتم های جست وجوی محلی مستقیما میتوانند به مسئله های ارضا شدنی اعمال شوند، به شرطی که تابع ارزیابی مناسبی را انتخاب کنیم. چون هدف یافتن تناسبی است که هر clause را ارضا کند.(جهت آشنایی با مفاهیم اینجا را مطالعه کنید) تابع ارزیابی ای که تعداد clause های ارضا نشده را میشمارد، این کار را انجام میدهد. در واقع این معیار توسط الگوریتم MIN – CONFLICTS برای CSP ها بکار رفته است. تمام این الگوریتم ها در فضای انتساب های کامل گام برمیدارند و در هر زمان، “مقدار درستی” یک نماد را معکوس میکند. این فضا معمولا شامل چندین مینیمم محلی برای فرار از شکل های گوناگونی از تصادفی سازی های مورد نیاز است. در سالهای اخیر، آزمایش های زیادی برای یافتن توازن خوبی برای “تصادفی سازی” و “حریص بودن” انجام شده است.

 

یکی از ساده ترین و کارآمدترین الگوریتم ها WALKSAT است که شبه کد آن را نیز در ادامه خواهید دید. در هر تکرار، الگوریتم یک clause ارضا نشده را انتخاب میکند و نمادی را از آن clause انتخاب میکند تا تغییر دهد.

بطور تصادفی یکی از روشها را برای انتخاب نماد جهت تغییر برمیگزیند:

(1) مرحله “کمترین تناقض” : که تعداد کلازهای ارضا نشده در حالت جدید را مینیمم میکند.

(2) مرحله “پیمایش تصادفی” : که نماد را بطور تصادفی انتخاب میکند.

وقتی WALKSAT مدلی را برمی گرداند، جمله ورودی ارضاپذیری است، اما وقتی  failure را برمیگرداند دو علت ممکن وجود دارد : یا جمله ارضانشدنی است یا باید زمان بیشتری به الگوریتم بدهیم.

اگر قرار دهیم max_flips =   و  p>0 ، آنگاه WALKSAT سرانجام یک مدل را برمیگرداند (در صورت وجود) ، زیرا مراحل پیمایش تصادفی سرانجام منجر به جواب میشوند. اگر max_flips  بی نهایت و جمله ارضاناپذیر باشد، آنگاه الگوریتم هرگز خاتمه نمی یابد.

به همین دلیل ، وقتی انتظار داریم جوابی وجود داشته باشد، WALKSAT مفیدتر خواهد بود. از طرف دیگر WALKSAT همیشه نمیتواند ارضاپذیری را تشخیص دهد، که برای تصمیم گیری راجع به ایجاب منطقی ضروری است.

 

شبه کد الگوریتم WALKSAT 

 

function   WALKSAT(clauses, p , max_flips)  returns  a  satisfying  or  failure

         inputs:   clauses,  a  set  of  clauses  in  propositional  logic

                       p,  the  probability  of  choosing  to do  a “random  walk”  move, typically  around  0.5

                       max_flips,  number  of  flips  allowed  before  giving  up

 

         model <– a  random  assignment  of  truel  false  to  the  symbols  in  clauses

         for   i = 1  to   max_flips  do

                       if  model   satisfies  clauses  then  return  model

                       clause <– a randomly  selected  clause  from  clauses  that   is  false  in  model

                        with  probability  p  flip  the  value  in  model  of  a  randomly  selected  symbol  from  clause

                       else   flip  whichever  symbol  in  clause  maximizes  the  number  of   satisfied   clauses

         return  failure

 

جهت انجام پروژه در خصوص مسئله SAT با انواع الگوریتم های هوشمند و تکاملی با ما تماس بگیرید:

شماره تماس: 09120563264    (تلگرام)

ایمیل : matlab24ir@gmail.com و یا info@matlab24.ir

حل مسئله 3-SAT با الگوریتم GSAT .

حل مسئله 3-SAT با الگوریتم WalkSAT .

حل مسئله 3-SAT با الگوریتم GSAT.

حل مسئله 3-SAT با الگوریتم ژنتیک .

حل مسئله 3-SAT با الگوریتم PSO .

حل مسئله 3-SAT با الگوریتم ABC .

حل مسئله 3-SAT با الگوریتم DE .

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *