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ą liczbą kafelków w każdym z rodzajów, ale ich zestaw jest zadany) T Dla zestawu 1. - TAK T Dla zestawu 2. - NIE M.Rawski

Wstęp do Informatyki

Zestaw 2:

!

1

PROBLEMY NIEROZSTRZYGALNE cd T Twierdzenie T Dla każdego algorytmu (zapisanego w dającym się efektywnie wykonać języku programowania), który byłby przeznaczony do rozstrzygania problemu domina, istnieje nieskończenie wiele dopuszczalnych zestawów danych wejściowych, dla których algorytm ten będzie działał w nieskończoność lub poda błędną odpowiedź. T Wniosek T Problem domina jest problemem nierozstrzygalnym

M.Rawski

Wstęp do Informatyki

2

PROBLEMY NIEROZSTRZYGALNE cd PROBLEMY NIEROZSTRZYGALNE (LUB NIEOBLICZALNE) PROBLEMY TRUDNO ROZWIĄZYWALNE PROBLEMY ŁATWO ROZWIĄZYWALNE

W ogóle nie istnieją algorytmy

Nie istnieją wielomianowe algorytmy

Istnieją rozsądne (wielomianowe) algorytmy

• nieograniczoność liczby przypadków do sprawdzenia nie jest dostatecznym warunkiem nierozstrzygalności problemu! • jeśli nierozstrzygalność się pojawia, to wynika z natury problemu i jest często sprzeczna z intuicją M.Rawski

Wstęp do Informatyki

3

Problem węża domino T Czy dysponując skończonym zbiorem typów kafelków można połączyć dwa dane punkty nieskończonej siatki całkowitoliczbowej “wężem domino”? T Jeżeli postawimy problem “węża domino” na pewnym obszarze R, to: • dla R ograniczonego problem jest oczywiście rozstrzygalny • dla R będącego całą płaszczyzną problem jest rozstrzygalny • dla R będącego półpłaszczyzną problem jest nierozstrzygalny

M.Rawski

Wstęp do Informatyki

Y X

4

Problem stopu w algorytmie  Mając jako dane wejściowe tekst poprawnego programu zapisanego w pewnym języku, sprawdzić(tzn. zbudować algorytm, który by sprawdzał), czy program zatrzyma się dla pewnych dopuszczalnych dla niego danych.

TX∈N T Algorytm 1

T 1.dopóki X ≠ 1 wykonuj X ← X - 2 T 2. zatrzymaj obliczenia

TX∈N T Algorytm 2

T 1. dopóki X ≠ 1 wykonuj: T 1.1.dla X parzystego X ← X / 2 T 1.2. dla X nieparzystego X ← 3* X + 1

T 2. zatrzymaj obliczenia • •

algorytm zatrzymuje się dla X nieparzystych nie zatrzymuje się dla X parzystych

M.Rawski

Wstęp do Informatyki

• •

dla wszystkich sprawdzanych liczb algorytm zatrzymywał się nie udowodniono, że zatrzymuje się dla dowolnej liczby naturalnej 5

Problem stopu w algorytmie cd T np. dla X = 7 generuje ciąg wartości:  7, 22, 11, 34, 17, 52, 26, 13, 40, 20, 10, 5, 16, 8, 4, 2, 1

T

program lub algorytm

dopuszczalne dane

R

X

czy program R zatrzymuje się dla danych X ?

TAK

czy istnieje taki program?

NIE

T Problem stopu jest nierozstrzygalny. M.Rawski

Wstęp do Informatyki

6

Odmiany problemu domina  Czy podanym zestawem kafelków można pokryć obszar T zachowując odpowiedniość kolorów na styku kafelków? • T = prostokąt C x N (tzw. problem ograniczony ze stałą szerokością) • • •

T = kwadrat N x N (tzw. problem ograniczony) T jest nieskończony (tzw. problem nieograniczony) T jest nieskończony i wskazany kafelek ma się powtórzyć nieskończenie wiele razy (tzw. problem okresowy)

T

M.Rawski

Rodzaj problemu domina ograniczony ze stałą szerokością ograniczony nieograniczony okresowy

Wstęp do Informatyki

Status algorytmiczny łatwo rozwiązywalny trudno rozwiązywalny nierozstrzygalny wysoce nierozstrzygalny

7

Klasy Klasy problemów algorytmicznych algorytmicznych Klasy problemów algorytmicznych

WYSOCE NIEROZSTRZYGALNE NIEROZSTRZYGALNE TRUDNO ROZWIĄZYWALNE ŁATWO ROZWIĄZYWALNE

PROBLEMY WYSOCE NIEROZSTRZYGALNE

Nie można sprowadzić do tych, dla których nie istnieją algorytmy

PROBLEMY NIEROZSTRZYGALNE

W ogóle nie istnieją algorytmy

PROBLEMY TRUDNO ROZWIĄZYWALNE

Nie istnieją rozsądne algorytmy

PROBLEMY ŁATWO ROZWIĄZYWALNE

M.Rawski

Teoria

Praktyka

Istnieją rozsądne (wielomianowe) algorytmy

Wstęp do Informatyki

8

KOMPUTER PROSTY I UNIWERSALNY T Jak dalece można uprościć struktury danych? T Przykład tablicy dwuwymiarowej 7 91 -15

7

*

45

*

-3

*

*

91

45 0 11

*

-3 12 17

0

*

12

*

*

-15

*

11

*

17

I

T Przykład drzewa

N R

I

M.Rawski

*

*

N

*

F

*

O

*

*

M

R

F

O

A

T

Y

K

* M *

A

Wstęp do Informatyki

A *

T

*

*

Y

*

K

*

A

9

Linearyzacja struktur danych T Każdą strukturę danych da się zlinearyzować tzn. zapisać na jednowymiarowej taśmie # # # # T T Przyjmujemy najprostszy model pamięci: • nieskończona jednowymiarowa taśma • dopuszczalny zestaw symboli (alfabet), które mogą być zapisywane w komórkach taśmy • pusta komórka oznaczana symbolem #

M.Rawski

Wstęp do Informatyki

10

KOMPUTER PROSTY I UNIWERSALNY T Jak dalece można uprościć struktury sterujące? symbole alfabetu

T znajdowanie się procesora w określonym miejscu programu nazywamy jego stanem T przejście do innego miejsca (stanu) zależy od stanu aktualnego i od wartości pewnych jednostek danych

M.Rawski

Wstęp do Informatyki

stan aktualny

a b c

możliwe stany następne

11

Maszyna Turinga

STEROWANIE (diagram przejść pomiędzy stanami)

pojedynczy symbol alfabetu #

 Części składowe:

#

głowica odczytująco -zapisująca #

#

nieskończona taśma

• skończony alfabet symboli (do zapisywania danych) • skończony zbiór stanów, w których może znajdować się maszyna • nieskończona taśma podzielona na komórki przechowujące pojedyncze symbole alfabetu • krokowo poruszająca się głowica odcztująco-zapisująca • diagram przejść miedzy stanami, który steruje głowicą tak, że zmiany następują po każdym jej zatrzymaniu • stan początkowy i stany końcowe (elementy uzupełniające w diagramie przejść)

M.Rawski

Wstęp do Informatyki

12

Diagram przejść - graf skierowany T Podstawowe elementy diagramu przejść: etykieta

akcja

stan (wierzchołek grafu)

nazwa stanu

symbol alfabetu wyzwalacz przejścia

przejście

a/b L kierunek przesunięcia głowicy (L lub P) symbol alfabetu zapisywany w komórce

T maszyna jest deterministyczna tzn. z żadnego stanu nie wychodzi więcej niż jedno przejście z tym samym wyzwalaczem T jeden ze stanów jest wyróżniony jako stan początkowy nazwa stanu T stany, z których nie wychodzą żadne przejścia, nazywane są stanami końcowymi T w stanie początkowym głowica jest ustawiona na pierwszej od lewej niepustej komórce taśmy nazwa stanu

T M.Rawski

Wstęp do Informatyki

13

Wykrywanie polindromów T Przykład diagramu przejść dla maszyny Turinga ruch dla a

a/# P

b/# P

#/# L TAK

b/b L NIE

#/# L

b/b P a/a P ruch dla b

test dla a a/# L

b/b P a/a P #/# L

zaznacz

#/# L

b/b L a/a L powrót

a/a L b/# L

#/# L

test dla b

#/# P M.Rawski

Wstęp do Informatyki

14

Wykrywanie polindromów T Przykład działania maszyny Turinga 1 #

M.Rawski

#

a

b

2 b

a

#

#

#

#

#

b

3 b

a

Wstęp do Informatyki

#

#

#

#

#

b

4 b

a

#

#

#

#

#

b

b

a

#

#

15

TEZA CHURCHA-TURINGA T Maszyna Turinga: • ma skończenie wiele stanów • zapisuje po jednym symbolu na liniowej taśmie

Co można zrobić za pomocą maszyny Turinga? Wszystko! Maszyna Turinga potrafi rozwiązać każdy efektywnie rozwiązywalny problem algorytmiczny!

Teza CT

M.Rawski

Wstęp do Informatyki

16

Modele komputera uniwersalnego T Różne inne modele komputera uniwersalnego: • • • •

rachunek lambda (Church) system produkcji dla symboli (Post) klasa funkcji rekurencyjnych (Kleen) ... i wiele innych

Wszystkie modele są równoważne w sensie klasy problemów algorytmicznych, które rozwiązują!

M.Rawski

Wstęp do Informatyki

17

Algorytm uniwersalny T Konsekwencją tezy CT jest istnienie algorytmów uniwersalnych

program P realizujący algorytm A napisany w uniwersalnym języku L2 uniwersalny program U napisany w języku L1 symuluje wynik programu w języku L2 na jego danych

algorytm A program P

dane X

wykonaj program P na danych X

wyniki (jeśli są)

• można zbudować uniwersalną maszynę Turinga, która może symulować działanie dowolnej maszyny Turinga na dowolnych danych (trzeba opisać na taśmie zlinearyzowany diagram przejść, reprezentując każde przejście jako parę stanów z podaną etykietą przejścia)

M.Rawski

Wstęp do Informatyki

18

Algorytm uniwersalny T Rozwijając tezę CT można dojść do wniosku, że:

T jeśli jakiś (szybki) komputer rozwiązuje pewien problem w czasie O(f(N)), to istnieje równoważna mu maszyna Turinga, która potrzebuje na rozwiązanie tego problemu nie więcej niż O(p(f(N))) czasu, dla pewnej ustalonej funkcji wielomianowej p

T Zatem:

• klasa problemów obliczalnych (rozstrzygalnych) jest silna tj. niewrażliwa na zmianę modelu obliczeń lub języka zapisu algorytmu • klasa problemów łatwo rozwiązywalnych P jest także silna (tzw. teza obliczania sekwencyjnego, czyli wykonywanego krok po kroku) • klasa NP jest silna • klasa problemów o wykładniczej złożoności czasowej jest silna • klasa problemów o liniowej złożoności czasowej nie jest silna tzn. złożoność tych problemów może zależeć od przyjętego modelu obliczeń

M.Rawski

Wstęp do Informatyki

19

Klasy problemów problemów P i NP formalnie T Formalnie klasy problemów P i NP definiuje się w kategoriach obliczeń na maszynie Turinga: • problemy z klasy P są rozwiązywalne przez zwykłe maszyny Turinga w czasie wielomianowym • problemy z klasy NP są rozwiązywalne przez niedeterministyczne maszyny Turinga w czasie wielomianowym

T Na mocy tezy CT wystarczyło by pokazać, że pewien problem NP-zupełny nie może być rozwiązany za pomocą maszyny Turinga w czasie krótszym niż wykładniczy, aby wykazać, że P ≠ NP .

M.Rawski

Wstęp do Informatyki

a/b P ? a/b L

przejście niedeterministyczne

20

Obliczenia współbieżne • • •

rozwiązywanie problemu algorytmicznego za pomocą współpracujących ze sobą wielu procesorów wykorzystanie komputerów równoległych, składających się z wielu rozłącznych elementów przetwarzających modele obliczeń i przetwarzania informacji w środowiskach rozproszonych (sieci telekomunikacyjne, systemy rezerwacji biletów lotniczych, długoterminowe prognozy pogody wyznaczane równolegle w wielu centrach obliczeniowych) algorytm sekwencyjny algorytm równoległy X←3 X←3

Y←4

2 kroki

Y←4

1 krok X←3

X←3 M.Rawski

Wstęp do Informatyki

Y←X

Y←X 21

Przykład sumowania zarobków w czasie logarytmicznym T Naturalny algorytm sekwencyjny o koszcie O(N): dodawanie N razy do sumy bieżącej T Algorytm równoległy o koszcie O(log N): krok 1

krok 2

krok log 2 N

N/2 procesorów

N/4 procesorów

1 procesor

11 000 Σ 24 300

35 300 Σ

17 100 Σ 10 900

63 300

28 000 Σ

Σ

547 200

75 800

15 500 Σ

31 900

16 400

M.Rawski

Wstęp do Informatyki

22

Obliczenia współbieżne T O szybkości algorytmów równoległych, oczywiście poza liczbą dostępnych procesorów, decydują także struktury danych i metody komunikacji! T W algorytmie sumowania N liczb: • dla osiągnięcia redukcji z O(N) do O(log N) potrzebujemy N/2 procesorów • mając do dyspozycji ustaloną liczbę procesorów poprawimy przetwarzanie tylko o stałą (np. 100 razy szybciej), ale nie o rząd wielkości • uzyskanie poprawy rzędu wielkości wymaga rozszerzającej się równoległości tzn. liczba procesorów rośnie proporcjonalnie do N

M.Rawski

Wstęp do Informatyki

23

Sortowanie równoległe T Rozważmy sekwencyjny algorytm sortowania przez scalanie: T procedura sortuj-listę L; T jeśli L zawiera tylko jeden element, to jest posortowana; T w przeciwnym razie wykonaj co następuje: T T T T

podziel listę L na dwie połowy L1 i L2; wywołaj sortuj-listę L1; wywołaj sortuj-listę L2; scal listy L1 i L2 w jedną posortowaną listę;

T wróć do poziomu wywołania.

T - złożoność czasowa O(N × log N)

M.Rawski

Wstęp do Informatyki

24

Sortowanie równoległe T Rozważmy sekwencyjny algorytm sortowania przez scalanie: T procedura sortuj-listę L; T jeśli L zawiera tylko jeden element, to jest posortowana; T w przeciwnym razie wykonaj co następuje: T T

podziel listę L na dwie połowy L1 i L2; wywołaj równocześnie równolegle-sortuj-listę L1 i równoleglesortuj-listę L2 ;

T wróć do poziomu wywołania.

M.Rawski

Wstęp do Informatyki

25

Sortowanie równoległe -Analiza złożoności

N/2 par

15

7

45

8

7

15

8

45

12

11

4

34

scalanie w czasie 1 porównania N/4 par

11 12

4

34

scalanie w czasie 3 porównań N/8 par

7

8

15 45

4

11 12 34

scalanie w czasie 7 porównań

1 para scalanie w czasie N - 1 porównań

4

7

8

11

12 15 34 45

T zatem całkowita liczba porównań wyniesie: T 1 + 3 + 7 + 15 + ... + ( N - 1 ) ≤ 2 × N - liczba rzędu O(N) M.Rawski

Wstęp do Informatyki

26

Złożoność iloczynowa T Złożoność iloczynowa: liczba procesorów × czas • złożoność “rozmiaru” algorytmu • najlepsza złożoność iloczynowa nie będzie lepsza niż dolne ograniczenie sekwencyjnej złożoności problemu Rodzaj algorytmu sekwencyjny

równoległy

M.Rawski

Nazwa algorytmu sortowanie bąbelkowe sortowanie przez scalanie równoległe sortowanie przez scalanie sieć sortująca parzystonieparzyście „optymalna” sieć sortująca

Liczba procesorów (rozmiar) 1 1 O(N)

Czas (najgorszy przypadek) O(N 2) O(N × log N) O(N)

Iloczyn (rozmiar × czas) O(N 2) O(N × log N) O(N 2)

O(N × (log N)2)

O((log N)2)

O(N × (log N)4)

O(N)

O(log N)

O(N × log N)

Wstęp do Informatyki

27

Co można, a czego nie T Co można, a czego nie można osiągnąć równoległością: T wiele problemów można rozwiązać szybciej niż sekwencyjnie T można niektóre problemy rozwiązywać szybciej nawet o rząd wielkości, jeśli da się zastosować rozszerzającą się równoległość T dla problemów nierozstrzygalnych nie da się skonstruować algorytmu równoległego klasa problemów rozwiązywalnych jest niewrażliwa na dodanie równoległości T wszystkie problemy klasy NP mają rozwiązania równoległe znajdowane w czasie wielomianowym, ale T liczba procesorów potrzebnych do rozwiązania problemu NP-zupełnego w rozsądnym czasie rośnie wykładniczo T do końca nie wiadomo, czy problemy klasy NP są rzeczywiście trudno rozwiązywalne i trzeba szukać ratunku w równoległości T rzeczywiste komputery równoległe mają silne ograniczenia związane z przepustowością połączeń pomiędzy procesorami T nie wiadomo, czy można zastosować równoległość, nawet z niewielomianową liczbą procesorów, do rozwiązania w czasie wielomianowym problemu o udowodnionej sekwencyjnej złożoności wykładniczej M.Rawski

Wstęp do Informatyki

28