Złożoność czasowa algorytmu

0

Witam dostałem polecenie od swojego wykładowcy:

W zadaniu mamy kilka pseudokodów, reprezentujących pewne proste algorytmy. Zmienna n reprezentuje w nich rozmiar danych które przetwarza procesor. Zakładając, że każda instrukcja wykonywana jest przez procesor w czasie t należy odpowiedzieć sobie na pytanie: ile razy wzrośnie całkowity czas realizacji kodu (a tym samym algorytmu), jeżeli liczba n wzrośnie k-razy ?
Proszę spróbować określić funkcję pomiędzy wzrostem n a czasem realizacji kodu. Taką funkcję nazwiemy złożonością czasową.

nie do konca rozumiem jak mam to wykonac w c++, macie jakies pomysly?

1

A masz to wykonać w c++? Bo jeżeli to jest całe polecenie to nie ma tam ani słowa o napisaniu programu, nic też o c++.
Ja bym po prostu przeanalizował te pseudokody i określił złożoność obliczeniową. Bardziej to wygląda na zadanie z algorytmów niż z programowania.

0

Tak to zadanie z algorytmiki, ale poprzez c++.
w załączniku dostałem takie kody
kod I.

cin >> n;
for (int i=1; i<=n;i++)
{
cin >> x;
if (x==0) return 0;
}

kod II.

cin >> n;
while (n>1)
{
n=n/2;
wynik++;
}
cout << wynik;

kod III.

cin >>n;
for (int i=1; i<=n;i++)
for (int j=1; j<=n; j++)
cout << i*j;

kod IV.

cin >>n>>m;
for (int i=1; i<=n; i++)
cout <<i*i;
for (int j=1; j<=m; j++)
cout << j*j;
1

No, no to widzisz. Wyjaśnione, masz to przeanalizować i określić złożoność, nic nie programować :]

0

yyy no to gorzej niz myslalem.. bo ja sobie myslalem zeby wklepać ten kod w visuala, zrobic naliczanie czasu dla roznych n startowych, zwiekszać je i zrobić wykres jak rośnie czas w zaleznosci od n
a tak jak ty mówisz to nie wiem

2

I - Θ(n) ( jeżeli dane wpisywane z klawiatury mają losowy rozkład )
II - Θ(log(n))
III - Θ(n*n)
IV - Θ(n+m)

https://www.samouczekprogramisty.pl/podstawy-zlozonosci-obliczeniowej/

1 użytkowników online, w tym zalogowanych: 0, gości: 1