Müvafiq alqoritmə uyğun olaraq proqramın vaxt səmərəliliyi. Alqoritmlərin və verilənlər strukturlarının mürəkkəbliyi və səmərəliliyi anlayışları. Rekursiv alqoritmlərin həcm mürəkkəbliyi

Beləliklə, ən sadə Tyurinq maşınlarından tutmuş homojen hesablama mühitinə qədər kompüterlərin müxtəlif variantları nəzərdən keçirilir. Onların hamısı alqoritmi olan problemləri həll etmək üçün istifadə edilə bilər. Bu modellər əsasında daha çox ixtisaslaşmış hesablama modelləri qurulur, yəni: budaqlanmayan arifmetik proqramlar, bitli hesablamalar, ikili vektor hesablamaları və qərar ağacları.

Alqoritmlər aşağıdakı xüsusiyyətlərə malikdir:

a) mürəkkəblik;

b) zəhmətkeşlik;

c) etibarlılıq və s.

Alqoritmlərin mürəkkəbliyini qiymətləndirmək üçün bir çox meyar var. Çox vaxt maraqlanacağıq böyümə qaydası giriş məlumatlarının sayının artması ilə vaxt və yaddaş tutumu problemini həll etmək üçün tələb olunur. Hər bir xüsusi tapşırıqla müəyyən bir nömrəni birləşdirin, onu adlandırın ölçüsü. Məsələn, matrisə vurma məsələsinin ölçüsü matrislərin ən böyük ölçüsü ola bilər - amillər; qrafikdəki məsələnin ölçüsü verilmiş qrafikin kənarlarının sayı ola bilər və s.

Tapşırığın ölçüsündən asılı olaraq alqoritmin götürdüyü vaxt deyilir zaman mürəkkəbliyi bu alqoritm. Problemin ölçüsü artdıqca bu mürəkkəbliyin həddə davranışı deyilir asimptotik zaman mürəkkəbliyi. The kapasitiv mürəkkəblikasimptotik kapasitiv mürəkkəblik.

Formal hesablama modellərinin nəzərdən keçirilməsinin vacib motivi hesablama vaxtının aşağı hədlərini əldə etmək üçün müxtəlif problemlərin hesablama mürəkkəbliyini aşkar etmək istəyidir. Verilmiş tapşırığı müəyyən vaxtdan az müddətdə yerinə yetirən heç bir alqoritmin olmadığını göstərmək üçün alqoritmin nə olduğunun dəqiq və bəzən yüksək ixtisaslaşmış tərifi tələb olunur. Türinq maşınları belə bir tərifin bir nümunəsidir.

4.1.1. Çərçivə və çərçivə maşınları*

İki maşını nəzərdən keçirin:

1. Yaddaşa təsadüfi çıxışı olan maşınlar (ekvivalent ünvan maşını - RAM) bir toplayıcı ilə kompüteri modelləşdirir, burada proqram təlimatları özlərini dəyişə bilməz.

2. Saxlanılan proqram modeli yaddaşa təsadüfi girişi və göstərişlərin modifikasiyası (PAM*) imkanı olan maşındır.

Şəkil.2.9 PAM maşınlarının strukturu (PAM*)

RAM üçün proqram yaddaşa yazılmır, ona görə də proqram özünü dəyişmir. Proqram etiketli əmrlər ardıcıllığıdır. Arifmetik təlimatlar, giriş/çıxış təlimatları, dolayı ünvanlama təlimatları və budaqlanma təlimatları var. Bütün hesablamalar hər hansı digər yaddaş registrləri kimi ixtiyari tam ədədi saxlaya bilən r 0 (toplayıcı) registrində aparılır. Hər bir əmr iki hissədən ibarətdir - əməliyyat kodu və ünvan. PAM təlimatları montaj dili təlimatlarının alt dəstidir; bu alt çoxluq öz istəyi ilə genişləndirilə bilər, lakin problemlərin mürəkkəblik sırası dəyişməyəcək.

Operand aşağıdakı növlərdən biri ola bilər:

1. =i tam ədədin özü deməkdir i və hərfi adlanır;

2. i- reyestrin məzmunu i (i mənfi olmamalıdır)

3. *i dolayı ünvanlama deməkdir, yəni operandın qiyməti reyestrin məzmunudur j,harada j- reyestrdə olan tam ədəd I;əgər j<0, maşın dayanır.

Proqramın dəyərini təyin edə bilər R iki obyektin köməyi ilə: qeyri-mənfi tam ədədlər dəstindən tam ədədlər dəstinə qədər c xəritəsi və növbəti yerinə yetirilən əmri təyin edən “komanda sayğacı”. c funksiyasıdır yaddaş xəritəsi, yəni c(i)- registr nömrəsində olan tam ədəd I (məzmun qeydiyyatdan keçin I).

əvvəlcə c(i)=0 hamı üçün i0 , proqram sayğacı P-də birinci təlimata qoyulur və çıxış lenti boşdur. Etdikdən sonra k-ci komandadan R sayğac avtomatik olaraq keçir (k+1)-th (yəni növbəti) əmri, əgər k-ci komanda JUMP, HALT, JGTZ və s. deyildi.

RAM*-proqram yaddaş registrlərində yerləşir. Hər bir PAM* əmri iki ardıcıl yaddaş registrini tutur: birinci registrdə əməliyyat kodu, ikincidə isə ünvan var. PAM* üçün təlimat dəsti, dolayı ünvanlama istisna olmaqla, PAM üçün müvafiq dəstlə eynidir, bu istisna olunur: PAM* proqramın icrası zamanı təlimatları dəyişdirərək dolayı ünvanlamağı simulyasiya edə bilər.

Alqoritm- müəyyən nəticə əldə etmək üçün ifaçının hərəkətlərinin ardıcıllığını təsvir edən göstərişlər toplusu.

Müvəqqəti Effektivlik alqoritmin sürətinin göstəricisidir
n ölçülü giriş məlumatlarını emal edərkən alqoritmin yerinə yetirməli olduğu əsas əməliyyatların sayı ilə təxmin edilir.

n-dən asılı olaraq alqoritmin icra müddətinin artım sırası vacibdir

Məkan səmərəliliyi alqoritmin işləməsi üçün nə qədər əlavə RAM lazım olduğunu göstərir. Səmərəlilik ən pis, ən yaxşı və orta hallarda qiymətləndirilir.

Təhlilin növləri: riyazi və empirik

Alqoritmin icra müddətinin ölçülməsi

1. Birbaşa (empirik təhlil)

2. n ölçülü daxilolma məlumatlarının işlənməsi zamanı alqoritmin yerinə yetirməli olduğu əsas əməliyyatların sayının müəyyən edilməsi (riyazi analiz)

Artım Sifarişi

Kiçik giriş ölçüləri ilə səmərəli və qeyri-səmərəli alqoritm arasında icra müddətindəki fərqi görmək mümkün deyil. Böyük n dəyərləri üçün funksiyanın böyümə sırası hesablanır.

Müxtəlif hallarda alqoritmin səmərəliliyi

Çoxlu sayda alqoritmlər mövcuddur ki, onların icra müddəti yalnız daxil olan məlumatların ölçüsündən deyil, həm də daxil olan məlumatların spesifik xüsusiyyətlərindən asılıdır (məsələn, axtarış).

Effektivlik aşağıdakılar üçün ölçülür:

  • Ən pis halda
  • ən yaxşı hal
  • orta hal
  • Misal: axtarışda müqayisələrin orta sayı:

    Belə ki:

    Alqoritmlər hazırlayarkən hesablamaların aparılması üçün lazım olan resursları qiymətləndirə bilmək çox vacibdir, qiymətləndirmənin nəticəsi mürəkkəblik funksiyasıdır (əmək sərfi). Təxmin edilən resurs ən çox prosessor vaxtı (hesablama mürəkkəbliyi) və yaddaşdır (alqoritmin yaddaş mürəkkəbliyi). Qiymətləndirmə icra müddətini proqnozlaşdırmağa və alqoritmlərin işini müqayisə etməyə imkan verir.

    Alqoritm Effektivliyi alqoritmin istifadə etdiyi hesablama resursları ilə əlaqəli olan alqoritmin xassəsidir. Alqoritmin ehtiyac duyduğu resursları müəyyən etmək üçün alqoritm təhlil edilməlidir. Alqoritm səmərəliliyi təkrarlanan və ya davamlı proseslərin istehsal performansına analoq kimi baxıla bilər.

    Maksimum səmərəliliyə nail olmaq üçün biz resurslardan istifadəni azaltmaq istəyirik. Bununla belə, müxtəlif resursları (vaxt və yaddaş kimi) birbaşa müqayisə etmək mümkün deyil, ona görə də iki alqoritmdən hansının daha səmərəli hesab ediləcəyi çox vaxt hansı amilin daha vacib olmasından asılıdır, məsələn, yüksək sürət tələbi, minimum yaddaş istifadəsi və ya başqa ölçü. səmərəliliyin.

    Qeyd edək ki, bu məqalə YOX alqoritmin optimallaşdırılması haqqında, məqalələrdə müzakirə olunan optimallaşdırma proqramları, optimallaşdırma tərtibçi, dövrünün optimallaşdırılması, obyekt kodu optimallaşdırıcısı və s. "Optimallaşdırma" termininin özü yanlışdır, çünki edilə bilən hər şey "təkmilləşdirmə" anlayışına düşür.

    Ensiklopedik YouTube

      1 / 5

      ✪CS50. Asimptotik qeyd

      ✪ 1. Alqoritmlər və verilənlər strukturları. Giriş | Technostream

      ✪ Alqoritmik səmərəlilik

      ✪ Knuth-Morris-Pratt alqoritmi

      ✪ 2. Alqoritmlər və verilənlər strukturları. Siyahılar, yığın, növbə, dekabr | Technostream

      Altyazılar

      Yəqin ki, insanların müəyyən bir tapşırığı yerinə yetirmək üçün sürətli və ya səmərəli alqoritmlər haqqında danışdıqlarını eşitmisiniz, lakin alqoritmlər vəziyyətində sürətli və səmərəli dedikdə dəqiq nə nəzərdə tutulur? Onlar həqiqətən saniyə və ya dəqiqələrdə real vaxtın ölçülməsindən danışmırlar. Çünki kompüterin texniki və proqram təminatı çox müxtəlifdir. Proqramım köhnə kompüterdə işlədiyim üçün və ya eyni zamanda bütün yaddaşımı yeyən şəbəkə oyunu oynadığım üçün proqramım sizinkindən daha yavaş işləyə bilər. Yaxud mən öz proqramımı öz qaydasında aşağı səviyyədə aparatla qarşılıqlı əlaqədə olan digər proqramlar vasitəsilə işlədirdim. Bu, isti ilə yumşaqlığı müqayisə etmək kimidir. Yavaş kompüterimin cavab tapmaq üçün daha uzun sürməsi alqoritminizin daha səmərəli olması demək deyil. Proqramların icra müddətini saniyə və ya dəqiqə ilə birbaşa müqayisə edə bilmədiyimiz üçün, aparat və ya proqram təminatından asılı olmayaraq iki müxtəlif alqoritmi necə müqayisə edə bilərik? Alqoritmik səmərəliliyin ölçülməsi üsulunu birləşdirmək üçün riyaziyyatçılar və kompüter alimləri proqramın asimptotik mürəkkəbliyini və onu təsvir etmək üçün "Böyük O" adlanan qeydi ölçməkdə həll yolu tapdılar. Formal tərif belədir: f(x) funksiyası "x", "x₀" dəyəri və f(x) bu sabitdən kiçik və ya ona bərabər olan bəzi sabit "C" varsa, g(x) sırasına malikdir. "x₀"-dən böyük hər hansı "x" üçün g (x) ilə vurulur. Bununla belə, formal tərifdən qorxmayın. Bu, əslində daha az nəzəri baxımdan nə deməkdir? Sadə dillə desək, bu, proqramın asimptotik icra müddətinin nə qədər sürətlə artdığını təhlil etmək üsuludur. Yəni, girişin ölçüsü sonsuzluğa doğru artdıqca. Tutaq ki, 1000 elementdən ibarət massivi və 10 massivi çeşidləyirik. Proqramın icra müddəti necə artacaq? Məsələn, bütün sətir hərfini hərf-hərf keçərək və hər dəfə sayğaca bir əlavə etməklə sətirdəki simvolların sayını ən sadə şəkildə hesablamağı təsəvvür edin. Alqoritmin sətirdəki simvolların (n) sayında xətti vaxtda işlədiyi deyilir. Və ya qısaca, O(n) alır. Niyə belədir? Yaxşı, bu yanaşma ilə bütün sətirdən keçmək üçün lazım olan vaxt içindəki simvolların sayına mütənasibdir. 20 simvoldan ibarət sətirdəki simvolların sayını hesablamaq 10 simvoldan ibarət sətirdəki simvolların sayından iki dəfə çox vaxt aparacaq, çünki bütün simvollara baxmaq lazımdır, hər simvola baxmaq isə eyni vaxt aparır. Simvolların sayı artdıqca mənbə məlumatının uzunluğu ilə birlikdə icra müddəti də artacaq. İndi deyək ki, O(n) xətti zamanın kifayət qədər sürətli olmadığına qərar verdiniz. Ola bilsin ki, siz nəhəng simləri saxlayırsınız və bütün personajları bir-bir hesablamaq üçün əlavə vaxt ayıra bilmirsiniz. Və fərqli bir şey sınamağa qərar verdin. Əgər sətir üçün simvolların sayı artıq dəyişəndə ​​saxlanacaqsa, "len" deyin. O, proqramda daha əvvəl, hətta siz sətirinizin ilk simvolunu saxlamamışdan əvvəl saxlanılır. Sonra sətrin uzunluğunu tapmaq üçün sadəcə həmin dəyişənin qiymətini oxumaq lazımdır. Siz ümumiyyətlə sətirin özünə baxmaq məcburiyyətində qalmayacaqsınız və "len" dəyərinin oxunması asimptotik sabit vaxt və ya O(1) tələb edən əməliyyat olmalıdır. Niyə belədir? Asimptotik mürəkkəbliyin nə demək olduğunu xatırlayın. Girişin ölçüsü böyüdükcə icra müddəti necə dəyişir? Tutaq ki, siz daha uzun sətirdəki simvolların sayını aldınız. Ümumiyyətlə, bunun nə qədər uzun olmasının heç bir əhəmiyyəti yoxdur. Ən azı bir milyon simvol. Bu yanaşma ilə sətir uzunluğunu tapmaq üçün etməli olduğunuz tək şey artıq əldə etdiyiniz "len" dəyişəninin dəyərini oxumaqdır. Daxiletmənin ölçüsü, bizim vəziyyətimizdə uzunluğunu tapmaq istədiyimiz sətir, proqramın nə qədər sürətlə işləməsinə təsir etməyəcək. Proqramınızın bu hissəsi min simvollu sətirdə olduğu kimi bir simvollu sətirdə də eyni sürətlə işləyəcək. Və buna görə də proqram daxil edilən məlumatların ölçüsünə nisbətən sabit vaxtda işləyəcək. Təbii ki, çatışmazlıqlar da var. Siz dəyişəni saxlamaq üçün kompüterinizdə əlavə yaddaş və onun dəyərini doldurmaq üçün əlavə vaxt sərf edirsiniz. Amma yenə də məntiqlidir. Sətirdəki simvolların sayını əldə etmək vaxtı ümumiyyətlə sətir uzunluğundan asılı deyil. Beləliklə, O (1) və ya sabit zamanda işləyir. Əlbəttə, bu, kodunuzun yalnız bir addım atması demək deyil. Bununla belə, girişin ölçüsü dəyişdikdə onların sayı dəyişmədiyi müddətcə, neçə addımın olmasının əhəmiyyəti yoxdur. O (1) kimi işarə etdiyimiz asimptotik sabit olacaqdır. Təxmin etdiyiniz kimi, alqoritmlərin icra müddətini ölçmək üçün çoxlu müxtəlif "böyük O"lar var. O(n²) alqoritmləri O(n) alqoritmlərindən asimptotik olaraq daha yavaşdır. Bu o deməkdir ki, elementlərin sayı n artdıqca O(n²) alqoritmləri son nəticədə O(n) alqoritmlərindən daha uzun çəkəcək. Bu o demək deyil ki, O(n) alqoritmləri həmişə O(n²) alqoritmlərindən daha sürətlidir, hətta eyni aparatda eyni mühitdə belə. Ola bilər ki, kiçik girişlər üçün O(n²) alqoritmi həqiqətən daha sürətli işləyəcək, lakin zaman keçdikcə giriş məlumatlarının ölçüsü sonsuzluğa doğru artdıqca, O(n²) alqoritminin icra müddəti nəticədə vaxtın icrasını tutacaq. alqoritminin O(n). İstənilən kvadrat riyazi funksiya kimi, nəticədə istənilən xətti funksiyanı ötəcək. Və başlanğıcda xətti funksiyanın dəyərinin nə qədər böyük handikap olmasının əhəmiyyəti yoxdur. Əgər siz böyük həcmdə məlumatlarla işləyirsinizsə, O(n²) ilə işləyən alqoritmlər nəticədə proqramınızı ləngidir, lakin kiçik giriş məlumatlarında, çox güman ki, bunu hiss etməyəcəksiniz. Asimptotik mürəkkəbliyin başqa bir növü loqarifmik vaxtdır, O(log n). Bu cür sürətlə işləyən alqoritm nümunəsi əvvəlcədən çeşidlənmiş çoxluqda element tapmaq üçün klassik ikili axtarış alqoritmidir. Əgər binar axtarışın necə aparıldığını bilmirsinizsə, bir anda hər şeyi tez izah edəcəyəm. Tutaq ki, siz tam ədədlər massivində 3 rəqəmini axtarırsınız. Massivin mərkəzi elementini götürürük və soruşuruq: "Mənə lazım olan element bundan böyükdür, kiçikdir, yoxsa buna bərabərdir?" Bərabərdirsə, əla. Düzgün elementi tapdıq, hamısı budur. Əgər daha çox olarsa, onda aydındır ki, bizim elementimiz sağ tərəfdə massivdə olmalıdır və bundan sonra yalnız sağ tərəfə baxa bilərsiniz. Əgər daha azdırsa, onda elementin solda bir yerdə olduğu aydındır. Sonra istədiyiniz elementi tapana qədər bu prosesi daha qısa massivlərlə təkrarlayırıq. Bu güclü alqoritm hər əməliyyatdan sonra massiv ölçüsünü yarıya endirir. Yəni, uzunluğu 8 olan çeşidlənmiş massivdə elementi tapmaq üçün (log₂8)-dən çox olmayan və ya mərkəzi elementi yoxlamaq və istədiyiniz yarını seçmək üçün üç belə əməliyyat lazımdır. Eyni zamanda, uzunluğu 16 olan massiv (log₂16) və ya dörd əməliyyat tələb edəcəkdir. Və bu, massivin uzunluğunu iki dəfə artırarkən yalnız bir əlavə əməliyyatdır. Ölçünün ikiqat artırılması icra müddətini yalnız bir kod parçası ilə artırır. Bir daha mərkəzi elementi yoxlayırıq və massivi bölürük. Beləliklə, buna loqarifmik vaxt O(log n) deyilir. Amma gözləyin, siz deyirsiniz, bu, axtardığınız elementin massivdə harada yerləşməsindən asılı deyilmi? Yoxladığımız ilk element elementdirsə? Sonra massiv nə qədər böyük olursa olsun, yalnız bir əməliyyat tələb edir. Buna görə də kompüter elmində ən yaxşı və ən pis halda performansı əks etdirən asimptotik mürəkkəblik üçün başqa anlayışlar da mövcuddur. Və ya, daha ciddi desək, alqoritmin icra müddətinin yuxarı və aşağı hədləri. İkili axtarış üçün ən yaxşı halda bizim elementimiz məhz burada mərkəzdədir. Biz onu massivin qalan hissəsinin ölçüsündən asılı olmayaraq sabit zamanda tapırıq. Bunu etmək üçün Ω simvolundan istifadə edin. Yəni alqoritmin Ω(1)-də işlədiyi deyilir. Ən yaxşı halda elementi çox tez tapır. Massivin nə qədər böyük olmasının əhəmiyyəti yoxdur. Ancaq ən pis halda, istədiyiniz elementi tapmaq üçün (log n) yoxlamalar və massiv bölmələri yerinə yetirməlisiniz. Ən pis hal üçün yuxarı hədd artıq bildiyiniz kimi "böyük O" ilə işarələnir. Beləliklə, O (log n) olur, lakin Ω(1). Müqayisə üçün, düzgün olanı tapmaq üçün massivdəki hər bir elementə baxdığımız xətti axtarış, ən yaxşı halda Ω (1). Yəni yenə birinci element bizim axtardığımız elementə çevrilir. Buna görə də, massivimizin nə qədər böyük olmasının əhəmiyyəti yoxdur. Ən pis halda, axtardığınız element ən sonundadır. Və onu tapmaq üçün massivin bütün n elementindən keçmək lazımdır. Bu kimi, əgər biz 3 axtarırıqsa. Yəni massiv elementlərinin sayına mütənasib olduğundan onun icra müddəti O(n) olur. Θ simvolu da istifadə olunur. Ən yaxşı və ən pis vaxtları eyni olan alqoritmləri təsvir etmək üçün istifadə olunur. Daha əvvəl bəhs etdiyimiz sətir uzunluğu axtarış alqoritmi vəziyyətində olduğu kimi. Uzunluğu əvvəlcədən dəyişəndə ​​saxladığımız və daha sonra onu sabit vaxtda oxuduğumuz yer. Bu dəyişəndə ​​hansı rəqəmi saxlamağımızdan asılı olmayaraq, ona baxacağıq. Ən yaxşı halda qiymətə baxırıq və sətir uzunluğunu alırıq. Bu, Ω(1) və ya ən yaxşı hal üçün sabit vaxtdır. Ən pis halda, biz qiymətə baxırıq və simin uzunluğunu alırıq. Bu O(1) və ya ən pis vəziyyət üçün sabit vaxtdır. Beləliklə, ən yaxşı və ən pis hallar eynidir. Və alqoritmin Θ(1) vaxtında icra olunduğunu deyə bilərik. Xülasə etmək üçün, icra etmək üçün nə qədər real vaxt lazım olduğunu hesablamadan kodun səmərəliliyi haqqında düşünmək üçün yaxşı yollarımız var. Bu vaxt çoxlu sayda xarici amillərdən, məsələn, aparat və proqram təminatından, həmçinin kodun özünün xüsusiyyətlərindən asılıdır. Giriş məlumatlarının ölçüsü artdıqda nə baş verəcəyini də aydın şəkildə əsaslandıra bilərik. Əgər O(n²) alqoritmimiz və ya daha da pisi O(2ⁿ) alqoritmimiz varsa, yəni ən sürətlə böyüyən növlərdən biridirsə, artan məlumat miqdarı ilə məşğul olan zaman yavaşlamağı qaçırmaq həqiqətən çətindir. Bu asimptotik mürəkkəblikdir. Diqqətinizə görə təşəkkürlər.

    Fon

    İcra müddətinə vurğu ilə səmərəliliyin vacibliyi 1843-cü ildə Ada-Lovelace tərəfindən Charles Babbage-nin mexaniki analitik mühərriki ilə bağlı vurğulanmışdır:

    “Demək olar ki, bütün hesablamalarda prosesin uğurla başa çatdırılması üçün geniş diapazonlu konfiqurasiyalar mümkündür və hesablamaları yerinə yetirmək üçün müxtəlif konvensiyalar seçimə təsir etməlidir. Əsas odur ki, hesablamanı başa çatdırmaq üçün tələb olunan vaxtı minimuma endirəcək bir konfiqurasiya seçin.

    Erkən elektron kompüterlər həm sürət, həm də yaddaş baxımından çox məhdud idi. Bəzi hallarda, tapşırığın yüksək sürətə nail olmaq üçün ya böyük həcmdə yaddaşdan istifadə etməli olduğu, ya da az miqdarda iş yaddaşından istifadə edən daha yavaş bir alqoritmdən istifadə etməli olduğu zaman/yaddaş mübadiləsinin olduğu başa düşüldü. Bu halda, ən sürətli alqoritmdən istifadə edildi, bunun üçün kifayət qədər mövcud yaddaş var idi.

    Müasir kompüterlər o ilk kompüterlərdən qat-qat sürətlidir və daha çox yaddaşa malikdir (kiqabayt əvəzinə gigabayt). Bununla belə, Donald Knuth səmərəliliyin mühüm amil olaraq qaldığını vurğulayır:

    "Mühəndislik fənlərində 12% inkişaf asanlıqla əldə edilə bilər, heç vaxt qeyri-adi hesab edilməyib və mən hesab edirəm ki, proqramlaşdırmada da eyni şey olmalıdır."

    Baxış-icmal

    İstehlak etdiyi resurs (və ya resursun dəyəri) müəyyən məqbul səviyyədə və ya ondan aşağı olarsa, alqoritm səmərəli hesab olunur. Kobud desək, burada "məqbul" "alqoritm mövcud kompüterdə ağlabatan müddət ərzində işləyəcək" deməkdir. 1950-ci illərdən etibarən kompüterlərin hesablama gücündə və mövcud yaddaşında əhəmiyyətli artım olduğundan, mövcud "məqbul səviyyə" hətta 10 il əvvəl də qəbul edilə bilməzdi.

    Kompüter istehsalçıları vaxtaşırı yeni modellər buraxırlar, çox vaxt daha güclüdür. Proqram təminatının qiyməti kifayət qədər yüksək ola bilər, ona görə də bəzi hallarda mövcud kompüterinizə uyğun daha sürətli kompüter almaqla daha yaxşı performans əldə etmək daha asan və daha ucuzdur.

    Alqoritmin istifadə etdiyi resursları ölçməyin bir çox yolu var. Ən çox istifadə edilən iki ölçü sürət və istifadə olunan yaddaşdır. Digər ölçülərə ötürmə sürəti, müvəqqəti disk istifadəsi, uzunmüddətli disk istifadəsi, enerji istehlakı, ümumi sahiblik dəyəri, xarici siqnallara cavab müddəti və s. daxil ola bilər. Bu ölçmələrin çoxu alqoritmin girişinin ölçüsündən (yəni emal edilməli olan məlumatların miqdarından) asılıdır. Ölçmələr həmçinin məlumatların təqdim edilmə tərzindən asılı ola bilər (məsələn, bəzi çeşidləmə alqoritmləri artıq çeşidlənmiş məlumatlarda və ya verilənlər tərs qaydada çeşidləndikdə yaxşı işləmir).

    Təcrübədə, tələb olunan dəqiqlik və/yaxud möhkəmlik kimi alqoritmin işinə təsir edən digər amillər də mövcuddur. Aşağıda izah edildiyi kimi, bir çox icra aspektləri optimallaşdırma məsələləri olsa da, alqoritmin həyata keçirilmə üsulu da faktiki performansa əhəmiyyətli təsir göstərə bilər.

    Nəzəri təhlil

    Alqoritmlərin nəzəri təhlilində alqoritmin mürəkkəbliyini onun asimptotik davranışında qiymətləndirmək, yəni girişin ölçüsündən asılı olaraq alqoritmin mürəkkəbliyini əks etdirmək adi təcrübədir. n"O" big qeydindən istifadə olunur. Bu təxmin ümumiyyətlə böyüklər üçün olduqca dəqiqdir n, lakin kiçik dəyərlərdə yanlış nəticələrə gətirib çıxara bilər n(Beləliklə, yavaş hesab edilən qabarcıq çeşidləmə, yalnız bir neçə elementin çeşidlənməsi tələb olunarsa, "sürətli növdən" daha sürətli ola bilər.)

    Böyük "O" notasiyasına bəzi nümunələr:

    Təyinat ad Nümunələr
    O(1) (\displaystyle O(1)\,) daimi Ədədin cüt və ya tək olduğunu müəyyən etmək. Sabit ölçülü axtarış cədvəlindən istifadə. Element seçmək üçün uyğun hash funksiyasından istifadə edin.
    O (log ⁡ n) (\displaystyle O(\log n)\,) loqarifmik Binar axtarış və ya balanslaşdırılmış ağacdan istifadə edərək çeşidlənmiş massivdə elementin tapılması, eynilə binomial yığın üzərində əməliyyatlar kimi.
    O(n)(\displaystyle O(n)\,) xətti Sıralanmamış siyahıda və ya balanslaşdırılmamış ağacda elementin tapılması (ən pis vəziyyət). İki əlavə n uç-to-end daşıma istifadə -bit nömrələri.
    O (n log ⁡ n) (\displaystyle O(n\log n)\,) kvazilinear, loqarifmik xətti Sürətli Furye çevrilməsinin hesablanması, yığın çeşidləmə, sürətli çeşidləmə (ən yaxşı və orta hallar), birləşmə çeşidi
    O(n 2) (\displaystyle O(n^(2))\,) kvadrat İkinin vurulması n-sadə alqoritmli rəqəmlər, qabarcıq çeşidləmə (ən pis hal), qabıq çeşidləmə, sürətli çeşidləmə (ən pis vəziyyət), seçim  çeşidləmə, daxiletmə çeşidi
    O (c n) , c > 1 (\displaystyle O(c^(n)),\;c>1) eksponensial Dinamik proqramlaşdırmadan istifadə edərək səyahət edən satıcı probleminin (dəqiq) həllinin tapılması. Tam Qəddar Gücdən istifadə etməklə iki Boolean İfadəsinin Ekvivalent Olduğunu Müəyyən etmək

    Doğrulama Testləri: Performansın ölçülməsi

    Proqram təminatının yeni versiyaları və ya rəqabət aparan sistemlərlə müqayisəni təmin etmək üçün bəzən alqoritmlərin nisbi performansını müqayisə etmək üçün etalonlardan istifadə olunur. Məsələn, yeni çeşidləmə alqoritmi buraxılarsa, o, sələfləri ilə müqayisə oluna bilər ki, alqoritm ən azı digərləri kimi məlum məlumatlarda səmərəli olsun. İstehsalçılar müxtəlif istehsalçıların məhsullarını müqayisə etmək üçün hansı məhsulun funksionallıq və performans baxımından onların tələblərinə ən yaxşı uyğunlaşacağını qiymətləndirmək üçün istifadə edə bilərlər.

    Bəzi meyarlar müxtəlif tərtibçi və tərcüməçi dillərini müqayisə etmək üçün bir yol təqdim edir, məsələn, Roy Longbottomun PC Benchmark Collection və Kompüter Dili Testləri Oyunu bəzi proqramlaşdırma dillərində tipik tapşırıqların icrasının performansını müqayisə edir.

    İcra Məsələləri

    İcra məsələləri də faktiki fəaliyyətə təsir göstərə bilər. Buraya proqramlaşdırma dilinin seçimi və alqoritmin əslində kodlaşdırılma üsulu, seçilmiş dil üçün tərcüməçi seçimi və ya istifadə edilən tərtibçi seçimləri və hətta istifadə olunan əməliyyat sistemi daxildir. Bəzi hallarda tərcüməçi kimi həyata keçirilən dil kompilyator kimi həyata keçirilən dildən xeyli yavaş ola bilər.

    Vaxta və ya yaddaşdan istifadəyə təsir edə bilən, lakin proqramçının nəzarətindən kənarda olan başqa amillər də var. Buraya məlumatların uyğunlaşdırılması, məlumatların qranularlığı, zibil toplama, təlimat səviyyəsində paralellik və alt proqram çağırışları.

    Bəzi prosessorlar vektor əməliyyatlarını yerinə yetirmək qabiliyyətinə malikdirlər ki, bu da bir əməliyyatın çoxsaylı operandları emal etməyə imkan verir. Bu cür xüsusiyyətləri proqramlaşdırma və ya tərtib səviyyəsində istifadə etmək asan və ya asan olmaya da bilər. Paralel hesablamalardan istifadə etmək üçün serial hesablamalar üçün nəzərdə tutulmuş alqoritmlərin tamamilə yenidən işlənməsi tələb oluna bilər.

    Prosessorların uyğunluğu ilə bağlı başqa bir problem yarana bilər, burada təlimatlar fərqli şəkildə həyata keçirilə bilər, belə ki, bəzi modellərdə təlimatlar digər modellərdə nisbətən yavaş ola bilər. Bu, optimallaşdıran kompilyator üçün problem ola bilər.

    Resursdan istifadənin ölçülməsi

    Ölçmələr adətən giriş ölçüsündən asılı olaraq ifadə edilir. n.

    Ən vacib iki ölçü bunlardır:

    • Vaxt: alqoritmin CPU-ya nə qədər vaxt sərf etməsi.
    • Yaddaş: alqoritmə nə qədər iş yaddaşı (adətən RAM) lazımdır. Burada iki aspekt var: kod üçün yaddaşın miqdarı və kodun işlədiyi məlumat üçün yaddaşın miqdarı.

    Batareya ilə işləyən kompüterlər (məsələn, noutbuklar) və ya çox uzun/böyük hesablamalar (məsələn, superkompüterlər) üçün başqa bir ölçmə növü maraq doğurur:

    • Birbaşa enerji istehlakı: Kompüteri işə salmaq üçün tələb olunan enerji.
    • Dolayı enerji istehlakı: soyutma, işıqlandırma və s. üçün lazım olan enerji.

    Bəzi hallarda, digər, daha az ümumi ölçmələrə ehtiyac var:

    • Transfer ölçüsü: Bant genişliyi məhdudlaşdırıcı amil ola bilər. Sıxılma ötürülən məlumatların miqdarını azaltmaq üçün istifadə edilə bilər. Şəkil və ya şəklin göstərilməsi (məsələn, Google-un loqosu) on minlərlə baytın ötürülməsi ilə nəticələnə bilər (bu halda 48K). Bunu "Google" sözündə altı bayt göndərməklə müqayisə edin.
    • Xarici yaddaş: Diskdə və ya digər xarici yaddaş cihazında tələb olunan yaddaş. Bu yaddaş müvəqqəti saxlama və ya gələcək istifadə üçün istifadə edilə bilər.
    • Cavab vaxtı: Bu parametr kompüterin xarici hadisələrə tez cavab verməli olduğu real vaxt proqramları üçün xüsusilə vacibdir.
    • Ümumi Mülkiyyət Dəyəri: Parametr bir alqoritmin icrası üçün nəzərdə tutulduqda vacibdir.

    Vaxt

    Nəzəriyyə

    Bu tip testlər həm də proqramlaşdırma dilinin, kompilyatorun və onun variantlarının seçimindən əhəmiyyətli dərəcədə asılıdır ki, müqayisə edilən alqoritmlər eyni şəraitdə həyata keçirilməlidir.

    Yaddaş

    Bu bölmə alqoritmin tələb etdiyi əsas yaddaşın (çox vaxt RAM) istifadəsindən bəhs edir. Yuxarıdakı temporal təhlilə gəldikdə, təhlil etmək üçün adətən alqoritmin təhlilindən istifadə olunur alqoritmin məkan mürəkkəbliyi tələb olunan iş vaxtı yaddaşını girişin ölçüsündən asılı olaraq qiymətləndirmək. Nəticə adətən "O" big ifadəsi ilə ifadə edilir.

    Yaddaşdan istifadənin dörd aspekti var:

    • Alqoritm kodunu saxlamaq üçün tələb olunan yaddaş miqdarı.
    • Giriş məlumatları üçün tələb olunan yaddaş miqdarı.
    • İstənilən çıxış üçün tələb olunan yaddaş miqdarı (bəzi alqoritmlər, məsələn, növlər, çox vaxt girişi yenidən təşkil edir və çıxış üçün əlavə yaddaş tələb etmir).
    • Hesablama zamanı hesablama prosesi üçün lazım olan yaddaşın miqdarı (buraya adlandırılmış dəyişənlər və rekursiyadan istifadə edərkən əhəmiyyətli ola bilən alt proqramları çağırmaq üçün lazım olan hər hansı stek sahəsi daxildir).

    Erkən elektron kompüterlər və ev kompüterləri nisbətən az iş yaddaşına malik idi. Belə ki, 1949-cu ildə EDSAC maksimum 1024 17 bitlik iş yaddaşına malik idi və 1980-ci ildə Sinclair ZX80 1024 bayt iş yaddaşı ilə istehsal edildi.

    Müasir kompüterlər nisbətən böyük həcmdə yaddaşa (bəlkə də gigabayt) malik ola bilər ki, alqoritmin istifadə etdiyi yaddaşı müəyyən yaddaş həcminə sıxışdırmaq əvvəlkindən daha az vaxt tələb edir. Bununla belə, üç fərqli yaddaş kateqoriyasının mövcudluğu vacibdir:

    • Keş (tez-tez statik RAM) - CPU ilə müqayisə edilə bilən sürətlə işləyir
    • Əsas fiziki yaddaş (tez-tez dinamik RAM) - CPU-dan bir qədər yavaş
    • Virtual yaddaş (tez-tez diskdə) - böyük yaddaş illüziyasını verir, lakin RAM-dən minlərlə dəfə yavaşdır.

    Tələb olunan yaddaşı kompüterin keşinə sığdıran alqoritm əsas yaddaşa uyğun gələn alqoritmdən qat-qat tez işləyir, bu da öz növbəsində virtual məkandan istifadə edən alqoritmdən xeyli sürətli olacaq. Məsələləri çətinləşdirən odur ki, bəzi sistemlərdə üç səviyyəyə qədər keş yaddaşı var. Fərqli sistemlərdə bu tip yaddaşın müxtəlif həcmləri var, ona görə də alqoritmdə yaddaş effekti bir sistemdən digərinə çox dəyişə bilər.

    Elektron hesablamanın ilk dövrlərində alqoritm və onun məlumatları əsas yaddaşa uyğun gəlmirsə, ondan istifadə edilə bilməzdi. Bu günlərdə virtual yaddaşdan istifadə böyük yaddaş təmin edir, lakin performans bahasına. Alqoritm və onun məlumatları keş yaddaşa sığarsa, çox yüksək sürət əldə edilə bilər, buna görə də tələb olunan yaddaşın minimuma endirilməsi vaxtı minimuma endirməyə kömək edir. Tamamilə önbelleğe uyğun olmayan, lakin təmin edən bir alqoritm əlaqə yeri nisbətən sürətlə qaça bilir.

    AT həbsəldə edilmiş nəticələrin ardıcıl, məntiqi ardıcıl təqdimatı və onların ümumi məqsəd (fərziyyə) və tədqiqat vəzifələri ilə əlaqəsi verilir, ümumiləşdirilmiş nəticələr verilir, tədqiq olunan problemin təkmilləşdirilməsinə dair müəllifin fikir və təklifləri formalaşdırılır. Yekun ixtisas işində nəticə mətninin həcmi ciddi şəkildə tənzimlənmir - adətən 1,5 - 3 səhifədir.

    AT istifadə olunan mənbələrin siyahısı tədqiqatda istifadə olunan sənədlər, materiallar, dövri nəşrlər, ədəbiyyatlar mütləq göstərilir. Siyahını çox böyük etməyin; tədqiq olunan problemə aid olmayan mətnlərin daxil edilməsi də yolverilməzdir.

    İstifadə olunan mənbələrin və ədəbiyyatın siyahısının tərtib edilməsi tədqiqat işində ən vacib mərhələlərdən biridir, çünki o, müəllifin elmi ədəbiyyatın seçiminə və seçilmiş problemin öyrənilməsinə müstəqil, yaradıcı yanaşmasını əks etdirir və bir çox elmi tədqiqatın aparılmasına imkan verir. tədqiqatın ciddilik və etibarlılıq dərəcəsini mühakimə etmək.

    Lazım gələrsə, biblioqrafik siyahıya, məsələn, aşağıdakı kimi bölmələr daxil edilə bilər:

    1. Dövlət orqanlarının və ictimai təşkilatların sənədləri;

    2. Arxiv sənədləri;

    3. Arayış və statistik nəşrlər;

    4. Tədris və tədris nəşrləri;

    5. Elmi monoqrafiyalar və məqalələr;

    7. Dövri nəşrlər;

    Dövri nəşrlərin və tədris nəşrlərinin, ədəbiyyatların, dissertasiyaların və avtoreferatların siyahısı əlifba sırası ilə müəlliflərin adları və kitabların/məqalələrin adları üzrə tərtib edilir.

    Yekun ixtisas işinin biblioqrafik siyahısındakı mənbələrin sayı 25-30 maddədən az ola bilməz.

    GOST 2003 və ya GOST R 7.0.5-2008 "Biblioqrafik arayış"a uyğun olaraq verilir.

    İstinad edilən mənbələrin biblioqrafik təsviri nümunələri

    1. Turuta E.F. Aktiv SMD komponentləri: markalanma, xüsusiyyətlər, dəyişdirmə. - Sankt-Peterburq: Elm və texnologiya, 2006. - 544 s.



    2. Ulrix V.A. Mikro nəzarətçi PIC16X7XX. - Sankt-Peterburq: Elm və texnologiya, 2002. - 320 s.

    Kitabın redaktoru var

    1. Remizeviç T.V. Daxili tətbiqlər üçün mikrokontrollerlər: ümumi keçidlərdən Motorola-nın HC05 və HC08 ailələrinə. / red. Kiryukhina I.S. - M.: DODEKA, 2000. - 272 s.

    Müəyyən bir iş növü (dərslik, məlumat kitabçası, ensiklopediya və s.)

    1. Finkelstein M.I. Radarın əsasları: Proc. universitetlər üçün. - M.: Radio və rabitə, 1983. - 536 s.

    2. Guk M. Hardware IBM PC: Ensiklopediya. - Sankt-Peterburq: "Peter" nəşriyyatı, 1999. - 816 s.

    1. İqlovski İ.G. Aşağı cərəyan elektrik röleləri: Təlimat / I.G. İqlovski, G.V. Vladimirov. - M.: KUBK-a, 1996. - 560 s.

    2. Romanycheva E.T. Mühəndislik və kompüter qrafikası / E.T. Romanycheva, T.Yu. Sokolova, G.F. Şandurin. – M.: DMK Press, 2001. – 592 s.

    Kitab dörd müəllif tərəfindən yazılıbsa və nəşrin redaktoru varsa, o zaman onların hamısı slash (/) arxasında qeyd olunur. Kitabın dörddən çox müəllifi varsa, ilk üçü addan sonra slash (/) işarəsi ilə qeyd olunur və “et al” sözləri əlavə edilir.

    3. Radiotexnika sistemləri: Proc. universitetlər üçün xüsusi "Radiotexnika" / Yu.P. Grishin, V.P. İpatov, Yu.M. Kazarinov və başqaları; Ed. Yu.M. Kazarinov. - M .: Daha yüksək. məktəb, 1990. - 496 s.

    Nəşrin redaktoru yoxdursa, o zaman blok “; Ed. Yu.M. Kazarinova.", yox idi.

    Kitab başqa dildən tərcümə olunub və müəllifi yoxdur

    1. Microsoft Windows Server 4.0 resursları. 1-ci kitab: trans. ingilis dilindən. - Sankt-Peterburq: BHV - Sankt-Peterburq, 1997. - 408 s.

    Jurnaldan məqalələr

    1. Odnobokov V.V. Resursların optimal bölüşdürülməsinin əsas metodunun əsaslandırılması.Nauchno-tekhnicheskie vedomosti. - Sankt-Peterburq: Sankt-Peterburq Dövlət Politexnik Universitetinin nəşriyyatı, 2003. - cild. 4. - S.55-62.

    Kolleksiyadan məqalələr

    1. Glazyrin B. E. Word 2000-də fərdi əməliyyatların avtomatlaşdırılması // Office 2000: 5 kitab. 1-də - M., 2002. - T. 3, Ç. 14. - S. 281-298.

    Kitab dörd və ya daha çox müəllif tərəfindən yazılıbsa, məqalənin təsviri başlıqda verilir. Əgər məqalə dörd müəllif tərəfindən yazılıbsa, onda onların hamısı slash (/) arxasında qeyd olunur.

    1. A. N. Boqolyubov, A. L. Delitsyn və M. D. Malıx, “Qeyri-homogen doldurulma ilə dalğa ötürücüsindəki real rezonanslar haqqında”, Vestn. Moskva universitet Ser. 3, Fizika. Astronomiya. - 2001. - No 5. - S. 23-25.

    Standartlar

    1. Alqoritmlərin, proqramların, verilənlərin və sistemlərin sxemləri. Simvollar və icra qaydaları: GOST 19.701–90 (ISO 5807–85). – 1992–01–01-də təqdim edilmişdir. - M .: SSRİ Gosstandart: Standartlar Nəşriyyatı, 1991. - 26 s.

    2. Məişət elektron avadanlıqları. Giriş və çıxış parametrləri və əlaqə növləri. Texniki tələblər: GOST R 51771–2001. – 2002-01-01-də təqdim edilmişdir. - M .: Rusiyanın Gosstandart: Standartlar nəşriyyatı, 2001. - 27 s.

    Patent sənədləri

    1. Transceiver cihazı: Pat. 2187888 Ros. Federasiya / Çuqaeva V.I.; ərizəçi və patent sahibi Voronej. elmi araşdırma in-t bağlantısı. - № 2000131736/09; dekabr 12/18/00; nəşr. 20.08.02, Buğa. № 23 (II hissə). - 3 s.

    Uzaqdan Erişim Elektron Resurslar

    1. Yu. A. Koçetov. Qərar vermə nəzəriyyəsi / Novosibirsk Dövlət Universiteti. – Giriş rejimi: http://math.nsc.ru/LBRT/k5/or.html

    2. M. Perov. Ağac kimi siyahılarla işin təşkili // Mir PK - Elektron. jurnal. - "Açıq sistemlər" nəşriyyatı, 2008. - № 1. - Jurnallara giriş rejimi: http://www.osp.ru

    3. Rusiyada tədqiq edilmişdir: çox mövzulu. elmi jurnal / Moskva. fizika və texnologiya in-t. - Elektron. jurnal - Dolgoprudny: MIPT, 1998. - Jurnal giriş rejimi: http://zhurnal.mipt.rssi.ru. - Yox dövlət. qeydiyyat 0329900013.

    Yerli girişin elektron resursları

    1. Addım-addım İnternet. - Elektron. Dan. və proqram. - Sankt-Peterburq. : PiterKom, 1997. - 1 elektron. seçim disk (CD-ROM) + adj. (127 səh.)

    2. İngilis və rus dillərinin böyük izahlı lüğəti: 2-də 1. - Elektron. Dan. və proqram. - Maccelesfield (Böyük Britaniya): Europa House, 1999. - 1 elektron. seçim disk (CD-ROM).

    3. Visio Professional: Dizayn Mühəndis Kitabxanası 5.0. - Elektron. Dan. və proqram. - 1997. - 1 elektron. seçim disk (CD-ROM).

    Siyahıya rus dilində 2 məqalə daxildir (məcburi ) + 2 ingilis dilinə tərcümə edilmişdir. (isteğe bağlı), ərizəçinin iştirakı ilə yazılmışdır.

    Tətbiqlər

    Əlavələr yalnız o halda daxil edilir ki, ÜRC-nin əsas hissəsinin mətnini qarışdıran və işin özündə istinad edilən əlavə və köməkçi materiallar var.

    Tətbiqlərə aşağıdakı materiallar daxil ola bilər:

    - tədqiqat nəticələrinin istehsalata və ya tədris prosesinə tətbiqi aktı;

    – patent və ya faydalı model üçün ərizə;

    – tələbə işləri müsabiqəsinə təqdim edilmiş tədqiqatlar haqqında hesabat;

    - qurğuların sxemləri, tətbiqi proqram paketləri, WRC mövzusunda konfranslarda məruzələr haqqında məlumat və s.

    – tədqiqat protokolları və s.

    3.3 ÜRC-nin yekun variantının hazırlanması və icrası

    Dizayn Tələbləri

    WRC mətni GOST 9327-60 uyğun olaraq A4 ağ kağızın bir tərəfində kompüter və printerdən istifadə edərək çap edilməlidir.

    Əsərin əsas mətni 1,5 intervalla (hər səhifədə 27-30 sətir) və 1 intervalla (keçidlər və qeydlər) Times New Roman şriftində, 14 ölçülü (əsas mətn), 12 - keçidlərdə, qeydlərdə və cədvəllərdə mətn çap olunur. Sol kənarın ölçüsü 30 mm, sağ kənarı 10 mm, yuxarı və aşağı kənarların hər biri 20 mm-dir. Əsərin mətni düzülmüşdür enində.

    Çap olunmuş mətnin keyfiyyəti, illüstrasiya və cədvəllərin dizaynı onların aydın surətdə çıxarılması tələbinə cavab verməlidir. WRC-də aydın xətlər, hərflər, rəqəmlər və işarələr olmalıdır.

    Mətndə aşkar edilmiş səhvlər, səhvlər və digər qeyri-dəqiqliklər silinməklə və ya ağ boya ilə rənglənməklə, sonra düzəldilmiş mətnin (qrafikanın) maşınla və ya əlyazma ilə tətbiqi ilə düzəldilə bilər. Etiketlər, WRC vərəqlərinin zədələnməsi, ləkələrə icazə verilmir.

    QKM-nin mətnindəki soyadlar, qurumların adları və digər xüsusi adlar orijinal dildə verilir. Xüsusi adların transliterasiyasına və orijinal adın əlavəsi ilə (ilk qeyd olunanda) rus dilinə tərcümə edilmiş qurumların adlarının verilməsinə icazə verilir. Adlar aşağıdakı ardıcıllıqla yazılmalıdır: soyadı, adı, atasının adı və ya - soyadı, inisial hərfləri boşluqlarla ayrılır, inisialların soyaddan ayrıca növbəti sətirə keçirilməsinə yol verilmir.

    WRC mətnində rus sözlərinin və ifadələrinin abreviaturası QOST 7.12-93-ə uyğun olaraq, xarici Avropa dillərində sözlərin abreviaturası - GOST 7.11-2004-ə uyğun olaraq həyata keçirilir. Aşağıdakı söz və ifadələrin qısaldılmasına icazə verilmir: “beləliklə”, “qondarma”, “beləliklə”, “belə”, “məsələn”. Əgər ÜRK sözlər və adlar üçün xüsusi abbreviatura sistemi qəbul edibsə, o zaman qəbul edilmiş abbreviaturaların siyahısı ÜRK-nın “Təriflər, təyinatlar və abreviaturalar” struktur elementində verilməlidir. WRC-nin mətnində ümumi qəbul edilmiş əlifba abreviaturalarına əlavə olaraq, onların müəllifləri tərəfindən təqdim edilmiş, müvafiq bilik sahələrindən hər hansı anlayışı ixtisar edən əlifba abreviaturalarından istifadə etməyə icazə verilir. Bu halda, bu cür abbreviaturaların ilk qeydi tam addan sonra mötərizədə göstərilir, gələcəkdə mətndə deşifrə edilmədən istifadə olunur.

    Bölmələrin, yarımbölmələrin, paraqrafların, yarımbəndlərin nömrələnməsi

    Struktur elementlərin adları “MÜNDƏRİCATLAR”, “TƏYİFLƏR, İMVOLLAR VƏ İSTİSADƏLƏR”, “GİRİŞ”, “NƏTİCƏ”, “İSTİFADƏ EDİLƏN MƏNBƏLƏRİN SİYAHISI” QDK-nın struktur elementlərinin başlıqlarıdır.

    WRC-nin struktur elementlərinin başlıqları sətrin ortasında nöqtəsiz böyük hərflərlə yazılır, altından xətt çəkilmir, məsələn:

    GİRİŞ

    WRC-nin hər bir struktur elementi əsas hissənin bölmələri daxil olmaqla yeni vərəqdən (səhifədən) çap edilməlidir.

    Bölmələr, yarımbölmələr, paraqraflar və yarımbəndlər ərəb rəqəmləri ilə nömrələnməli və abzas abzası ilə yazılmalıdır. Bölmələr, əlavələr istisna olmaqla, mətn boyu ardıcıl olaraq nömrələnməlidir. Misal - 1, 2, 3 və s. Məsələn:

    3 Alınan həllərin effektivliyinin öyrənilməsi

    Alt bölmələr bölmə daxilində nömrələnir. Alt bölmə nömrəsinə nöqtə ilə ayrılmış bölmə və yarımbölmə nömrələri daxildir. Məsələn, 1.1, 1.2, 1.3 və s.

    Maddələr hər bir alt bölmədə ardıcıl olaraq nömrələnməlidir. Maddə nömrəsinə bölmə nömrəsi və nöqtə ilə ayrılmış yarımbölmə və bəndin seriya nömrəsi daxildir. Məsələn, 1.1.1, 1.1.2 və s.

    Yarımbənd nömrəsinə bölmənin, yarımbəndin, bəndin nömrəsi və nöqtə ilə ayrılmış yarımbəndin seriya nömrəsi daxildir. Məsələn, 1.1.1.1, 1.1.1.2 və s. Əgər bölmə bir yarımbölmədən ibarətdirsə, o zaman yarımbölmə nömrələnmir. Əgər yarımbölmə bir abzasdan ibarətdirsə, onda paraqraf nömrələnmir. Əgər paraqraf bir yarımbənddən ibarətdirsə, o zaman yarımbənd nömrələnmir. Mətndə bölmənin, yarımbölmənin, paraqrafın və yarımbəndin nömrəsindən sonra nöqtə qoymayın.

    Birbaşa CONTENTS nümunəsi

    GİRİŞ5

    1 Tədqiqat mövzusu üzrə tapşırıqların və işlərin nəzərdən keçirilməsi 7

    2 İnformasiya modellərinin layihələndirilməsi və alqoritmlərin işlənib hazırlanması10

    2.1 Dizayn üsullarının və alətlərinin seçimi10

    2.2 Məntiqi sistemin layihələndirilməsi11

    2.3 Fiziki sistemin dizaynı13

    2.4 İstifadəçi interfeysinin tərtibatı15

    2.5 İş alqoritmləri18

    3 Hazırlanmış modellərin və alqoritmlərin proqram təminatının həyata keçirilməsi texnologiyası25

    4.1 İcra vasitələrinin seçimi25

    4.2 Sistemin istifadəçi interfeysinin proqram təminatı ilə həyata keçirilməsi29

    4.3 Hazırlanmış sistemin əməliyyat və informasiya təhlükəsizliyinin təmin edilməsi33

    4.4 Sistemin inkişafı xərclərinin əsaslandırılması və iqtisadi hesablanması39

    4 Alınan həllərin effektivliyinin öyrənilməsi43

    4.1 Dizayn həllərinin effektivliyinin öyrənilməsi43

    4.2 Texnoloji həllərin effektivliyinin öyrənilməsi48

    4.3 İşlənmiş alqoritmlərin effektivliyinin öyrənilməsi51

    NƏTİCƏ55

    ƏDƏBİYYAT57

    ƏLAVƏLƏR59

    S.1 İzahlı qeyd üçün qrafik material59

    A.2 Məlumatların süzülməsi və qruplaşdırılması üçün alt proqramın siyahısı 61

    S.3 İnkişafın İcrası Aktı 65

    Bölmələrin və yarımbölmələrin başlıqları olmalıdır. Başlıqlar bölmələrin, yarımbölmələrin məzmununu aydın və yığcam şəkildə əks etdirməlidir.

    Bölmələrin, yarımbölmələrin başlıqları sonunda nöqtə qoyulmadan, altdan xətt çəkilmədən böyük hərfdən abzas abzası ilə çap edilməlidir. Başlıq iki cümlədən ibarətdirsə, onlar nöqtə ilə ayrılır. Başlıqlarda sözün defislənməsinə icazə verilmir. Alt bölmənin başlığı səhifədəki son sətir olmamalıdır.

    Siyahıdakı hər bir elementdən əvvəl tire qoyulmalıdır. Zəruri hallarda, ÜRK mətnində siyahının elementlərindən birinə istinad, defis əvəzinə a hərfi ilə başlayan rus əlifbasının sırasına kiçik hərflər qoyulur (ё, з istisna olmaqla). , й, o, h, ъ, ы, ь). Sadalamaların daha ətraflı təfərrüatları üçün ərəb rəqəmlərindən istifadə etmək lazımdır, bundan sonra mötərizə qoyulur və paraqraf abzasından giriş edilir.

    Misal üçün,

    Səhifələmə

    WRC səhifələri mətn boyu fasiləsiz nömrələnmədən sonra ərəb rəqəmləri ilə nömrələnməlidir. Səhifənin nömrəsi vərəqin aşağı hissəsinin ortasında nöqtəsiz yerləşdirilir.

    Baş səhifə, WRC üçün tapşırıq və məzmun ÜRC-nin ümumi səhifə nömrələnməsinə daxil edilir, onlara səhifə nömrələri qoyulmur.

    ÜRC-nin mətnində ayrı-ayrı vərəqlərdə yerləşdirilən təsvirlər və cədvəllər ümumi səhifə nömrələnməsinə daxil edilir. A3 vərəqindəki təsvirlər və cədvəllər (297×420) bir səhifə kimi sayılır.

    ÜRC-nin səhifələrinin nömrələnməsi və ÜRC-yə daxil olan əlavələr davamlı olmalıdır.

    Formulalar

    Düsturlar Microsoft Equation düstur redaktorundan (MS Office-in bir hissəsi) istifadə etməklə yığılır. Bu halda, “düstur” rus dilində və ya hər hansı digər dildə söz (ad, abbreviatura) olmayan ən azı iki simvoldan ibarət istənilən ardıcıllığı bildirir.

    Düsturlar ciddi ardıcıllıqla (mətndə izahlı qeydin ardıcıllığı ilə), mötərizədə, 1-dən başlayaraq ərəb rəqəmləri ilə nömrələnir. Düstur nömrələri ciddi şəkildə sağ kənarda yazılır. Bu halda, yalnız mətndə istinad edilən düsturlar nömrələnir. Məqalənin mətnində istinad edilməyən düsturlar nömrələnmir.

    Düsturun mətni mətnin sol kənarından (qırmızı xəttdən) 1,25 santimetr məsafədə sol tərəfə düzülür, bu düsturun nömrələnməsindən asılı olmayaraq:

    Əgər düstur sətirə uyğun gəlmirsə, o zaman "=" işarəsindən sonra və ya "+", "-" və s. riyazi işarələrdən sonra növbəti sətirə keçirilir. düstur eyni qalır - düstur (2) ilə nümunədə göstərildiyi kimi mətn məqaləsinin sol kənarından 1,25 santimetr:

    (2)

    Mətn ilə aşağıdakı düstur arasında, çoxsətirli düsturlarda və düsturla aşağıdakı mətn arasında boş sətirlər qalır.

    Simvolların və ədədi əmsalların mənalarının izahı birbaşa formulun altında, düsturda verilmiş ardıcıllıqla verilməlidir. Hər bir simvolun qiyməti və ədədi əmsal yeni sətirdə verilməlidir. Birinci sətir “harada” sözü ilə başlayır, ondan sonra iki nöqtə qoyulmur. Misal üçün:

    Əmək məsrəflərində mütləq azalma (DT):

    DT \u003d T0 - T1,

    burada T0 – baza halına uyğun olaraq informasiyanın emalı üçün əmək məsrəfləri;

    T1 - təklif olunan variant üzrə məlumatın emalı üçün əmək xərcləri.

    Dəyişənləri (hərfləri) yazmaq üçün Times şriftindən istifadə etməlisiniz, kursiv, qalın deyil (Microsoft Equation parametrlərində təyin edilmişdir): məsələn, t, V, s, U. Rəqəmləri yazmaq üçün kursiv deyil, Times şriftindən istifadə edin ( !), qalın deyil (Microsoft Equation parametrlərində təyin edilmişdir): məsələn, 1, 2, 15. Dəyişənlər və rəqəmlər üçün şrift ölçüsü 14 nöqtədir. Digər formula elementlərinin ölçüləri (MicrosoftEquation parametrlərində quraşdırılmışdır):

    Böyük indeks - 8 bal;

    Kiçik indeks - 6 bal;

    Böyük simvol (cəm, inteqralın işarələri) - 18 bal;

    Kiçik simvol - 12 xal.

    Vektorları, matrisləri təyin etmək üçün şriftlərin stilistik dizaynının digər elementlərindən istifadə etmək məqbuldur, məsələn, kursiv olmayan, qalın hərflər, Arial şrift və s.

    Standart funksiyalar (triqonometrik, loqarifmik və s.), həmçinin xüsusi simvollar üçün (sup, inf və s.) Times şriftindən istifadə etməlisiniz, qalın deyil, kursiv deyil (standart Microsoft Equation parametrlərinə uyğundur), misal üçün,

    İllüstrasiyalar

    WRC-də yerləşdirilən təsvirlər (rəsmlər, qrafiklər, diaqramlar, diaqramlar) Vahid Layihə Sənədləri Sisteminin dövlət standartlarının tələblərinə uyğun olmalıdır. 9.9.2 WRC-nin mətnindəki bütün təsvirlər (qrafiklər, çertyojlar, diaqramlar, diaqramlar və s.) onlara ilk istinaddan dərhal sonra (və ya növbəti səhifədə) yerləşdirilir və “Şəkil” sözü ilə işarələnir.

    İzahedici qeydin mətnində bir sıra illüstrasiyalar ola bilər, bunlar alqoritmlərin diaqramları, hesablama mərkəzlərinin strukturları, proqramla işlənmiş istehsal sənədlərinin sxemləri, qrafiklər və s. ayrı vərəqlərdə. Şəkil başlıqları da standart şriftlə olmalıdır.

    Əlavələrin illüstrasiyaları istisna olmaqla, illüstrasiyalar nömrələnmə yolu ilə ərəb rəqəmləri ilə nömrələnməlidir. Bölmə daxilində illüstrasiyaların nömrələnməsinə icazə verilir. Bu halda illüstrasiya nömrəsi bölmə nömrəsindən və nöqtə ilə ayrılmış təsvirin nömrəsindən ibarətdir. Məsələn - Şəkil 1.1. İllüstrasiyalara istinad edərkən, bölmə daxilində nömrələmə üçün davamlı nömrələmə üçün "... Şəkil 2-yə uyğun" və "... Şəkil 1.2-yə uyğun olaraq" yazılmalıdır.

    Lazım gələrsə, təsvirlərin adı və izahedici məlumatları ola bilər (şəkil mətni). "Şəkil" sözü və ad izahlı məlumatlardan sonra yerləşdirilir və aşağıdakı kimi düzülür: Şəkil 1 - Cihazın təfərrüatları.


    Şəkil 1 - Şəklin başlığı mərkəzləşdirilmişdir, qalın olmayan şrift ölçüsündə 12 punktla çap olunur və lazım olduqda, ola bilər.
    növbəti sətirdə davam etdi

    Şəkil başlığından sonra bir boş sətir qalır və məqalənin mətni çap olunmağa davam edir.

    masalar

    Hər bir cədvəlin nömrələnmiş və tematik (tercihen) başlığı olmalıdır.

    Cədvəlin mətnlə əlaqəsini sadələşdirmək üçün nömrələmə başlığı lazımdır; testə istinad edərkən qeyd etmək kifayətdir: nişan. 1. Cədvəllər izahat qeydinin mətnində yerləşmə ardıcıllığı ilə ərəb rəqəmləri ilə ardıcıl nömrələnir. "Cədvəl" sözü (böyük hərflə) və onun nömrəsi kursivlə çap olunur və sağa düzülür. "Cədvəl" sözü ilə əvvəlki paraqraf arasında bir boş sətir qalır. Cədvəl nömrəsindən sonra heç bir nöqtə yoxdur.

    Bir müddət əvvəl mənə Moskva liseyində alqoritmlər nəzəriyyəsinin əsasları kursunu öyrətməyi təklif etdilər. Təbii ki, məmnuniyyətlə razılaşdım. Bazar ertəsi, uşaqlara alqoritmlərin mürəkkəbliyini qiymətləndirmək üsullarını izah etməyə çalışdığım ilk mühazirə oldu. Düşünürəm ki, Habrın bəzi oxucuları da bu məlumatı faydalı və ya ən azı maraqlı tapa bilərlər.
    Alqoritmin mürəkkəbliyini ölçməyin bir neçə yolu var. Proqramçılar adətən alqoritmin sürətinə diqqət yetirirlər, lakin digər göstəricilər daha az əhəmiyyət kəsb etmir - yaddaş tələbləri, boş disk sahəsi. Sürətli alqoritmdən istifadə, kompüterdə olduğundan daha çox yaddaş tələb edərsə, gözlənilən nəticələrə gətirib çıxarmayacaq.

    yaddaş və ya vaxt

    Bir çox alqoritmlər yaddaşın ölçüsü və sürəti arasında seçim təklif edir. Problem böyük həcmdə yaddaşdan istifadə etməklə tez və ya daha az yerdən istifadə etməklə daha yavaş həll oluna bilər.
    Bu vəziyyətdə tipik bir nümunə ən qısa yolu tapmaq üçün alqoritmdir. Şəhər xəritəsini şəbəkə kimi təqdim edərək, bu şəbəkənin istənilən iki nöqtəsi arasında ən qısa məsafəni təyin etmək üçün alqoritm yaza bilərsiniz. Bizə hər dəfə ehtiyac duyduqda bu məsafələri hesablamaq əvəzinə, bütün nöqtələr arasında ən qısa məsafələri çıxara və nəticələri cədvəldə saxlaya bilərik. Verilmiş iki nöqtə arasındakı ən qısa məsafəni tapmaq lazım olduqda, sadəcə cədvəldən bitmiş məsafəni götürə bilərik.
    Nəticə dərhal əldə ediləcək, lakin bunun üçün çoxlu yaddaş tələb olunacaq. Böyük bir şəhərin xəritəsində on minlərlə nöqtə ola bilər. Sonra yuxarıda təsvir olunan cədvəldə 10 milyarddan çox hüceyrə olmalıdır. Bunlar. alqoritmin sürətini artırmaq üçün əlavə olaraq 10 GB yaddaşdan istifadə etmək lazımdır.
    Bu asılılıqdan məkan-zaman mürəkkəbliyi ideyası yaranır. Bu yanaşma ilə alqoritm həm icra sürəti, həm də sərf olunan yaddaş baxımından qiymətləndirilir.
    Zamanın mürəkkəbliyinə diqqət yetirəcəyik, lakin buna baxmayaraq, istehlak olunan yaddaşın miqdarını mütləq müəyyənləşdirəcəyik.

    Sifariş hesabı

    Müxtəlif alqoritmləri müqayisə edərkən onların mürəkkəbliyinin daxil edilən məlumatların miqdarından necə asılı olduğunu bilmək vacibdir. Məsələn, bir üsulla çeşidlədikdə min ədədin işlənməsi 1 s, milyon ədədin işlənməsi 10 s, başqa bir alqoritmdən istifadə edildikdə isə 2 s çəkə bilər. və 5 s. müvafiq olaraq. Belə şəraitdə hansı alqoritmin daha yaxşı olduğunu birmənalı demək mümkün deyil.
    Ümumiyyətlə, alqoritmin mürəkkəbliyi böyüklük sırasına görə qiymətləndirilə bilər. Əgər giriş məlumatının ölçüsü N artdıqca alqoritmin icra müddəti f(N) funksiyası ilə eyni sürətlə artırsa, alqoritm O(f(n)) mürəkkəbliyinə malikdir. A matrisi verildikdə hər sətirdə maksimum elementi tapan kodu nəzərdən keçirək.
    i:=1 üçün N etmək
    başlamaq
    maks:=A;
    j:=1 üçün N etmək
    başlamaq
    əgər A>max, onda
    maksimum:=A
    son;
    writeln(maksimum);
    son;
    Bu alqoritmdə i dəyişəni 1-dən N-ə dəyişir. Hər dəfə i dəyişəndə ​​j dəyişəni də 1-dən N-ə dəyişir. Xarici dövrənin hər N təkrarlanması zamanı daxili dövrə də N dəfə yerinə yetirilir. Daxili döngənin iterasiyalarının ümumi sayı N*N-dir. Bu, O(N^2) alqoritminin mürəkkəbliyini müəyyən edir.
    Alqoritmin mürəkkəblik sırasını qiymətləndirərkən yalnız ən sürətlə böyüyən hissədən istifadə etmək lazımdır. Fərz edək ki, vəzifə dövrü N^3+N ifadəsi ilə təsvir olunur. Bu halda onun mürəkkəbliyi O(N^3)-ə bərabər olacaqdır. Funksiyanın sürətlə böyüyən hissəsinin nəzərə alınması, N artdıqca alqoritmin davranışını qiymətləndirməyə imkan verir.Məsələn, N=100 üçün N^3+N=1000100 ilə N=1000000 arasındakı fərq cəmi 100-dür, bu da 0,01%.
    O-nu hesablayarkən, ifadələrdə sabit amilləri nəzərə almamaq olar. İş addımı 3N^3 olan alqoritm O(N^3) kimi qəbul edilir. Bu, O(N) əlaqəsinin tapşırıq ölçüsünün dəyişdirilməsindən asılılığını daha aydın göstərir.

    Çətinliyin tərifi

    Proqramın ən mürəkkəb hissələri adətən looplar və prosedur çağırışlarıdır. Əvvəlki nümunədə bütün alqoritm iki döngə ilə aparılır.
    Bir prosedur digərini çağırırsa, sonuncunun mürəkkəbliyini daha diqqətlə qiymətləndirmək lazımdır. Əgər orada müəyyən sayda təlimat yerinə yetirilirsə (məsələn, çap), onda bu, mürəkkəblik qiymətləndirməsinə praktiki olaraq heç bir təsir göstərmir. Əgər çağırılan prosedur O(N) addımlarını atırsa, onda funksiya alqoritmi əhəmiyyətli dərəcədə çətinləşdirə bilər. Prosedur döngə içərisində çağırılırsa, təsir daha böyük ola bilər.
    Nümunə olaraq iki proseduru nəzərdən keçirək: mürəkkəbliyi ilə yavaş O(N^3) və mürəkkəbliyi ilə sürətli O(N^2).
    prosedur yavaş;
    var
    i,j,k: tam ədəd;
    başlamaq
    i:=1 üçün N etmək
    j:=1 üçün N etmək
    k:=1 üçün N etmək
    (bəzi hərəkətlər)
    son;
    sürətli prosedur;
    var
    i,j: tam ədəd;
    başlamaq
    i:=1 üçün N etmək
    j:=1 üçün N etmək
    yavaş;
    son;
    prosedur Hər ikisi;
    başlamaq
    sürətli;
    son;
    Sürətli prosedurun daxili döngələrində Slow proseduru çağırılırsa, prosedurların mürəkkəbliyi çoxalır. Bu halda alqoritmin mürəkkəbliyi O(N^2)*O(N^3)=O(N^5) olur.
    Əgər əsas proqram prosedurları növbə ilə çağırırsa, onda onların mürəkkəblikləri toplanır: O(N^2)+O(N^3)=O(N^3). Aşağıdakı parça tam olaraq bu mürəkkəbliyə malikdir:
    prosedur yavaş;
    var
    i,j,k: tam ədəd;
    başlamaq
    i:=1 üçün N etmək
    j:=1 üçün N etmək
    k:=1 üçün N etmək
    (bəzi hərəkətlər)
    son;
    sürətli prosedur;
    var
    i,j: tam ədəd;
    başlamaq
    i:=1 üçün N etmək
    j:=1 üçün N etmək
    (bəzi hərəkətlər)
    son;
    prosedur Hər ikisi;
    başlamaq
    sürətli;
    yavaş;
    son;
    Rekursiv alqoritmlərin mürəkkəbliyi
    sadə rekursiya
    Xatırladaq ki, rekursiv prosedurlar özlərini çağıran prosedurlardır. Onların mürəkkəbliyini müəyyən etmək çətindir. Bu alqoritmlərin mürəkkəbliyi təkcə daxili döngələrin mürəkkəbliyindən deyil, həm də rekursiyanın təkrarlanmasının sayından asılıdır. Rekursiv prosedur kifayət qədər sadə görünə bilər, lakin o, özünü dəfələrlə çağırmaqla proqramı ciddi şəkildə çətinləşdirə bilər.
    Faktorial hesablamanın rekursiv həyata keçirilməsini nəzərdən keçirək:
    funksiya Faktorial(n: Word): tam;
    başlamaq
    n > 1 olarsa
    Faktorial:=n*Faktorial(n-1)
    başqa
    faktorial:=1;
    son;
    Bu prosedur N dəfə yerinə yetirilir, ona görə də bu alqoritmin hesablama mürəkkəbliyi O(N)-dir.
    Çoxsaylı rekursiya
    Özünü dəfələrlə çağıran rekursiv alqoritmə çoxlu rekursiya deyilir. Bu cür prosedurları təhlil etmək daha çətindir və onlar alqoritmi daha da mürəkkəbləşdirə bilər.
    Bu proseduru nəzərdən keçirin:
    prosedur DoubleRecursive(N: tam);
    başlamaq
    əgər N>0 olarsa
    başlamaq
    DoubleRecursive(N-1);
    DoubleRecursive(N-1);
    son;
    son;
    Prosedur iki dəfə çağırıldığından, onun icra müddətinin O(2N)=O(N) olacağını güman etmək olar. Amma reallıqda vəziyyət daha mürəkkəbdir. Bu alqoritmi diqqətlə araşdırsanız, onun mürəkkəbliyinin O(2^(N+1)-1)=O(2^N) olduğu aydın olur. Həmişə yadda saxlamaq lazımdır ki, rekursiv alqoritmlərin mürəkkəbliyinin təhlili çox qeyri-trivial bir işdir.
    Rekursiv alqoritmlərin həcm mürəkkəbliyi
    Bütün rekursiv alqoritmlər üçün həcmli mürəkkəblik anlayışı çox vacibdir. Prosedura hər bir çağırış kiçik həcmdə yaddaş tələb edir, lakin rekursiv zənglər zamanı bu məbləğ əhəmiyyətli dərəcədə arta bilər. Bu səbəbdən həmişə rekursiv prosedurların həcm mürəkkəbliyinin ən azı səthi təhlilini aparmaq lazımdır.
    Orta və ən pis vəziyyət
    Bir alqoritmin mürəkkəbliyini sifarişə qədər qiymətləndirmək alqoritmlərin mürəkkəbliyinin yuxarı həddidir. Proqramın böyük bir mürəkkəblik sırası varsa, bu, alqoritmin həqiqətən uzun müddət işləyəcəyi demək deyil. Bəzi verilənlər dəstlərində alqoritmin tamamlanması onların mürəkkəbliyindən daha az vaxt tələb edir. Məsələn, A vektorunda verilmiş elementi axtaran kodu nəzərdən keçirək.
    funksiyası Locate(məlumat: integer): tam;
    var
    i: tam ədəd;
    fl: boolean;
    başlamaq
    fl:=false; i:=1;
    while (fl deyil) və (i<=N) do
    başlamaq
    Əgər A[i]=məlumat o zaman
    fl:=doğru
    başqa
    i:=i+1;
    son;
    əgər fl olmasa
    i:=0;
    Yer:=I;
    son;
    İstədiyiniz element siyahının sonundadırsa, proqram N addım yerinə yetirməli olacaq. Bu halda alqoritmin mürəkkəbliyi O(N) olacaqdır. Bu ən pis halda, alqoritmin işləmə müddəti maksimum olacaqdır.
    Digər tərəfdən, axtardığınız element siyahıda birinci yerdə ola bilər. Alqoritm yalnız bir addım atmalıdır. Belə hal ən yaxşı adlanır və onun mürəkkəbliyi O(1) kimi qiymətləndirilə bilər.
    Bu halların hər ikisi mümkün deyil. Bizi ən çox gözlənilən variant maraqlandırır. Siyahının elementləri əvvəlcə təsadüfi qarışdırılırsa, istədiyiniz element siyahının istənilən yerində görünə bilər. Tələb olunan elementi tapmaq üçün orta hesabla N/2 müqayisə tələb olunacaq. Beləliklə, bu alqoritmin mürəkkəbliyi orta hesabla O(N/2)=O(N) təşkil edir.
    Bu halda, orta və gözlənilən mürəkkəblik eynidir, lakin bir çox alqoritmlər üçün ən pis vəziyyət gözləniləndən çox fərqlidir. Məsələn, ən pis halda sürətli çeşidləmə alqoritmi O(N^2) mürəkkəbliyə malikdir, gözlənilən davranış isə daha sürətli O(N*log(N)) olur.
    Ümumi Mürəkkəbliyin Qiymətləndirilməsi Funksiyaları
    İndi biz mürəkkəbliyi hesablamaq üçün ən çox istifadə edilən bəzi funksiyaları sadalayacağıq. Funksiyalar artan mürəkkəblik sırası ilə sadalanır. Bu siyahıda funksiya nə qədər yüksəkdirsə, bu təxminlə alqoritm bir o qədər sürətli işləyəcək.
    1. C sabitdir
    2.log(log(N))
    3 log(N)
    4. N^C, 0 5. N
    6.N*log(N)
    7. N^C, C>1
    8. C^N, C>1
    9. N!
    Mürəkkəblik tənliyi bu funksiyalardan bir neçəsini ehtiva edən alqoritmin mürəkkəbliyini qiymətləndirmək istəyiriksə, onda tənliyi cədvəldə aşağıdakı funksiyaya endirmək olar. Məsələn, O(log(N)+N!)=O(N!).
    Alqoritm nadir hallarda və az miqdarda məlumat üçün çağırılırsa, O (N ^ 2) mürəkkəbliyi məqbul sayıla bilər, lakin alqoritm real vaxt rejimində işləyirsə, O (N) performansı həmişə kifayət etmir.
    Adətən mürəkkəbliyi N*log(N) olan alqoritmlər yaxşı sürətlə işləyir. N^C mürəkkəbliyi olan alqoritmlər yalnız C-nin kiçik qiymətləri üçün istifadə edilə bilər. Sırası C^N və N funksiyaları ilə təyin olunan alqoritmlərin hesablama mürəkkəbliyi! çox böyükdür, ona görə də belə alqoritmlər yalnız kiçik həcmli verilənləri emal etmək üçün istifadə edilə bilər.
    Nəhayət, burada saniyədə bir milyon əməliyyat edən bir kompüterin bəzi yavaş alqoritmləri nə qədər müddətə işlədəcəyini göstərən bir cədvəl var.