تعريف رسمي نشانه گذاري O بزرگ
برنامه اي را در نظر بگيريد كه به صورت زير پياده سازي شده است:
for(i = 0; i < n; i++) {
for(j = 0; j < n; j++) {
Simple statement
}
}
for(k = 0; k < n; k++) {
Simple statement1
…
Simple statement5
}
Simple statement6
…
Simple statement30
فرض مي كنيم هر"Simple statement" يك واحد زماني را مصرف مي كند. حلقه داخلي، دستور Simple statement را n به توان 2بار اجرا مي كند، سپس 5 دستور Simple statement
درحلقه اي با انديس kبه تعداد nبار اجرا مي شوند.سرانجام، 25دستور Simple statement اجرا مي گردند. بنابراين، داريم:
T(n)+n2+5n+25
اين عبارت، ارتباط بين زمان پردازش و n را نشان مي دهد. همان طور كه مشاهده مي كنيد، T(n) زمان پردازش را برحسب n بيان مي كند. اكنون رابطه زير را ببينيد:
T(n) = O(f(n))
اين رابطه به معناي اين است كه دو ثابت
n0وc بزرگ تر از صفر، و تابع f(n) وجود دارند،به طوري كه براي تمام n>n0خواهيم داشت cf(n)<=T(n)
.به عبارت ديگر، وقتي n به
اندازه كافي بزرگ مي شود (بزرگ تر از n0)، ثابتي مثل c وجود دارد كه براي آن، زمان
پردازش همواره كمتر يا مساوي cf(n) است.