Кіріспе

Шектеулерді қанағаттандыру мәселелерін шешуге арналған іздеу алгоритмі немесе эвристикалық әдіс. Компьютерлік ғылымда, ең аз қақтығыстар алгоритмі – шектеулерді қанағаттандыру мәселелерін шешуге арналған іздеу алгоритмі немесе эвристикалық әдіс. Шектеулерді қанағаттандыру мәселесінің барлық айнымалыларына бастапқы мәндер тағайындалғанда, алгоритм бір немесе бірнеше шектеуді бұзатын қақтығыстары бар айнымалылар жиынтығынан кездейсоқ айнымалыны таңдайды. Содан кейін ол бұл айнымалыға қақтығыстар санын азайтатын мәнді тағайындайды. Егер ең аз қақтығыс саны бар бірнеше мән болса, ол олардың біреуін кездейсоқ түрде таңдайды. Кездейсоқ айнымалыны таңдау және ең аз қақтығыс мәнін тағайындау процесі шешім табылғанға дейін немесе алдын ала белгіленген максималды итерациялар санына жеткенге дейін қайталанады. Шектеулерді қанағаттандыру мәселесі барлық айнымалыларға мән тағайындалғанда (толық күй деп аталады) жергілікті іздеу мәселесі ретінде қарастырылуы мүмкін болғандықтан, ең аз қақтығыстар алгоритмін қақтығыстардың ең аз саны бар күйді таңдайтын түзету эвристикасы ретінде қарастыруға болады.

Тарих

Жасанды интеллект пен дискретті оптимизация көптеген жылдар бойы шектеулерді қанағаттандыру проблемаларын біліп, талқылап келсе де, 1990-шы жылдардың басында ғана үлкен CSP-лерді шешу процесі алгоритмдік түрде жазылды. Алғашқыда, Ғарыш телескопы ғылыми институтының қызметкері Марк Джонстон Хаббл ғарыш телескопы арқылы астрономиялық байқауларды жоспарлау әдісін іздеді. Ол Ғарыш телескопының Еуропалық үйлестіру орталығынан Ханс Мартин Адорфпен бірлесіп, 1024 патшайымдық ойын проблемасын (n патшайым проблемасы) шеше алатын нейрондық желі құрды. Стивен Минтон мен Энди Филипс бұл нейрондық желі алгоритмін талдап, оны екі кезеңге бөлді: (1) ашкөз алгоритмді пайдаланып бастапқы тағайындама және (2) қақтығыстарды азайту кезеңі (кейін "минималды қақтығыстар" деп аталды). Алгоритмнің математикалық талдауын Филип Лэрд жасады және бұл жұмыс AAAI 90 конференциясында ұсынылды. Содан кейін Марк Джонстон және STScI қызметкерлері Хаббл ғарыш телескопында астрономдардың байқау уақытын жоспарлау үшін минималды қақтығыстар әдісін қолданды.

Мысал

Минималды қақтығыстар алгоритмі N ханызалар мәселесін шешу үшін шахмат тақтасынан ханызаны қайта орналастыру үшін бағананы кездейсоқ таңдайды. Алгоритм әрбір мүмкін қозғалыста әрбір шаршыда көрсетілген қақтығыстар санын (шабуылдайтын ханышалардың санын) іздейді. Алгоритм ханызаны ең аз қақтығысы бар шаршыға жылжытады, теңдік жағдайында кездейсоқ түрде шешім қабылдайды. Қақтығыстар саны ханызаның шабуылдай алатын әрбір жаңа бағытынан туындайтынын ескеріңіз. Егер екі ханыза бір бағытта (қатар немесе диагональ) шабуыл жасаса, қақтығыс бір рет саналады. Сондай-ақ, егер ханызаның қозғалысы оны қазіргі орнынан одан да көп қақтығысқа түсірсе, ол қозгалмайды. Осылайша, егер ханызаның қақтығысы ең төмен деңгейде болса, оның қозғалуы қажет емес. N ханызалар мәселесін шешу үшін осы алгоритмнің жұмыс уақыты мәселенің өлшеміне тәуелсіз. Бұл алгоритм тіпті миллион ханызалар мәселесін де орта есеппен 50 қадамда шеше алады. Осы жаңалықтар мен байқаулар 1990 жылы көптеген зерттеулерге жол ашты және жергілікті іздеу мәселелері мен оңай және қиын мәселелер арасындағы айырмашылықтарды зерттеуді бастады. N ханызалар мәселесі жергілікті іздеу үшін оңай, өйткені шешімдер күй кеңістігінде тығыз орналасқан. Бұл қиын мәселелер үшін де тиімді. Мысалы, ол Хаббл ғарыш телескопы үшін бақылауларды жоспарлау үшін қолданылды, бір апталық бақылауларды жоспарлауға кететін уақытты үш аптадан шамамен 10 минутқа дейін қысқартты.