Złożoność algorytmu

Awatar użytkownika
Matm
Użytkownik
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

Post autor: Matm »

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
spajder
Użytkownik
Użytkownik
Posty: 735
Rejestracja: 7 lis 2005, o 23:56
Płeć: Mężczyzna
Lokalizacja: Łódź
Podziękował: 2 razy
Pomógł: 133 razy

Złożoność algorytmu

Post autor: spajder »

Odpowiedź jest zawarta w samym pytaniu
Matm pisze:złożoność algorytmy zależy od konkretnego przypadku
możesz pytać na przykładach
PMichalak
Użytkownik
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

Post autor: PMichalak »

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.
limak1
Użytkownik
Użytkownik
Posty: 1
Rejestracja: 6 sty 2011, o 21:20
Płeć: Mężczyzna
Lokalizacja: Warszawa

Złożoność algorytmu

Post autor: limak1 »

dobre założenia
Awatar użytkownika
Matm
Użytkownik
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

Post autor: Matm »

a mógłby ktoś wypisac wszystkie te założenia?
Awatar użytkownika
tkrass
Użytkownik
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

Post autor: tkrass »

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:

Kod: Zaznacz cały

int i=1;
while(i<=n) {
rób coś;
i++;
}
to algorytm ma złożoność liniową, a jak napiszesz:

Kod: Zaznacz cały

int i=1;
int k;
while(i<=n) {
k=1;
while(k<=n) {
rób coś;
k++;
}
i++;
}
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.
Awatar użytkownika
Matm
Użytkownik
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

Post autor: Matm »

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}}\)?
ODPOWIEDZ