10.02.2019 Views

opora

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

KAPITOLA 7. SLOŽITOST 148<br />

Příklad 7.1.3 Uvažme následující implementaci porovnávání řetězců.<br />

int str_cmp (int n, string a, string b) {<br />

int i;<br />

i = 0;<br />

while (i value)) {<br />

a[j+1] = a[j];<br />

j = j - 1;<br />

}<br />

a[j+1] = value;<br />

}<br />

}<br />

• Pro určení složitosti aplikujme uniformní cenové kritérium např. tak, že budeme<br />

považovat složitost každého řádku programu (mimo deklarace) za jednotku.<br />

(Předpokládáme, že žádný cyklus není zapsán na jediném řádku.)<br />

• Složitost lze pak určit jako 2n 2 + 4n + 1:<br />

– vnitřní cyklus má 4 kroky, provede se 0, 1, ..., n − 1 krát, tj. 4(0 + 1 +<br />

... + n − 1) = 4 n 2 (0 + n − 1) = 2n2 − 2n kroků,<br />

– vnější cyklus má mimo vnitřní cyklus 6 kroků (včetně testu ukončujícího<br />

vnitřní cyklus) a provede se n krát, tj. 6n kroků,<br />

– jeden krok připadá na ukončení vnějšího cyklu.<br />

7.1.6 Asymptotická omezení složitosti<br />

Přesná informace o složitosti algoritmu je pro nás většinou zbytečná, o skutečném<br />

čase (prostoru) výpočtu vypovídá málo:

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!