حل مسائل به روش حریصانه:
با روش حریصانه مسائلی را میتوان حل کرد که در آنها تعداد ورودی وجود دارد و میخواهیم با بعضی محدودیتهای خاص زیر مجموعهای از این ورودیها را انتخاب کنیم.
هر زیرمجموعهای که شرایط و محدودیتهای مشخص شده را دارا باشد یک جواب ممکن به شمار میرود. جوابها باید طوری انتخاب شوند که بین جوابهای موجود بیشترین ارزش را داشته باشند. به این جوابها، جواب بهینه میگویند.
حل مسئله کوله پشتی کسری به روش حریصانه:
در این مسئله شیئ داریم که هدف پر کردن کوله پشتی با این اشیا میباشد بطوری که ارزش کوله پشتی ماکزیمم شود و وزن آن از محدودیت مشخص شدهای تجاوز نکند.
اگر باشد یعنی شیئ ام بین تا و که میزان یا مقدار انتخابی شیئ ام میباشد به شرطی که مجموع ارزشها یا بیشینه شود و مجموع وزنها کمتر مساوی وزن مشخص شده باشد یعنی که حداکثر وزن مجاز برای کوله پشتی میباشد.
نکته: مرتبه زمانی الگوریتم کوله پشتی کسری میباشد.
حل مسئله کدگذاری هافمن به روش حریصانه:
در این روش لیست کاراکترها را با توجه به فراوانی هر کاراکتر به صورت صعودی مرتب میکنیم سپس در هر مرحله درخت آن را رسم میکنیم. هدف این الگوریتم کاهش حجم فایلها میباشد.
گراف:
هر گراف از تعدادی رأس تشکیل شده است و هر کدام از این رأس ها یا گرهها توسط یالها به هم متصل میباشند. هدف اصلی مسئله پیدا کردن درخت پوشای مینیمال در یک گراف با استفاده از روش حریصانه میباشد.
الگوریتم راشال یا کراسکال:
در این روش در هر مرحله یالها از لیست انتخاب میشوند و به درخت اضافه میشوند (یالها به صورت صعودی مرتب شده و در لیست قرار گرفتهاند) هر یال قبل از انتخاب بررسی میشود که در درخت پوشا دور ایجاد نکند.
نکته: در هر مرحله یک جنگل ایجاد می شود.
الگوریتم پریم:
در الگوریتم پریم در هر مرحله یک درخت داریم و هر بار نزدیک ترین همسایه انتخاب میشود طوری که دور ایجاد نکند.
نکات:
- مرتبه زمانی الگوریتم پریم است.
- مرتبه زمانی الگوریتم راشال برای گراف خلوت (با تعداد یالهای کم) برابر و برای گرافهای شلوغ میباشد.
- برای گرافهای شلوغ از الگوریتم پریم و برای گرافهای خلوت از الگوریتم راشال استفاده میکنیم.