O-mare

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare
Exemplu de notație mare-O: f (x) ∈ O (g (x)), există c > 0 și o valoare x 0 astfel încât în ​​dreapta lui x 0 avem f (x) <cg (x)

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

dacă și numai dacă

.

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ă

Teoria notației O - mare: f este de ordinul g ( f ( x ) ∈ O ( g ( x ))) dacă și numai dacă există un număr real pozitiv M și un număr real x 0 astfel încât pentru toate X , | f ( x ) | <= M ⋅ | g ( x ) |, când x < x 0

Î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

[4]

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ă

  1. ^ ( DE ) Bachmann Paull , Analytische Zahlentheorie , voi. 2, Leipzig, Teubner, 1894.
  2. ^ ( DE ) Edmund Landau , Handbuch der Lehre von der Verteilung der Primzahlen , Leipzig, BG Teubner, 1909, p. 883.
  3. ^ ( DE ) Edmund Landau , Handbuch der Lehre von der Verteilung der Primzahlen , Leipzig, BG Teubner, 1909, p. 31.
  4. ^ a b ( DE ) Edmund Landau , Handbuch der Lehre von der Verteilung der Primzahlen , Leipzig, BG Teubner, 1909, p. 61.
  5. ^ Thomas H. Cormen și colab., 2001, Introducere în algoritmi, ediția a doua

Elemente conexe