Кіріспе

Дөңгелек ауысу: Математикалық ұғым және бағдарламалық жасақтаманы әзірлеудегі қолданыстары. Комбинаторлық математикада дөңгелек ауысу – бұл топтағы элементтерді қайта орналастыру операциясы, онда соңғы элементтің бірінші орынға жылжуымен, қалған барлық элементтер келесі орынға ығыстырылады немесе кері операция орындалады. Дөңгелек ауысу – циклдық пермутацияның ерекше түрі, ал циклдық пермутация – пермутацияның ерекше түрі. Формальды түрде, дөңгелек ауысу – бұл топтағы n элементтің σ пермутациясы, яғни, барлық i = 1, …, n үшін modulo n немесе барлық i = 1, …, n үшін modulo n.

Дөңгелек ауысуды берілген топқа қайталап қолдану нәтижесі де топтың дөңгелек ауысулары деп аталады. Мысалы, төрттік (a, b, c, d) топтарына дөңгелек ауысуды қайталап қолдану келесіні береді: (d, a, b, c), (c, d, a, b), (b, c, d, a), (a, b, c, d) (алғашқы төрттік), содан кейін тізбек қайталанады; осы төрттікке сәйкес төрт түрлі дөңгелек ауысу бар. Дегенмен, барлық n топтарының n ерекше дөңгелек ауысуы бола бермейді. Мысалы, (a, b, a, b) төрттігі үшін тек 2 ерекше дөңгелек ауысу бар. n топтарының ерекше дөңгелек ауысуларының саны , мұнда k – n-нің бөлгіші, бұл барлық ішкі үлгілер бойынша қайталанудың максималды санын көрсетеді. Компьютерлік бағдарламалауда биттік айналу, сонымен қатар дөңгелек ауысу деп те аталады, – бұл операцияның барлық биттерін ығыстыратын биттік операция. Арифметикалық ығысудан айырмашылығы, дөңгелек ауысу санның таңба битін сақтамайды және қозғалмалы нүктелі санның экспонентасын оның маңызды бөлігінен ажыратпайды. Логикалық ығысудан айырмашылығы, бос бит позициялары нөлдермен толтырылмайды, бірақ тізбектен ығыстырылған биттермен толтырылады.

Қолданбалар

Циклдік кодтар – код сөзінің шеңберлік ығысуы әрқашан басқа код сөзін тудыратын қасиетке ие блок кодтарының бір түрі. Бұл келесі жалпы анықтаманы негіздейді: Σ әліпбиі бойынша s жолы үшін, shift(s) оның барлық шеңберлік ығысулар жиынын білдірсін, ал L жолдар жиыны үшін, shift(L) L жиынындағы жолдардың барлық шеңберлік ығысулар жиынын білдірсін. Егер L циклдік код болса, онда shift(L) ⊆ L; бұл L-дің циклдік тіл болуы үшін қажетті шарт. shift(L) операциясы формальды тілдер теориясында зерттелді. Мысалы, егер L контекстсіз тіл болса, онда shift(L) де контекстсіз болады. Сондай-ақ, егер L ұзындығы n тұрақты өрнекпен сипатталса, онда shift(L)-ді сипаттайтын ұзындығы O(n³) тұрақты өрнек болады.