Algoritmlarni yozish va qatlamli parallel shakllar
Oldingi bo'limning materiallaridan kelib chiqqan holda, algoritmlarning asimptotik tahlillari
kompyuter tizimida amalga oshirilganda tanlangan yoki ixtiro qilingan algoritm maqbulmi yoki yo'qligini tushunishga imkon
beradi. Shu bilan birga, optimallik faqat
algoritmni bajarish vaqtining xatti-harakati sifatida tushuniladi
, bu esa hisoblash tizimining nazariy modelidagi mavjud algoritmlarga nisbatan abadiylikka intiladigan muammoning miqyosi parametrlarida
.
Ammo asimptotik tahlil sizni solishtirishga imkon bermaydi bir xil xatti-harakatlar
amaliy nuqtai nazardan algoritm-bu tezroq va nima bo'lmasligini hisoblab chiqadi.
Muammoni o'lchov parametri bilan hal qilish uchun deylik
n bizda borva oxirgi-
asosiy algoritm
A
1
va
A
2
, RAM modelida vaqt qiymatlari aniq hisoblangan
ishlar —
100
× n va 10
8
mos ravishda × n. Nazariy baholash shuni ko'rsatadiki,
nima tezroq ko'ra o'qish algoritm qurish mumkin emas
O(n). Ta'rifga ko'ra, ikkala
algoritmimiz ham maqbuldir. Lekin eng foydalanuvchilar
algoritm muammoni hal qilish uchun foydalanish uchun afzal
A
1
, algoritm emas
A
2
.
2010 Yil, T. 2, № 3, P. 231-272
242
Va Karpov
Xuddi shunday holat ham ikki parallel algoritm bilan,
eng maqbul narxlarda paydo bo'ladi. Ular, albatta, maqbuldir, lekin ulardan qaysi biri yaxshiroq va yomonroq bo'lsa,
asimptotik tahlil sizga aytmaydi — ikkalasi ham yaxshiroq yoki yomonroq.
Asimptotik tahlil ketma-ket va parallel algoritmlar uchun
siz tanlagan juda yomon algoritmni hal qilishda yordam berishi mumkin, ammo
algoritmingiz qanchalik yaxshi ekanini aniqlay olmaydi!
Odatda, parallellikni o'rganishda asimptotik tahlil
ketma-ket algoritmlarning bevosita merosxo'rlari bo'lmagan yangi ishlab chiqilgan parallel algoritmlar uchun ishlatiladi
. Biz, birinchi navbatda, mavjud
bo'lgan ketma-ket algoritmlar va ularning parallelizatsiyasi ehtimoli bilan qiziqamiz.
Ammo parallelizatsiya qilishdan oldin,
umumiy algoritmlarning nima ekanligini va ular qanday qayd etilganligini esdan chiqarmaslik kerak — unutilgan manbalarga qaytish. Algoritm tushunchasi
matematik modellashtirish va informatika sohasidagi kelajakdagi mutaxassislarga
tanish bo'lishi kerak. Bundan tashqari, biz juda ko'p narsalarga
qiziqish bildiramizalgoritm, uni qanday yozish kerakligi,shuning uchun u turli ijrochilar tomonidan teng ravishda amalga oshirilishi mumkin.
Bir marta vermicelli paketidagi retsepti bor edi: "mahsulotlarni qaynoq suv
bilan to'ldirish va aralashtirish, pishirish tayyorligi. 100 gramm mahsulotda bir litrdan kam suyuqlik mavjud.
Bu algoritmmi va u to'g'ri yozilganmi? Algoritmlarning aksariyat determinantlari nuqtai nazaridan
-ha, bu algoritm. Misol uchun, qamchi tomonidan "algoritm
muayyan bir qator vazifalarni hal qilish uchun operatsiyalar ketma — ketligini belgilaydigan va
beshta muhim xususiyatga ega bo'lgan qoidalar to'plamidir: ekstremal, aniqlik, kirish, chiqish, samaradorlik" [qamchi,
2006].
Kirish, chiqish bormi? Albatta. Oyoq? - ertami-kechmi pishiring.
Ishonch? — "100 grammda kamida bir litr qaynoq suv". Samaradorlik? - Xo'sh, agar ular och bo'lsa, unda-
aniq. Shubhalarni keltirib chiqaradigan yagona narsa-qanday aniqlash kerak tayyorlikmi? Kimdir
vermisheldolzhna zhtzhestkoy deb hisoblaydi,va kimdir butunlay dimlangan afzal.
Agar algoritm bir xil dastlabki ma'lumotlarga turli natijalarga olib keladigan bo'lsa, unda
u yomon yozilgan bo'lishi mumkinmi?
Pishirish retsepti norasmiy kontseptsiyani — "varitdo
tayyorligi"ni taqdim etadi. Tayyor bo'lgunga qadar-bu qancha? 2 daqiqa? 4 yoki 7? Ushbu shaklda algoritmning og'zaki yozuvi
yomon — bu amalga oshirishga imkon
bermaydibir xil sharoitlarda natijalarni qayta tiklash.
Bu retsept yomon emas, bu uning rekordi yomon yoki algoritm
mutaxassis tomonidan qayd etilgan. Pishirish vaqtini aniqlashtirish yordam beradimi? Boshqa retseptni oling — guruch tayyorlash —
tarixchi va oshpazlik san'atining buyuk bilimdoni Uilyam Pokhlebkin [Pokhlebkin, 1996].
Men taklif qilaman:
"Haqiqiy nisbat: 200 g (guruch)
× 300 ml (suv). Suv-qaynoq suv, shuning uchun ortiqcha ketmaslik
uchun, har bir alohida holatda hisoblash qiyin, suvni qaynatish uchun vaqt.
Zich, naiplotneyshaya qopqoqni, bir-biriga va yirtqichlardan o'rtasida hech qanday farq qoldirib,
va maqsadida emas, balki rasteryatochno o'lchanadi bug — uchun-yuk,
hatto qaynoq eng yuqori nuqtada uni oshirish uchun ruxsat bermaydi qopqog'ida og'ir zulm. Har bir narsa aniq hisoblab
chiqilgandan so'ng, pishirish vaqti aniq bo'lishi kerak: 12 daqiqa. (10 emas, balki 15 emas, balki aniq 12). Yong'in: uch
daqiqa — kuchli, etti daqiqa-mo " tadil, qolgan vaqt zaif. Pyuresi tayyor. Lekin
ochilishga shoshilmang. Bu erda yana bir sir sizni kutmoqda. Qopqoqni
yopiq qoldiring va pyureni pishirgan vaqtga tegmang. U
o'n ikki daqiqa davomida pechda tursin. Keyin oching. Sizdan oldin-pishiq pyuresi,
sezgir. 25-50-da, bir oz tuzda bir parcha sariyog ' grammini qo'ying,
Do'stlaringiz bilan baham: |