فصل چهارم: پیچیدگی زمانی ساده

چرا سرعت یک الگوریتم اهمیت دارد؟

مقایسه‌ی الگوریتم‌ها فراتر از سرعت اجرا روی یک کامپیوتر

برای حل یک مسئله‌ی مشخص، معمولاً بیش از یک الگوریتم وجود دارد. برای مثال هم جستجوی خطی و هم جستجوی دودویی می‌توانند یک عدد را در یک لیست پیدا کنند، اما کارایی آن‌ها با افزایش حجم داده بسیار متفاوت می‌شود. سؤال اصلی این است: چگونه بدون اجرای واقعی کد روی کامپیوترهای مختلف، دو الگوریتم را از نظر سرعت با هم مقایسه کنیم؟

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

برای مثال، در جستجوی خطی روی لیستی با ۱۰۰۰ عضو، در بدترین حالت باید ۱۰۰۰ مقایسه انجام دهیم. اگر اندازه‌ی لیست به ۱۰۰۰۰ برسد، تعداد مقایسه‌ها نیز به همان نسبت ۱۰ برابر می‌شود. این رابطه‌ی خطی بین اندازه‌ی ورودی و تعداد عملیات، یکی از ساده‌ترین و رایج‌ترین الگوهای پیچیدگی زمانی است که در درس بعد آن را با نماد استاندارد نشان می‌دهیم.

برای ذخیره‌ی پیشرفت و شرکت در آزمون، وارد شوید — رایگان است.