Кіріспе

Фибоначчи кодтамасы – оң бүтін сандарды екілік код сөздерге кодтайтын әмбебап код. Математика мен информатикада Фибоначчи кодтамасы – Фибоначчи сандарына негізделген бүтін сандарды көрсетудің бір түрі. Әрбір код сөзі "11" деп аяқталады және соңындағы "11" комбинациясынан басқа ешқандай "11" тіркесімесі болмайды. Фибоначчи кодтамасы Зекендорф өрнегімен тығыз байланысты, ол Зекендорф теоремасын қолданатын және ешбір санның қатарынан "1" санынан тұратын өрнегі болмайтын позициялық сандық жүйе. Нақты бүтін санға арналған Фибоначчи код сөзі – сол санның Зекендорф өрнегінің цифрлары кері ретпен орналастырылып, соңына қосымша "1" қосылған нұсқасы.

Басқа әмбебап кодтармен салыстыру

Фибоначчи кодтамасының пайдалы қасиеті бар, ол кейде оны басқа әмбебап кодтармен салыстырғанда тартымды етеді: ол өзін-өзі синхрондаушы кодтың мысалы болып табылады, бұл зақымдалған дерек ағынынан мәліметтерді қалпына келтіруді жеңілдетеді. Көптеген басқа әмбебап кодтарда, егер бір бит өгерілсе, одан кейін келетін ешбір мәлімет дұрыс оқылмайды. Ал Фибоначчи кодтамасында, өзгертілген бит бір таңбаны екі рет оқуға немесе екі таңбаны қате түрде бір рет оқуға себеп болуы мүмкін, бірақ дерек ағынынан "0" таңбасын оқу қателердің одан әрі таралуын тоқтатады. "11" таңбаларынан басқа "0" таңбасы жоқ дерек ағыны болғандықтан, бір биттік қате салдарынан зақымдалған дерек ағыны мен бастапқы дерек ағыны арасындағы ең көп түзету қашықтығы үшке тең. Бұл тәсіл – символдар тізбегін қолдана отырып кодтау, онда кейбір үлгілерге (мысалы, "11") тыйым салынады және оны еркін жалпылауға болады.

Мысал

Келесі кестеде 65 саны Фибоначчи кодында 0100100011 ретінде көрсетілген, себебі 65 = 2 + 8 + 55. Фибоначчи сандарының алғашқы екісі (0 және 1) пайдаланылмайды және соңына әрқашан 1 қосылады.

Жалпылау

Оң бүтін сандар үшін Фибоначчи кодтамасы – "11" санымен аяқталатын және басқа жерде "11" тіркесімі кездеспейтін екілік тізбектер. Бұл, N қатарынан келетін бірліктермен аяқталатын және N қатарынан келетін бірліктердің басқа тіркесімі жоқ екілік тізбектерге дейін жалпыланады. Мысалы, N = 3 болғанда, оң бүтін сандар 111, 0111, 00111, 10111, 000111, 100111, 010111, 110111, 0000111, 1000111, 0100111 ретінде кодталады. Бұл жағдайда, тізбек ұзындығына байланысты кодтамалар саны Трибоначчи сандарының тізбегімен сипатталады. Егер белгілі бір символдан кейін қандай символдарға рұқсат етілетінін анықтайтын жалпы шектеулер болса, максималды ақпарат жылдамдығын алу үшін ең бастысы – максималды энтропиялық кездейсоқ жүріс арқылы оңтайлы өту ықтималдықтарын табу, содан кейін энтропиялық кодтаушыны (декодермен алмастырылған кодтаушы) қолданып, табылған оңтайлы өту ықтималдықтарын орындайтын символдар тізбегі ретінде хабарды кодтауға болады.