Złożoność informacyjna Kołmogorowa. Paweł Parys

Podobne dokumenty
Zestaw 1-1 Organizacja plików: Oddajemy tylko źródła programów (pliki o rozszerzeniach.cpp)!!!

Wstęp do Informatyki zadania ze złożoności obliczeniowej z rozwiązaniami

Zmienne losowe i ich rozkłady

Obliczenia inspirowane Naturą

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

Prawdopodobieństwo. Prawdopodobieństwo. Jacek Kłopotowski. Katedra Matematyki i Ekonomii Matematycznej SGH. 16 października 2018

Wrocław, Wstęp do informatyki i programowania: liczby pierwsze. Wydział Matematyki Politechniki Wrocławskiej.

Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Olimpiada O Diamentowy Indeks AGH 2017/18. Informatyka Etap III

Jeśli wszystkie wartości, jakie może przyjmować zmienna można wypisać w postaci ciągu {x 1, x 2,...}, to mówimy, że jest to zmienna dyskretna.

Rozkłady i ich dystrybuanty 16 marca F X (t) = P (X < t) 0, gdy t 0, F X (t) = 1, gdy t > c, 0, gdy t x 1, 1, gdy t > x 2,

Jeśli czas działania algorytmu zależy nie tylko od rozmiaru danych wejściowych i przyjmuje różne wartości dla różnych danych o tym samym rozmiarze,

1 Wprowadzenie do algorytmiki

Ciągi Podzbiory Symbol Newtona Zasada szufladkowa Dirichleta Zasada włączania i wyłączania. Ilość najkrótszych dróg. Kombinatoryka. Magdalena Lemańska

Uniwersytet Kazimierza Wielkiego w Bydgoszczy Zespół Szkół nr 5 Mistrzostwa Sportowego XV Liceum Ogólnokształcące w Bydgoszczy

Nazwa implementacji: Nauka języka Python wyrażenia warunkowe. Autor: Piotr Fiorek. Opis implementacji: Poznanie wyrażeń warunkowych if elif - else.

RACHUNEK PRAWDOPODOBIEŃSTWA ZADANIA Z ROZWIĄZANIAMI. Uwaga! Dla określenia liczebności zbioru (mocy zbioru) użyto zamiennie symboli: Ω lub

EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016 POZIOM ROZSZERZONY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 90 minut

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

zdarzenie losowe - zdarzenie którego przebiegu czy wyniku nie da się przewidzieć na pewno.

Programowanie w Baltie klasa VII

02DRAP - Aksjomatyczna definicja prawdopodobieństwa, zasada w-w

Spacery losowe generowanie realizacji procesu losowego

Topologia zbioru Cantora a obwody logiczne

MODELOWANIE RZECZYWISTOŚCI

Rachunek prawdopodobieństwa

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

Poprawność semantyczna

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

Lista 4. Kamil Matuszewski 22 marca 2016

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

0 + 0 = 0, = 1, = 1, = 0.

1. Wykład NWD, NWW i algorytm Euklidesa.

Łyżwy - omówienie zadania

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2013 POZIOM PODSTAWOWY CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

ZLOŻONOŚĆ OBLICZENIOWA - WYK. 2

Podstawy i języki programowania

Projekt Era inżyniera pewna lokata na przyszłość jest współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Statystyka matematyczna

Wstęp do programowania

Projekt Era inżyniera pewna lokata na przyszłość jest współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

ZALICZENIE WYKŁADU: 30.I.2019

5. Logarytmy: definicja oraz podstawowe własności algebraiczne.

Wykład 1. Na początku zajmować się będziemy zbiorem liczb całkowitych

EGZAMIN MATURALNY Z INFORMATYKI MAJ 2011 POZIOM PODSTAWOWY CZĘŚĆ I WYBRANE: Czas pracy: 75 minut. Liczba punktów do uzyskania: 20 WPISUJE ZDAJĄCY

Arytmetyka. Działania na liczbach, potęga, pierwiastek, logarytm

RACHUNEK PRAWDOPODOBIEŃSTWA - POJĘCIA WSTĘPNE MATERIAŁY POMOCNICZE - TEORIA

P (A B) P (B) = 1/4 1/2 = 1 2. Zakładamy, że wszystkie układy dwójki dzieci: cc, cd, dc, dd są jednakowo prawdopodobne.

Wstęp do sieci neuronowych, wykład 11 Łańcuchy Markova

OBLICZALNOŚĆ I NIEOBLICZALNOŚĆ

Informacja w perspektywie obliczeniowej. Informacje, liczby i obliczenia

I. Podstawy języka C powtórka

Algorytmy w teorii liczb

Prawdopodobieństwo warunkowe Twierdzenie o prawdopodobieństwie całkowitym

Zad. 1 Zad. 2 Zad. 3 Zad. 4 Zad. 5 SUMA

Rekurencje. Jeśli algorytm zawiera wywołanie samego siebie, jego czas działania moŝe być określony rekurencją. Przykład: sortowanie przez scalanie:

Indukcja matematyczna. Zasada minimum. Zastosowania.

Zadania język C++ Zad. 1. Napisz program wczytujący z klawiatury wiek dwóch studentów i wypisujący informację o tym, który z nich jest starszy.

O ALGORYTMACH I MASZYNACH TURINGA

Indukcja matematyczna

Rachunek prawdopodobieństwa- wykład 2

Zadanie 1. Algorytmika ćwiczenia

Programowanie dynamiczne

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

Wydział Matematyki I Informatyki ul. Słoneczna Olsztyn

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

Efektywność Procedur Obliczeniowych. wykład 5

Rachunek prawdopodobieństwa Rozdział 3. Prawdopodobieństwo warunkowe i niezależność zdarzeń.

2 Rodziny zbiorów. 2.1 Algebry i σ - algebry zbiorów. M. Beśka, Wstęp do teorii miary, rozdz. 2 11

Liczby pierwsze. Kacper Żurek, uczeń w Gimnazjum nr 1 im. Jana Pawła II w Giżycku.

Iteracyjne rozwiązywanie równań

2. Zmienne i stałe. Przykłady Napisz program, który wypisze na ekran wynik dzielenia 281 i 117 w postaci liczby mieszanej (tj. 2 47/117).

Wykład 8. Informatyka Stosowana. 26 listopada 2018 Magdalena Alama-Bućko. Informatyka Stosowana Wykład , M.A-B 1 / 31

Teoretyczne podstawy informatyki

REPREZENTACJA LICZBY, BŁĘDY, ALGORYTMY W OBLICZENIACH

Logarytmy. Funkcje logarytmiczna i wykładnicza. Równania i nierówności wykładnicze i logarytmiczne.

(mniejszych od 10 9 ) podanych przez użytkownika, wypisze komunikat TAK, jeśli są to liczby bliźniacze i NIE, w przeciwnym przypadku.

Elementy modelowania matematycznego

Podstawy Informatyki. Algorytmy i ich poprawność

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}

ALGORYTMY I PROGRAMY

6. Pętle while. Przykłady

EGZAMIN MATURALNY Z INFORMATYKI 17 MAJA 2016 POZIOM PODSTAWOWY. Godzina rozpoczęcia: 14:00 CZĘŚĆ I WYBRANE: Czas pracy: 75 minut

Teorioinformacyjne twierdzenie Gödla,

Programowanie i techniki algorytmiczne

Pojęcie szeregu nieskończonego:zastosowania do rachunku prawdopodobieństwa wykład 1

Jarosław Wróblewski Analiza Matematyczna 1A, zima 2012/13

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

TEORETYCZNE PODSTAWY INFORMATYKI

jest ciągiem elementów z przestrzeni B(R, R)

Algorytm simplex i dualność

z przedziału 0,1 liczb dodatnich. Rozważmy dwie zmienne losowe:... ma złożony rozkład dwumianowy o parametrach 1,q i, gdzie X, wszystkie składniki X

Wykład 10. Stwierdzenie 1. X spełnia warunek Borela wtedy i tylko wtedy, gdy każda scentrowana rodzina zbiorów domkniętych ma niepusty przekrój.

KONGRUENCJE. 1. a a (mod m) a b (mod m) b a (mod m) a b (mod m) b c (mod m) a c (mod m) Zatem relacja kongruencji jest relacją równoważności.

Materiały dla finalistów

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

Ćwiczenia: Ukryte procesy Markowa lista 1 kierunek: matematyka, specjalność: analiza danych i modelowanie, studia II

Wykład 7. Informatyka Stosowana. 21 listopada Informatyka Stosowana Wykład 7 21 listopada / 27

Ćwiczenia z metodyki nauczania rachunku prawdopodobieństwa

złożony ze słów zerojedynkowych o długości co najmniej 3, w których druga i trzecia litera od końca sa

Definicja i własności wartości bezwzględnej.

Transkrypt:

Złożoność informacyjna Kołmogorowa Paweł Parys Serock 2012

niektóre liczby łatwiej zapamiętać niż inne... (to zależy nie tylko od wielkości liczby) 100...0 100 100... 100 100 100 25839496603316858921 31415926535897932384

niektóre liczby łatwiej zapamiętać niż inne... (to zależy nie tylko od wielkości liczby) 100...0 100 100... 100 100 100 25839496603316858921 20 losowych cyfr 31415926535897932384 π 1 1 1 3 1 5 1 7 1 9...= π 4

wybrana księga Pana Tadeusza 10 stron losowych symboli

Jakie pojęcia matematyczne kryją się za tym zjawiskiem? niektóre liczby można opisać znacznie krócej niż podając ich rozwinięcia dziesiętne złożoność liczby = długość najkrótszego opisu

Jakie pojęcia matematyczne kryją się za tym zjawiskiem? niektóre liczby można opisać znacznie krócej niż podając ich rozwinięcia dziesiętne złożoność liczby = długość najkrótszego opisu najmniejsza liczba, której nie da się opisać w języku polskim co najwyżej trzydziestoma słowami =??? (paradoks Berry'ego)

najmniejsza liczba, której nie da się opisać w języku polskim co najwyżej trzydziestoma słowami =??? (paradoks Berry'ego) niezbędne jest wprowadzenie notacji Idea Kołmogorowa: złożoność liczby = długość najkrótszego programu wypisującego tą liczbę np. w języku Pascal bez znaczenia czy to liczba, czy napis, czy program, czy ciąg 0 i 1... program + wejście do programu

złożoność liczby = długość najkrótszego programu wypisującego tą liczbę najmniejsza liczba, której nie da się wygenerować programem w Pascalu długości co najwyżej 3000 =???

złożoność liczby = długość najkrótszego programu wypisującego tą liczbę najmniejsza liczba, której nie da się wygenerować programem w Pascalu długości co najwyżej 3000 =??? dlaczego nie da się jej wygenerować w Pascalu programem długości <=3000? a taki program? zasymuluj wszystkie programy długości <=3000, one wypiszą jakieś liczby, weź najmniejszą niewypisaną

złożoność liczby = długość najkrótszego programu wypisującego tą liczbę najmniejsza liczba, której nie da się wygenerować programem w Pascalu długości co najwyżej 3000 =??? dlaczego nie da się jej wygenerować w Pascalu programem długości <=3000? a taki program? zasymuluj wszystkie programy długości <=3000, one wypiszą jakieś liczby, weź najmniejszą niewypisaną problem: niektóre programy się nie zatrzymają (program działa bardzo długo - czy już się zawiesił, czy obliczenia skończą się po długim czasie?)

Wniosek: Nie istnieje program, który bierze na wejściu program P i stwierdza, czy program P zakończy się. (problem stopu) gdyby istniał, dostalibyśmy sprzeczność

Ile najwyżej wynosi złożoność liczby x?

Ile najwyżej wynosi złożoność liczby x? złożoność(x) x+stała Zawsze można użyć programu print x

Jaki język programowania wybrać do definicji? złoż Pascal (liczba) = długość najkrótszego programu w Pascalu wypisującego tą liczbę złoż C++ (liczba) = długość najkrótszego programu w C++ wypisującego tą liczbę złoż Java (liczba) = długość najkrótszego programu w Java wypisującego tą liczbę... Jak te wartości mają się do siebie?

Jaki język programowania wybrać do definicji? istnieje stała taka, że dla każdego x złoż Pascal (x) - złoż C++ (x) stała Dowód: W C++ możemy napisać interpreter Pascala i dołączyć program w Pascalu. ( stała to rozmiar tego interpretera) Zatem: wybór języka programowania (prawie) nie ma znaczenia

definicja: złożoność liczby = długość najkrótszego programu w Pascalu wypisującego tą liczbę było: złożoność(x) x+stała wartość złożoności niewiele zależy od języka programowania nie istnieje program, który bierze na wejściu program P i stwierdza, czy program P zakończy się

definicja: złożoność liczby = długość najkrótszego programu w Pascalu wypisującego tą liczbę było: złożoność(x) x+stała wartość złożoności niewiele zależy od języka programowania nie istnieje program, który bierze na wejściu program P i stwierdza, czy program P zakończy się Czy istnieje program, który dla danej liczby x wyznacza jej złożoność?

Czy istnieje program, który dla danej liczby x wyznacza jej złożoność? NIE! Dowód: gdyby istniał, to dla danego n moglibyśmy znaleźć najmniejszą (w porządku wojskowym ) liczbę x, która ma złożoność n (sprawdzając kolejne liczby). Ale to znaczy, że ma ona złożoność około log(n).

definicja: złożoność liczby = długość najkrótszego programu w Pascalu wypisującego tą liczbę było: złożoność(x) x+stała wartość złożoności niewiele zależy od języka programowania nie istnieje program, który bierze na wejściu program P i stwierdza, czy program P zakończy się nie istnieje program, który dla danej liczby x wyznacza jej złożoność

Stała Chaitina

Stała Chaitina = P zatrzymuje się 2 P tzn. losujemy dowolny (nieskończony) ciąg znaków, jakie jest prawdopodobieństwo że na początku jest poprawny składniowo program, który się zatrzyma założenia techniczne: załóżmy, że te programy nic nie wczytują (operacja odczytu nie istnieje) w tej sumie uwzględniamy tylko programy, które się poprawnie kompilują bezprefiksowość: jeśli v jest poprawnym programem, to vw nie jest

Stała Chaitina: = P zatrzymuje się 2 P Co o niej wiemy? liczba ta jest mocno losowa gdybyśmy ją znali, to moglibyśmy rozwiązać problem stopu (oczywiście konkretna wartość liczby zależy od języka programowania)

Stała Chaitina: = P zatrzymuje się 2 P gdybyśmy ją znali, to moglibyśmy rozwiązać problem stopu tzn. istnieje program, który wczytuje program P wczytuje pierwsze n= P cyfr w 1 w 2...w n liczby stwierdza, czy P zatrzymuje się.

Stała Chaitina: = P zatrzymuje się 2 P gdybyśmy ją znali, to moglibyśmy rozwiązać problem stopu tzn. istnieje program, który wczytuje program P wczytuje pierwsze n= P cyfr w 1 w 2...w n liczby stwierdza, czy P zatrzymuje się. Dowód (algorytm): uruchamiamy program P (jeśli się zatrzyma wypisz TAK) równocześnie uruchamiamy wszystkie inne programy; niech S to zbiór tych które już się zatrzymały; wypisz NIE jeśli 0. w 1 w 2... w n v S 2 v

Stała Chaitina: = ruchem zygzakowym 2 P Stała Chaitina: P zatrzymuje się gdybyśmy ją znali, to moglibyśmy rozwiązać problem stopu p tzn. istnieje program, który 3-4 kroków p wczytuje program P 4-3 kroków wczytuje pierwsze n= P cyfr p 5 w - 2 1 w kroków 2...w n liczby stwierdza, czy P zatrzymuje się. p 1-6 kroków p 2-5 kroków p 6-1 kroków... Dowód (algorytm): uruchamiamy program P (jeśli się zatrzyma wypisz TAK) równocześnie uruchamiamy wszystkie inne programy; niech S to zbiór tych które już się zatrzymały; wypisz NIE jeśli 0. w 1 w 2... w n v S 2 v

tzn. istnieje program, który wczytuje program P wczytuje pierwsze n= P cyfr w 1 w 2...w n liczby stwierdza, czy P zatrzymuje się. Dowód (algorytm): uruchamiamy program P (jeśli się zatrzyma wypisz TAK) równocześnie uruchamiamy wszystkie inne programy; niech S to zbiór tych które już się zatrzymały; wypisz NIE jeśli 0. w 1 w 2... w n v S 2 v Dlaczego odpowiedź NIE jest prawidłowa? bo jeśli jeśli P się zatrzymuje, to jest większa jeszcze o 2 -n Dlaczego któryś z tych przypadków zajdzie? bo powyższa nierówność na pewno zachodzi dla pewnego skończonego zbioru S (sumę nieskończoną można dowolnie przybliżyć sumami skończonymi)

Stała Chaitina: = P zatrzymuje się 2 P liczba ta jest mocno losowa : Niech w 1 w 2...w n to pierwsze n cyfr liczby. złożoność(w 1 w 2...w n ) n-stała (czyli nie da się jej sprytnie wyliczyć, można ją jedynie zapamiętać)

Stała Chaitina: = P zatrzymuje się 2 P złożoność(w 1 w 2...w n ) n-stała ( jest mocno losowa ) Dowód: Mamy program, rozmiaru (złożoność(w 1 w 2...w n )+stała) generujący liczbę o złożoności co najmniej n: 1) wygeneruj n =0.w 1 w 2...w n 2) uruchamiaj równocześnie wszystkie programy ( zygzak ), zapamiętuj (S) programy, które się zakończyły, i ich wyjścia n 3) jeśli to wypisz najmniejszą nie wypisaną liczbę X; v S 2 v widzimy, że złożoność(x) n

Stała Chaitina: = P zatrzymuje się 2 P złożoność(w 1 w 2...w n ) n-stała ( jest mocno losowa ) Wniosek: każde skończone słowo ustalonej długości pojawia się w tak samo często (wpp moglibyśmy skompresować)

Stała Chaitina: = P zatrzymuje się 2 P (prawdopodobieństwo, że losowy program zatrzyma się) Co o niej wiemy? liczba ta jest mocno losowa gdybyśmy ją znali, to moglibyśmy rozwiązać problem stopu

Wylosujmy program - co on wypisze? p y = 1 P wypisuje y 2 P (prawdopodobieństwo, że losowy zatrzymujący się program wypisze y)

Wylosujmy program - co on wypisze? p y = 1 P wypisuje y 2 P (prawdopodobieństwo, że losowy zatrzymujący się program wypisze y) Okazuje się, że p y 2 1 złożoność y Dokładniej: istnieje stała c, że dla dowolnego y złożoność(y)-c<-log 2 p(y)<złożoność(y)+c

Uniwersalny test Martina-Löfa test mierzy jak dziwny jest ciąg - zwraca liczbę dziwactw typowy ciąg to taki, który należy do każdej rozsądnej większości, czyli ma niewiele dziwactw Def. Test to funkcja :(0+1)* N taka, że {w 0 1 n : w m } 2 n 1 2 m oraz że istnieje program wypisujący wszystkie pary (m,x) takie, że (x) m Przykładowy test: (x) = od ilu jedynek zaczyna się ciąg x (tylko co 2 m -ty ciąg zaczyna się od m jedynek)

Uniwersalny test Martina-Löfa test mierzy jak dziwny jest ciąg - zwraca liczbę dziwactw typowy ciąg to taki, który należy do każdej rozsądnej większości, czyli ma niewiele dziwactw Def. Test to funkcja :(0+1)* N taka, że {w 0 1 n : w m } 2 n 1 2 m oraz że istnieje program wypisujący wszystkie pary (m,x) takie, że (x) m Moglibyśmy się spodziewać, że dla różnych własności testy będą różne. Tymczasem istnieje test uniwersalny!

Uniwersalny test Martina-Löfa Istnieje test uniwersalny U czyli taki, że dla każdego testu istnieje stała c, że dla każdego ciągu x U (x) (x)-c

Uniwersalny test Martina-Löfa Istnieje test uniwersalny U czyli taki, że dla każdego testu istnieje stała c, że dla każdego ciągu x U (x) (x)-c Dowód Uruchom równocześnie wszystkie możliwe programy ( zygzak ). Dla każdego zapamiętaj wypisane dotychczas pary (m,x). Jeśli pary dotychczas wypisane przez k-ty program spełniają warunek testu, to wypisz parę (m-k,x)

Względna złożoność Kołmogorowa K(x y) = jak długi jest najkrótszy program wypisujący x, jeśli na wejściu dostanie y

Względna złożoność Kołmogorowa K(x y) = jak długi jest najkrótszy program wypisujący x, jeśli na wejściu dostanie y Oczywiście K(x y) K(x) K(y)+K(x y)

Złożoność Kołmogorowa a test uniwersalny Okazuje się, że następująca funkcja jest testem uniwersalnym: U (x)= x -K(x x )

Złożoność Kołmogorowa a test uniwersalny Okazuje się, że następująca funkcja jest testem uniwersalnym: U (x)= x -K(x x ) Dowód Dlaczego da się ją obliczać? Uruchamiamy (współbieżnie) każdy program P dając mu na wejście każdą liczbę n. Jeśli wypisze ciąg x długości n to wiemy, że K(x x ) P ; możemy więc wypisać parę ( x - P, x) oznaczającą, że U (x) x - P.

Złożoność Kołmogorowa a test uniwersalny Okazuje się, że następująca funkcja jest testem uniwersalnym: U (x)= x -K(x x ) Dowód Da się ją obliczać. Dlaczego mało jest ciągów, dla których wychodzi duża wartość? Liczba ciągów takich, że x -K(x x ) m (tzn. K(x x ) x -m) nie może być więcej niż programów długości x -m tzn. 2 x -m

Złożoność Kołmogorowa a test uniwersalny Okazuje się, że następująca funkcja jest testem uniwersalnym: U (x)= x -K(x x ) Dowód Da się ją obliczać. Mało jest ciągów, dla których wychodzi duża wartość. Dlaczego dobrze symuluje dowolny test? Wystarczy pokazać, że K(x x ) x - (x)+stała (stała może zależeć od ) Rozważmy zbiór A={z: (z) (x), z = x }. Znając x oraz (x) możemy wyliczyć elementy A (za pomocą programu liczącego ). Niech s będzie numerem x w tym wyliczeniu. Elementów A jest mało - najwyżej 2 x - (x). Wystarczy więc zapamiętać liczbę s (jej długość daje nam też (x)).

Dziękuję za uwagę