Кіріспе

Құрама қимылдарды шешу алгоритмі (англ. algorithm) - бұл Rubik's Cube қимылын шешудің тәсілдері туралы талқылаудан пайда болған, бірақ басқа комбинаторлық қимылдар мен математикалық ойындарға да қолданылуы мүмкін түсінік. Бұл мүмкіндігінше аз қимылдарды жасайтын шешімді беретін кез келген алгоритмді білдіреді. Тәңірге сілтеме жасау барлық нәрсені білетін зат кез келген конфигурациядан оңтайлы қадамды біледі деген түсінікке негізделген.

Анықтама

Бұл ұғым конфигурацияларға қатысты болуы мүмкін және жаңа конфигурацияға әкелуі мүмкін "қозғалыстардың" салыстырмалы түрде шағын, жақсы анықталған арсеналы бар "конфигурациялардың" шекті санын қабылдауға болатын жұмбақтарға қолданылады. Пазлді шешу - белгілі бір "түпкілікті конфигурацияға", бірегей конфигурацияға немесе конфигурациялардың жиынтығының біріне жетуді білдіреді. Бұл жұмбақты шешу үшін кездейсоқ бастапқы конфигурациядан басталатын қимылдар тізбегі қолданылады.

Шешім

Егер алгоритм кездейсоқ бастапқы конфигурацияны кіріс ретінде қабылдаса және соңғы конфигурацияға әкелетін қимылдар тізбесін шығару ретінде шығарса, онда ол осындай жұмбақты шешу деп санауға болады (егер жұмбақ осы бастапқы конфигурациядан шешілетін болса, әйтпесе ол шешімнің мүмкін еместігін көрсетеді). Егер қимылдар реті мүмкіндігінше қысқа болса, онда шешім оңтайлы. Оның ең жоғары мәні, барлық бастапқы конфигурациялардың ішінде, Құдайдың саны немесе, формальды түрде, минимакс мәні деп аталады. Толық шешімді сұрағанның орнына, бастапқы, бірақ соңғы конфигурациядан бір ғана қадамды сұрауға болады, онда қадам кейбір оңтайлы шешімдердің біріншісі болып табылады. Мәселелердің бір қимыл нұсқасының алгоритмі бастапқы проблеманың алгоритміне айналуы мүмкін, оны соңғы қадамға дейін, соңғы қадамға дейін, қазіргі конфигурацияға хабарланған әрбір қимылды қолданған кезде қайта-қайта шақыру арқылы; керісінше, бастапқы мәселенің кез келген алгоритмі оның шығысын бірінші қимылына қысқарту арқылы бір қимыл нұсқасының алгоритміне айналуы мүмкін.

Мысалдар

Бұл сипаттамаға сәйкес келетін танымал жұмбақтар - Рубик кубісі, Ханой мұнарасы және 15 жұмбақ сияқты механикалық жұмбақтар. Сонымен қатар, бір адам ойнайтын солярий ойыны, сондай-ақ көптеген логикалық жұмбақтар, мысалы, миссионерлер мен каннибальдар проблемасы қамтылған. Олардың ортақ жағы - оларды математикалық түрде бағытталған график ретінде модельдеуге болады, онда конфигурациялар - бұрыштар, ал қозғалыстар - доғалар.

n-жазбалар

Он бес пазл 80 бір тақта қозғалысында немесе 43 көп тақта қозғалысында ең нашар жағдайда шешілуі мүмкін. Оның жалпылауы үшін n жұмбақ, оптималды шешімді табу мәселесі NP қиын, сондықтан практикалық Құдайдың алгоритмі бар-жоғы белгісіз.

Ханой мұнаралары

Ханой мұнарасы жұмбағында кез келген диск саны үшін Құдайдың алгоритмі белгілі. Қозғалыс саны диск санымен бірге экспоненциалды түрде өседі .

Рубик текшесі

1997 жылы Ричард Корф Rubik's Cube-ді шешу үшін ең аз қимыл санын анықтау алгоритмін жариялады. 1995 жылдан бері 20 қадамның ең нашар жағдайда шешімнің төменгі шегі екені белгілі болғанмен, Том Рокики 2010 жылы ешқандай конфигурация 20 қадамнан артық талап етпейтінін дәлелдеді. Осылайша, 20 - бұл оңтайлы шешімдердің ұзындығының жоғары шегі. 1980 жылы математик Дэвид Сингмастер бұл санды 20 деп "қасқырлықпен болжаған".

Шешілмеген ойындар

Кейбір белгілі ойындарда өте шектеулі, қарапайым, нақты ережелері мен қимылдары бар, бірақ олардың Құдай алгоритмі ешқашан жеңімпаз стратегиясы анықталмаған. Мысал ретінде шахмат және го ойынын алайық. Бұл екі ойынның да әр қимылдағы позиция саны тез өседі. Барлық мүмкін болатын позициялардың жалпы саны шамамен 5×1044 шахмат үшін және 10180 (19×19 тақтада) Го үшін қазіргі компьютерлік технологиямен күшті шешімге жол бермеу үшін тым үлкен (қазір шешілгенді салыстыра отырып, үлкен қиындықпен, Рубиктің тектісі тек шамамен 4,3 позицияда). Сондықтан, бұл ойындарда Құдайдың алгоритмін анықтау мүмкін емес. Шахмат ойнаған компьютерлер ең жақсы ойыншыларды да жеңе алады, бірақ олар ойынның ақырына дейін есептеп шыға алмайды. Deep Blue, мысалы, тек 11 қимылды алдымен іздеді (әр ойыншының қимылын екі қимыл деп есептейді), іздеу кеңістігін 1017-ге дейін қысқартты. Осыдан кейін ол әрбір позицияны адам ойыны мен тәжірибесінен алынған ережелерге сәйкес артықшылыққа бағалады. Бұл стратегияны да Гомен жүзеге асыруға болмайды. Бағалауға болатын позициялар санының көп болуына қарамастан, әлі күнге дейін ешкім шахматқа жасалғандай, Go позициясының күшін бағалау үшін қарапайым ережелер жиынтығын табысты құрастырған жоқ, бірақ күшейту арқылы оқытылған нейрондық желілер адамның қабілетінен асып түсетін позицияны бағалауды қамтамасыз ете алады. Бағалау алгоритмдері элементарлық қателіктерге бейім, сондықтан ең күшті аралық позицияны табуға шектелген мақсатпен шектеулі алға қарау үшін де, Go үшін Құдайдың алгоритмі мүмкін емес. Екінші жағынан, шашканы (шашка) оның тәжірибелі практиканттары "ойнап жатыр" деп күдікті болды. 2007 жылы Schaeffer және басқалар. Бұл он немесе одан аз тақталар бар барлық позициялардың дерекқорын есептеу арқылы дәлелденді, бұл барлық ақырғы ойындар үшін құдай алгоритмін қамтамасыз етеді, ол барлық жақсы ойналған ойындар тең аяқталатынын дәлелдеу үшін пайдаланылды. Дегенмен, тек 5 позициясы бар және одан да аз, 3,9 бар сызбалар, деректер базасында, Рубиктің текшесі сияқты тәртіпте әлдеқайда оңай. Пазлдың позициялар жиынтығының көлемі Құдайдың алгоритмінің мүмкіндігін толықтай анықтай алмайды. Ханой мұнарасының шешілген жұмбағында кездейсоқ бөлшектер саны болуы мүмкін, ал позициялардың саны экспоненциалды түрде өседі. Дегенмен, шешім алгоритмі кез-келген өлшем проблемасына қолданылады, жұмыс уақыты .