با سلام!
طبق توضیحات پیشین شما ابتدا یک آرایه ی دو بعدی از نوع Boolean تعریف کنید و روابط اولویت ها را براساس اون شکل بدید.
سپس بیایید کارکتر به کارکتر لیست تصادفی تولید شده رو فرخوانی کنید.
براساس هر کارکتر خونده شده که نماینده ی یک وظیفه است، سطر متناظر رو از ماتریس اولویت ها بخونید.
در این سطر به ازای هر درآیه که مقدار 1 یا True داشته باشد، باید اندیس متناظر آن را در لیست جدید فعالیت ها جست و جو کنید (بدیهی است این لیست در ابتدا خالی است.) .
اگر این اندیس در لیست وجود نداشته باشد، باید در ماتریس اولویت ها سطر متناظر این اندیس را مطابق عبارت خط بالا بررسی کنید.
این روند تا جایی ادامه می یابد تا در ماتریس اولویت ها به سطری برسیم که هیچ پیشنیازی نداشته باشد.
در نهایت اندیس سطر های پیشنیاز ها را از انتها به ابتدا در لیست جدید وارد می کنیم.
الگوریتم زمانی به پایان می رسد که رویه برای کلیه ی کارکتر های لیست تصادفی تکرار شود.
موفق باشید
آرمین
Bookmarks