همانطور که در پاسخ به سوال پیوندی ذکر شد، یک روش معمول برای داشتن پیچیدگی زمانی O(log n) الگوریتم این است که آن الگوریتم با کاهش مکرر اندازه ورودی کار می کند با یک عامل ثابت در هر تکرار.
معنای log n چیست؟
O(log N) اساساً به معنای زمان به صورت خطی بالا می رود در حالی که n به صورت تصاعدی افزایش می یابد. بنابراین اگر برای محاسبه 10 عنصر 1 ثانیه طول بکشد، محاسبه 100 عنصر 2 ثانیه، محاسبه 1000 عنصر 3 ثانیه و غیره طول می کشد. وقتی الگوریتمها را تقسیم و غلبه میکنیم، به عنوان مثال جستجوی دودویی، O(log n) است.
O و log n چیست؟
برای ورودی اندازه n، یک الگوریتم از O(n) مراحل متناسب با n را انجام می دهد، در حالی که الگوریتم دیگری از O(log(n)) مراحل را انجام می دهد. تقریباً log(n). واضح است که log(n) کوچکتر از n است، بنابراین الگوریتم پیچیدگی O(log(n)) بهتر است.
چگونه log n را محاسبه می کنید؟
ایده این است که یک الگوریتم O(log n) است اگر به جای پیمایش در ساختار 1 به 1، ساختار را بارها و بارها به نصف تقسیم کنید و تعداد عملیات ثابتی را برای هر تقسیم انجام دهید. الگوریتمهای جستجو که در آن فضای پاسخ مدام تقسیم میشود O(log n) هستند.
log n Square چیست؟
Log ^2 (
) به این معنی است که متناسب با log از log برای مشکل اندازهاست.
. Log(
)^ 2 به این معنی است کهمتناسب با مربع log.