Publicité

BIg O notations.pptx

10 Mar 2023
Publicité

Contenu connexe

Publicité

BIg O notations.pptx

  1. Mavzu: Algoritmlarning murakkablik tushunchasi. Reja: 1. Algoritmlarning murakkabligini baholash mezonlari 2. Vaqt va xotira bo`yicha samaradorlik 3. Big O notations
  2. Big O notation - Algoritm samaradorligini hisoblash  Big O notation - bu algoritm qancha vaqt ishlashi haqida gapirish uchun foydalanadigan til . Muammoga turli yondashuvlarning samaradorligini shu tarzda solishtiramiz.  Tasavvur qiling-a, sizda 10 ta ob'ekt ro'yxati bor va siz ularni tartibda saralashni xohlaysiz. Buni amalga oshirish uchun siz foydalanishingiz mumkin bo'lgan bir qancha algoritmlar mavjud, ammo barcha algoritmlar bir xil tarzda tuzilgan emas.  Bu algoritmlarni solishtirishning oddiy usuli va ular qancha vaqt ishlashini anglatadi.
  3. Big O notations  Algoritm samaradorligining soddalashtirilgan tahlili. U quyidagilarni hisobga oladi: 1. Kirish hajmi bo'yicha murakkablik, N 2. Mashina mustaqilligi (mashinalarning apparatini hisobga olmaydi) 3. Kompyuterning asosiy bosqichlari 4. Vaqt va joy ( ishchi xotira ) O tartibini bildiradi (nem. " Ordnung von"). n - kirishni ifodalash uchun zarur bo'lgan bit birliklaridagi kirish hajmi
  4. Umumiy qoidalar  Konstantalarga e'tibor bermang (faqat uzoq muddatli o'sishni hisobga oladi)  5n O(n) ga aylanadi  Shartlar boshqalar tomonidan hukmronlik qiladi  O(1) < O( logn ) < O(n) < O( nlogn ) < O(n 2 ) < O(2 n ) < O(n!) Pastroq tartib shartlariga e'tibor bermang
  5. Doimiy vaqt algoritmlari - O(1)  Kirish hajmi uchun olingan vaqt  Doimiy vaqt algoritm berilgan vazifani bajarish uchun bajarishi kerak bo'lgan operatsiyalar soni kirish hajmiga bog'liq emasligini anglatadi.  Big O notatsiyasida biz quyidagi O(1) dan foydalanamiz.  Vazifani bajarish uchun qancha ma'lumot qo'shishingizdan qat'i nazar, vaqt miqdori o'zgarmaydi.  Algoritmning eng tezkor turi
  6. Doimiy vaqt O(1) “Big oh of one” X = 10 + (5 * 2);  Kirish hajmi (X) mustaqil muhim emas kod/algoritmni qayta ishlashga ta'sir qilmaydi  Demak, bu O(1)
  7. Doimiy vaqt O(1) “Big oh of one”  X = 10 + (5 * 2);  Y = 20 - 2;  System.out.print ("x + y");  Umumiy vaqt = O(1) + O(1) + O(1) = 3 * O(1)  Biz konstantalarni tashlaganimiz uchun biz bu kodni chaqiramiz  O(1) “Big oh of one”
  8. Doimiy vaqt algoritmlari - O(1) Misol 1 2 int n = 5000; System.out.println ("Hey - sizning kiritishingiz: " + n); 1 2 3 4 int n = 5000; System.out.println ("Sizning kiritishingiz: " + n); System.out.println ("Yaxshi narsalar bilan: " + n); System.out.println ("Va yana: " + n); Yuqoridagi n nima ekanligi muhim emas . Ushbu kod qismi ishlashi uchun doimiy vaqt talab etiladi. Bu n ning o'lchamiga bog'liq emas . Ushbu ikkita kod bitini ko'rib chiqing:
  9. Logarifmik vaqt algoritmlari - O(log n)  Logarifmik vaqt algoritmlarning ishlash vaqti kirish hajmining logarifmiga proportsional ekanligini anglatadi. Big O belgisida bu odatda O (log n) sifatida ifodalanadi.  Doimiy vaqtdan keyin keyingi eng tez  Bo'l va zabt et strategiyasini o'z ichiga olgan har qanday kod  Ikkilik qidiruv algoritmi O(log n)
  10. Logarifmik vaqt algoritmlari - O(log n) - Misol 1 2 3 int n = 8; for( int i = 1; i < n; i = i * 2){ System.out.println ("Hey - men ko'rish bilan bandman: " + i ); } 1 2 3 Hey - Men ko'rish bilan bandman: 1 Hey - Men ko'rish bilan bandman: 2 Hey - Men ko'rish bilan bandman: 4 n 8 bo'lganligi sababli , chiqish quyidagicha bo'ladi: Bizning oddiy algoritmimiz log 2 (8) = 3 marta ishladi . O (log n) Bu erda muhim narsa shundaki, ish vaqti kirishning logarifmiga mutanosib ravishda o'sadi (bu holda, 2- bazaga log): Kirish ma'lumotlarining bir qismini e'tiborsiz qoldiradigan har qanday algoritm O (log (n)) deb hisoblanishi mumkin. N = Kirish qiymati, masalan, massivdagi elementlar soni Logarifm - asosiy tamoyillar 8 ni olish uchun nechta 2 ni ko'paytiramiz? 2x2x2=8 Shunday qilib, logarifm 3 ga teng Biz buni shunday yozamiz log 2 (8) = 3
  11. Lineer vaqt algoritmlari - O(n)  Keyingi eng tezkor algoritm  Chiziqli vaqt - bu vaqt bo'yicha ketma-ket ko'rinadigan tushuncha bo'lib, biror narsaga olib boradigan voqealar silsilasi: boshlanishi va oxiri.  Uning kirish hajmiga to'g'ridan-to'g'ri proportsional ravishda
  12. Chiziqli vaqt O(n) misoli  Y = 5 + (20 * 20) //O (1)  Diapazondagi x uchun (O, n); //O(N)  printx;  Umumiy vaqt = O(1) + O(N) = O(N)  Chiziqli vaqt (O(N)) doimiy vaqtdan (O(1)) ancha uzoq davom etganligi sababli, u hukmronlik qiladi va samarali ravishda ahamiyatsiz bo'lib qoladi.  Bu sikl 0 dan n gacha raqamlarni chop etadi
  13. Chiziqli vaqt algoritmlari - O(n) - Misol 1 2 3 for( int i = 0; i < n; men ++) { System.out.println ("Hey - men ko'rish bilan bandman: " + i ); } Bu kod N marta ishlaydi. Biz buni amalga oshirish uchun qancha vaqt ketishini aniq bilmaymiz - va biz bu haqda tashvishlanmaymiz. uning kiritish hajmida chiziqli bo'ladi , n. Algoritmlarni chiziqli ravishda quyidagicha belgilaymiz: O(n). 1 2 3 4 5 for( int i = 0; i < n; men ++) { System.out.println ("Hey - men ko'rish bilan bandman: " + i ); System.out.println ("Hmm.. Yana bir ko'rib chiqamiz: " + i ); System.out.println ("Va boshqasi: " + i ); }
  14. Polinomli vaqt algoritmlari - O(n p )  Kvadrat vaqt algoritmlari sifatida ham tanilgan  Odatda nested for looplar bilan belgilanadi.  Agar massivingizda 10 ta element bo'lsa va algoritmingiz Polinom vaqtida ishlayotgan bo'lsa, siz 10 * 10 = 100 qadamni bajarasiz.
  15. Polinomli vaqt algoritmlari – O(n p ) - Misol  Diapazondagi x uchun (O, n); //O(N)  printx;  (0, n) diapazondagi x uchun; //O(N 2 )  (0, n) diapazonidagi y uchun; Chop etish x * y; // O(1) Uchta ichki halqalar bormi? O(N3 ) to'rt? O(N 4 ) va hokazo
  16. Polinomli vaqt algoritmlari – O(n p ) - Misol  8 2 = 64 marta ishlaydi  Bu O(n 2 ) algoritmi, chunki u ikkita halqaga ega  Agar biz boshqa for loopini joylashtirsak, bu O(n 3 ) algoritmiga aylanadi.  O(n 2 ) O(n 3 ) dan tezroq , O(n 4 ) dan tezroq va hokazo. 1 2 3 4 5 for( int i = 1; i <= n; men ++) { for( int j = 1; j <= n; j++ ) { System.out.println ("Hey - men ko'rish bilan bandman: " + i + " va " + j); } } Ko'p nomli umumiy atama bo'lib, kvadrat (n 2 ) , kub (n 3 ) , kvart (n 4 ) va boshqalarni o'z ichiga oladi. funktsiyalari.
  17. Bubble Sort - Polinomli vaqt algoritmi Massiv uzunligini kiriting. ( int ) 100 massivida '99' element mavjud. Men "4950" tekshiruvini o'tkazdim Bajarish vaqti "0" daqiqa "0" soniya "0" Millisekundlar Massiv uzunligini kiriting. ( int ) 60000 massivida '59999' element mavjud. Men "1799970000" tekshiruvini amalga oshirdim Bajarish vaqti "0" daqiqa "14" soniya "344" Millisekundlar  Ko'p nomli murakkablik qancha ko'p ma'lumotga ega bo'lsangiz, shuncha ko'p tekshiruvlar o'tkazishingiz kerak va uni bajarish uchun ko'proq vaqt kerak bo'ladi.  polinomi hisoblanadi . Uning ikkita halqasi bor.  Agar ma'lumotlar allaqachon tartiblangan bo'lsa, unda murakkablik chiziqli o (n) bo'ladi, chunki tsikl faqat bir marta ishlashi kerak. Massiv uzunligiga qarab bajarilish vaqtidagi katta farqga e'tibor bering. Qabariqli tartiblash kattaroq ma'lumotlar massivlari uchun unchalik samarali emas. Samaradorlik keskin pasayadi.
  18. Ishlash vaqtining narxi, uskunaning ishlashini omil sifatida tan olish.  Big O Notation apparatning ishlashini hisobga olmaydi.  Protsessor tezligi, xotira ( odatda RAM), tarmoqli kengligi, kechikish, saqlash maydoni, quvvat - barchasi algoritm tezligiga ta'sir qiladi.  Albatta, algoritmning samaradorligi hali ham muhim rol o'ynaydi, ammo biz xom ashyoning ishlashini e'tiborsiz qoldira olmaymiz.
Publicité