O-mare
Această intrare sau secțiune despre matematică nu citează sursele necesare sau cei prezenți sunt insuficienți . |
Notația matematică mare-O este utilizată pentru a descrie comportamentul asimptotic al funcțiilor . Scopul său este de a caracteriza comportamentul unei funcții pentru argumente ridicate într-un mod simplu, dar riguros, pentru a putea compara comportamentul mai multor funcții între ele. Mai precis, este folosit pentru a descrie o limită superioară asimptotică pentru magnitudinea unei funcții față de alta, care are de obicei o formă mai simplă. Are două domenii principale de aplicare: în matematică , este de obicei folosit pentru a caracteriza restul trunchierii unei serii infinite, în special a unei serii asimptotice , în timp ce în informatică este util în analiza complexității algoritmilor .
În utilizarea informală, notația O este utilizată în mod obișnuit pentru a descrie o limită asimptotică îngustă , dar limitele asimptotice strânse sunt mai formal și corect indicate prin litera Θ (Theta mare), așa cum este descris mai jos.
Istorie
Această notație a fost introdusă pentru prima dată de teoreticianul german al numerelor Paul Bachmann în 1894 [1] , în al doilea volum al cărții Analytische Zahlentheorie („Teoria analitică a numerelor”), al cărei prim volum (care încă nu conținea notația O -grande) a apărut în 1892 . Notarea a devenit populară datorită lucrării unui alt teoretician al numerelor german, Edmund Landau [2] , motiv pentru care astăzi este uneori numit simbolul Landau . O mare, care înseamnă „de ordinul lui”, a fost inițial un omicron capital; astăzi se folosește și litera mare O , dar niciodată cifra zero .
Utilizare
Există două utilizări pentru această notație, care sunt formal apropiate, dar clar diferite: asimptotele infinite și asimptotele infinitesimale . Această distincție este doar aplicativă și nu de principiu. Cu toate acestea, definiția formală a „Big-O” este aceeași în ambele cazuri, cu singura diferență în valoarea la care se intenționează să se aplice limita funcției la care „Big-O” se aplică.
Comportamentul asimptotic la infinit
Notația O mare este utilă în analiza eficienței algoritmilor. De exemplu, să presupunem că am descoperit că timpul (sau numărul de pași) necesar pentru a finaliza o problemă de dimensiune n este T ( n ) = 4 n ² - 2 n + 2.
Pentru valori mari ale lui n, termenul n ² va deveni preponderentă în raport cu ceilalți, care nu pot fi luate în considerare; de exemplu, pentru n egal cu 500, termenul de 4 n ² va fi egală cu 1000 de ori termenul de 2 n și ignorându din urmă va fi, în cele mai multe cazuri, să fie o aproximare tolerabil.
Mai mult, chiar și coeficienții devin irelevanți dacă comparăm expresia anterioară cu una de ordin superior, cum ar fi una care conține un termen n³ sau 2 n . Dacă și T ( n ) = 1.000.000 n ², dacă U ( n ) = n ³, U ( n ) va fi totuși mai mare decât T ( n ) pentru n mai mare de 1.000.000 ( T (1.000.000) = 1.000 .000³ = U ( 1.000.000)).
Notația big-O reușește să exprime doar acest concept: vom scrie
și vom spune că algoritmul are o complexitate temporală de ordinul lui n 2 .
Mare-O și infinitesimal
Notația Big-O poate fi utilizată și pentru a descrie termenul de eroare într-o aproximare a unei funcții. De exemplu,
exprimă faptul că diferența este mai mică în valoare absolută decât o constantă pozitivă înmulțită cu când x este suficient de aproape de 0.
Definiție formală
Asuma ca Și sunt două funcții definite pe un subset de numere reale [3] . Să spunem asta
- pentru
- .
Notația poate fi folosită și pentru a descrie comportamentul în vecinătatea unui număr real : să spunem asta
- pentru
dacă și numai dacă
- pentru
De sine este diferit de zero pentru valorile de suficient de aproape de , ambele definiții pot fi unificate folosind limita superioară :
- pentru
dacă și numai dacă
În matematică, comportamentele asimptotice care tind spre și a sunt luate în considerare ambele. În teoria complexității de calcul , sunt folosite doar cele care tind spre infinit; în plus, sunt considerate numai funcțiile întotdeauna pozitive, astfel încât valoarea absolută poate fi omisă.
Exemplu
Luați în considerare cele două polinoame
Atunci
Demonstrație:
Arătăm asta pentru fiecare unde este este o constantă pe care o vom determina mai târziu.
Presupune . Din inegalitatea triunghiulară obținem că
(în ultimul pas, înlocuitorul se justifică prin faptul că )
Observăm că pentru inegalitățile se mențin Și . Din acestea obținem asta
prin urmare
Luând obținem teza.
Probleme de notare
Declaratia " este de ordinul "este adesea scris ca" Acesta este un abuz de notație : nu afirmăm cu adevărat egalitatea a două funcții, în acest sens nu reprezintă o singură funcție ci o clasă de funcții. Ar fi mai corect să scrii „ ", așa cum s-a văzut mai sus.
Uneori se scrie și " „pentru a indica asta . Și acesta este un abuz de notație: cel indicat în prima expresie nu este o adevărată egalitate, deoarece nu este simetrică. De exemplu, cu această notație avem
dar
ca funcție Și dar nu pentru care tinde spre infinit.
Într-o utilizare mai complexă, poate apărea în diferite locuri într-o ecuație, chiar de mai multe ori în fiecare membru. De exemplu, următoarele afirmații sunt adevărate pentru
Înțelesul acestor afirmații este după cum urmează: pentru orice funcție care satisface fiecare dintre O-mare pe partea stângă, există o funcție care satisface fiecare dintre O-mare prezent pe partea dreaptă, astfel încât înlocuirea acestor funcții în ecuația face membrii egali. De exemplu, a treia ecuație înseamnă: "Pentru fiecare funcție f ( n ) ∈O (1)" există o funcție g ( n ) ∈O ( e n ) astfel încât n f ( n ) = g ( n ). " În ceea ce privește mulțimile, sensul este că clasa de funcții reprezentată de membrul stâng este un subset al clasei de funcții reprezentate de membrul drept.
Ordinea funcțiilor dintre cele mai comune
Mai jos este o listă a claselor de funcții întâlnite frecvent în analiza algoritmilor. Toate acestea trebuie luate în considerare pentru care tinde spre infinit. Funcțiile sunt enumerate prin mărire crescătoare (în termeni stabiliți, fiecare clasă de funcții enumerate este un superset al celor anterioare). În continuare, indică o constantă arbitrară.
Notaţie | Nume | Exemplu |
---|---|---|
constant | Determinați dacă un număr este impar sau par | |
logaritmică iterată | Algoritmul de căutare al lui Hopcroft și Ullman pe un set disjunct (un tip de structură de date ) | |
logaritmic | Căutați un element dintr-o listă sortată folosind algoritmul de căutare binară | |
polilogaritmică | Decideți dacă este primul prin testul de primaritate AKS | |
liniar | Căutați un element într-o listă neordonată | |
logliniar | Sortați o listă după sortare heap | |
pătratic | Sortează o listă folosind sortarea prin inserare | |
polinom | Căutați cea mai scurtă cale pe un grafic orientat și ponderat utilizând algoritmul Floyd-Warshall | |
exponențial , uneori numit geometric | Găsiți soluția exactă la problema vânzătorului călător (sub ipoteza că P ≠ NP ) | |
factorial | Orice problemă NP-completă prin intermediul unui algoritm care caută soluția cu o metodă de forță brută |
Alte notații asociate
Big-O este notația asimptotică cea mai frecvent utilizată pentru compararea funcțiilor. Împreună cu alte notații înrudite formează familia notațiilor Bachmann - Landau.
O-notație mică
Intuitiv, afirmația „ Și " (citit " este o-mic de ") înseamnă că crește mult mai repede decât Este o funcție valorică reală sau complexă e o funcție cu valoare reală, ambele definite pe un subset nelimitat de numere reale pozitive, astfel încât este strict pozitiv pentru toate valorile suficient de mari ale Noi scriem
dacă pentru fiecare adevăratul pozitiv există astfel încât
De exemplu, obținem
Și
Diferența dintre definiția de mai sus pentru notația O mare și această definiție a micului o, este că, în timp ce prima trebuie să fie adevărată pentru cel puțin o constantă al doilea trebuie să fie valabil pentru fiecare constantă pozitivă oricât de mică [5] . În acest fel, notația o-mică este „mai puternică” decât notația o-mare corespunzătoare: orice funcție care este o-mică decât este, de asemenea, O-mare de dar nu toate funcțiile care sunt O-mari decât Sunt o-mic de De exemplu, dar
De sine este diferită de zero, sau cel puțin devine diferită de la un anumit moment, relația este echivalent cu
care este modul în care Landau [4] a definit inițial notația o-mică.
Notarea small-o satisface următoarele proprietăți:
- de sine este o constantă diferită de zero și asa de
- de sine Și asa de
- de sine Și asa de acesta este
Notă
- ^ ( DE ) Bachmann Paull , Analytische Zahlentheorie , voi. 2, Leipzig, Teubner, 1894.
- ^ ( DE ) Edmund Landau , Handbuch der Lehre von der Verteilung der Primzahlen , Leipzig, BG Teubner, 1909, p. 883.
- ^ ( DE ) Edmund Landau , Handbuch der Lehre von der Verteilung der Primzahlen , Leipzig, BG Teubner, 1909, p. 31.
- ^ a b ( DE ) Edmund Landau , Handbuch der Lehre von der Verteilung der Primzahlen , Leipzig, BG Teubner, 1909, p. 61.
- ^ Thomas H. Cormen și colab., 2001, Introducere în algoritmi, ediția a doua