Odatda asabiy bo‘lsam, miyamni qiynab ko‘radigan odatim bor. Bir-biriga umuman o‘xshamagan narsalarni chatishtirib ko‘raman. Albatta, bu qo‘chqor bilan echki bo‘lmaydi hech qachon. Turli algoritmlar, metodlar yoki yondashuvlar bo‘lishi mumkin, xolos. Harna, odam shu bilan chalg‘iydi.
Xullas, videodagi dasturni yasaganimga 10 yil bo‘libdi. O‘sha davrda trendda bo‘lgan Object Pascalda qilingan. Lekin undagi metodlarni eslab, qiziq bir narsani eksperiment qilib ko‘rdim.
Odatda Rubik kubigini dasturiy yechishda Two-Phase (Kociemba) algoritmi ishlatiladi. Judayam mazoxist bo‘linsa yoki buning tagida nima yotganini chuqurroq tushunishni xohlaganlar uchun Group Theory va CSP ham qo‘l keladi. To‘g‘ri, bular algoritm emas. Biri matematik struktura, ikkinchisi esa masalani cheklovlar orqali ifodalash modeli. Lekin Rubik kubigini tushunishda ikkalasi ham juda qiziq nuqtai nazar beradi.
Men esa bularni morfologiya bilan ozgina chatishtirib ko‘rish haqida o‘ylab qoldim.
Rubik kubigida barcha mumkin bo‘lgan holatlarni bazaga yozib chiqmaymiz. Boshlang‘ich holat bor, ruxsat etilgan transformatsiyalar bor va kerakli holatga olib boradigan yo‘l hisoblanadi. Morfologiyada ham bunga biroz o‘xshash manzara bor.
Masalan: kitob > kitoblar > kitoblarimiz > kitoblarimizni
Bularni alohida-alohida tayyor so‘z sifatida saqlash mumkin. Yoki kitobni boshlang‘ich holat deb olib, ko‘plik, egalik va kelishik kabi operatsiyalarni hamda ularning qaysi tartibda ishlashi mumkinligini saqlash mumkin.
Shunda masala bazadan kitoblarimizni degan qatorni topishdan, kitob holatidan berilgan grammatik xususiyatlarga olib boradigan to‘g‘ri yo‘lni topishga aylanadi. Teskari yo‘nalishda esa kitoblarimizni > kitob > PL > POSS.1PL > ACC. Ya’ni morfologik analiz ham ma’lum ma’noda state-space search bo‘lib qoladi.
CSP esa masalaga boshqa tomondan qaraydi. Unda yechim tayyor variantlar orasidan qidirilmaydi, balki o‘zgaruvchilar, ularning mumkin bo‘lgan qiymatlari va ular orasidagi cheklovlar beriladi. Morfologiyada ham so‘zning turkumi, soni, egaligi, kelishigi yoki boshqa grammatik xususiyatlarini shunday o‘zgaruvchilar sifatida ko‘rish mumkin. Masalan, ot uchun kelishik mavjud bo‘lishi mumkin, fe’l uchun esa zamon va shaxs boshqa qoidalar asosida ishlaydi. Shu cheklovlarning barchasini qanoatlantirgan kombinatsiya to‘g‘ri morfologik holatga aylanadi.
Shunda ikki fikr bir joyda uchrashadi. Transformatsiyalar mumkin bo‘lgan holatlar orasida yurish imkonini beradi, CSP esa qanday holat va kombinatsiyalar umuman mumkinligini belgilaydi. Qidiruv esa shu variantlardan kerakli yechimni topadi. Bunga ko‘ra lemma, transformatsiyalar, cheklovlar va qidiruv birgalikda morfologik analiz va generatsiyani hosil qiladi.
Xullas, eksperimentning maqsadi yuz minglab generatsiya qilingan so‘z shakllarini bazada tayyor saqlash qanchalik zarurligini tekshirish edi. Ularning qanchasini faqat lemma, transformatsiya qoidalari va cheklovlar orqali qayta tiklash mumkin? Va bundan ham qiziqrog‘i, shu yondashuvda db hajmi qanchaga kichrayadi, qidirish tezligiga qanday ta’sir qiladi va aniqlikdan yutamizmi yoki yo‘qotamizmi? Hozircha gemoroyga uchradik xolos.
Rubik kubigi bilan o‘zbek morfologiyasining qarindoshligi yo‘q, albatta. Lekin ba’zida bir sohada ishlaydigan fikrlash usulini boshqa sohaga olib o‘tib ko‘rishning o‘zi qiziq natija beradi yoki yo‘l ochadi. Natija bermasa ham, hech bo‘lmasa asabni buzgan narsadan chalg‘ib, asabni buzadigan boshqa narsa topilib keladi.
@yetimdasturchi