Wiem że złożoność algorytmy zależy od konkretnego przypadku, ale jak określić kiedy złożoność algorytmu to
\(\displaystyle{ logN; N ^{2};N ^{N};N ^{m}}\) itp
Złożoność algorytmu
-
- Użytkownik
- Posty: 125
- Rejestracja: 29 paź 2009, o 20:03
- Płeć: Mężczyzna
- Lokalizacja: Kalisz
- Podziękował: 1 raz
- Pomógł: 16 razy
Złożoność algorytmu
Jeśli zwiększysz dane dwukrotnie, a czas zwiększy się czteroktornie tzn, że \(\displaystyle{ T(n) = \Big_O(n^{2})}\)
Jeśli zwiększysz dwukrotnie, a czas zwiększy się jedynie o jakąś stałą tzn, że \(\displaystyle{ T(n) = \Big_O(log(n))}\)
Itd.
Jeśli zwiększysz dwukrotnie, a czas zwiększy się jedynie o jakąś stałą tzn, że \(\displaystyle{ T(n) = \Big_O(log(n))}\)
Itd.
- tkrass
- Użytkownik
- Posty: 1464
- Rejestracja: 21 lut 2008, o 13:11
- Płeć: Mężczyzna
- Lokalizacja: Cambridge / Warszawa
- Podziękował: 10 razy
- Pomógł: 186 razy
Złożoność algorytmu
Nie wiem czy dobrze rozumiem pytanie, ale jeżeli tak, to musisz po prostu sprawdzić ile operacji wykona Twój program, na przykład jak napiszesz:
to algorytm ma złożoność liniową, a jak napiszesz:
to ma kwadratową. Jak puścisz np. pętlę po wszystkich i i w każdym jej wykonaniu będziesz robił wyszukiwanie binarne (które działa w czasie logarytmicznym), to dostaniesz złożoność \(\displaystyle{ O(n \log n)}\).
Czasami nie da się w tak prosty sposób określić złożoności programu, ale ogólnie musisz tylko sprawdzić ile wykonasz operacji w zależności od n.
Kod: Zaznacz cały
int i=1;
while(i<=n) {
rób coś;
i++;
}
Kod: Zaznacz cały
int i=1;
int k;
while(i<=n) {
k=1;
while(k<=n) {
rób coś;
k++;
}
i++;
}
Czasami nie da się w tak prosty sposób określić złożoności programu, ale ogólnie musisz tylko sprawdzić ile wykonasz operacji w zależności od n.
- Matm
- Użytkownik
- Posty: 329
- Rejestracja: 11 gru 2010, o 20:42
- Płeć: Mężczyzna
- Lokalizacja: Poznań
- Podziękował: 6 razy
- Pomógł: 5 razy
Złożoność algorytmu
jeżeli mam pętlę w pętli to mam \(\displaystyle{ N^{2}}\) jak trzy pętle w pętli to\(\displaystyle{ N^{m}}\) a jak mam jakaś pętlę np.
n=1
while n<10:
pokaż n; liniowa
n=n+1;
while:
k=1
while k<9: tutaj kwadratowa
pokaż k;
k++
to złożoność tego algorytmu
\(\displaystyle{ N^{m}}\)?
n=1
while n<10:
pokaż n; liniowa
n=n+1;
while:
k=1
while k<9: tutaj kwadratowa
pokaż k;
k++
to złożoność tego algorytmu
\(\displaystyle{ N^{m}}\)?