Cheneys algoritmi - Cheneys algorithm - Wikipedia

Cheyni algoritmi, birinchi bo'lib 1970 yilda tasvirlangan ACM C.J. Cheyni tomonidan yozilgan, a to'xtatish va nusxalash usuli axlat yig'ishni kuzatib borish kompyuter dasturiy ta'minot tizimlarida. Ushbu sxemada uyum ikkita teng yarmiga bo'linadi, ulardan faqat bittasi bir vaqtning o'zida ishlatiladi. Chiqindilarni yig'ish jonli ob'ektlarni bir yarim bo'shliqdan (kosmosdan) boshqasiga (kosmosga) nusxalash orqali amalga oshiriladi, keyinchalik bu yangi uyumga aylanadi. Keyin butun eski uyum bir bo'lakka tashlanadi. Bu avvalgi to'xtatish va nusxalash texnikasini takomillashtirish.[iqtibos kerak ]

Cheyni algoritmi quyidagi narsalarni qaytarib oladi:

  • Stekdagi ob'ektga havolalar. Stekdagi ob'ektga mos yozuvlar tekshiriladi. Kosmosdagi ob'ektga ishora qiluvchi har bir ob'ektga mos yozuvlar uchun quyidagi ikkita harakatlardan biri olinadi:
    • Agar ob'ekt hali ham kosmosga ko'chirilmagan bo'lsa, bu kosmosda bir xil nusxani yaratish va keyin kosmosdagi versiyani kosmik nusxaga yo'naltiruvchi ko'rsatkich bilan almashtirish orqali amalga oshiriladi. Keyin bo'shliqdagi yangi versiyaga murojaat qilish uchun ob'ekt ma'lumotnomasini yangilang.
    • Agar ob'ekt allaqachon kosmosga ko'chirilgan bo'lsa, shunchaki kosmosdagi yo'naltiruvchi ko'rsatgichidagi ma'lumotni yangilang.
  • Kosmosdagi ob'ektlar. Axlat yig'uvchi barcha mos yozuvlarni tekshiradi kosmosga ko'chirilgan narsalarda, va havola qilingan ob'ektlar bo'yicha yuqoridagi ikkita amaldan birini bajaradi.

Barcha kosmik ma'lumotnomalar o'rganib chiqilgan va yangilanganidan so'ng, axlat yig'ish tugadi.

Algoritmga stack kerak emas va fazodan va kosmosdan tashqarida faqat ikkita ko'rsatgich kerak: bo'shliqdagi bo'sh joyning boshlanishiga ishora qiluvchi va kosmosdagi keyingi so'zga imtihon kerak. . Shu sababli, ba'zan uni "ikki barmoqli" kollektor deb atashadi - uning holatini kuzatib borish uchun faqat kosmosga ishora qiluvchi "ikkita barmoq" kerak. Ikki barmoq orasidagi ma'lumotlar bajarilishi uchun qolgan ishni anglatadi.

Ekspeditor ko'rsatgichi (ba'zida "singan yurak" deb ham ataladi) faqat axlat yig'ish jarayonida ishlatiladi; allaqachon kosmosda joylashgan ob'ektga havola topilganida (shunday qilib fazodan yo'naltiruvchi ko'rsatgichga ega), mos yozuvlar yo'naltiruvchi ko'rsatgichga mos ravishda uni yangilab, tezda yangilanishi mumkin.

Strategiya barcha jonli havolalarni, so'ngra havola qilingan ob'ektlardagi barcha havolalarni sarf qilishdan iborat bo'lganligi sababli, bu a deb nomlanadi kenglik - birinchi axlat yig'ish sxemasini nusxalash.

Namuna algoritmi

initialize () = tospace = N / 2 fromspace = 0 schedPtr = fromspace scanPtr = nima bo'lishidan qat'iy nazar - faqat yig'ish paytida ishlatiladi
spread (n) = If schedPtr + n> fromspace + tospace collect () EndIf If schedPtr + n> fromspace + tospace fail "fail yetarlicha xotira" EndIf o = spreadPtr schedPtr = schedPtr + n return o
collect () = swap (fromspace, tospace) schedPtr = tospace scanPtr = tospace - ForEach ildizini yig'gan har bir ildizni stakada skanerlash - yoki boshqa joyda root = copy (root) EndForEach - bo'shliqdagi ob'ektlarni skanerlash (shu tsikl bilan qo'shilgan moslamalarni o'z ichiga olgan holda) scanPtr 
nusxa ko'chirish (o) = Agar u yo'naltiruvchi manzilga ega bo'lmasa o '= spreadPtr assignedPtr = ayırPtr + o'lcham (o) tarkibidagi tarkibni o' ekspeditor-manzilga ko'chiring (o) = o 'EndIf return forwarding-address (o)

Yarim maydon

Cheyni o'z ishini yarim maydon axlat yig'uvchi, bu bir yil oldin R.R.Fenichel va J.C.Yochelson tomonidan nashr etilgan.

Uch rangli mavhumlikka tenglik

Cheyni algoritmi a ga misol uch rangli belgilar axlat yig'uvchi. Kulrang to'plamning birinchi a'zosi bu to'plamning o'zi. Stekka havola qilingan ob'ektlar bo'shliqqa ko'chiriladi, unda qora va kulrang to'plamlar a'zolari mavjud.

Algoritm har qanday oq rangdagi ob'ektlarni (yo'naltirgichlarsiz kosmosdagi narsalarga teng) ularni bo'sh joyga nusxalash orqali kulrang to'plamga o'tkazadi. Skanerlash koeffitsienti va bo'shliq maydonidagi bo'sh joy ko'rsatkichi o'rtasida joylashgan ob'ektlar hali ham skanerlash kerak bo'lgan kulrang to'plamning a'zolari hisoblanadi. Skaner ko'rsatkichi ostidagi ob'ektlar qora to'plamga tegishli. Ob'ektlar shunchaki skanerlash ko'rsatkichini ularning ustiga siljitish orqali qora to'plamga ko'chiriladi.

Skanerlash ko'rsatkichi bo'sh joy ko'rsatkichiga yetganda, kulrang to'plam bo'sh bo'ladi va algoritm tugaydi.

Adabiyotlar

  • Cheyni, KJ (1970 yil noyabr). "Algoritmni ixchamlashtirish uchun rekord bo'lmagan ro'yxat". ACM aloqalari. 13 (11): 677–678. doi:10.1145/362790.362798.
  • Fenixel, R.R.; Yoxelson, Jerom C. (1969). "Virtual-xotirali kompyuter tizimlari uchun LISP axlat yig'uvchisi". ACM aloqalari. 12 (11): 611–612. doi:10.1145/363269.363280.
  • Byers, Rik (2007). "Axlat yig'ish algoritmlari" (PDF). Axlat yig'ish algoritmlari. 12 (11): 3–4.
  • Qo'llanma da Merilend universiteti, kollej parki