در کارت گرافیک برای بالا بردن سرعت، پردازش بخشهای مختلف به صورت موازی انجام میشود. این پردازشها را میتوان به شکل یک درخت نشان داد. در این سوال به پردازش درختی از توابع میپردازیم. به شما یک درخت دودویی از توابع به شکل زیر داده میشود.
هر یال جهتدار به این معناست که تابعی که یال از آن خارج شده باید قبل از تابعی که یال به آن وارد شده محاسبه شود. (یا میتوان گفت تابع دوم برای انجام محاسبتش نیاز به خروجی تابع اول دارد). توابع در سه لیست f
و g
و h
در فایل functions.py
قرار دارند.(برای مثال f[0]
همان $f_1$ است.) (همهی توابع بدون آرگومان هستند برای مثال f[0]()
تابع $f_1$ را صدا میکند.)
شما باید با ۴ ترد به نامهای 1
و 2
و 3
و 4
این درخت را به ترتیب زیر محاسبه کنید.
- ابتدا با ترد $i$ام، $f_i$ محاسبه شود.
- سپس با ترد $i$ام، $g_i$ محاسبه شود.
- و در نهایت با ترد $i$ام، $h_i$ محاسبه شود.
نکته : تردهایی که توابع هر طبقه را اجرا میکنند میتوانند یکسان نباشند و صرفا نامشان 1
و 2
و 3
و 4
باشد.
دقت کنید که محاسبات هر مرحله (طبقهی درخت) باید به صورت همزمان انجام شود. (برای مثال $f_1$ و $f_2$ باید همزمان محاسبه شوند)
از شما میخواهیم برای سریعتر شدن اجرا توابع را به ترتیب ذکر شده (با کمک تردها) صدا کنید.
حال شما باید تابع solve
را بهگونهای که از شما خواسته شده تکمیل کنید.
def solve():
pass
نکات
- میتوانید فایل اولیه این سوال را از این لینک دریافت کنید.
- برای راحتی کار، به دلخواه خودتان، میتوانید توابع دیگری نیز در فایل
solution.py
تعریف و از آنها استفاده کنید.
نحوه ارسال
شما باید تابع solve
موجود در فایل solution.py
را تکمیل و سپس این فایل را ارسال کنید.
ارسال پاسخ برای این سؤال