Niestandardowe modele obliczeń

Podobne dokumenty
Matematyczne Podstawy Informatyki

Maszyna Turinga języki

Języki, automaty i obliczenia

Wprowadzenie do maszyny Turinga

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

Języki formalne i automaty Ćwiczenia 9

Hierarchia Chomsky ego Maszyna Turinga

1 Automaty niedeterministyczne

MODELOWANIE RZECZYWISTOŚCI

Turing i jego maszyny

Maszyna Turinga (Algorytmy Część III)

Zadanie 1. Czy prawdziwa jest następująca implikacja? Jeśli L A jest językiem regularnym, to regularnym językiem jest też. A = (A, Q, q I, F, δ)

Elementy Teorii Obliczeń

Matematyczna wieża Babel. 4. Ograniczone maszyny Turinga o językach kontekstowych materiały do ćwiczeń

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

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}

Języki, automaty i obliczenia

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

Zadanie 1. (6 punktów) Słowo w nazwiemy anagramem słowa v jeśli w można otrzymać z v poprzez zamianę kolejności liter. Niech

Teoretyczne podstawy informatyki

Wydział Matematyki I Informatyki ul. Słoneczna Olsztyn

LOGIKA I TEORIA ZBIORÓW

Wyrażenie nawiasowe. Wyrażenie puste jest poprawnym wyrażeniem nawiasowym.

Zadania do wykonania. Rozwiązując poniższe zadania użyj pętlę for.

Rozpoznawanie obrazu. Teraz opiszemy jak działa robot.

Języki formalne i automaty Ćwiczenia 1

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

Programowanie w Baltie klasa VII

Podstawy Informatyki Maszyna Turinga

Instrukcje dla zawodników

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

Zajęcia nr. 3 notatki

Lista zadań - Relacje

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

Urządzenia Techniki. Klasa I TI. System dwójkowy (binarny) -> BIN. Przykład zamiany liczby dziesiętnej na binarną (DEC -> BIN):

Laboratorium 10: Maszyna stanów

Formatowanie zawartości komórek

Jaki język zrozumie automat?

Języki formalne i automaty Ćwiczenia 7

Algorytmy sztucznej inteligencji

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

ZLOŻONOŚĆ OBLICZENIOWA - WYK. 2

PROBLEMY NIEROZSTRZYGALNE

Pomorski Czarodziej 2016 Zadania. Kategoria C

Zadanie: BOW Gra w kręgle

1. Napisz program, który wyświetli Twoje dane jako napis Witaj, Imię Nazwisko. 2. Napisz program, który wyświetli wizytówkę postaci:

Imię, nazwisko, nr indeksu

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


B.B. 2. Sumowanie rozpoczynamy od ostatniej kolumny. Sumujemy cyfry w kolumnie zgodnie z podaną tabelką zapisując wynik pod kreską:

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

Monoidy wolne. alfabetem. słowem długością słowa monoidem wolnym z alfabetem Twierdzenie 1.

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

MASZYNA TURINGA UPRASZCZANIE DANYCH

1 Powtórzenie wiadomości

GRUPA ĆWICZENIOWA (ZAKREŚL ODPOWIEDNIĄ): MG8 MG13 MB13 MD13 BT13

Symbol, alfabet, łańcuch

1. Maszyna Turinga, gramatyki formalne i ONP

Temat: Zastosowanie wyrażeń regularnych do syntezy i analizy automatów skończonych

Zbiory, relacje i funkcje

1. Operacje logiczne A B A OR B

Zadanie 1. Zmiana systemów. Zadanie 2. Szyfr Cezara. Zadanie 3. Czy liczba jest doskonała. Zadanie 4. Rozkład liczby na czynniki pierwsze Zadanie 5.

Rozwiązania około dwustu łatwych zadań z języków formalnych i złożoności obliczeniowej i być może jednego chyba trudnego (w trakcie tworzenia)

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.

Zamiana ułamków na procenty oraz procentów na ułamki

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

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

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

Efektywność Procedur Obliczeniowych. wykład 5

Rozkład figury symetrycznej na dwie przystające

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

Zajęcia 5 łańcuchy znaków (ciąg dalszy) i funkcje

; B = Wykonaj poniższe obliczenia: Mnożenia, transpozycje etc wykonuję programem i przepisuję wyniki. Mam nadzieję, że umiesz mnożyć macierze...

Ćwiczenie: JavaScript Cookies (3x45 minut)

Implementacja maszyny Turinga w maszynie RAM

Odmiany maszyny Turinga. dr hab. inż. Joanna Józefowska, prof. PP 1

Iteracyjne rozwiązywanie równań

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

Macierze. Rozdział Działania na macierzach

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

Finanse i Rachunkowość studia niestacjonarne Wprowadzenie do teorii ciągów liczbowych (treść wykładu z 21 grudnia 2014)

Pzetestuj działanie pętli while i do...while na poniższym przykładzie:

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

Języki formalne i automaty Ćwiczenia 6

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Algorytmy i struktury danych Laboratorium Nr 4

Dwa równania kwadratowe z częścią całkowitą

4. Funkcje. Przykłady

Arkusz kalkulacyjny. Wejście. Wyjście. Przykłady. VII OIG Zawody drużynowe, trening VIII. Dostępna pamięć: 64 MB. 6 V 2013

Projekty zaliczeniowe Podstawy Programowania 2012/2013

wagi cyfry pozycje

Matematyka dyskretna dla informatyków

I. Podstawy języka C powtórka

(j, k) jeśli k j w przeciwnym przypadku.

Hierarchia Chomsky ego

Notacja RPN. 28 kwietnia wyliczanie i transformacja wyrażeń. Opis został przygotowany przez: Bogdana Kreczmera.

Parsery LL(1) Teoria kompilacji. Dr inż. Janusz Majewski Katedra Informatyki

Kolorowanie płaszczyzny, prostych i okręgów

Matematyczne Podstawy Informatyki

Indukcja matematyczna. Zasada minimum. Zastosowania.

Transkrypt:

Niestandardowe modele obliczeń Zadania kwalifikacyjne Adam Michalik 11 czerwca 2014 1 Uwagi ogólne Do kwalifikacji należy rozwiązać wszystkie zadania o maszynach Turinga, oraz kilka zadań matematycznych niekoniecznie wszystkie, chociaż oczywiście im więcej, tym lepiej. W razie trudności w zmaganiach z zadaniami, proszę napisać o nich do mnie będę dawał wskazówki i nie będzie wpływać to na kwalifikację, o ile zadanie ostatecznie zostanie rozwiązane. Nie trzeba wysyłać wszystkich rozwiązań naraz, można stopniowo. Jeżeli nie jesteście pewni, czy zadanie jest rozwiązane poprawnie, albo czy wasze rozwiązanie jest wystarczająco przekonujące, to pamiętajcie, że zadania można poprawiać aż do ostatecznego terminu, oraz im wcześniej mi je wyślecie, tym szybciej mogę wam wysłać na ich temat opinię i tym więcej czasu macie na ewentualne poprawki. 2 Maszyny Turinga 2.1 Wprowadzenie Podstawowym modelem obliczeń używanym w teorii obliczeń jest maszyna Turinga. Choć początkowo może wydawać się być skomplikowany, w gruncie rzeczy jest to w miarę prosty i intuicyjny model, do czego (mam nadzieję) uda mi się was dość szybko przekonać. O maszynie Turinga należy mysleć jako o głowicy, która czyta symbol z przypiętej do niej (obustronnie nieskończonej) taśmy, po czym, na podstawie przeczytanego symbolu oraz wewnętrznego stanu, zgodnie z zaprogramowanymi regułami, zapisuje na taśmie nowy symbol, zmienia wewnętrzny stan i przesuwa się o jedną pozycję w lewo lub w prawo. Rysunek 1: Artystyczna wizja maszyny Turinga Rysunek 2: Praktyczna wizja maszyny Turinga. Na taśmie, oprócz blanków (czyli startowych symboli, oznaczanych tu jako 0), znajdują się jeszcze symbole 1, 1, oraz B. Maszyna jest w stanie q 1, a głowica znajduje się nad pozycją na lewo od pierwszej jedynki. 1

Bardziej formalnie, (deterministyczna) maszyna Turinga składa się z: 1. skończonego zbioru stanów Q = {q 1,..., q n } 2. skończonego alfabetu symboli taśmowych Γ, który zawiera wyróżniony symbol B oznaczający blanka 3. zbioru symboli wejściowych Σ Γ {B} dane wejściowe maszyny Turinga to ciąg symboli wejściowych zapisany w kolejnych komórkach taśmy (we wszystkich pozostałych komórkach na starcie są blanki) 4. początkowego stanu q 0 Q 5. stanu akceptującego f Q 6. funkcji przejścia δ, która opisuje, jak na podstawie aktualnego stanu wewnętrznego i aktualnie wczytanego symbolu decyduje, do jakiego stanu wewnętrznego przejść, jaki symbol zapisać na taśmie, oraz gdzie się przesunąć (w lewo, w prawo, albo w ogóle). Innymi słowy, δ to funkcja ze zbioru par (Stan wewnętrzny maszyny, wczytany symbol) do zbioru trójek (Nowy stan wewnętrzny, symbol do zapisania, kierunek przesunięcia). Działanie maszyny jest proste: startujemy z głowicą w zerowej komórce taśmi i maszyną w początkowym stanie q 0, po czym w pętli wczytujemy symbol z taśmy i na podstawie aktualnego stanu i wczytanego symbolu, głowica zapisuje nowy symbol, zmienia stan i przesuwa się. Jeżeli w którymś momencie maszyna przejdzie do stanu akceptującego f, to kończy bieg (zatrzymuje się). 2.2 Przykładowa maszyna Dla przykładu, opiszemy maszynę Turinga REV, która, dla danego na taśmie wejściowego słowa, w wyniku da to samo słowo, ale zapisane w odwrotnej kolejności czyli, jeżeli damy jej na wejściu słowo 0100110, na wyjściu dostaniemy słowo 0110010. Alfabet symboli taśmowych to Γ = {B, P, 0, 1}. Alfabet symboli wejściowych to Σ = {0, 1} Zbiór stanów wewnętrznych maszyny REV to Q = {Start, OznaczP oczatek, IdzN akoniecslowaw ejsciowego, W rocdoostatniegoznaku SkopiujP ierwsze0, SkopiujP ierwsza1, ZapiszP ierwsze0, ZapiszP ierwsza1, IdzDoSlowaW ejsciowego, Zanies0DoOdwr, Zanies1DoOdwr, ZnajdzM iejscedla0w Odwr, ZnajdzM iejscedla1w Odwr, IdzN ap oczatekodwr, U sunp oczatek, Koniec} (1) Stan początkowy to oczywiście Start, stan końcowy to Koniec. Działanie maszyny jest następujące: na początek idziemy jedną pozycję na lewo od słowa wejściowego i zapisujemy w niej symbol P symbolizuje on dla nas początek taśmy. Następnie, idziemy na koniec słowa wejściowego, bierzemy ostatni znak ze słowa wejściowego i go usuwamy z taśmy, idziemy dwie pozycje w prawo, zapisujemy ostatni znak ze słowa wejściowego będzie on pierwszym znakiem słowa wyjściowego. Następnie, wracamy do słowa wejściowego (już krótszego o jeden znak), bierzemy ostatni znak, idziemy do słowa wyjściowego, zapisujemy go na końcu słowa wyjściowego i powtarzamy tę procedurę, aż trafimy na znak początek. Wtedy, usuwamy go, po czym kończymy działanie. Bardziej formalnie, funkcja przejścia δ jest zdefiniowana na następnej stronie. Uważny czytelnik zauważy, że nie dla wszystkich możliwych kombinacji (Stan, Symbolztasmy) wartość funkcji δ jest określona, ale jak łatwo się przekonać, pozostałe kombinacje nigdy nie wystąpią, zatem można je zdefiniować dowolnie. 2

δ(start, 0) = (OznaczP oczatek, 0, Lewo) (2) δ(start, 1) = (OznaczP oczatek, 1, Lewo) (3) δ(oznaczp oczatek, B) = (IdzN akoniecslowaw ejsciowego, P, P rawo) (4) δ(idzn akoniecslowaw ejsciowego, 0) = (IdzN akoniecslowaw ejsciowego, 0, P rawo) (5) δ(idzn akoniecslowaw ejsciowego, 1) = (IdzN akoniecslowaw ejsciowego, 1, P rawo) (6) δ(idzn akoniecslowaw ejsciowego, B) = (W rocdoostatniegoznaku, B, Lewo) (7) 2.3 Zadanie δ(w rocdoostatniegoznaku, 0) = (SkopiujP ierwsze0, B, P rawo) (8) δ(w rocdoostatniegoznaku, 1) = (SkopiujP ierwsze1, B, P rawo) (9) δ(skopiujp ierwsze0, B) = (ZapiszP ierwsze0, B, P rawo) (10) δ(skopiujp ierwsze1, B) = (ZapiszP ierwsze1, B, P rawo) (11) δ(zapiszp ierwsze0, B) = (IdzDoSlowaW ejsciowego, 0, Lewo) (12) δ(zapiszp ierwsze1, B) = (IdzDoSlowaW ejsciowego, 1, Lewo) (13) δ(idzdoslowaw ejsciowego, B) = (IdzDoSlowaW ejsciowego, B, Lewo) (14) δ(idzdoslowaw ejsciowego, 0) = (Zanies0DoOdwr, B, P rawo) (15) δ(idzdoslowaw ejsciowego, 1) = (Zanies1DoOdwr, B, P rawo) (16) δ(idzdoslowaw ejsciowego, P ) = (U sunp oczatek, B, Zostanwmiejscu) (17) δ(u sunp oczatek, B) = (Koniec, B, Zostanwmiejscu) (18) δ(zanies0doodwr, B) = (Zanies0DoOdwr, B, P rawo) (19) δ(zanies1doodwr, B) = (Zanies1DoOdwr, B, P rawo) (20) δ(zanies0doodwr, 0) = (ZnajdzM iejscedla0w Odwr, 0, P rawo) (21) δ(zanies0doodwr, 1) = (ZnajdzM iejscedla0w Odwr, 1, P rawo) (22) δ(zanies1doodwr, 0) = (ZnajdzM iejscedla1w Odwr, 0, P rawo) (23) δ(zanies1doodwr, 1) = (ZnajdzM iejscedla1w Odwr, 1, P rawo) (24) δ(znajdzm iejscedla0w Odwr, 0) = (ZnajdzM iejscedla0w Odwr, 0, P rawo) (25) δ(znajdzm iejscedla0w Odwr, 1) = (ZnajdzM iejscedla0w Odwr, 1, P rawo) (26) δ(znajdzm iejscedla1w Odwr, 0) = (ZnajdzM iejscedla1w Odwr, 0, P rawo) (27) δ(znajdzm iejscedla1w Odwr, 1) = (ZnajdzM iejscedla1w Odwr, 1, P rawo) (28) δ(znajdzm iejscedla0w Odwr, B) = (IdzN ap oczatekodwr, 0, Lewo) (29) δ(znajdzm iejscedla1w Odwr, B) = (IdzN ap oczatekodwr, 1, Lewo) (30) δ(idzn ap oczatekodwr, 0) = (IdzN ap oczatekodwr, 0, Lewo) (31) δ(idzn ap oczatekodwr, 1) = (IdzN ap oczatekodwr, 1, Lewo) (32) δ(idzn ap oczatekodwr, B) = (IdzDoSlowaW ejsciowego, B, Lewo) (33) Po tym niezwykle męczącym opisie, czas na faktyczne zadanie. Polega ono na napisaniu w dowolnym języku programowania symulatora maszyny Turinga. Program ma wczytywać opis maszyny wraz z wejściem, symulować jej działanie na podanym wejściu, a gdy osiągnie stan końcowy, wypisać wyjściowy stan taśmy. 2.3.1 Format danych wejściowych Dane wejściowe rozpoczynają się od linii zawierającej liczbę 2 Q 1000. Oznacza ona liczbę stanów wewnętrznych maszyny. Następne Q linii zawiera nazwy poszczególnych stanów. Nazwa stanu składa się z co najwyżej 255 znaków i może zawierać małe lub duże litery alfabetu łacińskiego oraz cyfry. Następna linia zawiera nazwę stanu początkowego (który jest jednym z wcześniej podanych Q stanów). Następna linia zawiera nazwę stanu końcowego (uwaga jak wyżej). Następna linia zawiera jedną liczbę 1 G 100, oznacza liczbę symboli taśmowych. Następne G linii zawiera nazwy symboli alfabetu taśmowego. Symbol alfabetu taśmowego to ciąg co najwyżej 10 znaków i może zawierać małe lub duże litery alfabetu łacińskiego, cyfry, oraz znaki #$ -+=. 3

Następna linia zawiera nazwę symbolu blanka. Następna linia zawiera jedną liczbę 0 N 100000, która jest liczbą podanych relacji przejścia. Następne N linii zawiera opis funkcji przejścia. Każda linia składa się z pięciu oddzielonych spacjami słów q α q β k. Oznacza ona, że maszyna znajdująca się w stanie q, po wczytaniu z taśmy symbolu α, ma przejść do stanu q, zapisać na taśmie symbol β, oraz zmienić pozycję zgodnie z nakazem słowa k (k {Lewo, P rawo, Zostan}). Następna linia zawiera liczbę 0 K 1000, oznaczającą liczbę znaków w słowie wejściowym. Następne K linii zawiera kolejne symbole słowa wejściowego. 2.3.2 Przykładowe dane wejściowe Przykładowy opis maszyny Turinga (maszyna przechodzi na koniec słowa wejściowego, dopisuje znak X i się zatrzymuje): 4 Start IdzNaKoniec DopiszX Koniec Start Koniec 3 B X Y B 7 Start X IdzNaKoniec X Zostan Start Y IdzNaKoniec Y Zostan Start B IdzNaKoniec B Zostan IdzNaKoniec X IdzNaKoniec X Prawo IdzNaKoniec Y IdzNaKoniec Y Prawo IdzNaKoniec B DopiszX X Zostan DopiszX X Koniec X Zostan 3 Y X Y 2.3.3 Symulacja maszyny Działanie maszyny symulujemy wedle wyżej podanego opisu. Dla uproszczenia, zakładamy, że taśma nie jest obustronnie nieskończona, ale ma 100000 komórek numerowanych od 0, a słowo wejściowe zapisujemy rozpoczynając od komórki o numerze 0. Na początku głowica znajduje się na pozycji 0. Gdyby relacja przejścia w pewnym momencie nakazała wyjście poza zakres 0 99999, należy zwrócić błąd i zakończyć działanie. Podobnie, gdyby w pewnym momencie maszyna znalazła się w stanie oraz wczytała symbol, ale nie istniałaby odpowiednia relacja przejścia dla danej pary, należy zwrócić błąd i zakończyć działanie. 2.3.4 Dane wyjściowe Na wyjściu program ma wypisać w czytelny sposób zawartość taśmy, od pierwszej pozycji, która nie jest blankiem, do ostatniej, która nie jest blankiem. Innymi słowy, pomijamy początkowe i końcowe blanki. Należy również wypisać liczbę kroków, które wykonała maszyna w trakcie działania. 2.3.5 Przykładowe dane Na stronie warsztatów można znaleźć plik z powyżsym opisem maszyny dopisującej X, jak również z opisem maszyny odwracającej wejście. 2.4 Drugie zadanie Drugim zadanie polega na napisaniu pewnych maszyn Turinga 4

2.4.1 Maszyna kopiująca wejście Należy opisać maszynę, która dla wejścia będącego ciągiem 0 i 1, skopiuje je obok po znaku dolara. Przykładowo, dla wejścia 001011, wynikiem działania ma być 001011$001011. Opis maszyny ma polegać na podaniu alfabetu taśmowego (który oczywiście może być większy niż alfabet wejściowy), wypisaniu stanów i dokładnym opisie funkcji przejścia to znaczy, w opisanej powyżej postaci wejściowej do naszej implementacji symulatora maszyn Turinga. 2.4.2 Maszyna mnożąca liczby Druga maszyna, o implementacji której należy pomyśleć, to maszyna mnożąca liczby. Bardziej formalnie, alfabet wejściowy maszyny ma się składać ze znaków 1, x, =, a maszyna, dla wejścia w postaci 11 } {{ 11 } n jedynek { 11 }} 11 { = ma w stanie akceptującym zostawić na taśmie dokładnie n k kolejno ułożonych k jedynek jedynek, czyli przykładowo wynikiem działania maszyny na wejściu 111x1111= ma być 111111111111111. Tym razem nie trzeba (choć można) podawać dokładnego opisu maszyny w postaci wejściowej do naszego symulatora wystarczy podać dokładny alfabet taśmowy, z grubsza opisać stany, oraz to, jak i kiedy maszyna zmienia stany, oraz co robi w każdym stanie. Akceptowalny będzie mniej więcej taki opis, jak powyżej w opisie maszyny odwracającej wejście (chodzi tutaj o opis zaczynający się od słow działanie maszyny jest następujące ). 2.5 Palindromy Opisać maszynę Turinga, która sprawdza, czy wejściowe słowo jest palindromem parzystej długości. Alfabet wejściowy składa się ze znaków a, b. Maszyna ma sprawdzić, czy zapisane na taśmie na wejściu słowo jest parzystej długości, oraz czytane od tyłu daje to samo słowo. Jeżeli tak jest, to maszyna ma zakończyć bieg z taśmą zawierającą dokładnie jeden znak a, a w przeciwnym wypadku dokładnie jeden znak b. Dokładność opisu może być taka, jak w poprzednim zadaniu. 2.6 Zbiór wszystkich słów jest rekurencyjnie przeliczalny Napisz w dowolnym języku programowania funkcję, która na wejściu przyjmuje zbiór (albo tablicę, listę, lub wektor, można wybrać, które wygodniej) znaków, a której działanie polega na wypisaniu wszystkich możliwych słów (czyli dowolnych skończonych ciągów), które można ułożyć z tych znaków, każde z nich dokładnie raz. Ponieważ wszystkich słów jest nieskończenie wiele, taka funkcja oczywiście nigdy nie skończy działania, ale nie należy się tym przejmować wystarczy że będzie wypisywać tak długo, jak tylko jest w stanie (tzn. dopóki nie przekręci się typ liczbowy, albo nie zabraknie pamięci), czyli ma działać przy założeniu nieskończonej ilości pamięci, nieskończonej długości typu liczbowego itd. 3 Trochę matematyki Z każdego z poniższych działów wypadałoby rozwiązać przynajmniej po dwa zadania. 3.1 Trochę teorii zbiorów 1) Niech X, Y będą dowolnymi zbiorami. Pokazać, że injekcja prowadząca ze zbioru X w zbiór Y istnieje wtedy i tylko wtedy, gdy istnieje surjekcja ze zbioru Y na zbiór X. 2) Dla pewnego zbioru A, niech P (A) oznacza zbiór jego wszystkich podzbiorów. Powiemy, że funkcja f : P (A) P (A) jest addytywna, jeżeli f(x Y ) = f(x) f(y ) dla dowolnych zbiorów X, Y A. Czy każda funkcja addytywna ma własność f(x) = x X f({x})? 3) Niech f : X Y będzie dowolną funkcją. Przypominamy, że dla dowolnego podzbioru A X, f[a] oznacza obraz zbioru A przy funkcji f, czyli zbiór: f[a] = {f(x) x A} (34), a dla dowolnego podzbioru B Y, f 1 [B] oznacza przeciwobraz zbioru B przy funkcji f, czyli zbiór: f 1 [B] = {x X : f(x) B} (35) 5

Niech N N oznacza zbiór wszystkich funkcji N N. Określmy funkcję F : N N P (N) następująco: F (f) = f 1 [{1}] (36) Czy F jest injekcją? Czy jest surjekcją? Znaleźć obraz zbioru funkcji stałych, oraz przeciwobraz zbioru {{10}} przy działaniu funkcji F. 3.2 Trochę indukcji 1) Pokazać przez indukcję, że n-ta liczba Fibonacciego F n (które są zdefiniowane jako F 0 = 0, F 1 = 1, F n+2 = F n+1 + F n ) spełnia F n < 2 n dla każdego n 0. 2) Na kopertę należy nakleić znaczki o łącznej wartości dokładnie n groszy. Mamy nieograniczony zapas znaczków o wartości 5 i 12 groszy. Pokazać, że jeżeli n 44, to na pewno znaczki da się tak nakleić. 3) Podzielono płaszczyznę n prostymi na pewną liczbę regionów. Pokazać, że można pomalować wszystkie regiony dwoma kolorami tak, żeby żadne dwa regiony, które graniczą ze sobą wspólnym odcinkiem, nie miały tego samego koloru. 6