Кіріспе
Шектілік қанағаттандыруда жергілікті іздеу – мәселенің шешімін табудың толық емес әдісі. Ол барлық шектеулер орындалғанға дейін айнымалылардың тағайындалуын қайталап жақсартуға негізделген. Атап айтқанда, жергілікті іздеу алгоритмдері әр қадамда тағайындамадағы бір айнымалының мәнін өзгертеді. Жаңа тағайындама тағайындама кеңістігінде алдыңғысына жақын болғандықтан, бұл әдіс жергілікті іздеу деп аталады. Барлық жергілікті іздеу алгоритмдері тағайындаманың сапасын бағалайтын функцияны пайдаланады, мысалы, тағайындама бұзған шектеулердің саны. Бұл шама тағайындаманың құны деп аталады. Жергілікті іздеудің мақсаты – ең төмен құны бар тағайындаманы табу, егер мұндай шешім болса. Жергілікті іздеу алгоритмдерінің екі класы бар. Біріншісі – ашкөз немесе кездейсоқ емес алгоритмдер. Бұл алгоритмдер ағымдағы тағайындаманы әрқашан оның құнын азайтуға (немесе кем дегенде, арттырмауға) тырысу арқылы өзгертеді. Бұл алгоритмдердегі басты мәселе – платолардың болу мүмкіншілігі, олар тағайындама кеңістігіндегі жергілікті өзгеріс құнды азайта алмайтын аймақтар. Екінші класс жергілікті іздеу алгоритмдері осы мәселені шешу үшін жасалған. Олар кездейсоқ қимылдар жасап, осы платолардан шығып кетеді, сондықтан оларды кездейсоқ жергілікті іздеу алгоритмдері деп атайды.
Төбеге көтерілу
Жергілікті іздестірудің ең қарапайым түрі шешімнің құнын ең көп мөлшерде төмендететін өзгерісті таңдауға негізделген. Бұл әдіс, «дөңгелекке көтерілу» деп аталады, мынадай қадамдардан тұрады: біріншіден, кездейсоқ тағайындама (тапсырма) таңдалады; екіншіден, нәтижедегі тағайындаманың сапасын ең көп жақсарту үшін бір мән өзгертіледі. Егер белгілі бір сан өзгеріс жасалғаннан кейін шешім табылмаса, жаңа кездейсоқ тағайындама таңдалады. Дөңгелекке көтерілу алгоритмі тек тағайындама сапасын өзгертпейтін өзгерістер арқылы ғана жазықтан (платодан) шыға алады. Осының салдарынан, олар тағайындама сапасы жергілікті максимумға жеткен жазықта (платода) тұрып қалуы мүмкін. GSAT (greedy sat) – қанағаттандыру мәселесі үшін жасалған алғашқы жергілікті іздеу алгоритмі және ол дөңгелекке көтерілудің бір түрі болып табылады.
Қиындықтарды салмақтау немесе бұзылу әдісі
Жергілікті минимумнан шығу әдісі – бұзылған шектеулердің салмақталған сомасын шығын өлшемі ретінде пайдалану және жақсартушылық қадам болмаған жағдайда кейбір салмақтарды өзгерту. Нақтырақ айтқанда, егер ешқандай өзгеріс тапсырманың құнын азайта алмаса, алгоритм ағымдағы тапсырма бұзған шектеулердің салмағын арттырады. Осылайша, шешімнің құнын өзгерте алмайтын әрбір қадам оның құнын азайтады. Сонымен қатар, көптеген қадамдар бойы бұзылған шектеулердің салмағы үздіксіз өсе береді. Сондықтан, шектеуді қанағаттандырмайтын бірнеше қадам жасалғанда, осы шектеуді қанағаттандыратын тапсырмаларға қадам жасаудың құны артып отырады.
Тыйымды іздеу
Шығынды төмендетпейтін қимылдармен тау басына көтерілудің кемшілігі – бірдей құнға ие тапсырмаларды қайта-қайта аралауы мүмкін. Tabu іздеуі бұл мәселені "тыйым салынған" тапсырмалар тізімін, яғни табу тізімін ұстап отыру арқылы шешеді. Әдетте, табу тізімі тек соңғы өзгерістерді ғана қамтиды. Нақтырақ айтқанда, ол соңғы рет айнымалыға берілген мән жұптарын қамтиды. Бұл тізім әрбір тағайындама өзгерген сайын жаңартылады. Егер айнымалыға мән берілсе, айнымалы-мән жұбы тізімге қосылады, ал ең ескі жұп одан алынып тасталады. Осылайша, тізімде тек айнымалыға соңғы тағайындалған мәндер ғана болады. Егер айнымалы-мән жұбы табу тізімінде болса, онда айнымалыны сол мәнге орнату арқылы ағымдағы тағайындаманы өзгертуге тыйым салынады. Алгоритм тек тыйым салынбағандардың арасынан ең жақсы қимылды таңдай алады. Бұл тәсілмен, егер циклдегі қимылдар саны табу тізімінің ұзындығынан артық болмаса, алгоритм бірдей шешімді қайта араламайды.
Кездейсоқ жүру
Кездейсоқ жүріс алгоритмі кейде ашкөз алгоритм сияқты, ал кейде кездейсоқ қозғалады. Бұл параметрге байланысты, ол 0 мен 1 арасындағы нақты сан. Әр қадамда, ықтималдығымен алгоритм ашкөз алгоритмдей әрекет етеді, тапсырманың бағасын барынша төмендетуге тырысады. Дегенмен, ықтималдығымен шешім қандай да бір басқа тәсілмен өзгертіледі, онда белгілі бір дәрежеде кездейсоқтық болады.
WalkSAT
WalkSAT-тың кездейсоқ қозғалысы кездейсоқ бұзылған шектеудің кездейсоқ айнымалысының мәнін өзгертеді. Конъюнктивті қалыпты формадағы формулалардың пропозициялық қанағаттандырылуы, яғни осы алгоритмнің бастапқы параметрлері үшін, әрбір мұндай қозғалыс айнымалының мәнін турадан керіге немесе керісінше өзгертіп, бұзылған шектеуді қанағаттандырады. Барлық кездейсоқ іздеу стратегияларындағыдай, кездейсоқ қозғалыс тек белгілі бір ықтималдықпен жасалады, ал қалған жағдайларда шығынды барынша азайтатын қозғалыс жасалады.
Симуляциялық оттану
Симуляциялық оттепелеу әдісі кездейсоқ қозғалыс жасау ықтималдығын өзгерткенге негізделген, осы арқылы шығынды барынша азайтуға мүмкіндік туады. Атап айтқанда, алгоритмді іске асыру барысында кездейсоқ қозғалыс жасау ықтималдығын төмендету стратегиясы осы әдістің атына себеп болды, нәтижесінде іздеу кеңістігі жайлы "қатаңдалады". Егер қозғалыстың нәтижесінде шығын теріс болса (яғни, шығын артса), онда бұл қозғалыс ықтималдықпен жасалады, мұндағы – нақты сан. Симуляциялық оттепелеу уақыт өте келе бұл температураны төмендетіп, бастапқыда көбірек кездейсоқ қозғалыстарға және кейіннен азырақ мүмкіндік береді.
Велосипедті көлікте жергілікті іздеу
Жергілікті іздеу әдетте барлық айнымалылар бойынша жұмыс істейді, оларға толықтапсырманы жақсартады. Дегенмен, жергілікті іздестіруді басқа айнымалылар үшін басқа механизмдерді пайдалана отырып, айнымалылардың ішінен таңдалған бір бөлігінде де іске асыруға болады. Ұсынылған алгоритм циклдық кескішпен жұмыс істейді, яғни, егер оны мәселеден алып тастаса, мәселені циклдық емес ететін айнымалылар жиынымен. Кескіштен алынған айнымалыларға кез келген мән берілгенде, қалған мәселенің негізгі графигі орман болады. Нәтижесінде, оны тиімді түрде шешуге болады. Жергілікті іздестіруді басқару үшін, проблеманың орман бөлігінде қанағаттандырылатындығын тексеру алгоритмі орнына, бұзылуы мүмкін шектеулердің ең аз санын анықтайтын алгоритм қолданылады. Бұл ең төменгі сан әр айнымалыға берілген тапсырманың құнын анықтау арқылы табылады. Бұл құн – айнымалы белгілі бір мәнді алғанда, сол айнымалыға тамырланған кіші ағаштағы айнымалыларға берілген тапсырмалардың нәтижесінде бұзылған шектеулердің ең аз саны. Бұл құнды келесідей есептеуге болады. Егер тапсырманың құнын білдірсе және – балалары болса, келесі формула орындалады. Бұл формула бойынша, – тапсырмасы арасындағы шектеуді бұзатын болса 1, бұзбайтын болса 0 болады. Кескіштегі айнымалылардың құны нөлге тең, және осы айнымалыларға тек берілген мәнді ғана беруге рұқсат етіледі деп есептеледі. Осы шарттар бойынша, жоғарыдағы формула орманның жапырақтарынан түбірлеріне қарай қайта-қайта есептеу арқылы барлық айнымалылардың мәнін анықтауға мүмкіндік береді. Айнымалылардың мәнін есептеу нәтижесі жергілікті іздеу үшін шешімнің құнын анықтауға пайдаланылуы мүмкін. Орман түбірлерінің құны – берілген мәндер үшін ормандағы бұзылған шектеулердің ең аз саны. Осы құндар кескіш айнымалыларына тапсырма берудің құнын бағалауға және кескіш айнымалыларына ұқсас тапсырмалардың құнын болжауға пайдаланылуы мүмкін.
The cost for variables in the cutset is zero, and these variables are assumed to be allowed to take only their given value. With these assumptions, the above formula allows computing the cost of all variable evaluations by iteratively proceeding bottom up from the leaves to the root(s) of the forest. The cost of variable evaluations can be used by local search for computing the cost of a solution. The cost of values of the roots of the forest is indeed the minimal number of violated constraints in the forest for these given values. These costs can therefore used to evaluate the cost of the assignment to the cutset variables and to estimate the cost of similar assignments on the cutset variables.