Masz rację. Zauważ, że termin nieznacznie narusza klasyczną notację big-O , która jest zdefiniowana dla funkcji w jednej zmiennej. Istnieje jednak naturalne rozszerzenie wielu zmiennych.O(n+m)
Mówiąc wprost, skoro
możesz to wywnioskować i są równoważnymi asymptotycznymi górnymi granicami.O(n+m)O(max{m,n})
12(m+n)≤max{m,n}≤m+n≤2max{m,n},
O(n+m)O(max{m,n})
Z drugiej strony różni się od , ponieważ jeśli ustawisz , otrzymaszO(n+m)O(min{n,m})n=2m
Myślę, że warto zauważyć, że piszą w sposób abstrakcyjny: „Pokazujemy, że niemożliwe jest zdefiniowanie notacji wielkiej-O dla funkcji na więcej niż jednej zmiennej w sposób, który implikuje właściwości powszechnie używane w analizie algorytmów. Wykazujemy również, że wspólne definicje nie sugeruj tych właściwości, nawet jeśli funkcje w zapisie wielkiej-O ograniczają się do ścisłego ograniczenia ”.
Raphael
4
Jako następcze w stosunku do mojego powyższego komentarza, niedawny artykuł Ogólna definicja O-notacji do analizy algorytmów K. Rutanen (2015) ma pokazać, jak zdefiniować sensowne O-notacja dla ogólnych zestawów, w tym . N2
Raphael
25
Wierzcie lub nie, wydaje mi się (z mojego doświadczenia), że wielu algorytmów ludzie tak naprawdę nie myśleli o tym, co formalnie oznacza duża notacja O, a kiedy o to pytamy, można uzyskać kilka różnych odpowiedzi. Niektóre zagadnienia zostały omówione w artykule O asymptotycznej notacji z wieloma zmiennymi autorstwa Rodneya R. Howella.
Co ciekawe, wydaje się również, że większość kursów z zakresu algorytmów wprowadzających spędza dużo czasu na formalnej notacji O z jedną zmienną, a następnie w kolejnych tygodniach chętnie używa notacji dla algorytmów graficznych z kilkoma zmiennymi w sposób przypadkowy, bez omawiania notacja faktycznie oznacza.
Link w mojej odpowiedzi odnosi się do artykułu Howella, który jest naprawdę miłym traktowaniem tego pytania.
A.Schulz,
1
@ A. Schulz: Rzeczywiście, pisałem odpowiedź jednocześnie do ciebie.
Kristoffer Arnsfelt Hansen
1
Jestem zwolenniczką uważności z warunkami Landau, więc zgadzam się, ale to zawiera zbyt wiele rantów, by uzyskać dobrą odpowiedź.
Raphael
4
@Raphael: Odpowiedź nie jest rozumiana jako rant, ale być może mogłaby zostać sformułowana bardziej precyzyjnie. Chodzi o to, że w zasadzie chodzi o to, jakie jest znaczenie dużego O z więcej niż jednym parametrem. Odpowiedź jest taka, że powinno to oznaczać cokolwiek, co jest zgodne w społeczności algorytmów, czego naucza się na kursach algorytmów itp. Chodzi mi o to, że pozornie nie ma takiego porozumienia co do tego, co dokładnie oznacza notacja.
Odpowiedzi:
Masz rację. Zauważ, że termin nieznacznie narusza klasyczną notację big-O , która jest zdefiniowana dla funkcji w jednej zmiennej. Istnieje jednak naturalne rozszerzenie wielu zmiennych.O(n+m)
Mówiąc wprost, skoro możesz to wywnioskować i są równoważnymi asymptotycznymi górnymi granicami.O(n+m)O(max{m,n})
Z drugiej strony różni się od , ponieważ jeśli ustawisz , otrzymaszO(n+m) O(min{n,m}) n=2m
źródło
Wierzcie lub nie, wydaje mi się (z mojego doświadczenia), że wielu algorytmów ludzie tak naprawdę nie myśleli o tym, co formalnie oznacza duża notacja O, a kiedy o to pytamy, można uzyskać kilka różnych odpowiedzi. Niektóre zagadnienia zostały omówione w artykule O asymptotycznej notacji z wieloma zmiennymi autorstwa Rodneya R. Howella.
Co ciekawe, wydaje się również, że większość kursów z zakresu algorytmów wprowadzających spędza dużo czasu na formalnej notacji O z jedną zmienną, a następnie w kolejnych tygodniach chętnie używa notacji dla algorytmów graficznych z kilkoma zmiennymi w sposób przypadkowy, bez omawiania notacja faktycznie oznacza.
źródło