Кіріспе

Деректер құрылымдарында жіктеу. Компьютер ғылымында, жасырын дерек құрылымдары немесе кеңістікті тиімді дерек құрылымдары – негізгі немесе қажетті деректерден басқа өте аз ақпаратты сақтайтын дерек құрылымдары, яғни аз қосымша шығындарды талап ететін дерек құрылымдары. Олар "жасырын" деп аталады, себебі элементтердің орналасуы олардың арасындағы мағынаны және қатынасты көрсетеді; бұл элементтер арасындағы нақты қатынасты көрсету үшін қолданылатын сілтемелерге қарама-қарсы. "Аз шығынды" анықтамасы әртүрлі болуы мүмкін, бірақ көбінесе тұрақты шығынды білдіреді; үлкен O нотациясында – O(1) шығын. Шамалы шектеулі анықтама – бұл ықшам дерек құрылымы, ол жоғары шығындарға мүмкіндік береді.

Анықтама

Кеңістік бойынша тұрақты O(1) үстеме шығыны бар (ақпараттық теориялық ең төменгі шектен жоғары) деректер құрылымы имплицитті деректер құрылымы деп аталады. Тарихи тұрғыдан алғанда, имплицитті деректер құрылымы (және оған қатысты алгоритмдер) «деректерді сақтау тәсіліне имплицитті енгізілген құрылымдық ақпарат, көрсеткіштерде нақты көрсетілмейтін» құрылым ретінде анықталған. Олар бұл анықтаманы біршама тұманды берген, ең қатаң анықтама бойынша тек мөлшері сақталатын (үстеме шығынының бір ғана саны) бір массив немесе кеңістік бойынша тұрақты үстеме шығыны (O(1)) бар деректер құрылымы ретінде қарастырылған. Соңғы анықтама қазіргі кезде көбірек қолданылады, ал тұрақты емес, бірақ кішкентай o(n) үстеме шығыны бар деректер құрылымы қазіргі кезде ықшам деректер құрылымы деп белгілі; оны жартылай имплицитті деп атаған. Негізгі айырмашылық – статикалық деректер құрылымы (тек оқуға арналған) және динамикалық деректер құрылымы (өзгертілуі мүмкін). Сұрыпталған тізімді массив ретінде бейнелеу сияқты қарапайым имплицитті деректер құрылымдары статикалық деректер құрылымы ретінде өте тиімді, бірақ өзгерту операцияларының (мысалы, сұрыпталған тізімде енгізу сияқты) тиімсіздігіне байланысты динамикалық деректер құрылымы ретінде тиімсіз болуы мүмкін.

Мысалдар

Имплицитті деректер құрылымының қарапайым мысалы – массив деректер құрылымы, ол тізім үшін имплицитті деректер құрылымы болып табылады және тек ұзындығының тұрақты шығынына ие; байланысты тізімнен айырмашылығы, онда әр дерек элементімен байланысты көрсеткіш болады, ол бір элементтен келесіге қатынасты нақты көрсетеді. Сол сияқты, нөлдікпен аяқталатын жол – жолдың (символдар тізімі) имплицитті деректер құрылымы. Олар өте қарапайым саналады, себебі олар статикалық деректер құрылымдары (тек оқуға арналған) және элементтер бойынша қарапайым итерация операциясын ғана қабылдайды. Көп өлшемді масситті оның өлшемдерімен бірге бір өлшемді массив ретінде көрсету де оңай. Мысалы, m × n массивін m·n ұзындығындағы бір тізім ретінде, және m мен n сандарымен бірге көрсету (әрбір бір өлшемді кіші массивке көрсеткіштер массиві ретінде емес). Элементтердің бірдей типте болуы міндетті емес, және деректер кестесін (жазбалар тізімі) де жазық (бір өлшемді) тізім ретінде имплицитті түрде көрсетуге болады, әр өрістің ұзындығымен бірге, егер әр өріс біркелкі өлшемде болса (яғни, әр жазба үшін емес, бір өріс үшін бір өлшемді пайдалануға болады). Сорталған тізімді сортталған массив ретінде көрсету де біршама қарапайым мысал, бұл екілік іздеу арқылы логарифмдік уақытта іздеуге мүмкіндік береді. Бұл іздеу ағашымен, әсіресе екілік іздеу ағашымен салыстырылады, ол да логарифмдік уақытта іздеуге мүмкіндік береді, бірақ көрсеткіштерді қажет етеді. Сорталған массив тек статикалық деректер құрылымы ретінде тиімді, себебі тізімді өзгерту баяу болады – екілік іздеу ағашынан айырмашылығы – бірақ ағаштың кеңістіктік шығынына мұқтаж болмайды. Имплицитті деректер құрылымының маңызды мысалы – толық екілік ағашты тізім ретінде көрсету, тереңдік бойынша өсу ретімен, яғни, түбір, бірінші сол бала, бірінші оң бала, бірінші сол баланың бірінші сол баласы, және т.б. Мұндай ағаш, әсіресе, белгілі бір тереңдіктегі шежірелік ағаш үшін кездеседі, ал имплицитті көрсету – Анентафель (шежірелік кесте) деп аталады. Бұл толық екілік ағашқа (соңғы деңгейі толық емес болуы мүмкін) жалпыланады, бұл имплицитті деректер құрылымының ең жақсы белгілі мысалын береді, атап айтқанда, екілік үйінді, ол басымдық кезегі үшін имплицитті деректер құрылымы. Бұл бұрынғы мысалдарға қарағанда күрделірек, себебі ол бірнеше операцияларды орындауға мүмкіндік береді және тиімді динамикалық деректер құрылымы болып табылады (деректерді тиімді өзгертуге мүмкіндік береді): тек жоғарыға ғана емес, сонымен қатар енгізуге және шығаруға. Күрделірек имплицитті деректер құрылымдарына бип (би-аталық үйінді) жатады.

Тарих

Тізбелердің немесе мәндер кестелерінің қарапайым мысалдары тарихқа дейінгі дәуірге дейін жетеді, ал тарихи тұрғыдан қарапайым емес жасырын дерек құрылымдары кем дегенде 1590 жылы Михаэль Эйцингер шежірелерді зерттеу үшін енгізген Анентафельге жатады. Формальды компьютер ғылымында алғашқы жасырын дерек құрылымы, әдетте, екілік іздеу үшін қолданылатын реттелген тізім саналады, оны 1946 жылы Джон Маучли Мур мектебінің лекцияларында енгізді – бұл компьютерге қатысты кез келген тақырып бойынша алғашқы лекциялар жинағы. Бинарлық үйірме үйірме түрін іске асыру үшін енгізілді. Жасырын дерек құрылымы туралы түсінік , сигнал дыбысын енгізу және талдау бөлігі ретінде формальданды.