11 Nierozstrzygalność i złożoność algorytmiczna

background image

Niero

Niero

z

z

strzygalnoś

strzygalnoś

ć

ć

i złożoność

i złożoność

algorytmiczna

algorytmiczna

background image

Algorytm

Komputery przetwarzają przekazywane im informacje
z wykorzystaniem pewnych algorytmów. Program jest

algorytmem zapisanym w języku zrozumiałym dla maszyny

Jeżeli dany algorytm da się wykonać na maszynie o

dostępnej mocy obliczeniowej i pamięci oraz

akceptowalnym czasie,
to mówi się że jest

obliczalny

obliczalny

Poprawne działanie większości algorytmów

implementowanych w komputerach opiera się na kolejnej

realizacji pewnego zestawu warunków. Jeżeli, któryś z nich

nie zostanie spełniony, to program kończy się

komunikatem

błędu

błędu

background image

Struktura danych

(ang. data structure) - sposób uporządkowania informacji

w komputerze. Na strukturach danych operują algorytmy
Przykładowe struktury danych to:

* tablica

* lista

* stos

* kolejka

* graf
* drzewo
i jego liczne odmiany (np. drzewo binarne)
* rekord, zwany w niektórych językach po prostu

strukturą (ang. struct, record), logiczny odpowiednik

to krotk

background image

Rozmiar zadania

Rozmiar zadania (problemu) to rozmiar tych
danych wejsciowych, których
ilość wpływa na czas wykonania algorytmu,
tzn. im większa jest ilość tych
danych tym dłużej realizuje się algorytm.

background image

Operacja elementarna

Operacja elementarna (inaczej operacja
dominujaca) to operacja
charakterystyczna dla danego algorytmu.

To taka operacja, której łączna liczba
wykonań jest proporcjonalna do rozmiaru
zadania, tzn. im większy rozmiar
zadania tym więcej razy realizuje się
operacja elementarna.

background image

Nierozstrzygalność

algorytmów

Problem stopu- nazywamy nim taką sytuację,

gdy dla danego algorytmu i danych wejściowych

należy stwierdzić, czy program realizujący dany

algorytm zatrzyma się
Algorytm ma własność stopu, gdy dla każdych

danych początkowych wykonane obliczenia są

poprawne i skończone
Nie zawsze jest możliwe rozstrzygnięcie. Na

przykład nie istnieje algorytm, który rozstrzyga,

czy dwa λ-wyrażenia są równoważne lub czy

maszyna Turinga dla danego wejścia się zatrzyma

background image

Dowód poprawności

algorytmu

Dowód poprawności algorytmu jest
rozumowaniem matematycznym
prowadzącym do formalnego
wykazania, że dany algorytm przy
poprawnych danych wejściowych
da nam wynik spełniający
wymagania

background image

Dowód poprawności

algorytmu

Dowód poprawności algorytmu
zawsze składa się z dwóch części:

* dowód, że jeśli algorytm się

zakończy, to da poprawny wynik

* dowód, że przy poprawnych

danych

wejściowych algorytm

zawsze się zakończy

background image

Dowód poprawności

algorytmu

W ogólnym przypadku pytanie Czy dany

algorytm jest poprawny? jest nierozstrzygalne
Dla większości języków opisu algorytmów

nierozstrzygalne są nawet pytania:

*

C

C

zy dane dwa algorytmy dają taki sam wynik

zy dane dwa algorytmy dają taki sam wynik

?

?

*

C

C

zy dany algorytm dla poprawnych danych

zy dany algorytm dla poprawnych danych

wejściowych się kończy

wejściowych się kończy

?

? (nawet przy

założeniu, że zawsze jesteśmy w stanie

zweryfikować poprawność danych

wejściowych)

background image

Teoria obliczeń

Dział informatyki teoretycznej
Dzieli się na dwie główne części:

teorię obliczalności

teorię obliczalności (zajmuje się

odpowiedzią na pytanie, które problemy
dają się rozwiązać przy pomocy
komputera)

– oraz

złożoność obliczeniową

złożoność obliczeniową (zajmuje

się tym jak szybko da się rozwiązać
problem)

background image

Teoria złożoności

obliczeniowej

Dział teorii obliczeń
Głównym jej celem jest określanie ilości zasobów

potrzebnych do rozwiązania problemów

obliczeniowych
Rozważanymi zasobami są takie wielkości jak

czas

czas,

pamięć

pamięć lub

liczba procesorów

liczba procesorów.

Za twórców tej teorii uważani są

Juris

Juris

Hartmanis

Hartmanis i

Richard Stearns

Richard Stearns

Jako przykłady problemów teorii można podać:

problem spełnialności, problem najkrótszej

problem spełnialności, problem najkrótszej

ścieżki, problem faktoryzacji

ścieżki, problem faktoryzacji

background image

Czym jest złożoność

algorytmu?

Ilość zasobów komputerowych potrzebnych dla

działania algorytmu może być rozumiana jako

jego

złożoność

złożoność

Zasoby komputerowe

Zasoby komputerowe to czas działania i ilość

zajmowanej pamięci

W zależności od rozważanego zasobu mówimy

o złożoności

czasowej

czasowej lub

pamięciowej

pamięciowej

background image

Złożoność algorytmu

Im większy rozmiar danych
wejściowych tym więcej zasobów
(czasu, procesorów, pamięci) jest
potrzebnych do rozwiązania
algorytmu

Złożoność algorytmu jest więc funkcją
rozmiaru danych wejściowych

background image

Złożoność czasowa

algorytmu

Złożoność czasowa algorytmu określa „czas” realizacji

algorytmu
W charakterze czasu wykonania rozpatrujemy zwykle liczbę

operacji podstawowych (dominujących). Operacjami

podstawowymi mogą być na przykład: podstawienie,

porównanie lub prosta operacja arytmetyczna.
Złożoność czasowa musi być niezależna od:
- szybkości procesora, który wykonuje algorytm,
- wyboru języka programowania, w którym

wykonana jest implementacja algorytmu

background image

Złożoność czasowa

algorytmu

Z

Z

łożoność

łożoność

czasowa pesymistyczna

czasowa pesymistyczna to

ilość wykonanych operacji elementarnych
dla danych „najgorszego” przypadku

Złożoność

Złożoność

czasowa oczekiwana

czasowa oczekiwana to ilość

wykonanych operacji elementarnych dla
danych „typowego” przypadku.

background image

Złożoność pamięciowa

algorytmu

Złożoność pamięciowa jest miarą ilości
wykorzystanej pamięci
Jako tę ilość najczęściej przyjmuje się
użytą pamięć

maszyny abstakcyjnej

maszyny abstakcyjnej

(na przykład liczbę komórek pamięci
maszyny RAM) w funkcji rozmiaru wejścia
Możliwe jest również obliczanie rozmiaru
potrzebnej pamięci fizycznej wyrażonej w
bitach lub bajtach

background image

Klasy złożoności

Klasa złożoności to zbiór problemów

obliczeniowych o podobnej złożoności

obliczeniowej - innymi słowy: problemy,

do których rozwiązania potrzebna jest

podobna ilość zasobów łączymy w klasy
Stosuje się też szersze pojęcia takie jak

klasa P- decyzyjne problemy

wielomianowe

NP- decyzyjne problemy podlegające

wielomianowej weryfikacji, jeśli

odpowiedź jest twierdząca

background image

ZADANIA

1. Co to znaczy, że algorytm jest obliczalny?
2. Wskaż zdanie fałszywe:

Tablica, rekord, stos to przykładowe struktury

danych.
Im większa jest ilość danych wejściowych tym

krócej realizuje się algorytm.

3. Zajmuje się tym, jak szybko da się

rozwiązać problem:

Teoria obliczalności
Złożoność obliczeniowa

background image

ZADANIA

4. Podaj nazwiska twórców teorii

złożoności obliczeniowej.

5. Co to jest złożoność algorytmu?
6. Jakie są rodzaje złożoności

algorytmu? Uzupełnij schemat:

Złożoność algorytmu

background image

ZADANIA

7. Co to jest klasa złożoności?
8. Co określa złożoność czasowa

algorytmu?

9. Na czym polega problem stopu?
10.Czy pytanie „Czy dane dwa

algorytmy dają taki sam wynik?”
jest rozstrzygalne?


Document Outline


Wyszukiwarka

Podobne podstrony:
Nierozstrzygalność i złożonośc algorytmiczna Iwona rtf
złożoność algorytmów
zlozon, Algorytmy
złożoność algorytmów zadanie
Czasowniki rozdzielnie i nierozdzielnie zlożone
zlozonosc, Algorytmy
czasowniki rozdzielnie i nierozdzielnie złożone
złożoność algorytmów
zlozon, Algorytmy
niemiecki czasowniki rozdzielnie i nierozdzielnie zlozone
II Czasowniki rozdzielnie i nierozdzielnie zlozone
Niemiecki czas zwrotne, rodzielnie i nierozdzielnie zlożone
Czasowniki nierozdzielnie zlozone
Algorytmy i złożono ć cz V
Algorytmy i złożono ć cz VI
Algorytmy i złożono ć cz II
algorytmy 11

więcej podobnych podstron