Rubiks Cube uchun optimal echimlar - Optimal solutions for Rubiks Cube - Wikipedia

Shiqillagan Rubik kubigi

Uchun maqbul echimlar Rubik kubigi eng qisqa bo'lgan echimlarga murojaat qiling. Eritma uzunligini o'lchashning ikkita umumiy usuli mavjud. Birinchisi, chorak burilish sonini hisoblash. Ikkinchisi, "yuz burilishlari" deb nomlangan tashqi qatlam burmalarining sonini hisoblash. Tashqi qatlamni bir xil yo'nalishda ikki chorak (90 °) burilish uchun harakat chorak burilish metrikasida (QTM) ikki harakat sifatida hisoblanadi, lekin yuz metrikasida bir burilish (FTM yoki HTM "Yarim burilish metrikasi) ", yoki OBTM" Tashqi blokirovka metrikasi ").[1]

Rubik kubining har qanday nusxasini hal qilish uchun zarur bo'lgan yuz burilishlarining minimal soni 20 ga teng,[2] va chorak burilishlarning minimal soni 26 ga teng.[3] Bu raqamlar ham diametrlari mos keladigan Keylining grafikalari ning Rubik kubigi guruhi. STM-da (tilimning metrikasi) bu noma'lum.

Juda ko'p .. lar bor algoritmlar aralashtirib hal qilish Rubik kublari. Minimal harakat sonida kubni echadigan algoritm quyidagicha tanilgan Xudoning algoritmi.

Ko'chirish yozuvlari

3 × 3 × 3 Rubik kubigidagi harakatlar ketma-ketligini belgilash uchun ushbu maqolada "Singmaster notation",[4] tomonidan ishlab chiqilgan Devid Singmaster.

L, R, F, B, U va D harflari navbati bilan chapga, o'ngga, oldinga, orqaga, yuqoriga va pastga qarab soat yo'nalishi bo'yicha to'rtdan bir burilishni bildiradi. Yarim burilishlar 2 qo'shilishi bilan ko'rsatiladi, soat sohasi farqli o'laroq chorak burilish a qo'shilishi bilan ko'rsatiladi asosiy belgi ( ′ ).

M, S va E harflari o'rta qavatning burilishini bildirish uchun ishlatiladi. M qatlamni R va L yuzlari orasidagi chorakning yuqoridan pastga burilishini anglatadi. S, old tomondan ko'rinib turganidek, F va B yuzlari orasidagi qatlamni soatiga 1 chorak burilishni anglatadi. E U va D yuzlari orasidagi qatlamni soatiga to'rt marta chap tomonga o'ngga burilishni anglatadi. Muntazam burilishlarda bo'lgani kabi, a 2 juft burilishni anglatadi va asosiy (') soat yo'nalishi bo'yicha to'rtdan bir burilishni bildiradi.[5]

X, Y va Z harflari kublarning aylanishini bildirish uchun ishlatiladi. X kubning 90 gradus oldinga aylanishini bildiradi. Y kubning chapga 90 gradusgacha aylanishini bildiradi. Z kubning soat yo'nalishi bo'yicha 90 gradusga aylanishini bildiradi. Ushbu kub aylanishlar algoritmlarni yanada yumshoq va tezroq qilish uchun algoritmlarda ishlatiladi. Muntazam burilishlarda bo'lgani kabi, a 2 yarim aylanishni bildiradi va asosiy (') qarama-qarshi yo'nalishda to'rtdan bir aylanishni bildiradi. E'tibor bering, bu harflar o'rniga kichik harflar bilan yoziladi.

Pastki chegaralar

Buni hal qilish uchun kamida 18 ta harakatni talab qiladigan pozitsiyalar mavjudligini dalillarni hisoblash orqali isbotlash mumkin. Buni ko'rsatish uchun avval jami mavjud bo'lgan kub pozitsiyalari sonini hisoblang, so'ngra echilgan kubdan boshlab ko'pi bilan 17 ta harakat yordamida erishish mumkin bo'lgan pozitsiyalar sonini hisoblang. Oxirgi raqam kichikroq ekan.

Ushbu bahs ko'p yillar davomida yaxshilanmagan. Bundan tashqari, bu emas konstruktiv dalil: bu juda ko'p harakatlarni talab qiladigan aniq pozitsiyani namoyish etmaydi. Bo'lgandi taxmin qilingan deb atalmish superflip juda qiyin bo'lgan pozitsiya bo'lar edi. Rubik kubi har bir burchak qismi to'g'ri holatidadir, lekin har bir chekka qismi noto'g'ri yo'naltirilgan bo'lsa, superflip shaklida bo'ladi.[6] 1992 yilda yuzni 20 marta burish bilan superflip uchun echim topildi Dik T. Qish, shundan minimalligi 1995 yilda ko'rsatilgan Maykl Rid, kub guruhining diametri uchun yangi pastki chegarani ta'minlaydi. Shuningdek, 1995 yilda Maykl Rid tomonidan 24-chorakda superflip uchun echim topilgan va uning minimalligi isbotlangan Jerri Bryan.[6] 1998 yilda 24 chorakdan ko'proq burilishni talab qiladigan yangi lavozim topildi. "To'rt nuqta bilan tuzilgan superflip" deb nomlangan pozitsiyada 26 chorak burilish kerak.[7]

Yuqori chegaralar

Birinchi yuqori chegaralar "inson" algoritmlariga asoslangan edi. Ushbu algoritmlarning har bir qismi uchun eng yomon stsenariylarni birlashtirib, odatda yuqori chegara 100 atrofida ekanligi aniqlandi.

Ehtimol, yuqori chegara uchun birinchi aniq qiymat, yuqorida aytib o'tilgan 277 harakat edi Devid Singmaster 1979 yil boshida. U shunchaki o'zining kublarni echish algoritmi uchun zarur bo'lgan maksimal harakatlarni hisobladi.[8][9] Keyinchalik, Singmaster bu haqda xabar berdi Elvin Berlekamp, Jon Konvey va Richard K. Gay ko'pi bilan 160 ta harakatni amalga oshiradigan boshqa algoritmni ishlab chiqqan edi.[8][10] Ko'p o'tmay, Konveyning Kembrij kubistlari kubni eng ko'p 94 ta harakat bilan tiklash mumkinligi haqida xabar berishdi.[8][11]

Thistlethwaite algoritmi

"Uyali kichik guruhlar orqali tushish" deb nomlanuvchi yutuq topildi Morven Tistletvayt; tafsilotlari Thistlethwaite algoritmi yilda nashr etilgan Ilmiy Amerika 1981 yilda Duglas Xofstadter. Algoritmlarni juda kam harakatlanishiga olib kelgan yondashuvlarga asoslanadi guruh nazariyasi va keng ko'lamli kompyuter qidiruvlarida. Tistletvaytning fikri bu muammoni pastki muammolarga bo'lish edi. Ushbu nuqtagacha bo'lgan algoritmlar kubning sobit turishi kerak bo'lgan qismlarini ko'rib chiqib, muammoni ajratgan bo'lsa, u bajarilishi mumkin bo'lgan harakatlarning turini cheklash orqali uni ajratdi. Xususan, u ikkiga bo'lingan kub guruhi quyidagi kichik guruhlar zanjiriga:

Keyin u har bir o'ng tomon uchun jadvallar tayyorladi koset bo'shliqlar . Har bir element uchun u keyingi kichik guruhga olib boradigan harakatlar ketma-ketligini topdi. Ushbu tayyorgarlikdan so'ng u quyidagicha ishladi. Tasodifiy kub umumiy kub guruhiga kiradi . Keyin u ushbu elementni o'ng tomonda topdi koset bo'sh joy . U tegishli jarayonni kubga qo'llagan. Bu uni kubga olib bordi . Keyin u kubni olib boradigan jarayonni ko'rib chiqdi , ning yonida va nihoyat .

Kociemba algoritmidagi Rubik kubining oraliq holati. G dan har qanday davlat1 ko'rsatilganidek "+" va "-" belgilariga ega bo'ladi.[12]

Garchi butun kub guruhi juda katta (~ 4.3 × 1019), to'g'ri koset bo'shliqlari va koset maydoni eng kattasi va faqat 1082565 elementni o'z ichiga oladi. Ushbu algoritm talab qiladigan harakatlarning soni har bir bosqichdagi eng katta jarayonning yig'indisidir.

Dastlab Thistlethwaite har qanday konfiguratsiyani eng ko'p 85 ta harakat bilan hal qilish mumkinligini ko'rsatdi. 1980 yil yanvar oyida u 80 ta harakatni amalga oshirish uchun strategiyasini takomillashtirdi. O'sha yilning oxirida u bu raqamni 63 ga, keyin yana 52 ga kamaytirdi.[8] Keyinchalik koset makonlarini sinchkovlik bilan izlash natijasida har bir bosqich uchun eng yomon harakatlarning soni 7, 10, 13 va 15 bo'lganligi aniqlandi, jami 45 ta harakatni amalga oshirdi.[13] Bu Thistlewaite ning Javascript-dagi algoritmini amalga oshirish.[14]

Kociemba algoritmi

Thistlethwaite algoritmi takomillashtirildi Herbert Kociemba 1992 yilda. U oraliq guruhlar sonini atigi ikkitaga qisqartirdi:

Xuddi shunday Tistletvaytning algoritmi, u to'g'ri koset maydoni orqali qidiradi kubni guruhga olib borish . Keyin u guruh uchun optimal echimni izladi . Qidiruv va ikkalasi ham teng usul bilan bajarilgan IDA *. Qidiruv eng ko'pi 12 ta harakat va qidirish kerak Maykl Rid 1995 yilda ko'rsatganidek, eng ko'pi 18 ta harakat. Shuningdek, kubni guruhga olib boruvchi suboptimal echimlarni ishlab chiqarish va qisqa echimlarni qidirmoqdaman , odatda ancha qisqa umumiy echimlar olinadi. Ushbu algoritmdan foydalanib, echimlar odatda 21 ta harakatdan kam bo'ladi, ammo har doim ham buni amalga oshirishi haqida hech qanday dalil yo'q.

1995 yilda Maykl Rid ushbu ikki guruhdan foydalangan holda har qanday pozitsiyani ko'pi bilan 29 marta yoki 42 chorakda burilishda hal qilish mumkinligini isbotladi. Ushbu natija Silviu Radu tomonidan 2005 yilda 40 ga yaxshilandi.

Bir qarashda ushbu algoritm amaliy samarasiz bo'lib ko'rinadi - Agar tark etishi mumkin bo'lgan 18 ta harakatni (har bir harakat, asosiy va 180 daraja aylanish) o'z ichiga oladi (1 kvadrilliondan ortiq) kub holatini qidirish kerak. Hatto evristik o'xshash kompyuter algoritmi IDA *, bu uni toraytirishi mumkin, chunki ko'plab davlatlarni qidirish amaliy emas. Ushbu muammoni hal qilish uchun Kociemba aniq evristikani ta'minlaydigan qidiruv jadvalini ishlab chiqdi .[15] Qachon harakatlarning aniq soniga erishish kerak edi mavjud, qidiruv deyarli bir zumda bo'ladi - har bir 12 ta harakat uchun faqat 18 kub holatini yaratish va har safar eng past evristikani tanlash kerak. Bu ikkinchi evristikaga imkon beradi, buning uchun , aniqroq bo'lishiga qaramay, echimni zamonaviy kompyuterda oqilona vaqt ichida hisoblashga imkon beradi.

Korf algoritmi

Ushbu guruh echimlaridan kompyuterni qidirish bilan birgalikda foydalanish tezda juda qisqa echimlarni beradi. Ammo bu echimlar har doim ham ularning minimalligi kafolati bilan ta'minlanmaydi. Minimal echimlarni izlash uchun yangi yondashuv zarur edi.

1997 yilda Richard Korf[16] kubning tasodifiy nusxalarini optimal ravishda hal qilgan algoritmni e'lon qildi. U qilgan o'nta tasodifiy kubiklardan hech biri yuzga 18 dan ortiq burilishni talab qilmagan. U qo'llagan usul deyiladi IDA * va "Naqshli ma'lumotlar bazalari yordamida Rubik kubiga optimal echimlarni topish" maqolasida tasvirlangan. Korf ushbu usulni quyidagicha ta'riflaydi

IDA * - bu chuqurlik bo'yicha izlanish bo'lib, u ketma-ket takrorlanishda tobora uzunroq echimlarni qidirib, pastki uzunlikdagi evristikadan foydalanib, novdalar uzunligining pastki chegarasi joriy takrorlash chegarasidan oshib ketgandan keyin ularni kesib tashlaydi.

Bu taxminan quyidagicha ishlaydi. Avval u bir qator kichik muammolarni aniqladi, ular eng maqbul echim uchun. U foydalangan:

  1. Kub qirralariga qaramasdan, faqat burchaklari bilan cheklangan
  2. Kub faqat 6 chekka bilan cheklangan, burchaklarga ham, boshqa qirralarga ham qaramagan.
  3. Kub boshqa 6 chekka bilan cheklangan.

Shubhasiz, ushbu pastki muammolardan birortasini hal qilish uchun zarur bo'lgan harakatlarning soni butun kubni echish uchun zarur bo'lgan harakatlarning pastki chegarasi.

Berilgan tasodifiy kub C, u quyidagicha hal qilinadi takroriy chuqurlashish. Avvaliga barcha kublar hosil bo'ladi, bu ularga 1 ta harakatni qo'llash natijasidir. Ya'ni C * F, C * U,… So'ngra, ushbu ro'yxatdan ikkita harakatni qo'llash natijasida hosil bo'lgan barcha kublar hosil bo'ladi. Keyin uchta harakat va boshqalar. Agar biron bir nuqtada yuqoriga qarab juda ko'p harakatlarni talab qiladigan kub aniqlansa, u hali ham maqbul bo'lishi mumkin, bu ro'yxatdan chiqarib tashlanishi mumkin.

Bu bo'lsa-da algoritm har doim optimal echimlarni topadi, eng yomon holatlar tahlili yo'q. Ushbu algoritmga qancha harakat kerak bo'lishi mumkinligi ma'lum emas. Ushbu algoritmning bajarilishini bu erda topishingiz mumkin.[17]

Keyinchalik takomillashtirish va Xudoning raqamini topish

2006 yilda Silviu Radu har qanday pozitsiyani ko'pi bilan 27 yuz burilish yoki 35 chorak burilishda hal qilish mumkinligini isbotlash uchun o'z uslublarini yanada takomillashtirdi.[18] Daniel Kunkl va Gen Kuperman 2007 yilda a superkompyuter barcha hal qilinmagan kublarni 26 harakatdan ko'p bo'lmagan holda echish mumkinligini ko'rsatish (yuzma-yuz metrikada). Har bir milliardlab o'zgarishni aniq echishga urinish o'rniga, kompyuter kubni 15 752 holatdan biriga etkazish uchun dasturlashtirilgan bo'lib, ularning har birini bir nechta qo'shimcha harakatlar davomida hal qilish mumkin edi. Hammasi 29 ta harakatda, ko'pi bilan 26 ta hal etilishi mumkinligi tasdiqlandi. Dastlab 26 ta harakatda hal etilmaydigan narsalar aniq aniqlandi va ular ham 26 ta harakatda echilishi mumkinligini ko'rsatdi.[19][20]

Tomas Rokicki 2008 yildagi hisoblash dalilida barcha hal qilinmagan kublarni 25 ta yoki undan kam harakatlarda echish mumkinligi haqida xabar bergan edi.[21] Keyinchalik bu 23 ta harakatga qisqartirildi.[22] 2008 yil avgust oyida Rokicki 22 ta harakat uchun isboti borligini e'lon qildi.[23]

Nihoyat, 2010 yilda Tomas Rokicki, Herbert Kociemba, Morley Devidson va Jon Detrij finalga chiqishdi kompyuter tomonidan tasdiqlangan dalil barcha kub holatlarini maksimal 20 marta burish bilan hal qilish mumkin.[2]2009 yilda Tomas Rokicki chorak burilish metrikasida 29 ta harakat har qanday kodlangan kubni echish uchun etarli ekanligini isbotladi.[24] Va 2014 yilda Tomas Rokicki va Morley Devidson kubni hal qilish uchun zarur bo'lgan chorak burilishlarning maksimal soni 26 ga teng ekanligini isbotladilar.[3]

Yuzga burilish va chorak burilish ko'rsatkichlari antipodlarning tabiati bilan farq qiladi.[3]Antipode - bu echimdan maksimal darajada uzoqroq bo'lgan, echish uchun maksimal miqdordagi harakatlarni talab qiladigan, maydalangan kub. Maksimal soni 20 ga teng yarim burilish metrikasida yuzlab millionlab pozitsiyalar mavjud. Chorak burilish metrikasida faqat bitta pozitsiya (va uning ikkita aylanishi) ma'lum bo'lib, u maksimal 26 ta harakatni talab qiladi. Katta sa'y-harakatlarga qaramay, qo'shimcha choragacha burilish masofasi-26 pozitsiyasi topilmadi.[yangilanishga muhtoj ] Hatto 25-masofada ham faqat ikkita pozitsiya (va ularning aylanishi) mavjud ekanligi ma'lum.[3][iqtibos kerak ] 24-masofada, ehtimol 150,000 pozitsiyasi mavjud.

Adabiyotlar

  1. ^ "Butunjahon kub assotsiatsiyasi". www.worldcubeassociation.org. Olingan 2017-02-20.
  2. ^ a b "Xudoning raqami 20". cube20.org. Olingan 2017-05-23.
  3. ^ a b v d "Xudoning raqami choraklik metrikada 26 ga teng". cube20.org. Olingan 2017-02-20.
  4. ^ Joyner, Devid (2002). Guruh nazariyasidagi sarguzashtlar: Rubik kubi, Merlin mashinasi va boshqa matematik o'yinchoqlar. Baltimor: Jons Xopkins universiteti matbuoti. pp.7. ISBN  0-8018-6947-1.
  5. ^ "Rubik kubik yozuvlari". Ruwix. Olingan 2017-03-19.
  6. ^ a b Maykl Ridning Rubik kubigi sahifasi M-simmetrik pozitsiyalar
  7. ^ 1998 yil 2-avgustda Kubni sevuvchilarga yuborilgan
  8. ^ a b v d Rik van Grol (2010 yil noyabr). "Xudoning raqamini izlash". Matematik ufqlar. Arxivlandi asl nusxasi 2014-11-09 kunlari. Olingan 2013-07-26.
  9. ^ Singmaster 1981 yil, p. 16.
  10. ^ Singmaster 1981 yil, p. 26.
  11. ^ Singmaster 1981 yil, p. 30.
  12. ^ Herbert Kociemba. "H kichik guruhi va uning kosetlari". Olingan 2013-07-28.
  13. ^ Algoritmlarni echishda progressiv takomillashtirish
  14. ^ Javascriptda Tistlevaytning Rubik kubini eritmasi algoritmini amalga oshirish
  15. ^ "Rubik kubini Cube Explorer bilan yeching". kociemba.org. Olingan 2018-11-27.
  16. ^ Richard Korf (1997). "Naqshli ma'lumotlar bazalari yordamida Rubik kubiga optimal echimlarni topish" (PDF).
  17. ^ Maykl Ridning Rubik kubigi uchun optimal echimi (gcc kabi kompilyator kerak)
  18. ^ Rubikni 27-yilda hal qilish mumkin
  19. ^ 26 yuzning etarlicha burilishini isbotlovchi press-reliz
  20. ^ Kunkl, D .; Cooperman, C. (2007). "Rubik kubigi uchun yigirma oltita harakat etarli" (PDF). Simvolik va algebraik hisoblash bo'yicha xalqaro simpozium (ISSAC '07) materiallari.. ACM tugmachasini bosing.
  21. ^ Tom Rokicki (2008). "Rubik kubigi uchun yigirma beshta harakat etarli". arXiv:0803.3435 [cs.SC ].
  22. ^ Yigirma uchta harakat etarli - Kub forumi domeni
  23. ^ yigirma ikkita harakat etarli
  24. ^ Tom Rokicki. "Yigirma to'qqiz QTM etarli harakat qiladi". Olingan 2010-02-19.

Qo'shimcha o'qish

  • Singmaster, Devid (1981). Rubikning sehrli kubikidagi eslatmalar. Enslow Publishers.CS1 maint: ref = harv (havola)

Tashqi havolalar

  • Rubik kubini qanday echish kerak, Wikibooks maqolasi, odamlar eslab qolish uchun etarlicha sodda bo'lgan bir nechta algoritmlarga umumiy nuqtai nazar beradi. Biroq, bunday algoritmlar odatda maqbul faqat minimal harakat sonidan foydalanadigan echim.