mam problem z okresleniem zlozonosci czasowej algorytmu sprawdzajacego czy z kazdych n patykow da sie zbudowac trojkat, tzn. mamy n liczb (n>=3) i sprawdzamy czy z kazdej trojki liczb mozna zbudowac trojkat.
Algorytm wyglada tak:
Kod: Zaznacz cały
for(k=0; k+2<n; k++)
for(j=k+1; j+1<n; j++)
for(i=j+1; i<n; i++) {
if(tab[k]<(tab[j]+tab[i]) && tab[i]<(tab[j]+tab[k]) && tab[j]<(tab[i]+tab[k]))
cout<<"Z patykow: "<<tab[k]<<" "<<tab[j]<<" "<<tab[i]<<" mozna stworzyc trojkat"
else
cout<<"Z patykow: "<<tab[k]<<" "<<tab[j]<<" "<<tab[i]<<" nie mozna stworzyc trojkata"
}
Alorytm wykonuje tyle operacji ile jest 3-elementowych podzbiorow(kombinacji) w zbiorze n-elementowym.
Czy ktos moglbym jednoznacznie okreslic jaka to klasa zlozonosci? A moze ktos jest w stanie okreslic dokladna zlozonosc?
Prosze o pomoc
Pozdrawiam
Cryer