Nega sizning kodlaringgiz " Time limit exceeded" natiasini keltirib chiqaradi ?
Time limit nima va qanday ishlaydi?
Time limit – bu dastur (yoki funksiya)ni ishlatishda unga ajratiladigan maksimal ijro vaqtidir. Masalan, onlayn musobaqalarda (online judge) sizning kodingiz testdan o‘tayotganda, u 1 soniya yoki 2 soniya ichida chiqishni (natija berishni) talab qiladi. Agar dastur belgilangan vaqtdan oshib ketsa, Time Limit Exceeded (TLE) xatosini qaytaradi.
Time limit qanday aniqlanadi?
- Musobaqa yoki onlayn sudlov (online judge) platformasi tomonidan berilgan cheklovlar asosida: masalan, testlar soni va testlarning o‘lchami (ma’lumotlar hajmi).
- Dasturni ishga tushiruvchi muhit (operatsion tizim, server tezligi, C++/Python va hokazo).
- Tipik onlayn judge-larda bir kodga nisbatan o‘rta hisobda 1–2 soniya (ba’zan 6 soniyagacha) vaqt beriladi.
Bir soniyada nechta amal bajarilishi mumkin?
Bu, asosan, dasturlash tiliga va uning kompilyatsiya-ijro mexanizmiga, shuningdek, apparat quvvatiga bog‘liq. O‘rta hisobda:
- C/C++: 1 soniyada ~ \(3*10^8\) gacha amal bajarishi mumkin.
- Python: 1 soniyada ~ \(7*10^6\) gacha (ko‘pincha kompilyatsiya qilinadigan tillarga nisbatan sekinroq).
Albatta, bu sonlar taxminiy va juda ko‘p omillarga bog‘liq: kodda ishlatiladigan kutubxonalar, algoritm murakkabligi, CPU chastotasi, keshdan foydalanish samaradorligi, interpreter vs. JIT/kompilyator kabilar.
O nima? (Big O Notation)
Algoritm murakkabligini ifodalash uchun “Big O” (katta O) notatsiyasi ishlatiladi. Uning maqsadi: algoritmning input (kiruvchi ma’lumot) hajmi oshib borgani sari vaqt (yoki xotira) sarfi qanday o‘sishini ko‘rsatish. Masalan:
- O(1) – konstanta vaqt (hajm qancha oshmasin, vaqt deyarli o‘zgarmaydi).
- O(n) – kiruvchi ma’lumot hajmi n ga bevosita proporsional.
- O(n log n) – n * log(n) ga proporsional.
- O(\(n^2\)), O(\(2^n\)), O(\(2*n\)), O(\(n!\)) va hokazo.
Big O nafaqat haqiqiy sekund yoki millisekundni emas, balki trendni ko‘rsatadi: input o‘sganda vaqt yoki xotira sarfi qanday o‘sishini taxmin qilish uchun qulay.
Xulosa
- Agar kodingiz Time Limit Exceeded (TLE) bersa, ehtimoliy sabablardan biri – algoritmingiz juda sekin yoki keraksiz takrorlanuvchi amallarni bajaryapti.
- Tezkor algoritmlarni (masalan, O(n), O(n log n) yechimlar) qidiring, sodda iteratsiyalar o‘rniga samarali ma’lumot tuzilmalardan va zamonaviy kutubxonalardan foydalaning.
- Dasturlash tili tanlovi ham hisobga olinadi: Python bilan nisbatan sekinroq bo‘lishi mumkin, ammo to‘g‘ri uslub va optimallashtirish bilan ko‘pchilik vazifalarga yetarli bo‘ladi. C++ esa odatda tezroq kompilyatsiya qilingan kodga ega bo‘ladi.