Temat 4: Złożoność obliczeniowa (I)

Wstecz; Ostatnia modyfikacja: 9.03.2015
  • Ćw 1: co wypisze poniższy program
  • def funkcja1(x, y, *args, **kwargs):
      return "".join([kwargs[a] for a in args])
    
    d={"x1":"a","x2":"b","x3":"c"}
    print(funkcja1(*sorted(d.keys()), **d))
    
  • Ćw 2: zaimplementuj dekorator timeit, do mierzenia czasów wykonania funkcji. Rozwiązanie.
  • Złożoność obliczeniowa: definicje. Niech $f,g\in \mathbb{N}\rightarrow \mathbb{R}_{+}$, wtedy
  • $$f(n) \in \Theta(g(n)) \Leftrightarrow \exists_{c_1,c_2\in \mathbb{R}_{+}}\exists_{n_0\in \mathbb{N}}\forall_{m\geq n_0} \Big(c_1\cdot g(m) \leq f(m) \leq c_2 \cdot g(m)\Big)$$ $$f(n) \in O(g(n)) \Leftrightarrow \exists_{c\in \mathbb{R}_{+}}\exists_{n_0\in \mathbb{N}}\forall_{m\geq n_0} \Big(f(m) \leq c \cdot g(m)\Big)$$ $$f(n) \in \Omega(g(n)) \Leftrightarrow \exists_{c\in \mathbb{R}_{+}}\exists_{n_0\in \mathbb{N}}\forall_{m\geq n_0} \Big(c \cdot g(m) \leq f(m)\Big)$$
  • Ćw 3: Zbadaj zależności pomiędzy funkcjami: $$1,15,n,2\cdot n,n+2,log(n),log(n-2)$$ $$nlog(n),nlog(n)+n, nlog(n)-n, n^2, n^3,log(n!),2^n,3^n,e^n,n!,n^n$$
  • Ćw 4: Zaproponuj algorytm wyznaczania $(\hat{i},\hat{j})$, gdzie:
  • $$(\hat{i},\hat{j})=argmax_{0\leq i \leq j < n} l[j]-l[i]$$ Zaimplementuj rozwiązanie $\Theta(n^2)$ oraz $\Theta(n)$. Porównaj czasy działania.
  • Kod z ćwiczeń.