WikiDer > Ma'lumotlarning aniq tuzilishi
Yilda Kompyuter fanlari, a qisqacha ma'lumotlar tuzilishi a ma'lumotlar tuzilishi bu "ga" yaqin bo'lgan bo'shliqni ishlatadi axborot-nazariy pastki chegarasi, ammo (boshqa siqilgan vakolatxonalardan farqli o'laroq) hali ham samarali so'rovlarni bajarishga imkon beradi. Kontseptsiya dastlab Jeykobson tomonidan kiritilgan[1] kodlash bit vektorlari, (yorliqsiz) daraxtlarva planar grafikalar. Umumiydan farqli o'laroq ma'lumotlarni yo'qotmasdan siqish algoritmlar, qisqacha ma'lumotlar tuzilmalari, avval ularni dekompressiyadan chiqarmasdan, ularni joyida ishlatish qobiliyatini saqlab qoladi. Tegishli tushuncha a siqilgan ma'lumotlar tuzilishi, unda ma'lumotlar strukturasining kattaligi taqdim etilayotgan ma'lum ma'lumotlarga bog'liq.
Aytaylik bu ba'zi ma'lumotlarni saqlash uchun zarur bo'lgan bitlarning axborot-nazariy maqbul soni. Ushbu ma'lumotlarning vakili:
- yashirin agar kerak bo'lsa bo'sh joy,
- qisqacha agar kerak bo'lsa bo'sh joy bitlari va
- ixcham agar kerak bo'lsa bo'sh joy.
Masalan, foydalanadigan ma'lumotlar tuzilishi saqlash joylari ixcham, bitlar qisqacha, bitlar ham qisqacha va bitlar aniq emas.
Yashirin tuzilmalar, odatda, kirish ma'lumotlarining ba'zi bir almashtirishlari yordamida ma'lumotni saqlashga qisqartiriladi; Buning eng taniqli misoli bu uyum.
Qisqacha lug'atlar
Qisqacha indekslanadigan lug'atlar, shuningdek, deyiladi daraja / tanlang lug'atlar, shu jumladan bir qator qisqacha tasvirlash texnikasining asosini tashkil etadi ikkilik daraxtlar, -ariy daraxtlari va multisets,[2] shu qatorda; shu bilan birga qo'shimchali daraxtlar va massivlar.[3] Asosiy muammo pastki to'plamni saqlashdir koinotning , odatda bit qatori sifatida ifodalanadi qayerda iff Indekslashtiriladigan lug'at lug'atlarda odatiy usullarni (so'rovlar va dinamik holatda qo'shimchalar / o'chirishlar) hamda quyidagi operatsiyalarni qo'llab-quvvatlaydi:
uchun .
Boshqa so'zlar bilan aytganda, ga teng elementlar sonini qaytaradi holatiga qadar esa holatini qaytaradi - paydo bo'lishi .
Oddiy vakillik mavjud[4] qaysi foydalanadi xotira maydoni (asl bit qatori va an yordamchi tuzilma) va tayanchlar daraja va tanlang doimiy vaqt ichida. Buning uchun shunga o'xshash fikr ishlatiladi minimal minimal so'rovlar; cheklangan hajmdagi kichik muammoga to'xtashdan oldin doimiy rekursiyalar soni mavjud. Bit qatori bo'linadi katta bloklar hajmi bit va kichik bloklar hajmi bitlar. Har bir katta blok uchun uning birinchi bitining darajasi alohida jadvalda saqlanadi ; har bir bunday yozuv oladi jami bit saqlash joylari. Katta blok ichida boshqa katalog mavjud har birining martabasini saqlaydi tarkibida kichik bloklar mavjud. Bu erda farq shundaki, u faqat kerak har bir kirish uchun bit, chunki faqat katta bitdagi birinchi bit darajasidan farqlarni saqlash kerak. Shunday qilib, ushbu jadval jami oladi bitlar. Qidiruv jadvali keyin har qanday darajadagi so'rovlarga javobni biroz uzunlikdagi satrda saqlaydigan foydalanilishi mumkin uchun ; bu talab qiladi saqlash joyining bitlari. Shunday qilib, chunki bu yordamchi jadvallarning har biri oladi bo'sh joy, ushbu ma'lumotlar tuzilishi darajadagi so'rovlarni qo'llab-quvvatlaydi vaqt va bo'sh joy.
So'roviga javob berish doimiy vaqt ichida doimiy vaqt algoritmi quyidagilarni hisoblab chiqadi:
Amalda, qidiruv jadvali o'rniga bitli operatsiyalar va kichik bloklarda o'rnatilgan bitlar sonini topish uchun ishlatilishi mumkin bo'lgan kichik jadvallar qo'yilishi mumkin. Bu tez-tez foydalidir, chunki qisqacha ma'lumotlar tuzilmalari katta hajmdagi ma'lumotlar to'plamlarida foydalanishni topadi, bu holda keshni o'tkazib yuborish juda tez-tez uchraydi va qidiruv jadvalining yaqin CPU keshlaridan chiqarib yuborilishi ehtimoli yuqori bo'ladi.[5] Tanlangan so'rovlar uchun ishlatiladigan bir xil yordamchi tuzilishda ikkilik qidiruvni amalga oshirish orqali osongina qo'llab-quvvatlanishi mumkin daraja; ammo, bu oladi eng yomon holatda vaqt. Keyinchalik murakkab tuzilish qo'llab-quvvatlash uchun qo'shimcha saqlash bitlaridan foydalanish mumkin tanlang doimiy vaqt ichida.[6] Amalda, ushbu echimlarning aksariyati asimptotik ustunlik paydo bo'lguncha ustunlik qiladigan yozuv; keng so'z operatsiyalari va so'zlarga mos bloklardan foydalangan holda amalga oshirish ko'pincha amalda yaxshiroq ishlaydi.[7]
Entropiya bilan siqilgan lug'atlar
The borligini ta'kidlab, kosmik yondashuvni yaxshilash mumkin aniq -subets (yoki uzunlikning ikkilik qatorlari aniq bilan Va shuning uchun bu saqlash uchun zarur bo'lgan bitlar sonining pastki teoretik chegarasi . Ushbu chegaraga erishgan, ya'ni foydalanib qisqacha (statik) lug'at mavjud bo'sh joy.[8] Ushbu tuzilmani qo'llab-quvvatlash uchun kengaytirish mumkin daraja va tanlang so'rovlar va qabul qiladi bo'sh joy.[2] To'g'ri daraja Ushbu tuzilmadagi so'rovlar to'plamdagi elementlar bilan cheklangan bo'lib, minimal minimal xeshlash funktsiyalarining ishlashiga o'xshashdir. Ushbu chegarani lug'atning saqlash maydonini qisqartirish orqali bo'shliq / vaqt almashinuviga kamaytirish mumkin so'rovlarni olish bilan vaqt.[9]
Misollar
A null tugagan satr (C simli) oladi Z + 1 bo'shliq va shuning uchun yopiq. Ixtiyoriy uzunlikdagi mag'lubiyat (Paskal qatori) oladi Z + jurnal (Z) bo'shliq va shu bilan qisqacha. Agar maksimal uzunlik bo'lsa - bu amalda shunday, chunki 2 dan32 = 4 GiB ma'lumotlar juda uzun satr va 264 = 16 EiB ma'lumotlari amaldagi har qanday satrdan kattaroq - keyin uzunlikdagi satr ham yopiq bo'ladi Z + k bo'sh joy, qaerda k bu maksimal uzunlikni ifodalaydigan ma'lumotlar soni (masalan, 64 bit).
O'zgaruvchan uzunlikdagi elementlarning ketma-ketligini (masalan, satrlarni) kodlash zarur bo'lganda, turli xil imkoniyatlar mavjud. To'g'ridan-to'g'ri yondashuv uzunlik va buyumni har bir yozuvda saqlashdir - keyinchalik ularni birin-ketin joylashtirish mumkin. Bu keyingi samaradorlikni beradi, ammo topolmaydi kth-modda. Shu bilan bir qatorda, narsalarni ajratuvchi bilan tartibda joylashtirish (masalan, null tugagan satr). Bu uzunlik o'rniga ajratuvchidan foydalanadi va sezilarli darajada sekinroq, chunki butun ketma-ketlikni ajratuvchilar uchun skanerlash kerak. Ularning ikkalasi ham kosmosdan samarali. Muqobil yondashuv - bu banddan tashqari ajratish: buyumlar bir-birining ortidan joylashtirilishi mumkin, ajratuvchilarsiz. Keyinchalik, element chegaralari uzunlik ketma-ketligi sifatida saqlanishi yoki ushbu ketma-ketlikning o'rnini bosishi mumkin. Shu bilan bir qatorda, element boshlanadigan pozitsiyalarda 1-lardan va hamma joyda 0-lardan tashkil topgan alohida ikkilik satr u bilan birga kodlangan. Ushbu qatorni hisobga olgan holda funktsiya har bir elementning indeksini hisobga olgan holda qaerdan boshlanishini tezda aniqlay oladi.[10] Bu ixcham lekin emas qisqa, chunki bu 2 oladiZ bo'shliq, bu O (Z).
Yana bir misol - $ a $ ning namoyishi ikkilik daraxt: o'zboshimchalik bilan ikkilik daraxt yoqilgan tugunlarni ifodalash mumkin bitlar har qanday tugunda turli xil operatsiyalarni qo'llab-quvvatlaydi, bu o'z ota-onasini, chap va o'ng bolasini topishni va har bir doimiy vaqtda kichik daraxt hajmini qaytarishni o'z ichiga oladi. Turli xil ikkilik daraxtlarning soni tugunlar . Katta uchun , bu haqida ; Shunday qilib, bizga kamida kerak uni kodlash uchun bitlar. Shunday qilib, lo'nda binar daraxt faqat egallaydi tugun boshiga bit.
Shuningdek qarang
Adabiyotlar
- ^ Jeykobson, G. J (1988). Muayyan statik ma'lumotlar tuzilmalari (Doktorlik dissertatsiyasi). Pitsburg, Pensilvaniya: Karnegi Mellon universiteti.
- ^ a b Raman, R .; V. Raman; S. S Rao (2002). "K-ary daraxtlari va multisetslarni kodlash dasturlari bilan aniq indekslanadigan lug'atlar". Diskret algoritmlar bo'yicha o'n uchinchi yillik ACM-SIAM simpoziumi materiallari. pp.233–242. arXiv:0705.0552. CiteSeerX 10.1.1.246.3123. doi:10.1145/1290672.1290680. ISBN 0-89871-513-X.
- ^ Sadakane, K .; R. Grossi (2006). "Qisqa ma'lumotlar tuzilmalarini entropiya chegaralariga siqish" (PDF). Diskret algoritm bo'yicha o'n ettinchi yillik ACM-SIAM simpoziumi materiallari. 1230–1239 betlar. ISBN 0-89871-605-5. Arxivlandi asl nusxasi (PDF) 2011-09-29 kunlari.
- ^ Jacobson, G. (1989 yil 1-noyabr). Joyni tejaydigan statik daraxtlar va grafikalar (PDF). Kompyuter fanlari asoslari bo'yicha 30-IEEE simpoziumi. doi:10.1109 / SFCS.1989.63533. Arxivlandi asl nusxasi (PDF) 2016-03-12.
- ^ Gonsales, R .; S. Grabovskiy; V. Makkinen; G. Navarro (2005). "Saralangan va tanlangan so'rovlarni amalda bajarish" (PDF). Effektiv va eksperimental algoritmlarga bag'ishlangan 4-seminarning plakat materiallari hajmi (WEA). 27-38 betlar.
- ^ Klark, Devid (1996). Yilni pat daraxtlari (PDF) (Doktorlik dissertatsiyasi). Vaterloo universiteti.
- ^ Vigna, S. (2008). Rank / select so'rovlarini keng so'z bilan amalga oshirish (PDF). Eksperimental algoritmlar. Kompyuter fanidan ma'ruza matnlari. 5038. 154–168 betlar. CiteSeerX 10.1.1.649.8950. doi:10.1007/978-3-540-68552-4_12. ISBN 978-3-540-68548-7.
- ^ Brodnik, A .; J. I Munro (1999). "Doimiy vaqt va deyarli minimal bo'shliqda a'zolik" (PDF). SIAM J. Comput. 28 (5): 1627–1640. CiteSeerX 10.1.1.530.9223. doi:10.1137 / S0097539795294165.
- ^ Ptrashcu, M. (2008). "Succincter" (PDF). Informatika asoslari, 2008. FOCS'08. IEEE 49-yillik IEEE simpoziumi. 305-313 betlar.
- ^ Belazzougi, Jamal. "Hash, joyini o'zgartirish va siqish" (PDF).