رفتن به محتوای اصلی
بازگشت به وبلاگ

داده و اتصال فنی

مسیر بحرانی در DAG؛ مدتِ کارها را به ES وEF تبدیل کنیم

زودترین شروع و پایانِ پنج کار را بسازید؛ مسیرِ هشت‌واحدی،دو ترتیبِ معتبر،۶۴oracleِ گراف و فرضِ منابعِ نامحدود جدا کنترل می‌شوند.

مسیرِ بحرانی در یک گرافِ پیش‌نیاز، مسیرِ با بیشترینِ مجموعِ مدت است؛ صرفاً طولانی‌ترین فهرستِ نامِ کارها نیست. اگر منابعِ موازی نامحدود فرض شوند، زمانِ پایانِ زودترینِ پروژه از همین وابستگی و مدت‌ها به دست می‌آید. این تمرین ES وEF و شاهدِ مسیر را می‌سازد و فرضِ منابع را آشکار نگه می‌دارد.

گرافِ معلوم را با مدت کامل کنیم

کارهایِ A،B،C،D وE مدت‌هایِ ۳،۲،۴،۱ و۲ دارند. یال‌هایِ A→C،B→C،C→D وB→E یعنی مبدأ باید پیش از مقصد تمام شود. واحدِ زمان آموزشی است؛ زمانِ اجرایِ مدل یا کارِ واقعیِ مشتری اندازه‌گیری نشده است.

ترتیبِ توپولوژیک، رعایتِ پیش‌نیاز را ممکن می‌کند، اما جایگاهِ سومِ فهرست لزوماً زمانِ شروعِ سه نیست. مدتِ کارها نیز بخشی از داده است. در این مدل، هر کار به محضِ تمام‌شدنِ همهٔ پیش‌نیازها می‌تواند شروع شود؛ محدودیتِ تعدادِ عامل یا دستگاه نداریم.

شروع از بیشترینِ پایانِ پیش‌نیازها

ES یا زودترین شروع، بیشترینِ EFِ پیش‌نیازهاست؛ برای کارِ بدونِ پیش‌نیاز صفر است. EF از ES به‌علاوهٔ مدتِ همان کار ساخته می‌شود. جمع‌کردنِ مدتِ تمامِ پیش‌نیازهایِ موازی، به جایِ بیشینه‌گرفتن، مدلِ دیگری می‌سازد.

کارESمدتEF
A۰۳۳
B۰۲۲
C۳۴۷
D۷۱۸
E۲۲۴

C باید هر دو A وB را منتظر بماند؛ پایانِ دیرترِ آن‌ها۳ است، نه مجموعِ ۵. پایانِ پروژه بزرگ‌ترین EF، یعنی۸ است.

عددِ هشت را به یک مسیر وصل کنیم

کد همراهِ بیشینه، پیش‌نیازِ منتخب و مسیرِ منتهی به هر کار را هم نگه می‌دارد. برای D، شاهد A→C→D با مجموعِ ۳+۴+۱=۸ به دست می‌آید. مجموعِ مدتِ همین مسیر دوباره مستقل کنترل می‌شود؛ تنها برچسبِ «بحرانی» بدونِ زنجیره تحویل نمی‌دهیم.

در تساویِ پایانِ دو پیش‌نیاز، شناسهٔ واژگانیِ کوچک‌تر انتخاب می‌شود. این سیاست یکی از شاهدها را قطعی می‌کند، نه اینکه همهٔ مسیرهایِ بحرانی الزاماً یکتا باشند. یک نمونهٔ دارایِ تساوی، یک نمونهٔ با گرهٔ منزوی و یک کارِ مدتِ صفر هم جدا اجرا شده‌اند.

دو ترتیب، یک محاسبهٔ وابستگی

برای گره‌هایِ آماده، یک اجرا ترتیبِ صعودی و دیگری نزولی را انتخاب می‌کند. ترتیبِ پردازش عوض می‌شود ولی EFِ هر کار برابر می‌ماند؛ چون فرمول به پایانِ پیش‌نیازهایِ کامل‌شده وابسته است. این ویژگی برای محاسبهٔ همین مدلِ بدونِ محدودیتِ منابع کنترل شده است.

oracle همهٔ مسیرهایِ گرافِ کوچک را با DFS مستقل می‌شمارد و مجموعِ مدتِ هر مسیر را از دادهٔ اصلی می‌گیرد. بیشترینِ مسیرِ منتهی به هر گره با EF آن برابر است. تمامِ ۶۴گرافِ دارایِ یالِ رو‌به‌جلو روی چهار گره نیز با هر دو ترتیب وoracleِ مسیرها اجرا شده‌اند.

اگر فقط یک منبع داشته باشیم چه؟

جمعِ مدتِ همهٔ کارهایِ مثال۱۲ است. اگر فقط یک منبع،همهٔ کارها را بدونِ هم‌پوشانی انجام دهد، عددِ ۸ِ مدلِ موازی را نباید زمانِ پایانِ آن برنامه نامید. یافتنِ تقویمِ واقعیِ منابع، اطلاعات و قیودِ دیگری می‌خواهد؛ این کد کارهایِ واقعی را اجرا نمی‌کند.

چرخه،مدتِ منفی،مدتِ بولین،مقصدِ ناشناخته،یالِ تکراری و مجموعهٔ خالی در شش آزمون رد می‌شوند. دامنهٔ محلی۱تا۶کار و مدتِ صحیحِ صفر تا۱۰ است. کد، روشِ آموزشیِ مستقیمِ روی گره‌هاست؛ کاهشِ گرافِ دوبخشی و Javaِ منبع اجرا نشده‌اند.

مرتب‌سازیِ توپولوژیک فقط ترتیبِ سازگار می‌دهد و زمان‌بندیِ وزنیِ بازه‌ها زیرمجموعه انتخاب می‌کند. اینجا همهٔ کارهایِ معتبر با مدتِ معلوم تحلیل می‌شوند. ادامه در مبانی هوش مصنوعی؛ شاهدِ این مثال،سرعتِ محصول یا ظرفیتِ اجراییِ اپرا نیست.

فایل تمرین و منبع

کد مستقلِ تمرین و کنترل‌ها؛ Python · تمامِ ورودی‌ها و نتیجهٔ اجرای واقعیِ تمرین؛ JSON

منابع در 2026-11-04 خوانده شدند؛ این تاریخ، تاریخ انتشار منبع نیست. مثال‌ها و فایل‌های این راهنما آموزشی و ساختهٔ تحریریه‌اند.

برای این نیاز، کدام خدمت مناسب‌تر است؟

تماس و منشی، چت سایت و تحلیل مکالمه سه مسیر متفاوت‌اند. ابتدا خدمت متناسب نیازتان را انتخاب کنید.

انتخاب میان سه خدمتراهنمای شروع با تیم اپرا

برآورد هزینه