Buyurtmani saqlash muammosi - Order-maintenance problem

Yilda Kompyuter fanlari, buyurtma-texnik xizmat ko'rsatish muammosi saqlashni o'z ichiga oladi to'liq buyurtma qilingan to'plam quyidagi operatsiyalarni qo'llab-quvvatlash:

  • qo'shish (X, Y), bu umumiy tartibda darhol Y dan keyin X qo'shimchalar;
  • buyurtma (X, Y), X umumiy tartibda Y dan oldinroq yoki yo'qligini aniqlaydi; va
  • o'chirish (X), bu Xni to'plamdan olib tashlaydi.

Pol Dits ushbu muammoni hal qilish uchun ma'lumotlar tuzilishini birinchi marta 1982 yilda taqdim etgan.[1] Ushbu ma'lumotlar tuzilmasi qo'llab-quvvatlaydi qo'shish (X, Y) yilda (ichida.) Big O notation )amortizatsiya qilingan vaqt va buyurtma (X, Y) doimiy vaqt ichida, ammo yo'q qilishni qo'llab-quvvatlamaydi. Athanasios Tsakalidis foydalanishda BB [a] daraxtlari bir xil ishlash chegaralariga ega bo'lib, ular ichida suyaklarni yo'q qilishni qo'llab-quvvatlaydi va qo'shish va o'chirish ko'rsatkichlari yaxshilandi bilvosita bilan amortizatsiya qilingan vaqt.[2] Dietz va Daniel Sleator 1987 yilda eng yomon doimiy vaqtga qadar yaxshilanganligini e'lon qildi.[3] Maykl Bender, Richard Koul va Jek Zito 2004 yilda sezilarli darajada soddalashtirilgan alternativalarni nashr etishdi.[4] Bender, Fineman, Gilbert, Kopelowits va Montes 2017 yilda deamortizatsiya qilingan echimni nashr etishdi.[5]

Buyurtmani saqlash bo'yicha samarali ma'lumotlar tuzilmalari ko'plab sohalarda, shu jumladan dasturlarga ega ma'lumotlar strukturasining qat'iyligi,[6] grafik algoritmlari[7][8] va xatolarga chidamli ma'lumotlar tuzilmalari.[9]

Ro'yxat yorlig'i

Buyurtmani parvarish qilish muammosi bilan bog'liq muammoro'yxatni belgilash muammosi unda o'rniga buyurtma (X, Y) operatsiya echimida tamsayılar olamidan yorliqlar tayinlanishi kerak To'plam elementlariga shunday qilib X umumiy tartibda Y dan oldin keladi va agar faqat X ga Y dan kam yorliq berilgan bo'lsa, u ham operatsiyani qo'llab-quvvatlashi kerak. yorliq (X) har qanday tugunning yorlig'ini qaytarish X. E'tibor bering buyurtma (X, Y) oddiygina taqqoslash orqali amalga oshirilishi mumkin yorliq (X) va yorliq (Y) Shunday qilib, ro'yxat yorlig'i muammosining echimi darhol buyurtmani parvarish qilish muammosiga olib keladi. Darhaqiqat, texnik xizmat ko'rsatishda muammolarni hal qilishning ko'pgina echimlari - bu ishlashni yaxshilash uchun ma'lumotlar tuzilishini bilvosita darajasiga ega bo'lgan ro'yxat yorlig'i bilan bog'liq muammolarni hal qilish. Buning misolini quyida ko'rib chiqamiz.

Samaradorlik uchun bu o'lcham uchun maqbuldir elementlar soni bilan chegaralangan ma'lumotlar tarkibida saqlanadi. Qaerda bo'lsa ichkariga kirishni talab qiladi muammo sifatida tanilgan to'plamga xizmat ko'rsatish yoki zich ketma-ket fayllarni parvarish qilish problem.Elementlarni faylga yozuvlar va yorliqlarni har bir element saqlanadigan manzil sifatida ko'rib chiqing. So'ngra qadoqlangan qatorlarni parvarish qilish muammosini samarali hal qilish, faylning o'rtasiga noasemptotik bo'sh joy bo'lgan yozuvlarni o'chirish va o'chirishga imkon beradi.[10][11][12][13][14] Ushbu foydalanishda yaqinda qo'llaniladigan ma'lumotlar tuzilmalari mavjud[15]va joyda eng maqbul bo'lmagan tartibda saralash.[16]

Biroq, ba'zi cheklovlar ostida, chiziqli koinotlar bilan ro'yxat yorlig'i muammosining echimlarini qo'shishda pastki darajalar topildi[17] Holbuki, biz quyida koinot koinotiga ega bo'lgan yechim o'z ichiga sineratsiyalarni amalga oshirishi mumkinligini ko'ramiz vaqt.

Ro'yxat yorlig'i va ikkilik qidiruv daraxtlari

Buyurtmani saqlash sahifasida tasvirlangan yo'l yorliqlariga misol.
Ushbu ikkilik daraxtdagi X ning yo'l yorlig'i 0221 ni tashkil etadi, bu 25 butun sonining 3-asosli vakili.

Raqamdagi polinom kattaligi koinotdagi ro'yxat yorlig'i umumiy tartibdagi elementlar a-da muvozanatni saqlash muammosiga bog'liq ikkilik qidiruv daraxti. Ikkilik qidiruv daraxtining har bir X tuguni bevosita daraxt ildizidan uning yo'liga to'g'ri keladigan antinger bilan belgilanadi. Bu butun sonni oling yo'l yorlig'i ning X-ni tanlang va quyidagicha belgilang bu yo'lda chapga va o'ngga tushish ketma-ketligi bo'ling. Masalan, agar X daraxtning ildizidagi o'ng bolasining o'ng bolasi bo'lsa. Keyin X butun son bilan belgilanadi tayanch 3 vakili har birining paydo bo'lishini almashtirish orqali beriladi yilda har bir hodisani almashtirib, 0 bilan yilda 2 bilan va natijada olingan ipning oxiriga 1 qo'shiladi. Keyin oldingi misolda X ning yo'l yorlig'i02213 Bu 10-asosda 25 ga teng. E'tibor bering, yo'l belgilarida daraxtlar tartibi saqlanib qoladi va shuning uchun doimiy ravishda buyurtma so'rovlariga javob berish uchun foydalanish mumkin.

Agar daraxt balandligi bo'lsa keyin bu butun sonlar koinotdan keladi . Agar daraxt bo'lsa o'z-o'zini muvozanatlash shuning uchun u balandlikni kattaroq tutadi u holda koinotning hajmi polinom hisoblanadi .

Shuning uchun, ro'yxatni yorliqlash muammosini har bir tugun uchun yo'l belgilari bilan kengaytirilgan ro'yxatdagi elementlarda ikkilangan qidiruv daraxtini saqlash orqali hal qilish mumkin. Biroq, daraxtning har bir muvozanatlashtiruvchi operatsiyasi ushbu yo'l yorliqlarini ham yangilashi kerak bo'lganligi sababli, har bir o'z-o'zini muvozanatlashtiradigan daraxt ma'lumotlari tuzilishi ushbu dastur uchun mos emas, masalan, o'lchamdagi kichik daraxt bilan tugunni aylantirishga e'tibor bering., odatdagi vaziyatlarda doimiy vaqt ichida amalga oshirilishi mumkin, buni talab qiladi yo'l yorlig'i yangilanishlari. Inpartikulyar, agar aylanayotgan tugun ildiz bo'lsa, unda aylanish butun daraxtning kattaligiga to'g'ri keladi. Shu vaqt ichida butun daraxtni qayta qurish mumkin edi. Qayta muvozanatlash paytida nomaqbul sonli yangilanishlarni keltirib chiqaradigan o'z-o'zini muvozanatlashtiradigan ikkilik qidiruv daraxti ma'lumotlar tuzilmalari mavjudligini quyida ko'rib chiqamiz.

Ma'lumotlar tarkibi

Ro'yxatni belgilash masalasini elementlar sonidagi o'lcham polinomlari koinoti yordamida hal qilish mumkin kattalashtirish yo'li bilan aechki daraxti yuqorida tavsiflangan yo'l yorliqlari bilan. Yovuz daraxtlar o'zlarining barcha muvozanatlarini subtretlarni tiklash orqali amalga oshiradilar. Qabul qilgandan beri kichik o'lchamdagi daraxtni qayta tiklash vaqti, ushbu kichik daraxtni qayta nomlash qayta tiklanganidan keyin muvozanatlash operatsiyasining asimptotik ko'rsatkichini o'zgartirmaydi.

Buyurtma

Ikkita X va Y tugunlari berilgan, buyurtma (X, Y) ularning yo'l yorliqlarini taqqoslash orqali ularning tartibini belgilaydi.

Kiritmoq

X uchun yangi tugun va Y tuguniga ko'rsatgich berilgan, qo'shish (X, Y) odatdagidek Y dan keyin darhol X qo'shimchasini kiritadi. Agar muvozanatni saqlash operatsiyasi zarur bo'lsa, odatdagi echki daraxti uchun tegishli subtree qayta tiklanadi. Keyin ushbu kichik daraxt chuqurlikdan o'tib, uning har bir tugunining yo'l yorliqlari yangilanadi. Yuqorida tavsiflanganidek, bu asimptotik ravishda odatdagi qayta qurish operatsiyasidan ko'proq vaqt talab qilmaydi.

O'chirish

O'chirish qo'shimchaga o'xshash tarzda amalga oshiriladi. X tugunini bog'langan holda, o'chirish (X) odatdagidek X ni olib tashlaydi. Qayta qurish bo'yicha har qanday operatsiya reubiltsubtree-ning qayta nomlanishi bilan amalga oshiriladi.

Tahlil

Yo'l yorlig'i bilan ko'paytirilgan bir echki daraxtini qayta muvozanatlash ko'rsatkichi haqida yuqoridagi dalillardan kelib chiqadiki, bu ma'lumotlar tuzilishini kiritish va yo'q qilish ko'rsatkichlari odatdagi echki daraxtiga qaraganda asimptotik emas. Keyin qo'shimchalar va echimlar kerak qorovul daraxtlarida amortizatsiya qilingan vaqt, ushbu ma'lumotlar tuzilishi uchun ham xuddi shunday.

Bundan tashqari, a parametriga ega bo'lgan gunoh echkisi daraxti maksimal balandlikni saqlaydi , yo'l yorlig'i eng ko'p qirqish hajmi . Ning odatda qiymati uchun unda yorliqlar ko'pi bilan.

Albatta, ikkita tugunning tartibini ularning yorliqlarini taqqoslab doimiy vaqt ichida aniqlash mumkin. Yaqindan tekshirish shuni ko'rsatadiki, bu juda katta . Xususan, agar themachine-ning so'z hajmi bo'lsa bit, keyin odatda u eng ko'p murojaat qilishi mumkin tugunlari shunday . Shundan kelib chiqadiki, koinotning kattaligi eng katta darajada va shuning uchun teglar doimiy son bilan (eng ko'pi bilan) ifodalanishi mumkin ) bitlar.

Ro'yxat yorlig'ida pastroq

Ko'rsatilganidek, elementlar sonidagi koinot polinomiga oid ro'yxatni belgilash muammosiga har qanday echim qo'shish va o'chirish ko'rsatkichlaridan yaxshiroq bo'lmaydi .[18] Keyinchalik, ro'yxat yorlig'i uchun yuqoridagi echim asemptotik jihatdan eng maqbul hisoblanadi. Aytgancha, bu ham echki daraxtiga qo'shish yoki yo'q qilish amortizatsiya qilingan muvozanatlash vaqtining pastki chegarasi.

Biroq, bu pastki chegara order-maintenanceproblemga taalluqli emas va yuqorida aytib o'tilganidek, barcha buyurtmalar bo'yicha operatsiyalar bo'yicha doimiy vaqt ko'rsatkichini beradigan ma'lumotlar tuzilmalari mavjud.

O (1) bilvosita orqali amortizatsiya qilingan qo'shimchalar

Indirection - bu ma'lumotlar tuzilmalarida qo'llaniladigan metodika, bu muammo samaradorlikni oshirish maqsadida ma'lumotlar strukturasining ko'p darajalariga bo'linadi. Odatda, o'lchamdagi muammo bo'linadi o'lchamdagi muammolar . Forexample, ushbu texnikada ishlatiladi y-tez harakat qiladi. Ushbu strategiya, shuningdek, yuqorida tavsiflangan ma'lumotlar tuzilmasi qo'shilishini va o'chirilishini doimiy amortizatsiya qilingan vaqtgacha yaxshilash uchun ishlaydi. Infact, ushbu strategiya list-labeling muammolarini har qanday echimi uchun ishlaydi amortizatsiya qilingan qo'shish va o'chirish vaqti.

Buyurtmani saqlash muammosini daraxt asosida echishda bilvosita tasvirlash.
Bilvosita bilan buyurtma-texnik ma'lumotlar tuzilishi. Jami buyurtma elementlari saqlanadi kattalikdagi qo'shma sub-ro'yxatlar , ularning har birining gunoh echkisi daraxtida vakili bor.

Ma'lumotlarning yangi tarkibi juda kattalashgan yoki kichraygan har doim butunlay qayta tiklanadi. Ruxsat bering oxirgi buyurtma qilinganida, umumiy buyurtma elementlarining soni. Har doim o'zgarmas bo'lsa, ma'lumotlar tuzilishi qayta tiklanadi qo'shish yoki o'chirish bilan buzilgan. Qayta qurish chiziqli vaqt ichida amalga oshirilishi mumkinligi sababli, bu qo'shimchalar va o'chirilishlarning amortizatsiya qilingan ishlashiga ta'sir qilmaydi.

Qayta qurish jarayonida umumiy tartib elementlari bo'linadi har bir o'lchamdagi kontiguoussublists . Yo'l bilan belgilangan manzil echki daraxti sublistlarning har birini asl ro'yxat tartibida ifodalaydigan tugunlar to'plamida qurilgan. Har bir pastki ro'yxat uchun uning elementlari bir-biriga bog'langan ro'yxati har bir element bilan daraxtda o'z vakili uchun apointer bilan birga mahalliy tamsayıni saqlash uchun qurilgan. Ushbu mahalliy yorliqlar daraxtda ishlatiladigan teglardan mustaqil bo'lib, bir xil pastki ro'yxatning har qanday ikkita elementini taqqoslash uchun ishlatiladi. Sublistning elementlariga mahalliy yorliqlar berilgan , ularning asl ro'yxat tartibida.

Buyurtma

X va Y pastki ro'yxat tugunlarini hisobga olgan holda, buyurtma (X, Y) birinchi navbatda ikkita tugun samesublistda ekanligini tekshirish orqali javob berilishi mumkin. Agar shunday bo'lsa, ularning tartibini ularning mahalliy belgilarini taqqoslash yo'li bilan aniqlash mumkin. Aks holda ularning vakillarining treylerdagi yo'l yorliqlari taqqoslanadi. Bu doimiy vaqtni talab qiladi.

Kiritmoq

X uchun yangi ro'yxat tuguni va Y ro'yxat tuguniga ko'rsatgich berilgan,qo'shish (X, Y) Y ning pastki ro'yxatiga Y dan keyin darhol X qo'shiladi. Agar pastki ro'yxatning oxiriga X qo'shilsa, unga mahalliy yorliq beriladi , qayerda Y ning mahalliy yorlig'i; aks holda, iloji bo'lsa, uning qo'shnilarining mahalliy yorliqlari o'rtacha sathi bilan etiketlanadi va bu oson ish doimiy vaqtni oladi.

Qiyin holatda, X-ning qo'shnilari bir-biriga yaqin mahalliy yorliqlarga ega va pastki ro'yxatni qayta tiklash kerak. Biroq, bu holda hech bo'lmaganda birinchi ro'yxatdan o'tganidan beri sublistga elementlar qo'shildi. Keyin biz ro'yxatni qayta tiklash uchun chiziqli vaqtni sarflashimiz mumkin va ehtimol kichikroq ro'yxatlarga ajratish amortizatsiya qilingan xarajatlarni doimiy qiymatidan ta'sir qilmasdan.

Agar pastki ro'yxat hajmi bo'lsa keyin biz uni ajratamiz kattalikdagi qo'shma sub-ro'yxatlar , har bir yangi pastki ro'yxatni yuqorida aytib o'tilganidek mahalliy ravishda belgilash va sublistning har bir elementini daraxtga kiritiladigan yangi vakil tuguniga ko'rsatish. Bunga .. Vaqt ketadi sublistlarni tuzish vaqti. Bo'sh sublistlarga yo'l qo'ymasligimiz sababli, eng ko'pi bor ulardan va shu tariqa vakilni daraxtga kiritish mumkin vaqt. Demak, bu kerak daraxtga barcha yangi vakillarni kiritish uchun vaqt.

O'chirish

O'chirilishi kerak bo'lgan X ro'yxat tuguni berilgan, o'chirish (X) doimiy ravishda Xni pastki ro'yxatidan olib tashlaydi. Agar bu subslistni bo'sh qoldirsa, biz ushbu sublistning vakilini daraxtdan olib tashlashimiz kerak. Hech bo'lmaganda birinchi ro'yxatdan o'tganidan beri elementlar pastki ro'yxatdan o'chirildi, biz sarflashimiz mumkin O'chirishning amortizatsiya qiymatiga doimiy ravishda ta'sir qilmasdan vakili olib tashlash uchun vaqt.

Shuningdek qarang

Adabiyotlar

  1. ^ Dietz, Pol F. (1982), "Bog'langan ro'yxatdagi tartibni saqlash", Hisoblash nazariyasi bo'yicha 14-yillik ACM simpoziumi materiallari (STOC '82), Nyu-York, NY, AQSh: ACM, 122–127 betlar, doi:10.1145/800070.802184, ISBN  978-0897910705.
  2. ^ Tsakalidis, Athanasios K. (1984), "Umumlashtirilgan bog'langan ro'yxatda tartibni saqlash", Acta Informatica, 21 (1): 101–112, doi:10.1007 / BF00289142, JANOB  0747173.
  3. ^ Dits, P .; Sleator, D. (1987), "Ro'yxatdagi tartibni saqlashning ikkita algoritmi", Hisoblash nazariyasi bo'yicha 19 yillik ACM simpoziumi materiallari (STOC '87), Nyu-York, NY, AQSh: ACM, 365-372 betlar, doi:10.1145/28395.28434, ISBN  978-0897912211. To'liq versiyasi,Texnik. Rep. CMU-CS-88-113, Karnegi Mellon universiteti, 1988 yil.
  4. ^ A. Bender, Maykl va Koul, Richard va Zito, Jek. (2004). Ro'yxatdagi tartibni saqlash uchun ikkita soddalashtirilgan algoritm. https://www.researchgate.net/publication/2865732_Two_Simplified_Algorithms_for_Maintaining_Order_in_a_List Qabul qilingan 2019-06-14
  5. ^ "Faylga xizmat ko'rsatish: Shubha tug'ilganda, tartibni o'zgartiring!", M. Bender, J. Fineman, S. Gilbert, T. Kopelowitz, P. Montes. Yigirma sakkizinchi yillik ACM-SIAM diskret algoritmlari bo'yicha simpoziumi materiallari. eISBN  978-1-61197-478-2. https://doi.org/10.1137/1.9781611974782.98 Qabul qilingan 2019-06-15
  6. ^ Driskoll, Jeyms R.; Sarnak, Nil; Sleator, Daniel D.; Tarjan, Robert E. (1989), "Ma'lumotlar tuzilmalarini barqaror qilish", Kompyuter va tizim fanlari jurnali, 38 (1): 86–124, doi:10.1016/0022-0000(89)90034-2, JANOB  0990051.
  7. ^ Eppshteyn, Devid; Galil, Zvi; Italiano, Juzeppe F.; Nissenzweig, Amnon (1997), "Sparsifikatsiya - dinamik grafik algoritmlarini tezlashtirish texnikasi", ACM jurnali, 44 (5): 669–696, doi:10.1145/265910.265914, JANOB  1492341.
  8. ^ Katriel, Irit; Bodlaender, Xans L. (2006), "Onlayn topologik buyurtma", Algoritmlar bo'yicha ACM operatsiyalari, 2 (3): 364–379, CiteSeerX  10.1.1.78.7933, doi:10.1145/1159892.1159896, JANOB  2253786.
  9. ^ Aumann, Yonatan; Bender, Maykl A. (1996), "Xatolarga bardoshli ma'lumotlar tuzilmalari", Kompyuter fanlari asoslari bo'yicha 37-yillik simpozium materiallari (FOCS 1996), 580-589 betlar, doi:10.1109 / SFCS.1996.548517, ISBN  978-0-8186-7594-2.
  10. ^ Itay, Alon; Konxaym, Alan; Rodeh, Maykl (1981), "Dastlabki navbatlarning siyrak jadvalini amalga oshirish", Avtomatika, tillar va dasturlash: Sakkizinchi kollokvium akr (Akko), Isroil 13-17 iyul 1981 yil, Kompyuter fanidan ma'ruza matnlari, 115, 417-431 betlar, doi:10.1007/3-540-10843-2_34, ISBN  978-3-540-10843-6.
  11. ^ Uillard, Dan E. (1981), Bloklangan ketma-ket fayllarga yozuvlarni kiritish va o'chirish, Texnik hisobot TM81-45193-5, Bell Laboratories.
  12. ^ Uillard, Dan E. (1982), "Dinamik muhitda zich ketma-ketlikdagi fayllarni saqlash (Extended Abstract)", Hisoblash nazariyasi bo'yicha 14-ACM simpoziumi materiallari (STOC '82), Nyu-York, Nyu-York, AQSh: ACM, 114-121 betlar, doi:10.1145/800070.802183, ISBN  978-0897910705.
  13. ^ Uillard, Dan E. (1986), "Yozuvlarni zich ketma-ketlikdagi fayllarga kiritish va o'chirish uchun eng yaxshi algoritmlar", Ma'lumotlarni boshqarish bo'yicha 1986 yilgi ACM SIGMOD xalqaro konferentsiyasi materiallari (SIGMOD '86), SIGMOD Record 15 (2), Nyu-York, NY, AQSh: ACM, 251–260 betlar, doi:10.1145/16894.16879, ISBN  978-0897911917.
  14. ^ Uillard, Dan E. (1992), "Eng yomon holatda ketma-ket buyurtma qilingan faylga qo'shimchalar va o'chirishlarni bajarish uchun zichlikni boshqarish algoritmi", Axborot va hisoblash, 97 (2): 150–204, doi:10.1016 / 0890-5401 (92) 90034-D.
  15. ^ Bender, Maykl A.; Demain, Erik D.; Farax-Kolton, Martin (2005), "Keshni unutadigan B daraxtlari" (PDF), Hisoblash bo'yicha SIAM jurnali, 35 (2): 341–358, doi:10.1137 / S0097539701389956, JANOB  2191447.
  16. ^ Francheschini, Janni; Geffert, Viliam (2005), "O bilan joyida tartiblash (n jurnaln) taqqoslashlar va O (n) harakat qiladi ", ACM jurnali, 52 (4): 515–537, arXiv:cs / 0305005, doi:10.1145/1082036.1082037, JANOB  2164627.
  17. ^ Dietz Pol F.; Zhang, Ju (1990), "Monotonik ro'yxat yorlig'ining pastki chegaralari", SWAT 90 (Bergen, 1990), Kompyuter fanidan ma'ruza matnlari, 447, Berlin: Springer, 173–180-betlar, doi:10.1007/3-540-52846-6_87, ISBN  978-3-540-52846-3, JANOB  1076025.
  18. ^ Dietz Pol F.; Seiferas, Joel I.; Zhang, Ju (1994), "On-layn monotonik ro'yxatni etiketkalashning qat'iy chegarasi", Algoritm nazariyasi - SWAT '94 (Orhus, 1994), Kompyuter fanidan ma'ruza matnlari, 824, Berlin: Springer, 131–142 betlar, doi:10.1007/3-540-58218-5_12, ISBN  978-3-540-58218-2, JANOB  1315312.

Tashqi havolalar