Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 4 WSTĘP DO INFORMATYKI

Wielkość: px
Rozpocząć pokaz od strony:

Download "Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 4 WSTĘP DO INFORMATYKI"

Transkrypt

1 Dr inż. Grażyna KRUPIŃSKA D-10 pokój 227 WYKŁAD 4 WSTĘP DO INFORMATYKI

2 Podprogramy 2 Mówiąc o podprogramach będziemy zakładali : każdy podprogram posiada jeden punkt wejścia; program wywołujący podprogram zostaje zawieszony na czas działania podprogramu; sterowanie zawsze powraca do programu wywołującego w momencie zakończenia działania podprogramu.

3 3 Program NWD; dane wejściowe: a, b; dopóki b > 0 wykonuj; wywołaj podprogram mod(a,b) podstaw wynik do c; (c mod (a,b)) podstaw za a liczbę b; podstaw za b liczbę c; podstaw za rezultat liczbę a; rezultat: rezultat; podprogram mod(m,n); podstaw za i liczbę 0; dopóki i *n m wykonuj; podstaw za j wartość m (i * n); powiększ i o liczbę 1; podstaw za reszta liczbę j; rezultat: reszta;

4 Podprogramy start wczytaj a, b a, b start n n a m m b b>0 NIE wypisz a i*n m NIE j TAK stop TAK stop c mod (a,b) j m-(n*i) a b b c j i i+1

5 Podprogramy start wczytaj a, b a, b start n n a m m b b>0 NIE wypisz a i*n m NIE j TAK stop TAK stop c mod (a,b) j m-(n*i) a b b c j i i+1

6 Podprogramy 6 Przekazywanie parametrów odbywa się za pośrednictwem stosu tak jest w zdecydowanej większości języków programowania. Przekazywanie przez wartość i/lub wynik jest realizowane poprzez kopiowanie wartości na stos/ze stosu. Odpowiednia komórka pamięci na stosie jest alokowana w chwili wywołania podprogramu. W trakcie działania podprogramu funkcjonuje ona jako zmienna lokalna. Przekazywanie przez referencję jest realizowane poprzez umieszczenie odpowiedniego adresu na stosie. Jeśli parametr aktualny jest stałą (a w szczególności literałem, np. abc, 12.34), to na stosie trzeba umieścić jej adres. Kompilator nie może pozwolić, by parametr taki był zmieniany. Jeśli parametr aktualny jest wyrażeniem, na stosie trzeba umieścić adres komórki pamięci z wynikiem wyrażenia.

7 Rekurencja 7 Zdolność podprogramu do wywołania samego siebie. Procedura silnia(n); jeżeli n = 0 to zwróć 1 ; w przeciwnym razie zwróć rezultat wywołania silnia(n-1) pomnożony przez n; koniec procedury; 4! = 3! 4 = 2! 3 4 = 1! = 0! = = 24

8 Podprogramy start start start n n n n-1 n n n-2 NIE n<>0 1 n-1 NIE n<>0 1 n-1 NIE n<>0 1 TAK stop TAK stop TAK stop wynik n * SILNIA (n-1) wynik n * SILNIA (n-1) wynik n * SILNIA (n-1) wynik (n-1)! wynik (n-2)! wynik stop stop stop

9 9 Rekyrencja Cechy algorytmów rekurencyjnych: zakończenie algorytmu jest jasno określone złożony problem zostaje rozłożony na problem elementarny, który umiemy rozwiązać, i na problem o mniejszym stopniu komplikacji, niż ten z którym mieliśmy do czynienia na początku Podstawowe błędy przy konstruowaniu programów rekurencyjnych: złe określenie warunku zakończenia programu niewłaściwa, nieefektywna metoda rozwiązania problemu

10 10 Język programowania Język programowania jest środkiem pozwalającym na zapis algorytmów w postaci zrozumiałej dla człowieka, a równocześnie przetwarzalnej do postaci zrozumiałej dla komputera.

11 Języki programowania 11 Języki wysokiego poziomu posługują się rozbudowaną składnią zbliżoną do języka naturalnego; czytelne dla programisty. Języki niskiego poziomu (asemblery) posługują się składnią zbliżoną do elementarnych operacji procesora i adresów symbolicznych reprezentujących jego rejestry; łatwo przekształcalne do kodu maszynowego.

12 Proces tworzenia programu 12 Pomysł Algorytm Programowanie Program wysokiego poziomu Kompilacja Program w języku maszynowym Wykonanie przez komputer

13 Programowanie 13 Proces przekształcenia oryginalnego pomysłu na algorytm, a następnie zapisanie algorytmu przez programistę w języku wysokiego poziomu (tzw. kodowanie).

14 Kompilacja 14 Proces przekształcania programu zapisanego w języku wysokiego poziomu na postać kodu maszynowego nadającego się do wykonania przez komputer (procesor). Program wykonujący proces kompilacji nazywany jest kompilatorem; specyficzny dla danego języka programowania.

15 Konsolidacje (linkowanie) 15 Proces łączenia w jedną całość wcześniej skompilowanych fragmentów źródłowych np. podprogramów w celu uzyskania ostatecznej (monolitycznej) postaci kompletnego kodu wykonywalnego. Przechowywane w skompilowanej postaci uniwersalne podprogramy (realizujące np. zaawansowane operacje matematyczne, graficzne) nazywamy bibliotekami (libraries).

16 Debugging 16 Proces wykrywania i usuwania błędów w działaniu skompilowanego programu poprzez śledzenie (krok po kroku) przebiegu wykonania instrukcji języka wysokiego poziomu. Realizowane za pomocą narzędzia (programu) zwanego debugger em (odpluskwiaczem). Wymaga zwykle specjalnego trybu kompilacji (dołączenia informacji symbolicznej do kodu).

17

18 18 Interpretacja Sposób wykonania programu polegający na przekształcaniu kolejnych instrukcji języka wysokiego poziomu na kod maszynowy na bieżąco w czasie egzekucji programu. Program wykonawczy zwany jest interpreterem. Interpretacja jest prostsza w realizacji, ale charakteryzuje się znacznie niższą efektywnością od wykonania programu skompilowanego; np. w pętlach te same instrukcje są wielokrotnie przekształcane do postaci kodu maszynowego.

19 19 Interpretacja

20 Kompilacja a interpretacja 20 Interpretacja program w postaci kodu źródłowego wolniejsze możliwość zmiany kodu przez użytkownika przenaszalność Kompilacja program w kodzie maszynowym duża wydajność

21 Wstępna kompilacja, przyśpiesza późniejszą interpretację, zatem języki te są szybsze od interpretowanych Funkcje z bibliotek podobnie jak w przypadku języków interpretowanych są dołączone w czasie wykonania. Języki prekompilowane (VM) 21 Prekompilacja powstanie kodu pośredniego ( Byte-code, B-Code) Uruchamianie programu wstępnie skompilowanego na pewnej maszynie wirtualnej (ang. virtual machine,vm). Maszyna wirtualna interpretuje program i wykonuje go na konkretnej platformie sprzętowo - systemowej. Użytkownik otrzymuje finalny program, a jednocześnie jest on przenaszalny i będzie funkcjonował wszędzie tam gdzie posiadamy VM dla tego języka.

22 22

23 Potencjał maszyn 23 algorytmicznych Maszyna Turinga Teza Churcha-Turinga Miara złożoności obliczeniowej Klasy złożoności obliczeniowej

24 Maszyna Turinga 24 Abstrakcyjne urządzenie algorytmiczne zaproponowane przez Alana Turinga w 1936 roku. Maszyna Turinga zbudowana jest z trzech głównych elementów: jednostka sterująca zdolna odczytywać/ zapisywać symbole za pomocą głowicy; obustronnie nieskończona taśma zawierająca symbole ze skończonego zbioru; skończony zestaw stanów, w których może znajdować się maszyna w trakcie procesu obliczania (w tym stan początkowy (start) i końcowy (halt)).

25 25 Taśma Symbole stanowią odpowiednik danych wejściowych. Maszyna Turinga odczytuje dane z kolejnych komórek i przetwarza na inne symbole, czyli dane wyjściowe. Wyniki obliczeń zapisywane są w komórkach taśmy. Nieskończona taśma jest odpowiednikiem współczesnej pamięci komputera. Taśma dzieli się na komórki, w których umieszczone zostały symbole, czyli znaki przetwarzane przez maszynę Turinga.

26 Głowica zapisująco - odczytująca 26 Głowica zapisująco-odczytująca, odpowiada funkcjonalnie urządzeniom wejścia/wyjścia współczesnych komputerów lub układom odczytu i zapisu pamięci. Głowica zawsze znajduje się nad jedną z komórek taśmy. Może ona odczytywać zawartość tej komórki oraz zapisywać do niej inny symbol - na tej zasadzie odbywa się przetwarzanie danych z jednych symboli otrzymujemy inne.

27 27 Głowica zapisująco - odczytująca Oprócz odczytywania i zapisywania symboli w komórkach głowica wykonuje ruchy w prawo i w lewo do sąsiednich komórek na taśmie. W ten sposób może się ona przemieścić do dowolnie wybranej komórki taśmy. Przed rozpoczęciem pracy maszyny Turinga głowica jest zawsze ustawiana nad komórką taśmy zawierającą pierwszy symbol do przetworzenia.

28 28 Układ sterowania Układ sterowania głowicą jest odpowiednikiem procesora komputera. Układ ten odczytuje za pomocą głowicy symbole z komórek taśmy oraz przesyła do głowicy symbole do zapisu w komórkach. Dodatkowo nakazuje on głowicy przemieścić się do sąsiedniej komórki w lewo lub w prawo.

29 29 Działanie Maszyny Turinga Podstawą działania Maszyny Turinga są stany układu sterowania. Stan układu sterowania określa jednoznacznie jaką operację wykona Maszyna Turinga, gdy odczyta z taśmy określony symbol. Operacje wykonywane przez układ sterowania zależą od dwóch czynników: symbolu odczytanego z komórki na taśmie bieżącego stanu układu sterującego

30 30 Działanie Maszyny Turinga Stany MT będziemy określać kolejnymi nazwami: q 0, q 1, q 2,...,q n q 0 jest stanem początkowym, w którym znajduje się maszyna Turinga przed rozpoczęciem przetwarzania symboli na taśmie.

31 31 Działanie Maszyny Turinga Instrukcja dla Maszyny Turinga (S 0, q i, S z, q j, L/R) S 0 symbol odczytany przez głowicę z bieżącej komórki na taśmie q i bieżący stan układu sterowania S z symbol, jaki zostanie zapisany w bieżącej komórce na taśmie q j nowy stan, w który przejdzie układ sterowania po wykonaniu operacji L/R ruch głowicy o jedną komórkę w lewo (L) lub prawo (R)

32 Działanie Maszyny Turinga 32 (S 0, q i, S z, q j, L/R ) część identyfikująca część operacyjna tyle różnych instrukcji, ile zdefiniujemy różnych części identyfikacyjnych w programie nie może być dwóch różnych instrukcji o identycznej części identyfikacyjnej części operacyjne różnych instrukcji mogą być takie same

33 Działanie Maszyny Turinga 33 (S 0, q i, S z, q j, L/R ) Mamy dwie instrukcje (0, q 0, 1, q 0, L) (1, q 0, 0, q 0, L) Załóżmy, iż taśma zawiera następujący ciąg symboli : * * symbol pusty dane do przetworzenia

34 Działanie Maszyny Turinga 34 (0, q 0, 1, q 0, L) (1, q 0, 0, q 0, L) * * * * 0 q 0 1 q 0 L * * 1 q 0 0 q 0 L * * 1 q 0 0 q 0 L * * 0 q 0 1 q 0 L * * 1 q 0 0 q 0 L * * * q 0 Instrukcja niezdefiniowana. Maszyna zatrzymuje się

35 35 Działanie Maszyny Turinga Początkowy stan taśmy : * * Końcowy stan : * * Podany program dokonuje binarnej negacji bitów wejściowych.

36 Maszyna Turinga może być traktowana jak komputer z ustalonym programem (jest nim diagram przejść), gdzie dane znajdują się na taśmie. Działanie Maszyny Turinga Ponieważ diagram przejść może być dowolny, a każdą, nawet najbardziej skomplikowaną 36 strukturę danych da się przedstawić w postaci jednowymiarowego ciągu symboli, maszyna Turinga jest automatem uniwersalnym, zdolnym wykonać każde obliczalne zadanie. Diagramu przejść jest grafem skierowanym, którego wierzchołki reprezentują stany. HALT RETURN OVER- FLOW START NO CARRY ADD CARRY Krawędź prowadząca ze stanu S 1 do stanu S 2 nazywa się przejściem (A, B, D ) etykieta przejścia A, B symbole stanów D to kierunek - "w prawo" lub "w lewo" Kilka wyróżnionych stanów maszyny: stan początkowy, stan końcowy jeden lub kilka

37 Działanie Maszyny Turinga 37 Maszyna wykonująca inkrementację liczby binarnej (alfabet:1,0,*) HALT RETURN OVER- FLOW START NO CARRY ADD CARRY stan: komórka: nowa: ruch: nowy-stan: START * * lewo ADD ADD 0 1 lewo NO CARRY ADD 1 0 lewo CARRY ADD * * prawo HALT CARRY 0 1 lewo NO CARRY CARRY 1 0 lewo CARRY CARRY * * lewo OVERFLOW NO CARRY 0 0 lewo NO CARRY NO CARRY 1 1 lewo NO CARRY NO CARRY * * prawo RETURN OVERFLOW (any) 1 prawo RETURN RETURN 1 1 prawo RETURN RETURN 0 0 prawo RETURN RETURN * * brak HALT Jednostka sterująca * *

38 * * START ADD CARRY * * * * * * NO CARRY NO CARRY * * * * RETURN stan: komórka: nowa: ruch: nowy-stan: START * * lewo ADD ADD 0 1 lewo NO CARRY ADD 1 0 lewo CARRY ADD * * prawo HALT CARRY 0 1 lewo NO CARRY CARRY 1 0 lewo CARRY CARRY * * lewo OVERFLOW NO CARRY 0 0 lewo NO CARRY NO CARRY 1 1 lewo NO CARRY NO CARRY * * prawo RETURN OVERFLOW (any) 1 prawo RETURN RETURN 1 1 prawo RETURN RETURN 0 0 prawo RETURN RETURN * * brak HALT * * RETURN * * RETURN * * RETURN * * HALT 38

39 Działanie Maszyny Turinga 39 0, q 0, 0, q 0, L stan początkowy, zapamiętujemy 0 1, q 0, 0, q 1, L stan początkowy, zapamiętujemy 1 0, q 1, 1, q 0, L zapisujemy zapamiętane 1, zapamiętujemy 0 1, q 1, 1, q 1, L zapisujemy zapamiętane 1, zapamiętujemy 1?, q 0, 0, q 2, L koniec, zapisujemy zapamiętane 0?, q 1, 1, q 2, L koniec, zapisujemy zapamiętane 1

40 Zastosowania Maszyny Turinga 40 Przetwarzacz oblicza wartość funkcji dane wejściowe to początkowy stan napisu na taśmie, a wynik jest końcowym stanem taśmy w momencie zatrzymania. Gdy maszyna nie zatrzyma się to funkcja nie jest określona dla tych danych (funkcja niezupełna). Akceptant posiada 2 stany końcowe q a ="akceptuj", q r ="odrzuć Generator języka rozpoczyna pracę od pustej taśmy i zapisuje na niej słowa danego języka, dla którego został zaprojektowany.

41 Zastosowania Maszyny Turinga 41 Obliczanie funkcji proces wyznaczania danych wyjściowych na podstawie danych wejściowych tabela relacji dane-wyniki; algorytm przejścia od danych do wyników (funkcje obliczalne). Funkcje obliczalne przez maszynę Turinga jeśli maszyna przekształca dane umieszczone na taśmie na wyniki zapisane na taśmie w momencie zatrzymania maszyny

42 42 Teza Churcha-Turinga Różnorodność zadań stawianych przed maszyną Turinga postawiło pytanie: Jakie problemy można rozwiązać odpowiednio zaprogramowaną maszyną Turinga? (oczywiście pomijając czas) Każdą funkcję, którą da się efektywnie obliczać, da się obliczać używając maszyny Turinga. Teza Churcha-Turinga nie jest twierdzeniem (nie może być dowiedziona w matematycznym rozumieniu dowodzenia) nieprecyzyjne pojęcie efektywnej obliczalności.

43 43 Teza Churcha-Turinga Proponowano różne modele komputera absolutnego, wszechpotężnego, lub uniwersalnego, aby sprecyzować ulotne pojęcie efektywnej obliczalności. Turing zaproponował swoją maszynę, Church wymyślił matematyczny formalizm funkcji zwany rachunkiem lambda (jako podstawa języka programowania Lisp). Emil Post zdefiniował pewien typ systemu produkcji do manipulowania symbolami, Stephen Kleene zdefiniował klasę obiektów zwanych funkcjami rekurencyjnymi. Wszyscy Wszystkie oni te próbowali modele użyć są równoważne tych modeli do w rozwiązania kategoriach wielu problemów algorytmicznych, do których znane były problemów efektywnie wykonalne algorytmicznych, algorytmy. które rozwiązują.

44 44 Złożoność obliczeniowa algorytmów Złożoność obliczeniowa jest podstawową własnością określaną dla algorytmów. Zadaniem analizy algorytmu jest określenie tej złożoności, a co za tym idzie realizowalności algorytmu. Złożoność zasobowa (pamięciowa) - wyrażana w skali zajętości zasobów (PAO, pamięci zewnętrznych itp.) niezbędnych dla realizacji algorytmu Złożoność czasowa - wyrażana w skali czasu wykonania algorytmu (liczba kroków, aproksymowany czas rzeczywisty).

45 Złożoność obliczeniowa 45 algorytmów Złożoność obliczeniowa nie zależy od architektury i konfiguracji sprzętowej komputerów (wyznaczamy ją dla maszyny z pamięcią o dostępie swobodnym), ale zależy od rozmiaru i uporządkowania danych wejściowych. Wyznaczając złożoność obliczeniową algorytmu badamy trzy przypadki: optymistyczny pesymistyczny średni

46 Maszyna wzorcowa 46 Chcąc wyznaczyć efektywność działania algorytmu niezależnie od języka programowania, ani sprzętu na którym zostanie on zrealizowany, należy przyjąć jakąś maszynę wzorcową, która będzie wykonywała ten algorytm. maszyna Turinga maszyna RAM).

47 Maszyna wzorcowa 47 maszyna Turinga jest prosty koncepcyjnie. potrafi przeprowadzić dowolne obliczenie możliwe na innych znanych nam maszynach. zużycie zasobów podczas obliczenia dobrze modeluje rzeczywiste komputery. maszyna RAM abstrakcyjny, jednoprocesorowy komputer, nieograniczona pamięć o dostępie swobodnym odwołanie do dowolnej komórki realizowane w takim samym czasie, niezależnie od jej położenia; procesor ma krótką listę rozkazów, z których każdy jest zawsze wykonywany w takim samym czasie jak pozostałe.

48 48 Złożoność obliczeniowa algorytmów Przypadek optymistyczny - zakładamy takie wstępne uporządkowanie danych wejściowych, że algorytm jest wykonywany najszybciej i wymaga najmniej pamięci do swojego działania. Przypadek pesymistyczny - zakładamy takie wstępne uporządkowanie danych wejściowych, że algorytm jest wykonywany najwolniej i wymaga najwięcej pamięci do swojego działania. Przypadek średni - badamy zapotrzebowanie algorytmu na pamięć i czas procesora dla najczęściej spotykanych uporządkowań danych wejściowych. Im ta złożoność jest bliższa złożoności przypadku optymistycznego, tym lepiej.

49 49 Szybkość wzrostu poszczególnych składników funkcji n - ilość wykonanych operacji Funkcja : f(n) = n *n + log 10 n n f(n) n 2 100*n log 10 n % 9% 0.0% 91% % 48% 0.05% 48% % 48% 0.001% 4.8% % 9% % 0.09% % 1% 0.0% 0.001% % 0.1% 0.0% % Dla dużych wartości n, funkcja rośnie jak n 2, pozostałe składniki mogą być zaniedbane.

50 50 Notacja wielkie O wprowadzona przez P. Bachmanna w 1894r O(g(n)) = {f (n) : istnieją dodatnie stałe c, n 0 takie, że 0 f (n) c g(n) dla wszystkich n n 0 }

51 Notacja wielkie O 51 O(g(n)) = {f (n) : istnieją dodatnie stałe c, n 0 takie, że 0 f (n) c g(n) dla wszystkich n n 0 } Przykład: f(n) = n *n + log 10 n możemy przybliżyć jako f(n) ~ n *n + O(log 10 n) albo jako f(n) ~ O(n 2 )

52 Złożoność algorytmu 52 Złożoność czasowa algorytmu - zależność pomiędzy liczbą operacji elementarnych wykonywanych w trakcie przebiegu algorytmu, a rozmiarem danych wejściowych (podawana jako funkcja rozmiaru tych danych) sortowanie bąbelkowe: F( N) =?, gdzie N długość listy wieże Hanoi: F( N) =?, gdzie N liczba krążków wyznaczanie minimalnego drzewa rozpinającego: F( N, M)=? gdzie N liczba wierzchołków, a M - liczba krawędzi w grafie

53 53 Co to znaczy w praktyce? W praktyce złożoność czasowa decyduje o przydatności algorytmów jest mitem stwierdzenie, że komputery są tak szybkie, że czas nie stanowi problemu (rozkład na czynniki pierwsze dużych liczb cyfr - wymaga milionów lat) potrzebne jest rozwiązywanie coraz większych problemów: komputerowe systemy wspomagania decyzji komputerowe symulacje i prognozy muszą funkcjonować systemy komputerowe czasu rzeczywistego automatyczne sterowanie w złożonych układach

54 54 Szacowanie złożoności algorytmów Porównujemy dwa algorytmy wykonujące to samo zadanie za pomocą jednej iteracji ograniczonej (liczba iteracji N wynika jednoznacznie z rozmiaru danych wejściowych) Niech czasy wykonania algorytmów w funkcji rozmiaru danych wynoszą: F 1 ( N) = K 1 + L 1 N F 2 ( N) = K 2 + L 2 N Do ich porównania możemy wykorzystać iloraz: s(n) = F1( N) / F2( N)

55 55 Szacowanie złożoności algorytmów Jeśli s(n) = 1 to oba algorytmy mają jednakową prędkość działania; możliwe tylko wtedy, gdy K 1 = K 2 i L 1 = L 2. Jeśli s(n) < 1 to oznacza, że algorytm nr 1 jest szybszy. Ale dla pewnych wartości N może zachodzić s(n) > 1 (wtedy algorytm nr 2 jest szybszy).

56 56 Graniczne oszacowanie złożoności W przypadku granicznym, dla dowolnie dużych zestawów danych wejściowych (N ), o relacji pomiędzy algorytmami powinna decydować wartość: L1 lim s( N) N L 2 współczynnik porównania F 1 /F 2

57 57 Graniczne oszacowanie złożoności Dwa algorytmy o czasach wykonania F 1 (N) i F 2 (N) mają złożoność tego samego rzędu, jeśli: lim F1 ( N) F ( N N 2 ) C, gdzie 0 < C <. Jeżeli C = 0, to algorytm o czasie wykonania F 1 (N) ma niższy rząd złożoności (ma lepszą złożoność). Jeżeli C =, to algorytm o czasie wykonania F 1 (N) ma wyższy rząd złożoności (ma gorszą złożoność).

58 58 Notacja O Algorytm o czasie wykonania F(N) ma złożoność liniową Złożoność rzędu N lim N F( N ) N F(N) = O(N) Algorytm o czasie wykonania F(N) ma złożoność kwadratową F( N ) N Złożoność rzędu N 2 F(N) = O(N 2 ) C, lim 2 N 0 C, C 0 C Znalezienie algorytmu o niższym rzędzie złożoności jest ulepszeniem rozwiązania danego zadania algorytmicznego!

59 Szacowanie złożoności 59 Szacowania złożoności obliczeniowej algorytmu wyszukania elementu w liście posortowanej. przeszukiwanie liniowe przeszukiwanie binarne

60 60 Szacowanie złożoności Przeszukiwanie liniowe przeszukujemy kolejno elementy listy. Gdy znajdziemy szukany element, lub osiągniemy koniec listy algorytm kończy działanie. Algorytm 1 1. weź pierwszy element listy; 2. wykonuj: 2.1. sprawdź czy bieżący element jest tym szukanym; 2.2. sprawdź czy osiągnąłeś koniec listy ; 2.3. weź następny element z listy aż znajdziesz lub przejrzysz całą listę. czas wykonania Alg. 1 dla wyszukiwania liniowego F 1 (N) =2N

61 Szacowanie złożoności 61 Algorytm 2 1. dopisz szukany element na końcu listy; 2. weź pierwszy element listy; 3. wykonuj: 3.1. sprawdź czy bieżący element jest tym szukanym; 3.2. weź następny element z listy aż znajdziesz ; 4. sprawdź czy jesteś na końcu listy. czas wykonania Alg. 2 dla wyszukiwania liniowego F2(N) =N+1 N Oba mają pesymistyczny czas wykonania O(N).

62 62 Szacowanie złożoności Czy można stworzyć algorytm o mniejszej złożoności? Lista uporządkowana Y 1, Y 2,..., Y N (dla każdego i < j zachodzi Y i Y j ). Przeszukiwanie binarne

63 63 Szacowanie złożoności Przeszukiwanie binarne wielkość listy w kolejnych krokach wynosić będzie n, n/2, n/4, n/16, n/32, itd. ilość powtórzeń iteracji w najgorszym przypadku w algorytmie: 1 + log 2 n złożoność algorytmu wynosi O(log 2 n) Ponieważ: log ( N ) lim N N 2 0 algorytm wyszukiwania binarnego ma złożoność o rząd niższą od prostego wyszukiwania, ale ma zastosowanie tylko dla list uporządkowanych Nastąpiła bardzo istotna poprawa efektywności algorytmu

64 Porównanie złożoności 64 Skala ulepszeń N 1 + log 2 N

65 Przykłady złożoności 65 Wieże Hanoi :

66 66 Przykłady złożoności Wieże Hanoi algorytm rekurencyjny: procedura przenieś N ; 1. jeśli N = 1, to wypisz ruch i koniec; 2. w przeciwnym razie (tj. jeśli N > 1) wykonaj co następuje: 2.1. wywołaj przenieś N - 1 ; 2.2. wypisz ruch ; 2.3. wywołaj przenieś N -1 ; Oznaczmy nieznany koszt czasowy przez T( N) i dostajemy tzw. równania rekurencyjne: T(1) = 1 T( N) = 2 * T( N-1) +1 Spełnia je koszt T( N) = 2 N - 1, czyli złożoność jest O(2 N )

67 67 Układanka problem decyzyjny Problemem decyzyjnym nazywamy taki problem, którego rozwiązaniem są słowa "tak" lub "nie". Danych jest n kwadratowych kart, gdzie n jest kwadratem liczby naturalnej. W każdej z czterech części karty, wyznaczonej przez przekątne, wydrukowane są fragmenty kolorowych obrazków. Niektóre obrazki można złożyć razem, inne nie pasują do siebie. Problem polega na tym, by zbadać, czy z danych n kart można ułożyć kwadrat tak, by wszystkie obrazki pasowały kształtem i kolorem, (D. Harel, rzecz o istocie informatyki. Algorytmika, WNT, 1987.)

68 Układanka problem decyzyjny 68 Naiwny algorytm polega na przeglądaniu wszystkich możliwych ułożeń. Dla każdego konkretnego ułożenia kart, algorytm sprawdza, czy ułożenie jest poprawne. Sprawdzenie konkretnego ułożenia ma koszt liniowy, Liczba ułożeń powoduje, że koszt algorytmu naiwnego wynosi O(n!).

69 Zapotrzebowanie na czas 69 jedna instrukcja trwa mikrosekundę 1 milion instrukcji na sekundę

70 70 Tempo wzrostu funkcji złożoności Funkcje złożoności ogólnie dzielimy na: wielomianowe - ograniczone z góry przez N k (tzn. N k ); ponadwielomianowe - wykładnicze i inne szybciej rosnące (tzn. nie istnieje dla nich odpowiednie k) algorytm wielomianowy = algorytm o złożoności wielomianowej O( N k ) - szybki

71 71 Pytanie z milion dolarów

72 72 Pytanie z milion dolarów

73 Od razu widać czy dobrze 73 sprawdzenie poprawności rozwiązania jest łatwe, natychmiastowe znalezienie rozwiązania jest raczej trudne, kosztuje sporo wysiłku

74 Trzeba długo czekać.. 74 zakładamy 25 pustych pól wpisujemy liczby 4 bitowe (1..16) pojedyncza próba rozwiązania ciąg 100 liczb 0/1 czyli możliwości weryfikacja poprawności jedna operacja bitowa Dla maszyny o prędkości /sek (petaflops) mamy / = , sek lat

75 75 Niedeterministyczna Maszyna Turinga Niedeterministyczna maszyna Turinga (NDTM) jest zdefiniowana dokładnie w ten sam sposób, co deterministyczna, jednak funkcja przejścia d(q,s) może mieć kilka różnych wartości (efektywnie powodując rozwidlenie działania programu na kilka możliwych ścieżek). Wynik obliczeń jest pozytywny, jeśli choć jedna z możliwych dróg działania maszyny doprowadzi do sukcesu.

76 Klasa P i NP 76 Problem należy do klasy złożoności czasowej P, gdy istnieje DTM rozwiązująca ten problem w czasie wielomianowym względem rozmiaru danych wejściowych. Problem należy do klasy złożoności czasowej NP, gdy istnieje NDTM weryfikująca rozwiązanie problemu w czasie wielomianowym względem rozmiaru danych wejściowych.

77 77 Problemy klasy NP Nondeterministic Polynomial-time wymagają sprawdzania rozwiązań częściowych i rozszerzania ich w celu znalezienia rozwiązania ostatecznego; jeśli rozwiązanie częściowe nie da się dalej rozszerzyć, to trzeba powrócić na wcześniejszy etap i po dokonaniu zmian rozpocząć od nowa, postępowanie polegające na systematycznym sprawdzeniu wszystkich możliwości wymaga czasu wykładniczego jeśli znamy rozwiązanie, to sprawdzenie jego poprawności może być przeprowadzone w czasie wielomianowym! dla każdego z problemów istnieje niedeterministyczny ( magiczny ) algorytm o złożoności wielomianowej NP NP są trudno rozwiązywalne, ale stają się łatwo rozwiązywalne, jeśli korzysta się z niedeterministycznej wyroczni

78 Klasa P i NP 78 Głupia układanka należy do klasy problemów NP-zupełne (NPC Nondeterministic Polynomial-time Complete), która obejmuje prawie 1000 problemów algorytmicznych o jednakowych cechach: dla wszystkich istnieją wątpliwe rozwiązania w postaci algorytmów wykładniczych dla żadnego nie znaleziono rozsądnego rozwiązania w postaci algorytmu wielomianowego dla żadnego nie udowodniono, że jego rozwiązania wymaga czasu wykładniczego najlepsze znane dolne ograniczenia są liniowe, tzn. O(N) Nie wiadomo czy są one trudno, czy łatwo rozwiązywalne!

79 Problem komiwojażera 79 Problem polega na znalezieniu w sieci połączeń pomiędzy miastami najkrótszej drogi, która pozwala odwiedzić każde z miast i powrócić do miasta wyjściowego (tzw. cykl). Problem formułowany jest jako poszukiwanie minimalnego pełnego cyklu w grafie z wagami krawędzi W wersji decyzyjnej problem polega na stwierdzeniu czy istnieje cykl o koszcie nie większym niż podana wartość K

80 Problem komiwojażera 80 Problem komiwojażera pojawia się przy: projektowaniu sieci telefonicznych projektowaniu układów scalonych planowaniu linii montażowych programowaniu robotów przemysłowych 6 Naiwne rozwiązanie N! Przypadek nawet dla N = 25 jest beznadziejny

81 81 Czy każdy algorytm NP nie jest łatwy? Równość P = NP oznaczałaby, że właściwie nie ma naturalnych problemów obliczeniowych, które byłyby trudne, wszystko jest trudne nim stanie się łatwe Margaret Fuller Ale P NP tez nie zostało udowodnione

82 82 Problemy łatwe, trudne i Zadania łatwe : sortowanie mnożenie macierzy sprawdzenie, czy w grafie istnieje cykl Eulera Zadania trudne : szukanie najkrótszej ścieżki komiwojażera szukanie najkrótszej postaci danej formuły logicznej sprawdzenie, czy w grafie istnieje cykl Hamiltona

83 Problemy SAT 83 Czy dana formuła logiczna jest spełnialna F ( p q r) ( p q s) ( q r s) dla p = q = 1 i dowolnych s oraz r Pierwszym problemem, którego NP-zupełność wykazano, 1971 Stephen Cook.

84 Problemy SAT 84 Czy dana formuła logiczna jest spełnialna F ( p q r) ( p q s) ( q r s) dla p = q = 1 i dowolnych s oraz r Pierwszym problemem, którego NP-zupełność wykazano, 1971 Stephen Cook.

85 Klasa P i NP 85 Głupia układanka należy do klasy problemów NP-zupełne (NPC Nondeterministic Polynomial-time Complete), która obejmuje prawie 1000 problemów algorytmicznych o jednakowych cechach: dla wszystkich istnieją wątpliwe rozwiązania w postaci algorytmów wykładniczych dla żadnego nie znaleziono rozsądnego rozwiązania w postaci algorytmu wielomianowego dla żadnego nie udowodniono, że jego rozwiązania wymaga czasu wykładniczego najlepsze znane dolne ograniczenia są liniowe, tzn. O(N) Nie wiadomo czy są one trudno, czy łatwo rozwiązywalne!

86 86 Problemy klasy NP Nondeterministic Polynomial-time wymagają sprawdzania rozwiązań częściowych i rozszerzania ich w celu znalezienia rozwiązania ostatecznego; jeśli rozwiązanie częściowe nie da się dalej rozszerzyć, to trzeba powrócić na wcześniejszy etap i po dokonaniu zmian rozpocząć od nowa, postępowanie polegające na systematycznym sprawdzeniu wszystkich możliwości wymaga czasu wykładniczego jeśli znamy rozwiązanie, to sprawdzenie jego poprawności może być przeprowadzone w czasie wielomianowym! dla każdego z problemów istnieje niedeterministyczny ( magiczny ) algorytm o złożoności wielomianowej NP NP są trudno rozwiązywalne, ale stają się łatwo rozwiązywalne, jeśli korzysta się z niedeterministycznej wyroczni

87 albo wszystkie te problemy są łatwo rozwiązywalne, albo wszystkie trudno Problemy NP-zupełne 87 każdy problem klasy NP można przekształcić do jednego z nich w czasie wielomianowym - NPC (ang. Nondeterministic Polynomial-time Complete) każdy problem z tej klasy można przekształcić w czasie wielomianowym do każdego innego! znalezienie algorytmu wielomianowego dla jednego z problemów oznacza możliwość rozwiązania w czasie wielomianowym wszystkich innych udowodnienie wykładniczego dolnego oszacowania dla jednego z problemów oznacza wykazanie, że żaden z nich nie może być rozwiązany w czasie wielomianowym!

88 Problemy NP-zupełne 88 wykazanie, że nowy problem jest NP-zupełny przebiega w dwóch krokach: trzeba udowodnić, że nowy problem jest klasy NP. trzeba skonstruować przekształcenie, które w czasie wielomianowym transformuje do niego dowolny znany problem NP-zupełny Twierdzenie Cooka : problem spełnialności formuł logicznych jest problemem NP-zupełnym pierwszy znany problem NP-zupełny. Od momentu jego udowodnienia można stosować transformacje wielomianowe do dowodzenia NP-zupełności innych problemów decyzyjnych.

89 Klasy problemów 89 Klasa NP - problemy posiadające niedeterministyczne algorytmy o czasie wielomianowym Klasa P - problemy posiadające zwykłe algorytmy o czasie wielomianowym (łatwo rozwiązywalne) Klasa NP-zupełne - wzorcowe problemy z klasy NP sprowadzalne jeden do drugiego

90 90 Klasy problemów

91 91 Problem decyzyjny algorytmicznie nierozstrzygalny Problem decyzyjny nazywamy rozstrzygalnym algorytmicznie, jeżeli istnieje algorytm (w sensie Turinga), który dla zadanego n znajduje prawidłową odpowiedź TAK lub NIE.

92 STOP? 92 Nie jest możliwe napisanie programu, który może zbadać każdy inny program i stwierdzić w każdym przypadku, czy po uruchomieniu zatrzyma się on, czy też wejdzie w nieskończoną pętlę. Zakładamy, że istnieje funkcja logiczna T(R), której argumentem R jest jakikolwiek program i T(R) = True, jeśli program R kończy swoje działania, T(R) = False, jeśli program R nie kończy działania. Mamy podprogram P proc P; while T(P) do ; return

93 STOP? 93 proc P; while T(P) do ; return Jeżeli T(P) = True to P zapętla się Tylko jeśli T(P) = False program P zakończy się SPRZECZNOŚĆ

Złożoność algorytmów. Wstęp do Informatyki

Złożoność algorytmów. Wstęp do Informatyki Złożoność algorytmów Złożoność pamięciowa - liczba i rozmiar struktur danych wykorzystywanych w algorytmie Złożoność czasowa - liczba operacji elementarnych wykonywanych w trakcie przebiegu algorytmu Złożoność

Bardziej szczegółowo

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie

Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie Więcej o sprawności algorytmów Porównanie czasów działania algorytmów sortowania przez wstawianie i scalanie Załóżmy, że możemy wykonać dane zadanie przy użyciu dwóch algorytmów: jednego o złożoności czasowej

Bardziej szczegółowo

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne Sortowanie Dane wejściowe : trzy liczby w dowolnym porządku Dane wyjściowe: trzy liczby

Bardziej szczegółowo

Złożoność problemów. 1 ruch na sekundę czas wykonania ok lat 1 mln ruchów na sekundę czas wykonania ok.

Złożoność problemów. 1 ruch na sekundę czas wykonania ok lat 1 mln ruchów na sekundę czas wykonania ok. Złożoność problemów Przykład - wieże Hanoi Problem jest zamknięty (dolne ograniczenie złożoności = złożoność algorytmu rekurencyjnego lub iteracyjnego) i ma złożoność O(2 N ). Mnisi tybetańscy podobno

Bardziej szczegółowo

PROBLEMY NIEROZSTRZYGALNE

PROBLEMY NIEROZSTRZYGALNE PROBLEMY NIEROZSTRZYGALNE Zestaw 1: T Przykład - problem domina T Czy podanym zestawem kafelków można pokryć dowolny płaski obszar zachowując odpowiedniość kolorów na styku kafelków? (dysponujemy nieograniczoną

Bardziej szczegółowo

Efektywność Procedur Obliczeniowych. wykład 5

Efektywność Procedur Obliczeniowych. wykład 5 Efektywność Procedur Obliczeniowych wykład 5 Modele procesu obliczeń (8) Jedno-, wielotaśmowa MT oraz maszyna RAM są równoważne w przypadku, jeśli dany problem jest rozwiązywany przez jeden model w czasie

Bardziej szczegółowo

Struktura danych. Sposób uporządkowania informacji w komputerze.

Struktura danych. Sposób uporządkowania informacji w komputerze. Struktura danych Sposób uporządkowania informacji w komputerze. Algorytm Skończony, uporządkowany ciąg jasno zdefiniowanych czynności, koniecznych do wykonania pewnego zadania. Al-Khwarizmi perski matematyk

Bardziej szczegółowo

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA WYŻSZA SZKOŁA IFORMATYKI STOSOWAEJ I ZARZĄDZAIA Złożoność algorytmów Złożoność pamięciowa algorytmu wynika z liczby i rozmiaru struktur danych wykorzystywanych w algorytmie. Złożoność czasowa algorytmu

Bardziej szczegółowo

Wprowadzenie do złożoności obliczeniowej

Wprowadzenie do złożoności obliczeniowej problemów Katedra Informatyki Politechniki Świętokrzyskiej Kielce, 16 stycznia 2007 problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów Plan wykładu 1 2 algorytmów 3 4 5 6 problemów problemów

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 5 Prof. dr hab. inż. Jan Magott DMT rozwiązuje problem decyzyjny π przy kodowaniu e w co najwyżej wielomianowym czasie, jeśli dla wszystkich łańcuchów wejściowych

Bardziej szczegółowo

Podstawy Informatyki. Sprawność algorytmów

Podstawy Informatyki. Sprawność algorytmów Podstawy Informatyki Sprawność algorytmów Sprawność algorytmów Kryteria oceny oszczędności Miara złożoności rozmiaru pamięci (złożoność pamięciowa): Liczba zmiennych + liczba i rozmiar struktur danych

Bardziej szczegółowo

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15

Technologie cyfrowe. Artur Kalinowski. Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Technologie cyfrowe Artur Kalinowski Zakład Cząstek i Oddziaływań Fundamentalnych Pasteura 5, pokój 4.15 Artur.Kalinowski@fuw.edu.pl Semestr letni 2014/2015 Zadanie algorytmiczne: wyszukiwanie dane wejściowe:

Bardziej szczegółowo

Obliczenia inspirowane Naturą

Obliczenia inspirowane Naturą Obliczenia inspirowane Naturą Wykład 01 Modele obliczeń Jarosław Miszczak IITiS PAN Gliwice 05/10/2016 1 / 33 1 2 3 4 5 6 2 / 33 Co to znaczy obliczać? Co to znaczy obliczać? Deterministyczna maszyna Turinga

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 7. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 7 Prof. dr hab. inż. Jan Magott Problemy NP-zupełne Transformacją wielomianową problemu π 2 do problemu π 1 (π 2 π 1 ) jest funkcja f: D π2 D π1 spełniająca

Bardziej szczegółowo

Informatyka 1. Złożoność obliczeniowa

Informatyka 1. Złożoność obliczeniowa Informatyka 1 Wykład XI Złożoność obliczeniowa Robert Muszyński ZPCiR ICT PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada 80 20, ocena efektywności

Bardziej szczegółowo

Efektywność algorytmów

Efektywność algorytmów Efektywność algorytmów Algorytmika Algorytmika to dział informatyki zajmujący się poszukiwaniem, konstruowaniem i badaniem własności algorytmów, w kontekście ich przydatności do rozwiązywania problemów

Bardziej szczegółowo

Algorytm. a programowanie -

Algorytm. a programowanie - Algorytm a programowanie - Program komputerowy: Program komputerowy można rozumieć jako: kod źródłowy - program komputerowy zapisany w pewnym języku programowania, zestaw poszczególnych instrukcji, plik

Bardziej szczegółowo

Teoria obliczeń i złożoność obliczeniowa

Teoria obliczeń i złożoność obliczeniowa Teoria obliczeń i złożoność obliczeniowa Kontakt: dr hab. inż. Adam Kasperski, prof. PWr. pokój 509 B4 adam.kasperski@pwr.wroc.pl materiały + informacje na stronie www. Zaliczenie: Egzamin Literatura Problemy

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Złożoność obliczeniowa, poprawność programów Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. XII Jesień 2013 1 / 20 Złożoność obliczeniowa Problem Ile czasu

Bardziej szczegółowo

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki.

3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki. 1. Podaj definicję informatyki. 2. W jaki sposób można definiować informatykę? 3. Podaj elementy składowe jakie powinna uwzględniać definicja informatyki. 4. Co to jest algorytm? 5. Podaj neumanowską architekturę

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI 16/01/2017 WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Repetytorium złożoność obliczeniowa 2 Złożoność obliczeniowa Notacja wielkie 0 Notacja Ω i Θ Rozwiązywanie

Bardziej szczegółowo

Algorytmy Równoległe i Rozproszone Część X - Algorytmy samostabilizujące.

Algorytmy Równoległe i Rozproszone Część X - Algorytmy samostabilizujące. Algorytmy Równoległe i Rozproszone Część X - Algorytmy samostabilizujące. Łukasz Kuszner pokój 209, WETI http://www.sphere.pl/ kuszner/ kuszner@sphere.pl Oficjalna strona wykładu http://www.sphere.pl/

Bardziej szczegółowo

Hierarchia Chomsky ego Maszyna Turinga

Hierarchia Chomsky ego Maszyna Turinga Hierarchia Chomsky ego Maszyna Turinga Języki formalne i automaty Dr inż. Janusz Majewski Katedra Informatyki Gramatyka Gramatyką G nazywamy czwórkę uporządkowaną gdzie: G = V skończony zbiór

Bardziej szczegółowo

Podstawy Informatyki Maszyna Turinga

Podstawy Informatyki Maszyna Turinga Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Czym jest Programowanie maszyny Turinga Teza Churcha-Turinga 2 3 4 Czym jest Programowanie maszyny Turinga Teza Churcha-Turinga,

Bardziej szczegółowo

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat

Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Opracował Jan T. Biernat Programowanie Strukturalne i Obiektowe Słownik podstawowych pojęć 1 z 5 Program, to lista poleceń zapisana w jednym języku programowania zgodnie z obowiązującymi w nim zasadami. Celem programu jest przetwarzanie

Bardziej szczegółowo

Definicje. Algorytm to:

Definicje. Algorytm to: Algorytmy Definicje Algorytm to: skończony ciąg operacji na obiektach, ze ściśle ustalonym porządkiem wykonania, dający możliwość realizacji zadania określonej klasy pewien ciąg czynności, który prowadzi

Bardziej szczegółowo

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa).

Za pierwszy niebanalny algorytm uważa się algorytm Euklidesa wyszukiwanie NWD dwóch liczb (400 a 300 rok przed narodzeniem Chrystusa). Algorytmy definicja, cechy, złożoność. Algorytmy napotykamy wszędzie, gdziekolwiek się zwrócimy. Rządzą one wieloma codziennymi czynnościami, jak np. wymiana przedziurawionej dętki, montowanie szafy z

Bardziej szczegółowo

Elementy Teorii Obliczeń

Elementy Teorii Obliczeń Wykład 2 Instytut Matematyki i Informatyki Akademia Jana Długosza w Częstochowie 10 stycznia 2009 Maszyna Turinga uwagi wstępne Maszyna Turinga (1936 r.) to jedno z najpiękniejszych i najbardziej intrygujacych

Bardziej szczegółowo

MASZYNA TURINGA UPRASZCZANIE DANYCH

MASZYNA TURINGA UPRASZCZANIE DANYCH MASZYNA TURINGA Maszyna Turinga jest prostym urządzeniem algorytmicznym, uderzająco prymitywnym w porównaniu z dzisiejszymi komputerami i językami programowania, a jednak na tyle silnym, że pozwala na

Bardziej szczegółowo

O ALGORYTMACH I MASZYNACH TURINGA

O ALGORYTMACH I MASZYNACH TURINGA O ALGORYTMACH I MASZYNACH TURINGA ALGORYTM (objaśnienie ogólne) Algorytm Pojęcie o rodowodzie matematycznym, oznaczające współcześnie precyzyjny schemat mechanicznej lub maszynowej realizacji zadań określonego

Bardziej szczegółowo

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne 2 Algorytmy Nazwa algorytm wywodzi się od nazwiska perskiego matematyka Muhamed ibn

Bardziej szczegółowo

Maszyna Turinga języki

Maszyna Turinga języki Maszyna Turinga języki Teoria automatów i języków formalnych Dr inż. Janusz Majewski Katedra Informatyki Maszyna Turinga (1) b b b A B C B D A B C b b Q Zależnie od symbolu obserwowanego przez głowicę

Bardziej szczegółowo

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott

Struktury danych i złozoność obliczeniowa. Prof. dr hab. inż. Jan Magott Struktury danych i złozoność obliczeniowa Prof. dr hab. inż. Jan Magott Formy zajęć: Wykład 1 godz., Ćwiczenia 1 godz., Projekt 2 godz.. Adres strony z materiałami do wykładu: http://www.zio.iiar.pwr.wroc.pl/sdizo.html

Bardziej szczegółowo

Algorytm. Krótka historia algorytmów

Algorytm. Krótka historia algorytmów Algorytm znaczenie cybernetyczne Jest to dokładny przepis wykonania w określonym porządku skończonej liczby operacji, pozwalający na rozwiązanie zbliżonych do siebie klas problemów. znaczenie matematyczne

Bardziej szczegółowo

Złożoność obliczeniowa zadania, zestaw 2

Złożoność obliczeniowa zadania, zestaw 2 Złożoność obliczeniowa zadania, zestaw 2 Określanie złożoności obliczeniowej algorytmów, obliczanie pesymistycznej i oczekiwanej złożoności obliczeniowej 1. Dana jest tablica jednowymiarowa A o rozmiarze

Bardziej szczegółowo

Maszyna Turinga Złożoność obliczeniowa

Maszyna Turinga Złożoność obliczeniowa Maszyna Turinga Złożoność obliczeniowa Weryfikacja poprawności programu W celu uniezależnienia się od typu komputera służącego do realizowania obliczeń, musimy się posłużyć ogólnym abstrakcyjnym modelem

Bardziej szczegółowo

Podstawy Programowania. Złożoność obliczeniowa

Podstawy Programowania. Złożoność obliczeniowa Podstawy Programowania Wykład X Złożoność obliczeniowa Robert Muszyński Katedra Cybernetyki i Robotyki, PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada

Bardziej szczegółowo

INFORMATYKA SORTOWANIE DANYCH.

INFORMATYKA SORTOWANIE DANYCH. INFORMATYKA SORTOWANIE DANYCH http://www.infoceram.agh.edu.pl SORTOWANIE Jest to proces ustawiania zbioru obiektów w określonym porządku. Sortowanie stosowane jest w celu ułatwienia późniejszego wyszukania

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Algorytm 1. Termin algorytm jest używany w informatyce

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 13 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Złożoność algorytmów czy to istotne, skoro

Bardziej szczegółowo

Zaawansowane algorytmy i struktury danych

Zaawansowane algorytmy i struktury danych Zaawansowane algorytmy i struktury danych u dr Barbary Marszał-Paszek Opracowanie pytań teoretycznych z egzaminów. Strona 1 z 12 Pytania teoretyczne z egzaminu pisemnego z 25 czerwca 2014 (studia dzienne)

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy. Wykład 13. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2018/19 semestr zimowy Wykład 13 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan prezentacji (1) Złożoność algorytmów czy to istotne, skoro

Bardziej szczegółowo

Programowanie komputerów

Programowanie komputerów Programowanie komputerów Wykład 1-2. Podstawowe pojęcia Plan wykładu Omówienie programu wykładów, laboratoriów oraz egzaminu Etapy rozwiązywania problemów dr Helena Dudycz Katedra Technologii Informacyjnych

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 6. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 6. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład 6. Prof. dr hab. inż. Jan Magott Problemy łatwe i trudne Problemy łatwe to problemy rozwiązywalne w czasie wielomianowym. Problemy trudne to takie, których

Bardziej szczegółowo

Obliczenia inspirowane Naturą

Obliczenia inspirowane Naturą Obliczenia inspirowane Naturą Wykład 01 Od maszyn Turinga do automatów komórkowych Jarosław Miszczak IITiS PAN Gliwice 03/03/2016 1 / 16 1 2 3 Krótka historia Znaczenie 2 / 16 Czego dowiedzieliśmy się

Bardziej szczegółowo

Języki, automaty i obliczenia

Języki, automaty i obliczenia Języki, automaty i obliczenia Wykład 10: Maszyny Turinga Sławomir Lasota Uniwersytet Warszawski 29 kwietnia 2015 Plan Maszyny Turinga (Niedeterministyczna) maszyna Turinga M = (A, Q, q 0, F, T, B, δ) A

Bardziej szczegółowo

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki

Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Elżbieta Kula - wprowadzenie do Turbo Pascala i algorytmiki Turbo Pascal jest językiem wysokiego poziomu, czyli nie jest rozumiany bezpośrednio dla komputera, ale jednocześnie jest wygodny dla programisty,

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 2013/2014 Automat ze stosem Automat ze stosem to szóstka

Bardziej szczegółowo

Algorytmika i pseudoprogramowanie

Algorytmika i pseudoprogramowanie Przedmiotowy system oceniania Zawód: Technik Informatyk Nr programu: 312[ 01] /T,SP/MENiS/ 2004.06.14 Przedmiot: Programowanie Strukturalne i Obiektowe Klasa: druga Dział Dopuszczający Dostateczny Dobry

Bardziej szczegółowo

Maszyna Turinga. Algorytm. czy program???? Problem Hilberta: Przykłady algorytmów. Cechy algorytmu: Pojęcie algorytmu

Maszyna Turinga. Algorytm. czy program???? Problem Hilberta: Przykłady algorytmów. Cechy algorytmu: Pojęcie algorytmu Problem Hilberta: 9 Czy istnieje ogólna mechaniczna procedura, która w zasadzie pozwoliłaby nam po kolei rozwiązać wszystkie matematyczne problemy (należące do odpowiednio zdefiniowanej klasy)? 2 Przykłady

Bardziej szczegółowo

Lista 6 Problemy NP-zupełne

Lista 6 Problemy NP-zupełne 1 Wprowadzenie Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Teoretyczne Podstawy Informatyki Lista 6 Problemy NP-zupełne Problem abstrakcyjny Q jest to relacja dwuargumentowa

Bardziej szczegółowo

Logiczny model komputera i działanie procesora. Część 1.

Logiczny model komputera i działanie procesora. Część 1. Logiczny model komputera i działanie procesora. Część 1. Klasyczny komputer o architekturze podanej przez von Neumana składa się z trzech podstawowych bloków: procesora pamięci operacyjnej urządzeń wejścia/wyjścia.

Bardziej szczegółowo

Technologie informacyjne - wykład 12 -

Technologie informacyjne - wykład 12 - Zakład Fizyki Budowli i Komputerowych Metod Projektowania Instytut Budownictwa Wydział Budownictwa Lądowego i Wodnego Politechnika Wrocławska Technologie informacyjne - wykład 12 - Prowadzący: Dmochowski

Bardziej szczegółowo

Języki programowania zasady ich tworzenia

Języki programowania zasady ich tworzenia Strona 1 z 18 Języki programowania zasady ich tworzenia Definicja 5 Językami formalnymi nazywamy każdy system, w którym stosując dobrze określone reguły należące do ustalonego zbioru, możemy uzyskać wszystkie

Bardziej szczegółowo

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je. Problem porządkowania zwanego również sortowaniem jest jednym z najważniejszych i najpopularniejszych zagadnień informatycznych. Dane: Liczba naturalna n i ciąg n liczb x 1, x 2,, x n. Wynik: Uporządkowanie

Bardziej szczegółowo

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne 2 Algorytmy Nazwa algorytm wywodzi się od nazwiska perskiego matematyka Muhamed ibn

Bardziej szczegółowo

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew

EGZAMIN - Wersja A. ALGORYTMY I STRUKTURY DANYCH Lisek89 opracowanie kartki od Pani dr E. Koszelew 1. ( pkt) Dany jest algorytm, który dla dowolnej liczby naturalnej n, powinien wyznaczyd sumę kolejnych liczb naturalnych mniejszych od n. Wynik algorytmu jest zapisany w zmiennej suma. Algorytm i=1; suma=0;

Bardziej szczegółowo

Alan M. TURING. Matematyk u progu współczesnej informatyki

Alan M. TURING. Matematyk u progu współczesnej informatyki Alan M. TURING n=0 1 n! Matematyk u progu współczesnej informatyki Wykład 5. Alan Turing u progu współczesnej informatyki O co pytał Alan TURING? Czym jest algorytm? Czy wszystkie problemy da się rozwiązać

Bardziej szczegółowo

Podstawy Programowania

Podstawy Programowania Podstawy Programowania Wykład X Złożoność obliczeniowa Robert Muszyński ZPCiR ICT PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada 80 20, ocena efektywności

Bardziej szczegółowo

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer

Wstęp do informatyki. Maszyna RAM. Schemat logiczny komputera. Maszyna RAM. RAM: szczegóły. Realizacja algorytmu przez komputer Realizacja algorytmu przez komputer Wstęp do informatyki Wykład UniwersytetWrocławski 0 Tydzień temu: opis algorytmu w języku zrozumiałym dla człowieka: schemat blokowy, pseudokod. Dziś: schemat logiczny

Bardziej szczegółowo

Maszyna Turinga (Algorytmy Część III)

Maszyna Turinga (Algorytmy Część III) Maszyna Turinga (Algorytmy Część III) wer. 9 z drobnymi modyfikacjami! Wojciech Myszka 2018-12-18 08:22:34 +0100 Upraszczanie danych Komputery są coraz szybsze i sprawniejsze. Na potrzeby rozważań naukowych

Bardziej szczegółowo

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia Informacja w perspektywie obliczeniowej Informacje, liczby i obliczenia Cztery punkty odniesienia (dla pojęcia informacji) ŚWIAT ontologia fizyka UMYSŁ psychologia epistemologia JĘZYK lingwistyka nauki

Bardziej szczegółowo

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD

Podstawy programowania. Wykład: 13. Rekurencja. dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Wykład: 13 Rekurencja 1 dr Artur Bartoszewski -Podstawy programowania, sem 1 - WYKŁAD Podstawy programowania Rekurencja - pojęcie 2 Rekurencja - pojęcie Rekurencja (rekursja) wywołanie

Bardziej szczegółowo

Podstawy Programowania. Złożoność obliczeniowa

Podstawy Programowania. Złożoność obliczeniowa Podstawy Programowania Wykład X Złożoność obliczeniowa Robert Muszyński Katedra Cybernetyki i Robotyki, PWr Zagadnienia: efektywność programów/algorytmów, sposoby zwiększania efektywności algorytmów, zasada

Bardziej szczegółowo

Zasady analizy algorytmów

Zasady analizy algorytmów Zasady analizy algorytmów A więc dziś w programie: - Kilka ważnych definicji i opisów formalnych - Złożoność: czasowa i pamięciowa - Kategorie problemów - Jakieś przykłady Problem: Zadanie możliwe do rozwiązania

Bardziej szczegółowo

Podstawy Programowania Algorytmy i programowanie

Podstawy Programowania Algorytmy i programowanie Podstawy Programowania Algorytmy i programowanie Katedra Analizy Nieliniowej, WMiI UŁ Łódź, 3 października 2013 r. Algorytm Algorytm w matematyce, informatyce, fizyce, itp. lub innej dziedzinie życia,

Bardziej szczegółowo

Przykład: Σ = {0, 1} Σ - zbiór wszystkich skończonych ciagów binarnych. L 1 = {0, 00, 000,...,1, 11, 111,... } L 2 = {01, 1010, 001, 11}

Przykład: Σ = {0, 1} Σ - zbiór wszystkich skończonych ciagów binarnych. L 1 = {0, 00, 000,...,1, 11, 111,... } L 2 = {01, 1010, 001, 11} Języki Ustalmy pewien skończony zbiór symboli Σ zwany alfabetem. Zbiór Σ zawiera wszystkie skończone ciagi symboli z Σ. Podzbiór L Σ nazywamy językiem a x L nazywamy słowem. Specjalne słowo puste oznaczamy

Bardziej szczegółowo

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 9 Rekurencja

Podstawy Informatyki. Inżynieria Ciepła, I rok. Wykład 9 Rekurencja Podstawy Informatyki Inżynieria Ciepła, I rok Wykład 9 Rekurencja Rekurencja z łacińskiego oznacza to przybiec z powrotem - osiągniesz rzecz wielką, jeśli zawrócisz po to, by osiągnąć rzeczy małe Przykład:

Bardziej szczegółowo

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów.

Rekurencja. Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów. Rekurencja Rekurencja zwana także rekursją jest jedną z najważniejszych metod konstruowania rozwiązań i algorytmów. Zgodnie ze znaczeniem informatycznym algorytm rekurencyjny to taki który korzysta z samego

Bardziej szczegółowo

Poprawność algorytmów

Poprawność algorytmów Poprawność algorytmów Jeśli uważasz, że jakiś program komputerowy jest bezbłędny, to się mylisz - po prostu nie zauważyłeś jeszcze skutków błędu, który jest w nim zawarty. Jakie błędy można popełnić? Błędy

Bardziej szczegółowo

O ISTOTNYCH OGRANICZENIACH METODY

O ISTOTNYCH OGRANICZENIACH METODY O ISTOTNYCH OGRANICZENIACH METODY ALGORYTMICZNEJ Dwa pojęcia algorytmu (w informatyce) W sensie wąskim Algorytmem nazywa się każdy ogólny schemat procedury możliwej do wykonania przez uniwersalną maszynę

Bardziej szczegółowo

Imię, nazwisko, nr indeksu

Imię, nazwisko, nr indeksu Imię, nazwisko, nr indeksu (kod) (9 punktów) Wybierz 9 z poniższych pytań i wybierz odpowiedź tak/nie (bez uzasadnienia). Za prawidłowe odpowiedzi dajemy +1 punkt, za złe -1 punkt. Punkty policzymy za

Bardziej szczegółowo

ZLOŻONOŚĆ OBLICZENIOWA - WYK. 2

ZLOŻONOŚĆ OBLICZENIOWA - WYK. 2 ZLOŻONOŚĆ OBLICZENIOWA - WYK. 2 1. Twierdzenie Sipsera: Dla dowolnej maszyny M działającej w pamięci S(n) istnieje maszyna M taka, że: L(M) = L(M ), M działa w pamięci S(n), M ma własność stopu. Dowód:

Bardziej szczegółowo

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to

Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to Złożoność obliczeniowa algorytmu ilość zasobów komputera jakiej potrzebuje dany algorytm. Pojęcie to wprowadzili J. Hartmanis i R. Stearns. Najczęściej przez zasób rozumie się czas oraz pamięć dlatego

Bardziej szczegółowo

Poprawność semantyczna

Poprawność semantyczna Poprawność składniowa Poprawność semantyczna Poprawność algorytmu Wypisywanie zdań z języka poprawnych składniowo Poprawne wartościowanie zdań języka, np. w języku programowania skutki wystąpienia wyróżnionych

Bardziej szczegółowo

Wykład z Technologii Informacyjnych. Piotr Mika

Wykład z Technologii Informacyjnych. Piotr Mika Wykład z Technologii Informacyjnych Piotr Mika Uniwersalna forma graficznego zapisu algorytmów Schemat blokowy zbiór bloków, powiązanych ze sobą liniami zorientowanymi. Jest to rodzaj grafu, którego węzły

Bardziej szczegółowo

1. Analiza algorytmów przypomnienie

1. Analiza algorytmów przypomnienie 1. Analiza algorytmów przypomnienie T.H. Cormen, C.E. Leiserson, R.L. Rivest, C. Stein Wprowadzenie do algorytmów, rozdziały 1-4 Wydawnictwa naukowo-techniczne (2004) Jak mierzyć efektywność algorytmu?

Bardziej szczegółowo

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p.

Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy. Wykład 1. Karol Tarnowski A-1 p. Wstęp do programowania INP001213Wcl rok akademicki 2017/18 semestr zimowy Wykład 1 Karol Tarnowski karol.tarnowski@pwr.edu.pl A-1 p. 411B Plan wykładów (1) Algorytmy i programy Proste typy danych Rozgałęzienia

Bardziej szczegółowo

Podstawy Informatyki Systemy sterowane przepływem argumentów

Podstawy Informatyki Systemy sterowane przepływem argumentów Podstawy Informatyki alina.momot@polsl.pl http://zti.polsl.pl/amomot/pi Plan wykładu 1 Komputer i jego architektura Taksonomia Flynna 2 Komputer i jego architektura Taksonomia Flynna Komputer Komputer

Bardziej szczegółowo

Język ludzki kod maszynowy

Język ludzki kod maszynowy Język ludzki kod maszynowy poziom wysoki Język ludzki (mowa) Język programowania wysokiego poziomu Jeśli liczba punktów jest większa niż 50, test zostaje zaliczony; w przeciwnym razie testu nie zalicza

Bardziej szczegółowo

ALGORYTMY I PROGRAMY

ALGORYTMY I PROGRAMY ALGORYTMY I PROGRAMY Program to ciąg instrukcji, zapisanych w języku zrozumiałym dla komputera. Ten ciąg instrukcji realizuje jakiś algorytm. Algorytm jest opisem krok po kroku jak rozwiązać problem, czy

Bardziej szczegółowo

Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 WYKŁAD 1 WSTĘP DO INFORMATYKI

Dr inż. Grażyna KRUPIŃSKA.  D-10 pokój 227 WYKŁAD 1 WSTĘP DO INFORMATYKI Dr inż. Grażyna KRUPIŃSKA Grazyna.Krupinska@fis.agh.edu.pl http://orion.fis.agh.edu.pl/~grazyna/ D-10 pokój 227 WYKŁAD 1 WSTĘP DO INFORMATYKI Plan wykładu 2 Wprowadzenie, trochę historii, systemy liczbowe

Bardziej szczegółowo

Algorytmy. Programowanie Proceduralne 1

Algorytmy. Programowanie Proceduralne 1 Algorytmy Programowanie Proceduralne 1 Przepis Warzenie piwa Brunświckiego Programowanie Proceduralne 2 Przepis Warzenie piwa Brunświckiego składniki (dane wejściowe): woda, słód, itd. wynik: beczka piwa

Bardziej szczegółowo

Informatyka. Michał Rad

Informatyka. Michał Rad Informatyka Michał Rad 13.10.2016 Co i po co będziemy robić Plan wykładów: Wstęp, historia Systemy liczbowe Co to jest system operacyjny i po co to jest Sprawy związane z tworzeniem i własnością oprogramowania

Bardziej szczegółowo

1 Wprowadzenie do algorytmiki

1 Wprowadzenie do algorytmiki Teoretyczne podstawy informatyki - ćwiczenia: Prowadzący: dr inż. Dariusz W Brzeziński 1 Wprowadzenie do algorytmiki 1.1 Algorytm 1. Skończony, uporządkowany ciąg precyzyjnie i zrozumiale opisanych czynności

Bardziej szczegółowo

Programowanie dynamiczne cz. 2

Programowanie dynamiczne cz. 2 Programowanie dynamiczne cz. 2 Wykład 7 16 kwietnia 2019 (Wykład 7) Programowanie dynamiczne cz. 2 16 kwietnia 2019 1 / 19 Outline 1 Mnożenie ciągu macierzy Konstruowanie optymalnego rozwiązania 2 Podstawy

Bardziej szczegółowo

Maszyna Turinga, ang. Turing Machine (TM)

Maszyna Turinga, ang. Turing Machine (TM) Maszyna Turinga, ang. Turing Machine (TM) Alan Turing wybitny angielski matematyk, logik i kryptolog, jeden z najważniejszych twórców informatyki teoretycznej, któremu zawdzięczamy pojęcie maszyny Turinga

Bardziej szczegółowo

Języki i metodyka programowania

Języki i metodyka programowania Języki i metodyka programowania www.ee.pw.edu.pl/~slawinsm Dr inż. Maciej Sławiński M.Slawinski@ee.pw.edu.pl GE518l Konsultacje: śr. 13 00-13 45 SK201/GE518l pt. 10 15-11 00 GE518l/SK201 Algorytmika Literatura

Bardziej szczegółowo

TEORETYCZNE PODSTAWY INFORMATYKI

TEORETYCZNE PODSTAWY INFORMATYKI 1 TEORETYCZNE PODSTAWY INFORMATYKI WFAiS UJ, Informatyka Stosowana I rok studiów, I stopień Wykład 3 2 Złożoność obliczeniowa algorytmów Notacja wielkie 0 Notacja Ω i Θ Algorytm Hornera Przykłady rzędów

Bardziej szczegółowo

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa.

Metoda tabel semantycznych. Dedukcja drogi Watsonie, dedukcja... Definicja logicznej konsekwencji. Logika obliczeniowa. Plan Procedura decyzyjna Reguły α i β - algorytm Plan Procedura decyzyjna Reguły α i β - algorytm Logika obliczeniowa Instytut Informatyki 1 Procedura decyzyjna Logiczna konsekwencja Teoria aksjomatyzowalna

Bardziej szczegółowo

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów

Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów Sprzęt komputera - zespół układów wykonujących programy wprowadzone do pamięci komputera (ang. hardware) Oprogramowanie komputera - zespół programów przeznaczonych do wykonania w komputerze (ang. software).

Bardziej szczegółowo

Złożoność obliczeniowa. wykład 1

Złożoność obliczeniowa. wykład 1 Złożoność obliczeniowa wykład 1 Dwa wykłady: wtorek / środa różnice niewielkie Sprawy organizacyjne wtorek: trochę szybciej, parę dodatkowych rzeczy dedykowana grupa ćw. M. Pilipczuka - ale śmiało mogą

Bardziej szczegółowo

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10).

Systemy liczbowe. 1. Przedstawić w postaci sumy wag poszczególnych cyfr liczbę rzeczywistą R = (10). Wprowadzenie do inżynierii przetwarzania informacji. Ćwiczenie 1. Systemy liczbowe Cel dydaktyczny: Poznanie zasad reprezentacji liczb w systemach pozycyjnych o różnych podstawach. Kodowanie liczb dziesiętnych

Bardziej szczegółowo

Wprowadzenie do algorytmiki

Wprowadzenie do algorytmiki Wprowadzenie do algorytmiki Pojecie algorytmu Powszechnie przyjmuje się, że algorytm jest opisem krok po kroku rozwiązania postawionego problemu lub sposób osiągnięcia jakiegoś celu. Wywodzi się z matematyki

Bardziej szczegółowo

Podstawy programowania

Podstawy programowania Podstawy programowania Część pierwsza Od języka symbolicznego do języka wysokiego poziomu Autor Roman Simiński Kontakt roman.siminski@us.edu.pl www.us.edu.pl/~siminski Niniejsze opracowanie zawiera skrót

Bardziej szczegółowo

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 4a: Rozwiązywanie rekurencji http://kiwi.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Czas działania programu Dla konkretnych

Bardziej szczegółowo

Programowanie w języku C++ Grażyna Koba

Programowanie w języku C++ Grażyna Koba Programowanie w języku C++ Grażyna Koba Kilka definicji: Program komputerowy to ciąg instrukcji języka programowania, realizujący dany algorytm. Język programowania to zbiór określonych instrukcji i zasad

Bardziej szczegółowo

Algorytm i złożoność obliczeniowa algorytmu

Algorytm i złożoność obliczeniowa algorytmu Algorytm i złożoność obliczeniowa algorytmu Algorytm - przepis postępowania, którego wykonanie prowadzi do rozwiązania określonego problemu określa czynności, jakie należy wykonać wyszczególnia wszystkie

Bardziej szczegółowo

KATEDRA INFORMATYKI TECHNICZNEJ. Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych. ćwiczenie 204

KATEDRA INFORMATYKI TECHNICZNEJ. Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych. ćwiczenie 204 Opracował: prof. dr hab. inż. Jan Kazimierczak KATEDA INFOMATYKI TECHNICZNEJ Ćwiczenia laboratoryjne z Logiki Układów Cyfrowych ćwiczenie 204 Temat: Hardware'owa implementacja automatu skończonego pełniącego

Bardziej szczegółowo

Algorytmy. Programowanie Proceduralne 1

Algorytmy. Programowanie Proceduralne 1 Algorytmy Programowanie Proceduralne 1 Przepis Warzenie piwa Brunświckiego Programowanie Proceduralne 2 Przepis Warzenie piwa Brunświckiego składniki (dane wejściowe): woda, słód, itd. wynik: beczka piwa

Bardziej szczegółowo