Download as pptx, pdf, or txt
Download as pptx, pdf, or txt
You are on page 1of 15

Algorytmy i struktury

danych

dr inż. Michał Stasiak


O mnie

• Specjalizacja:
• informatyka techniczna i telekomunikacja
• ekonomia i finanse

• Zainteresowania naukowe:
• Modelowanie i symulacja
• Algorytmy data mining
• Systemy handlu algorytmicznego
Zdalna forma zajęć

• Realizowana stacjonarnie / Teams


• Kurs moodle

Kontakt:
• michal.stasiak@wsb.poznan.pl
• MS Teams
Podręczniki

• Piotr Wróblewski: Algorytmy, struktury danych i


techniki programowania
Podręczniki

• Niklaus Wirth: Algorytmy + struktury danych =


programy
Środowisko programistyczne

• MS Visual Studio
• C# (C++)
Praca na zaj. i zasady oceniania

• 3 zadania projektowe realizowane na zajęciach (20 pkt;20 pkt;20 pkt)


• Test z wiedzy praktycznej (40 pkt)
• *Dodatkowo punkty za aktywność

0 - 49 niedostateczny
50 - 59 dostateczny
60 - 69 dostateczny plus
70 - 79 dobry
80 - 89 dobry plus
90 - 100 bardzo dobry
Algorytm

• Algorytm – skończony ciąg jasno zdefiniowanych czynności


koniecznych do wykonania pewnego rodzaju zadań, sposób
postępowania prowadzący do rozwiązania problemu
Algorytm

• Język naturalny
• Lista kroków
• Schemat blokowy
• Pseudokod
• Język formalny (matematyczna)
• Język programowania
Jak ocenić wydajność algorytmu?

• czas wykonania
• wymagania pamięciowe

• miara złożoności obliczeniowej powinna być niezależna od


komputera (procesora), platformy programistycznej, opcji i
bieżącego stanu systemu
Złożoność obliczeniowa

• zazwyczaj analizując złożoność przyjmujemy uproszczenia


dotyczące mniej znaczących składników:
• pomijamy rzeczywisty koszt poszczególnych instrukcji używając
abstrakcyjnych stałych
• koncentrujemy się na rzędzie wielkości funkcji – najwyższa potęga to
najbardziej znaczący, najszybciej rosnący składnik w formule – inne
składniki wraz ze wzrostem n stają coraz mniej istotne
*w niektórych zastosowaniach stałe i składniki niższych rzędów
mogą się okazać istotne (po to ulepszamy komputery)
Złożoność obliczeniowa

• złożoność obliczeniowa algorytmu jest mierzona jego


wymaganiami czasowymi T(n) i przestrzennymi S(n), które są
funkcjami zależnymi od rozmiaru problemu n

• funkcja ta jest nazywana złożonością teoretyczną i opisuje klasę


algorytmu najczęściej za pomocą notacji „dużego O”

• notacja O() ma charakter asymptotyczny


∀n⩾n0:f(n)⩽c∗g(n)
Złożoność obliczeniowa

• f(n)=n+x ->O(n)
Złożoność obliczeniowa
Złożoność obliczeniowa

• dla dużych n złożoność algorytmu może być przyczyną wielkich


różnic w czasie odpowiedzi przyjmując, że komputer działa z
prędkością operacja/us:

You might also like