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

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

Efektywność Procedur Obliczeniowych. wykład 5

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

Elementy Teorii Obliczeń

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

Maszyna Turinga języki

PROBLEMY NIEROZSTRZYGALNE

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

Obliczenia inspirowane Naturą

Hierarchia Chomsky ego Maszyna Turinga

Języki, automaty i obliczenia

Logika stosowana. Ćwiczenia Złożoność obliczeniowa problemu spełnialności. Marcin Szczuka. Instytut Informatyki, Uniwersytet Warszawski

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

MODELOWANIE RZECZYWISTOŚCI

Dialog z przyroda musi byc prowadzony w jezyku matematyki, w przeciwnym razie przyroda nie odpowiada na nasze pytania.

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

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

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

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

Logika i teoria mnogości Wykład Sformalizowane teorie matematyczne

Matematyczne Podstawy Informatyki

Maszyna Turinga, ang. Turing Machine (TM)

Wstęp do programowania

Podstawy Informatyki. Sprawność algorytmów

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

ZLOŻONOŚĆ OBLICZENIOWA - WYK. 2

Zakładamy, że maszyna ma jeden stan akceptujacy.

Poprawność semantyczna

Lista 6 Problemy NP-zupełne

Zasady analizy algorytmów

Logika Stosowana. Wykład 1 - Logika zdaniowa. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2016/2017

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Obliczanie. dr hab. inż. Joanna Józefowska, prof. PP 1

Dowód pierwszego twierdzenia Gödela o. Kołmogorowa

Języki formalne i automaty Ćwiczenia 9

Efektywność algorytmów

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Algorytmy asymetryczne

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

Wykład 2. Poprawność algorytmów

Początki informatyki teoretycznej. Paweł Cieśla

1 Maszyny Turinga. stan 1 litera 1 litera 2 ruch stan 2. Matematycznie P S (Q {B}) (Q {B}) {L, R, } S

LOGIKA I TEORIA ZBIORÓW

Imię, nazwisko, nr indeksu

Maszyna Turinga (Algorytmy Część III)

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

Struktury formalne, czyli elementy Teorii Modeli

Turing i jego maszyny

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

Jak należy się spodziewać, mamy. Zauważmy jednak, że nie zachodzi równość

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

Modele Obliczeń. Wykład 1 - Wprowadzenie. Marcin Szczuka. Instytut Matematyki, Uniwersytet Warszawski

Andrzej Wiśniewski Logika II. Wykład 6. Wprowadzenie do semantyki teoriomodelowej cz.6. Modele i pełność

Technologie Informacyjne

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

Wprowadzenie do złożoności obliczeniowej

Logika Stosowana. Wykład 2 - Logika modalna Część 3. Marcin Szczuka. Instytut Informatyki UW. Wykład monograficzny, semestr letni 2017/2018

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

Typy algorytmów losowych. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

Języki, automaty i obliczenia

Obliczenia inspirowane Naturą

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}

Równoliczność zbiorów

M T E O T D O ZI Z E E A LG L O G R O Y R TM

RACHUNEK ZDAŃ 7. Dla każdej tautologii w formie implikacji, której poprzednik również jest tautologią, następnik także jest tautologią.

Podstawy Informatyki Maszyna Turinga

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

Algorytm. Krótka historia algorytmów

Teorioinformacyjne twierdzenie Gödla,

Algorytm. a programowanie -

Złożoność Obliczeniowa Algorytmów

Liczby pierwsze - wstęp

Języki formalne i automaty Ćwiczenia 7

O ALGORYTMACH I MASZYNACH TURINGA

ZŁOŻONOŚĆ OBLICZENIOWA ALGORYTMÓW

O ROLI TEZY CHURCHA W DOWODZIE PEWNEGO TWIERDZENIA

Informatyka 1. Złożoność obliczeniowa

Metody dowodzenia twierdzeń i automatyzacja rozumowań Na początek: teoria dowodu, Hilbert, Gödel

O pewnych związkach teorii modeli z teorią reprezentacji

Informacja o przestrzeniach Hilberta

Algorytmy Równoległe i Rozproszone Część III - Układy kombinacyjne i P-zupełność

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

OBLICZALNOŚĆ I NIEOBLICZALNOŚĆ

Dopełnienie to można wyrazić w następujący sposób:

Kombinowanie o nieskończoności. 3. Jak policzyć nieskończone materiały do ćwiczeń

Wprowadzenie do maszyny Turinga

Matematyczne Podstawy Informatyki

Indukcja matematyczna, zasada minimum i maksimum. 17 lutego 2017

Uwaga 1. Zbiory skończone są równoliczne wtedy i tylko wtedy, gdy mają tyle samo elementów.

Podstawy Programowania. Złożoność obliczeniowa

TEORIA ZŁOŻONOŚCI PROBLEMY I ALGORYTMY OGRANICZENIE DOLNE I GÓRNE PROJEKTOWANIE ALGORYTMÓW I METODY SZTUCZNEJ INTELIGENCJI

Definicja: zmiennych zdaniowych spójnikach zdaniowych:

1. Wstęp do logiki. Matematyka jest nauką dedukcyjną. Nowe pojęcia definiujemy za pomocą pojęć pierwotnych lub pojęć uprzednio wprowadzonych.

Paradoksy log o i g czne czn i inne 4 marca 2010

Tautologia (wyrażenie uniwersalnie prawdziwe - prawo logiczne)

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Matematyka II - Organizacja zajęć. Egzamin w sesji letniej

Automat ze stosem. Języki formalne i automaty. Dr inż. Janusz Majewski Katedra Informatyki

JAO - Wprowadzenie do Gramatyk bezkontekstowych

TEORETYCZNE PODSTAWY INFORMATYKI

Transkrypt:

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 i astronom w 825 A.D. napisał traktat O obliczeniach w hinduskich liczbach ; w 12 wieku przetłumaczono go na łacinę Algoritmi de numero Indorum ; nazwisko autora omyłkowo wzięto za metodę obliczeń Algorytm proces obliczeniowy zdefiniowany w ramach maszyny Turinga [Gurevich]

Maszyna Turinga Prosta koncepcyjnie. Zużycie zasobów podczas obliczenia dobrze modeluje rzeczywiste komputery. Potrafi przeprowadzić dowolne obliczenie możliwe na innych znanych nam maszynach (teza Churcha-Turinga 1936) Składa się z głowicy i nieskończonej taśmy podzielonej na pola. Zależnie od kombinacji stanu maszyny i pola maszyna zapisuje nową wartość w polu, zmienia stan, a następnie może przesunąć się o jedno pole w prawo lub w lewo.

Maszyna Turinga M = (Q,,,#,,q 0,F) Q to skończony zbiór stanów maszyny. to skończony zbiór symboli wejściowych, które służą do reprezentacji wejścia maszyny i są zapisane na taśmie przed rozpoczęciem obliczenia. to skończony zbiór symboli taśmowych - są to wszystkie symbole jakie mogą się znajdować na taśmie.. # to symbol pusty - specjalny symbol taśmowy nie należący do symboli wejściowych q 0 to stan początkowy

Maszyna Turinga M = (Q,,,#,,q 0,F) to funkcja przejścia. Jest to funkcja częściowa prowadząca z Q w Q {, }. Tak więc (A,x)=(B,y,K) oznacza, że maszyna będąca w stanie A i czytając symbol x z taśmy przejdzie do stanu B, zapisze symbol y na taśmie i przesunie głowicę o jedną komórkę w lewo (K = ) lub w prawo (K = ). F to zbiór stanów akceptujących (końcowych) będący podzbiorem Q. Obliczenie maszyny kończy się kiedy osiągnięty zostanie któryś ze stanów F.

Dodawanie liczb unarnych (n+1) = ={0,1} Q={A,B,C,D} q 0 =A F={D} Dane wejściowe (3+2): #11110111# Tabelka Diagram A,0: A,1, A,1: A,1, A,#: B,#, B,1: C,#, C,1: D,#,

Złożoność czasowa Czas obliczenia maszyny M na konkretnym słowie wejściowym w - T(M,w) to liczba kroków wykonanych zanim maszyna się zatrzymała. Jeżeli M nigdy się nie zatrzyma, to mówimy, że czas obliczenia jest nieskończony i zapisujemy T(M,w) =. Funkcja f : N N jest złożonością czasową dla maszyny M, jeżeli n N: f n =max {T M, w : w n }

Złożoność pamięciowa Pamięć potrzebną do obliczenia maszyny M na słowie w - S(M,w) definiujemy jako liczbę komórek taśmy, które zostały odwiedzone przez głowicę zanim maszyna się zatrzymała. Jeżeli M nie zatrzymuje się na w, to wartość S(M,w) jest nieokreślona. Funkcja f : N N jest złożonością pamięciową dla maszyny M z własnością stopu, jeżeli n N: f n =max {S M, w : w n }

Własność stopu Mówimy, że M ma własność stopu, jeżeli dla dowolnego słowa w * obliczenie M na w się kończy.

Problem stopu (halting problem) Nie istnieje algorytm potrafiący określić dla dowolnej pary program-wejście czy program się zatrzyma.

x:=x 0 repeat if x jest parzyste then x := x/2 else x := 3*x + 1 until x = 1 Problem Collatza

Paradoks Epimenidesa (kłamcy) ok. 600 B.C.: Kreteńczycy zawsze kłamią. (autor pochodził z Krety) Czy Epimenides mówi prawdę? Da się dowieść, że zdanie jest fałszywe, więc nie jest do końca paradoksalne. Inne wersje: Teraz kłamię. To zdanie jest fałszywe.

Twierdzenie Gödla (1931) Program Davida Hilberta (ok.1920) miał za zadanie sformalizowanie wszystkich teorii matematycznych za pomocą skończonego zbioru aksjomatów i udowodnienie, że te aksjomaty są spójne. Kurt Gödel udowodnił, iż jest to niemożliwe. System formalny spójny (niesprzeczny) - system, w którym nie da się udowodnić jednocześnie pewnego zdania i jego zaprzeczenia. System formalny zupełny - system, w którym możliwe jest przeprowadzenie dowodu dowolnego, prawidłowo zapisanego zdania tego systemu, lub jego zaprzeczenia.

Twierdzenie Gödla (1931) Dowolny system formalny zawierający w sobie aksjomaty arytmetyki liczb naturalnych, jest albo zupełny albo spójny i nigdy nie posiada obu tych cech jednocześnie. Innymi słowy: można dowodzić prawdziwości wszystkich zdań takiego systemu, jednak wówczas istnieje w systemie pewne prawdziwe zdanie P, którego zaprzeczenie ~P również jest prawdziwe. Tym samym system albo jest sprzeczny wewnętrznie, albo system nie musi być sprzeczny, lecz wówczas istnieją zdania, których prawdziwości nie da się wywieść z aksjomatów i twierdzeń rozważanego systemu formalnego.

Problem stopu - dowód Załóżmy, że istnieje program S, który dla dowolnego programu P i danych D: zatrzymuje się i zwraca 1 jeżeli P zatrzymuje się na danych wejściowych D, oraz zatrzymuje się i zwraca 0 w przeciwnym razie. program T dla dowolnego programu P zatrzymuje się wtedy i tylko wtedy, kiedy P zapętla się na swoim własnym kodzie podanym jako dane wejściowe T(P): if S(P,P)=1 then loop else stop Czy T(T) się zatrzyma?

Wielotaśmowa maszyna Turinga Równoważna jednotaśmowej

Niedeterministyczna m. T. Mechanizm sterujący może przy konkretnym stanie i odczycie z taśmy postąpić na kilka różnych sposobów. Niedeterministyczna maszyna M akceptuje słowo w jeżeli istnieje taki ciąg przejść, który kończy się stanem akceptującym. Czas wykonania odpowiada wysokości drzewa możliwych wykonań.

źródło: http://wazniak.mimuw.edu.pl

Klasy problemów P deterministycznie wielomianowy (deterministic polynomial) - problem decyzyjny, dla którego rozwiązanie można znaleźć w czasie wielomianowym. NP - niedeterministycznie wielomianowy (nondeterministic polynomial) - problem decyzyjny, dla którego rozwiązanie można zweryfikować w czasie wielomianowym. Inaczej mówiąc, problem jest w klasie NP, jeśli może być rozwiązany w wielomianowym czasie na niedeterministycznej maszynie Turinga.

Przykład Czy jakikolwiek podzbiór zadanego zbioru (np. {-2,6,-3,72,10,-11}) sumuje się do zera? Sprawdzenie wszystkich podzbiorów ma złożoność wykładniczą (2 n ). Przykładowe rozwiązanie (np. {-2,6,-3,10,-11}) możemy sprawdzic w czasie wielomianowym.

Relacje między klasami Oczywiste jest, że P NP Czy P=NP? (pytanie warte milion dolarów dla Clay Mathematics Institute)

Problemy NP-trudne Jest to problem, taki że dowolny problem należący do NP może być do niego zredukowany w czasie wielomianowym.

Problemy NP-zupełne (NP-complete) Jest to problem, który należy do klasy NP oraz dowolny problem należący do NP może być do niego zredukowany w czasie wielomianowym (czyli problem NP-trudny należący do NP). Pierwszym problemem, którego NP-zupełność wykazano, był problem SAT, czyli problem spełnialności formuł zdaniowych. Udowodnił to w 1971 roku Stephen Cook. Inne problemy: komiwojażera, plecakowy.

Problemy NP-zupełne (NP-complete) Jeśli tylko potrafimy rozwiązać jakikolwiek problem NP-zupełny w czasie wielomianowym, to potrafimy rozwiązać w czasie wielomianowym wszystkie problemy NP. Wówczas P=NP. Aby udowodnić, że problem jest NP-zupełny wystarczy udowodnić, że należy do NP oraz zredukować do niego dowolny znany problem NP-zupełny.

Asymptotyczne tempo wzrostu Miara określającą zachowanie wartości funkcji wraz ze wzrostem jej argumentów. W teorii obliczeń, stosuje się ją w celu opisu złożoności obliczeniowej, czyli zależności ilości potrzebnych zasobów (np. czasu lub pamięci) od rozmiaru danych wejściowych algorytmu. Mówimy, że f jest co najwyżej rzędu g (zapis f(n)=o(g(n))), gdy istnieją takie stałe n 0 >0, oraz c>0, że: n n 0 f n cg n

Asymptotyczne tempo wzrostu Mówimy, że f jest co najmniej rzędu g (zapis f(n)= (g(n))), gdy istnieją takie stałe n 0 >0, oraz c>0, że: f n cg n n n 0 Mówimy, że f jest dokładnie rzędu g (zapis f(n)= (g(n))), gdy istnieją takie stałe n 0 >0, oraz c 1 >0, c 2 >0, że: c 1 g n f n c 2 g n n n 0

Rzędy złożoności obliczeniowej 1 stała log 2 n logarytmiczna n liniowa nlog 2 n liniowo-logarytmiczna (quasi-liniowa) n 2 kwadratowa n c wielomianowa c n - wykładnicza