Algorytmy i Złożoność

Algorytmy i Złożoność

Egzamin:

I termin:

I4 - środa, 09.02.2011, 9:30

poprawka:

Wszyscy - 23.02.2011, 9:30

Plan godzinowy

Wykłady: 30

Ćwiczenia: 15

Laboratoria: 15

Plan pracy

  1. Problem, algorytm, złożoność obliczeniowa, czasowa i pamięciowa, problem decyzyjny, problem optymalizacyjny;

  2. Projektowanie efektywnych algorytmów;

  3. Sortowanie;

  4. Wyszukiwanie, selekcja;

  5. Mnożenie macierzy i operacje pokrewne;

  6. Algorytmy w grafach;

  7. Arytmetyka na liczbach całkowitych;

  8. Algorytmy dopasowania wzorców;

  9. Hierarchia złożoności problemów;

  10. Nierozstrzygalność;

Literatura

Strona internetowa

www.sk-kari.put.poznan.pl/stoklosa

WYKŁAD

1.1 Pojęcia

Informatyka
Dane
Alfabet
Słowo

A* - Zbiór wszystkich słów w alfabecie A

A = {0, 1}

A* = {e1, 0, 1, 00, 01, 10, 11, 000, 001, 010, 011, ...}

Podzbiór L zbioru A

Język (formalny)

L c A*

(L zwiera się w A*); to miał być znaczek c z podkreśleniem (symbol inkluzji)

Słowo binarne (zero-jedynkowe)

{0, 1} - zbiór wszystkich słów binarnych

Jeśli słowa binarne maja ustalona długość n to mówimy o słowie /znaku/ n-bitowym

Kod
  1. reguła przekształcania zbioru znaków n inny zbiór znaków (funkcja matematyczna)

  2. zbiór obrazów otrzymany za pomocą tego przekształcenia

1.2 Algorytm, problem

Algorytm
Problem

Problem jest zadany, gdy przedstawimy:

  1. ogólny opis jego parametrów,

  2. zdanie stwierdzające, czym powinna charakteryzować się odpowiedź, czyli rozwiązanie

Przypadek szczególny problemu uzyskuje się wówczas, gdy ustali się wartości wszystkich parametrów problemu

Przykład: problem komiwojażera2 (problem optymalizacyjny)

Opis

Odległości między miastami są znane

Pytanie
Parametry problemu:

M = {m1, m2, ..., mr} - skończony zbiór miast

D= {d12, d13, ..., d1r, d23, d24, ..., d2r, ..., d(r-1)r} - zbiór liczb określających odległości między miastami, przy czym dij oznacza odległość pomiędzy mi oraz mj

Rozwiązanie problemu


$$\sum_{i = 1}^{r - 1}{d_{f\left( i \right)*\ f(i + 1)} + \ d_{f\left( r \right)*\ f(1)}}$$

jest najmniejsza, przy czym f jest funkcją porządkującą miasta

Przypadek szczególny:

M = {m1, m2, m3, m4},

D = {594, 303, 343, 389, 320, 303}

Rozwiązanie: (m3, m2, m4, m1),

Przebyta odległość: 1355 km

Przykład II: Problem Eulera (problem decyzyjny)

Pytanie
Przypadek szczególny

TU BYŁ OBRAZEK

Twierdzenie Eulera:
  1. Przez wszystkie krawędzie grafu można przejść w sposób ciągły, przechodząc przy tym przez każdą krawędź dokładnie jeden raz <=> graf jest spójny i nie ma wierzchołków o nieparzystym stopniu, albo ma dokładnie dwa wierzchołki o stopniu nieparzystym

  2. Przez wszystkie krawędzie można przejść w sposób ciągły wracając do wierzchołka wyjściowego, przechodząc przy tym przez każdą krawędź dokładnie jeden raz <=> graf jest spójny i nie ma wierzchołków o stopniu nieparzystym

Stopień wierzchołka

Każdy problem optymalizacyjny można zredukować do problemu decyzyjnego

Problem decyzyjny
π = (Dπ, Yπ)

Dπ - zbiór wszystkich przypadków

Yπ - zbiór przypadków, dla których odpowiedź brzmi "tak"

Algorytm
  1. przekształca wejściowy ciąg danych w ciąg wyjściowy,

  2. zatrzymuje się w skończonym czasie

Wszystkie problemy można podzielić na dwie klasy:

  1. Niealgorytmiczne (nierozstrzygalne) - takie, dla których rozwiązujący je algorytm nie istnieje (wymagany jest dowód); nie może być rozwiązany w skończonym czasie;

  2. Algorytmiczne.

Problem niealgorytmiczny: problem stopu
Problem rozwiązywalny algorytmicznie (algorytmiczny)
  1. pozwolimy komputerowi pracować dostatecznie długo,

  2. będzie wyposażony w tak dużo pamięci, jak potrzebuje.

Zakładamy, że z każdym problemem jest związane określone kodowanie:

kod: {I: I Dπ} A*

Rozmiar wejścia (długość) przypadku I problemu π:

n = |kod(I)|

Dla przypadku komiwojażera:

A= {m, (, ), /, 0, 1, 2, 3, 4, 5, 6, 7, 8, 9}

kod(I) = m(1)/m(2)/m(3)/m(4)//594/303/343/389/320/303

n = |kod(I)| = 44

Inne rozmiary problemów:

1.3 Złożoność obliczeniowa algorytmów (problemów)

Podział:

  1. problemy łatwe obliczeniowe,

  2. problemy trudne obliczeniowo

Problem trudny obliczeniowo:

  1. n = 3

  2. n = 128

dla n = 3
dec4 bin5
0 000
1 001
2 010
3 011
4 100
5 101
6 110
7 111
dla n = 128

Liczba wszystkich ciągów o długości 128:

2128

Jeśli do wytworzenia jednego ciągu potrzeba 1 µs6, to wygenerowanie wszystkich ciągów:

2128 * 10-6s ≈ 1.078 * 1025 lat

!! Wiek Ziemi: 3.6 * 109 lat

Dla n = 128 zadanie jest trudne

<< TUTAJ BYŁO PEŁNO CYFEREK I NIE PRZEPISAŁEM

Problem łatwy: mnożenie liczb

np. 387x523=202401

Problem trudny: rozkład liczby złożonej

np. Liczba 155-cyfrowa (512-bitowa; maksymalnie może to być 768 bitów)


  1. e - ciąg pusty

  2. komiwojażer - przedstawiciel handlowy

  3. program komputerowy jako algorytm

  4. dec - dziesiętne

  5. bin - binarne

  6. 1 µs - mikrosekunda


Wyszukiwarka

Podobne podstrony:
Algorytmy i złożono ć cz V
Algorytmy i złożono ć cz VI
Algorytmy i złożono ć cz II
algorytmy-mini, POLITECHNIKA wydział E kierunek I, ALGORYTMY I ZLOZONOSC, ROZNE JAKIES TAM
algorytmy, POLITECHNIKA wydział E kierunek I, ALGORYTMY I ZLOZONOSC, ROZNE JAKIES TAM
Algorytmy i złożoność, POLITECHNIKA wydział E kierunek I, ALGORYTMY I ZLOZONOSC, ROZNE JAKIES TAM
Algorytmy i złożono ć zaocz cz I
ALgorytmy i programowanie, POLITECHNIKA wydział E kierunek I, ALGORYTMY I ZLOZONOSC, ROZNE JAKIES TA
Algorytmy i złożoność cz IV
Algorytmy złożonośc
Algorytmy i złożoność cz III
Algorytmy i złożono ć cz V
Algorytmy i złożono ć cz VI

więcej podobnych podstron