Кіріспе
Деректер құрылымдарында жіктеу. Компьютер ғылымында, жасырын дерек құрылымдары немесе кеңістікті тиімді дерек құрылымдары – негізгі немесе қажетті деректерден басқа өте аз ақпаратты сақтайтын дерек құрылымдары, яғни аз қосымша шығындарды талап ететін дерек құрылымдары. Олар "жасырын" деп аталады, себебі элементтердің орналасуы олардың арасындағы мағынаны және қатынасты көрсетеді; бұл элементтер арасындағы нақты қатынасты көрсету үшін қолданылатын сілтемелерге қарама-қарсы. "Аз шығынды" анықтамасы әртүрлі болуы мүмкін, бірақ көбінесе тұрақты шығынды білдіреді; үлкен O нотациясында – O(1) шығын. Шамалы шектеулі анықтама – бұл ықшам дерек құрылымы, ол жоғары шығындарға мүмкіндік береді.
In computer science, an implicit data structure or space efficient data structure is a data structure that stores very little information other than the main or required data: a data structure that requires low overhead. They are called "implicit" because the position of the elements carries meaning and relationship between elements; this is contrasted with the use of pointers to give an explicit relationship between elements. Definitions of "low overhead" vary, but generally means constant overhead; in big O notation, O(1) overhead. A less restrictive definition is a succinct data structure, which allows greater overhead.
Анықтама
Кеңістік бойынша тұрақты O(1) үстеме шығыны бар (ақпараттық теориялық ең төменгі шектен жоғары) деректер құрылымы имплицитті деректер құрылымы деп аталады. Тарихи тұрғыдан алғанда, имплицитті деректер құрылымы (және оған қатысты алгоритмдер) «деректерді сақтау тәсіліне имплицитті енгізілген құрылымдық ақпарат, көрсеткіштерде нақты көрсетілмейтін» құрылым ретінде анықталған. Олар бұл анықтаманы біршама тұманды берген, ең қатаң анықтама бойынша тек мөлшері сақталатын (үстеме шығынының бір ғана саны) бір массив немесе кеңістік бойынша тұрақты үстеме шығыны (O(1)) бар деректер құрылымы ретінде қарастырылған. Соңғы анықтама қазіргі кезде көбірек қолданылады, ал тұрақты емес, бірақ кішкентай o(n) үстеме шығыны бар деректер құрылымы қазіргі кезде ықшам деректер құрылымы деп белгілі; оны жартылай имплицитті деп атаған. Негізгі айырмашылық – статикалық деректер құрылымы (тек оқуға арналған) және динамикалық деректер құрылымы (өзгертілуі мүмкін). Сұрыпталған тізімді массив ретінде бейнелеу сияқты қарапайым имплицитті деректер құрылымдары статикалық деректер құрылымы ретінде өте тиімді, бірақ өзгерту операцияларының (мысалы, сұрыпталған тізімде енгізу сияқты) тиімсіздігіне байланысты динамикалық деректер құрылымы ретінде тиімсіз болуы мүмкін.
A fundamental distinction is between static data structures (read only) and dynamic data structures (which can be modified). Simple implicit data structures, such as representing a sorted list as an array, may be very efficient as a static data structure, but inefficient as a dynamic data structure, due to modification operations (such as insertion in the case of a sorted list) being inefficient.
Мысалдар
Имплицитті деректер құрылымының қарапайым мысалы – массив деректер құрылымы, ол тізім үшін имплицитті деректер құрылымы болып табылады және тек ұзындығының тұрақты шығынына ие; байланысты тізімнен айырмашылығы, онда әр дерек элементімен байланысты көрсеткіш болады, ол бір элементтен келесіге қатынасты нақты көрсетеді. Сол сияқты, нөлдікпен аяқталатын жол – жолдың (символдар тізімі) имплицитті деректер құрылымы. Олар өте қарапайым саналады, себебі олар статикалық деректер құрылымдары (тек оқуға арналған) және элементтер бойынша қарапайым итерация операциясын ғана қабылдайды. Көп өлшемді масситті оның өлшемдерімен бірге бір өлшемді массив ретінде көрсету де оңай. Мысалы, m × n массивін m·n ұзындығындағы бір тізім ретінде, және m мен n сандарымен бірге көрсету (әрбір бір өлшемді кіші массивке көрсеткіштер массиві ретінде емес). Элементтердің бірдей типте болуы міндетті емес, және деректер кестесін (жазбалар тізімі) де жазық (бір өлшемді) тізім ретінде имплицитті түрде көрсетуге болады, әр өрістің ұзындығымен бірге, егер әр өріс біркелкі өлшемде болса (яғни, әр жазба үшін емес, бір өріс үшін бір өлшемді пайдалануға болады). Сорталған тізімді сортталған массив ретінде көрсету де біршама қарапайым мысал, бұл екілік іздеу арқылы логарифмдік уақытта іздеуге мүмкіндік береді. Бұл іздеу ағашымен, әсіресе екілік іздеу ағашымен салыстырылады, ол да логарифмдік уақытта іздеуге мүмкіндік береді, бірақ көрсеткіштерді қажет етеді. Сорталған массив тек статикалық деректер құрылымы ретінде тиімді, себебі тізімді өзгерту баяу болады – екілік іздеу ағашынан айырмашылығы – бірақ ағаштың кеңістіктік шығынына мұқтаж болмайды. Имплицитті деректер құрылымының маңызды мысалы – толық екілік ағашты тізім ретінде көрсету, тереңдік бойынша өсу ретімен, яғни, түбір, бірінші сол бала, бірінші оң бала, бірінші сол баланың бірінші сол баласы, және т.б. Мұндай ағаш, әсіресе, белгілі бір тереңдіктегі шежірелік ағаш үшін кездеседі, ал имплицитті көрсету – Анентафель (шежірелік кесте) деп аталады. Бұл толық екілік ағашқа (соңғы деңгейі толық емес болуы мүмкін) жалпыланады, бұл имплицитті деректер құрылымының ең жақсы белгілі мысалын береді, атап айтқанда, екілік үйінді, ол басымдық кезегі үшін имплицитті деректер құрылымы. Бұл бұрынғы мысалдарға қарағанда күрделірек, себебі ол бірнеше операцияларды орындауға мүмкіндік береді және тиімді динамикалық деректер құрылымы болып табылады (деректерді тиімді өзгертуге мүмкіндік береді): тек жоғарыға ғана емес, сонымен қатар енгізуге және шығаруға. Күрделірек имплицитті деректер құрылымдарына бип (би-аталық үйінді) жатады.
Тарих
Тізбелердің немесе мәндер кестелерінің қарапайым мысалдары тарихқа дейінгі дәуірге дейін жетеді, ал тарихи тұрғыдан қарапайым емес жасырын дерек құрылымдары кем дегенде 1590 жылы Михаэль Эйцингер шежірелерді зерттеу үшін енгізген Анентафельге жатады. Формальды компьютер ғылымында алғашқы жасырын дерек құрылымы, әдетте, екілік іздеу үшін қолданылатын реттелген тізім саналады, оны 1946 жылы Джон Маучли Мур мектебінің лекцияларында енгізді – бұл компьютерге қатысты кез келген тақырып бойынша алғашқы лекциялар жинағы. Бинарлық үйірме үйірме түрін іске асыру үшін енгізілді. Жасырын дерек құрылымы туралы түсінік , сигнал дыбысын енгізу және талдау бөлігі ретінде формальданды.