You are on page 1of 10

‫فصل ‪۳‬‬

‫پیچیدگی الگوریتم موازی‬


‫مرور پیچیدگی الگوریتم و کالسهای پیچیدگی گوناگون‪:‬‬
‫• معرفی مفهوم زمان و بهینه سازی زمان‪/‬هزینه‬
‫• ابزار استنتاج برای آنالیز‪،‬مقایسه و میزان سازی دقیق‬
‫عناوین در این فصل‬
‫‪۳.1‬پیچیدگی مجانب‬
‫‪۳.2‬کارایی و بهینه سازی الگوریتم ها‬
‫‪ ۳.۳‬کالسهاس پیچیدگی‬
‫‪ ۳.4‬وظایف موازی سازی و کالس ‪NC‬‬
‫‪۳.5‬نمونه هایی از برنامه نویسی موازی‬
‫‪ ۳.6‬بازگشت های حلی‬
‫پیچیدگی مجانب‬
c g( n) c' g( n)

g( n)
f(n )

g( n) f(n ) f(n )

c g( n) c g( n)

n0 n n0 n n0 n
f(n ) =  f(n ) = 
f(n ) = O( g( n) )
f(n) = O(g(n)) f(n) = (g(n))
(g (n ))
f(n) = (g(n))
(g (n ))

‫نمایش گرافیکی از مفهوم پیچیدگی مجانب‬. ۳.1 ‫شکل‬

3n log n = O(n2) ½ n log2 n = (n) 3n2 + 200n = (n2)


‫‪o‬کوچک‪ o‬بزرگ‪ ،‬و رفیق آنها‬

‫نشانه گذاری‬ ‫نرخ رشد‬ ‫به عنوان مثال‬

‫))‪f(n) = o(g(n‬‬ ‫‪<‬‬ ‫)‪ T(n) = cn2 + o(n2‬به شدت کوچکتر از‬

‫))‪f(n) = O(g(n‬‬ ‫‪‬‬ ‫کوچکتر از‬ ‫)‪T(n, m) = O(n log n + m‬‬

‫))‪f(n) = (g(n‬‬ ‫‪=‬‬ ‫مساوی با‬ ‫)‪(n) = (n log n‬‬

‫))‪f(n) = (g(n‬‬ ‫‪‬‬ ‫بزرگتر از‬ ‫)‪T(n, m) = (n + m3/2‬‬

‫))‪f(n) = w(g(n‬‬ ‫‪>‬‬ ‫)‪ T(n) = w(log n‬به شدت بزرگتر از‬
‫‪‬‬
‫نرخ رشد‬
‫برای توابع معمولی‬ ‫‪Sublinear‬‬ ‫‪Linear‬‬ ‫‪Superlinear‬‬
‫‪log2n‬‬ ‫‪n1/2‬‬ ‫‪n‬‬ ‫‪n log2n‬‬ ‫‪n3/2‬‬
‫‪--------‬‬ ‫‪--------‬‬ ‫‪--------‬‬ ‫‪--------‬‬ ‫‪--------‬‬
‫جدول ‪: 3.1‬مقایسه‬ ‫‪9‬‬ ‫‪3‬‬ ‫‪10‬‬ ‫‪90‬‬ ‫‪30‬‬
‫نرخ رشدتوابع خطی‬ ‫‪36‬‬ ‫‪10‬‬ ‫‪100‬‬ ‫‪3.6 K‬‬ ‫‪1K‬‬
‫زیر خطی وفوق خطی‬ ‫‪81‬‬ ‫‪31‬‬ ‫‪1K‬‬ ‫‪81 K‬‬ ‫‪31 K‬‬
‫‪(K = 1000, M = 1 000 000).‬‬ ‫‪169‬‬ ‫‪100‬‬ ‫‪10 K‬‬ ‫‪1.7 M‬‬ ‫‪1M‬‬
‫‪256‬‬ ‫‪316‬‬ ‫‪100 K‬‬ ‫‪26 M‬‬ ‫‪31 M‬‬
‫‪361‬‬ ‫‪1K‬‬ ‫‪1 M 361 M 1000 M‬‬

‫‪n‬‬ ‫‪(n/4) log2n‬‬ ‫‪n log2n‬‬ ‫‪100 n1/2‬‬ ‫‪n3/2‬‬ ‫جدول‪:۳.۳‬بررسی اثر ثابت‬
‫‪--------‬‬ ‫‪--------‬‬ ‫‪--------‬‬ ‫‪--------‬‬ ‫‪--------‬‬
‫‪10‬‬ ‫‪20 s‬‬ ‫‪2 min‬‬ ‫‪5 min‬‬ ‫‪30 s‬‬ ‫بر روی نرخ رشد در حال‬
‫‪100‬‬ ‫‪15 min‬‬ ‫‪1 hr‬‬ ‫‪15 min‬‬ ‫‪15 min‬‬ ‫اجرا ار با استفاده از واحدهای‬
‫‪1K‬‬ ‫‪6 hr‬‬ ‫‪1 day‬‬ ‫‪1 hr‬‬ ‫‪9 hr‬‬ ‫بزرگتر زمان و ارقام گرد‬
‫‪10 K‬‬ ‫‪5 day 20 day‬‬ ‫‪3 hr‬‬ ‫‪10 day‬‬
‫‪100 K‬‬ ‫‪2 mo‬‬ ‫‪1 yr‬‬ ‫‪9 hr‬‬ ‫‪1 yr‬‬ ‫خطا‪:‬در متن جدول ‪۳.۳‬نیاز به‬
‫‪1 M 3 yr‬‬ ‫‪11 yr‬‬ ‫‪1 day‬‬ ‫‪32 yr‬‬ ‫غلط گیری است‪.‬‬
‫برخی از معمول نرخ رشد رخ داده‬
‫نشانه گذاری‬ ‫نام کالس‬ ‫یادداشت‬
‫)‪O(1‬‬ ‫ثابت‬ ‫به ندرت عملی‬
‫)‪O(log log n‬‬ ‫دوبارلگاریتم‬ ‫زیر لگاریتمی‬
‫)‪O(log n‬‬ ‫لگاریتمی‬
‫)‪O(logk n‬‬ ‫چند لگاریتمی‬ ‫‪k‬یک ثابت است‬
‫‪O(na), a < 1‬‬ ‫)‪ O(n1–e‬یا )‪e.g., O(n1/2‬‬
‫)‪O(n / logk n‬‬ ‫هنوز زیر خطی‬
‫‪-------------------------------------------------------------------------------------------------------------------------------------------------------------------‬‬
‫)‪O(n‬‬ ‫خطی‬
‫‪-------------------------------------------------------------------------------------------------------------------------------------------------------------------‬‬
‫)‪O(n logk n‬‬ ‫فوق خطی‬
‫‪O(nc), c > 1‬‬ ‫چندجملی ای‬ ‫)‪e.g., O(n1+e) or O(n3/2‬‬
‫)‪O(2n‬‬ ‫نمایی‬ ‫به طور کلی الینحل‬
‫‪2‬‬ ‫‪n‬‬
‫) ‪O(2‬‬ ‫دابل نمایی‬ ‫! نومید‬
‫بهبود وکارایی الگوریتم‬
‫ تجزیه و‬/ ‫ استخراج‬: ‫محدوده باالیی‬
‫ آرگومان های نظری‬: ‫محدوده پایین تر‬
‫تحلیل الگوریتم ها و اثبات تصحیح آنها‬
‫ و شبیه آن‬،‫مبتنی بر پهنا دو بخشی‬

Shifting lower bounds Improving upper bounds

1988 1994 1996 1991 1988 1982


Optimal
Zak’s thm. Ying’s thm. Dana’s alg. Chin’s alg. Bert’s alg. Anne’s alg.
algorithm?
(log n) (log2n) O(n) O(n log log n) O(n log n) O(n 2 )

log n log2n n / log n n n log log n n log n n2


Linear
Sublinear Superlinear
Typical complexity classes
.‫ محدوده باالیی و پایینی ممکن است در طی زمان سفت شود‬. 3.2‫شکل‬
‫تاریخچه پیچیدگی برخی از مشکالت واقعی‬
: ]04GOLU[ ‫نمونه هایی از کتاب نظریه گراف الگوریتم و نمودار‬
‫ راس گراف مسطح است‬- N ‫پیچیدگی تعیین اینکه آیا‬
‫نمایی‬ Kuratowski 1930
O(n3) Auslander and Porter 1961
Goldstein 1963
Shirey 1969
O(n2) Lempel, Even, and Cederbaum 1967
O(n log n) Hopcroft and Tarjan 1972
O(n) Hopcroft and Tarjan 1974
Booth and Leuker 1976
:‫یال‬e ،‫ راس‬n ، ‫حداکثر جریان شبکه‬:‫بیشتر از مثال پیچیده‬٬‫یک ثانیه‬
ne2  n2e  n3  n2e1/2  n5/3e2/3  ne log2 n  ne log(n2/e)
 ne + n2+e  ne loge/(n log n) n  ne loge/n n + n2 log2+e n
‫برخی از مفاهیم بهبود الگوریتم‬

‫بهینگی زمان (الگوریتم بهینه‪ ،‬به اختصار)‬


‫‪T(n, p) = g(n, p),‬وقتی که )‪ g(n, p‬کران پایین است‬

‫تعداد پردازشگرها حجم مساله‬

‫بهینگی هزینه زمان (هزینه بهینه الگوریتم ‪ ،‬به اختصار)‬


‫‪ pT(n, p) = T(n, 1) ;i.e‬بهره برداری =افزونگی =‪1‬‬

‫بهره وری هزینه زمان (الگوریتم کارآمد‪ ٬‬به اختصار)‬


‫)‪ = (1‬افزونگی = بهره برداری ‪pT(n, p) = (T(n, 1)); i.e.,‬‬
‫از مقایسه شمارش گام ها بر حذرباشید‬

‫‪Solution‬‬
‫‪Machine or‬‬
‫‪algorithm A‬‬
‫‪4 steps‬‬

‫‪20 steps‬‬
‫‪Machine or‬‬
‫‪algorithm B‬‬ ‫به عنوان مثال‪ ،‬یک الگوریتم ممکن است به ‪20‬‬
‫‪GFLOP‬ودیگری به ‪GFLOP 4‬نیاز داشته‬
‫باشد(اما تقسیم بندی شناور یک عامل ‪10‬‬
‫برابرکندتر از ضرب شناور است)‬
‫شکل ‪.۳.2‬مراحلپنج بار کمتر لزوما به‬
‫معنای پنج برابر سریعترنیست‪.‬‬
‫کالسهای پیچیدگی‬
NP-hard
(Intractable?)

NP-complete Exponential time


(e.g. the subset sum problem) (intractable problems )
NP Pspace-complete
Nondeterministic
Polynomial
Pspace
NP- Co-NP-
P
Polynomial complete NP Co-NP complete
(Tractable) ?
P = NP

‫ ادعا می‬2011‫درآگوست‬
‫ توسط‬NP  P ‫کنند که‬
‫ اشتباه‬V. Deolalikar P
‫یافت شد‬ (tractable)

‫مشاهده موارد بیشتری از‬


‫کالس های پیچیدگی‬

‫سخت‬NP - ‫ و کالس‬،‫کامل‬NP - ،NP ،P ‫دیدگاه مفهومی از‬

You might also like