1i Projektowanie algorytmów

background image

Projektowanie

algorytmów

background image

Problem

Problem – jest to zbiór danych wejściowych i ich definicja oraz pytanie lub

polecenie do wykonania. Najczęściej problem oznaczamy symbolem π.

Przykłady problemów optymalizacji kombinatorycznej:

Problem komiwojażera

Problem plecakowy

Problem szeregowania zadao

Problem podziału zbioru

background image

Algorytm

Algorytm- jest to procedura (krok po kroku) działająca w skooczonym czasie,

rozwiązująca dany problem π.

Rodzaje algorytmów ze względu na złożonośd obliczeniową:
• Wielomianowe - algorytmy, których funkcja złożoności obliczeniowej f(n)

jest rzędu O(p(n)), gdzie p(n) jest pewnym wielomianem zależnym od
rozmiaru problemu n, np. O(n), O(n2), O(n log n) (algorytmy efektywne
obliczeniowo).

• wykładnicze (ponadwielomianowe) - algorytmy, których funkcji złożoności

obliczeniowej f(n) nie da się ograniczyd żadnym wielomianem p(n), np.
O(2

n

), O(n

log n

), O(n!) (algorytmy nieefektywne obliczeniowo).

background image

Klasy złożoności algorytmów

1.

Klasa P - zawiera wszystkie problemy, dla których skonstruowano
wielomianowe algorytmy optymalne.

2.

Klasa NP - zawiera wszystkie problemy, dla których skonstruowano
wykładnicze algorytmy optymalne. P ⊂ NP, ponieważ jeżeli dla pewnego
problemu mamy alg. wielomianowy, zawsze możemy skonstruowad alg.
mniej efektywny (wykładni-czy), np. przegląd zupełny.

3.

Klasa problemów NP-trudnych - podklasa NP problemów
wielomianowo ekwiwalentnych, dla których (najprawdopodobniej) nie
można skonstruowad algorytmów wielomianowych. NP−trudne⊂NP, ale
P ∩NP−trudne=∅.

4.

Klasa problemów silnie NP-trudnych - podklasa problemów
NP-trudnych, których nie można rozwiązad optymalnie w czasie pseudo-
wielomianowym.

background image

W praktyce:

• 9% istniejących problemów należy do klasy P
• 84% należy do klasy problemów NP-trudnych, z czego 79%

należy do klasy problemów silnie NP-trudnych

• 7% to problemy otwarte

background image

Rodzaje algorytmów (metod)

optymalnych:

• Wielomianowe algorytmy dokładne (dedykowane) - tylko dla

problemów z klasy P

• Programowanie dynamiczne - głównie dla problemów

NP-trudnych w zwykłym sensie (tzn. nie silnie NP-trudnych)

• Programowanie całkowitoliczbowe
• Metoda podziału i ograniczeo - głównie dla problemów (silnie)

NP-trudnych

• Przegląd zupełny

background image

Programowanie dynamiczne

Programowanie dynamiczne opiera się na podziale
rozwiązywanego problemu na podproblemy względem kilku
parametrów. W odróżnieniu od techniki dziel i zwyciężaj
podproblemy w programowaniu dynamicznym nie są na ogół
rozłączne, ale musi je cechowad własnośd optymalnej
podstruktury. Zagadnienia odpowiednie dla programowania
dynamicznego cechuje również to, że zastosowanie do nich
metody siłowej (ang. brute force) prowadzi do
ponadwielomianowej liczby rozwiązao podproblemów,
podczas gdy sama liczba różnych podproblemów jest
wielomianowa.

background image

Algorytm przybliżony

algorytm dostarczający rozwiązanie nieoptymalne dla danego

problemu optymalizacyjnego.

Algorytmy przybliżone są stosowane wtedy, gdy nie potrafimy

znaleźd rozwiązania optymalnego w sensownym czasie.

Do oceny algorytmów przybliżonych stosujemy następujące

podejścia:

• analiza eksperymentalna
• analiza najgorszego przypadku
• analiza probabilistyczna

background image

Rodzaje algorytmów (metod)

przybliżonych:

• Algorytmy konstrukcyjne i zachłanne - głównie dla problemów

NP-trudnych.

• Algorytmy typu popraw - głównie dla problemów (silnie)

NP-trudnych:

o lokalnego poszukiwania (np. poszukiwanie zstępujące,

poszukiwanie losowe),

o metaheurystyczne (np. poszukiwanie z zabronieniami

(tabu se-arch), symulowane wyżarzanie, poszukiwanie
genetyczne (ewolucyjne), poszukiwanie mrówkowe).

• Wielomianowe i w pełni wielomianowe schematy

aproksymacyjne - głównie dla problemów NP-trudnych.

background image

Algorytmy zachłanne

Algorytm zachłanny w celu wyznaczenia rozwiązania w każdym

kroku dokonuje zachłannego, tj. najlepiej rokującego w danym
momencie wyboru rozwiązania częściowego. Innymi słowy
algorytm zachłanny nie patrzy czy w kolejnych krokach jest
sens wykonywad dane działanie, dokonuje decyzji lokalnie
optymalnej, dokonuje on wyboru wydającego się w danej
chwili najlepszym, kontynuując rozwiązanie podproblemu
wynikającego z podjętej decyzji. Typowe zadanie
rozwiązywane metodą zachłanną ma charakter
optymalizacyjny.

background image

Algorytmy heurystyczne

Metody znajdowania rozwiązao, dla której nie ma gwarancji znalezienia

rozwiązania optymalnego, a często nawet prawidłowego. Rozwiązao tych
używa się np. wtedy, gdy pełny algorytm jest z przyczyn technicznych zbyt
kosztowny, lub gdy jest nieznany (np. przy przewidywaniu pogody lub przy
wykrywaniu niektórych zagrożeo komputerowych, takich jak wirusy lub
robaki). Metody używa się też często do znajdowania rozwiązao
przybliżonych, na podstawie których później wylicza się ostateczny rezultat
pełnym algorytmem. To ostatnie zastosowanie szczególnie dotyczy
przypadków, gdy heurystyka jest wykorzystywana do nakierowywania
pełnego algorytmu ku optymalnemu rozwiązaniu, aby zmniejszyd czas
działania programu w typowym przypadku bez poświęcania jakości
rozwiązania

background image

Schematy aproksymacyjne

rodzina algorytmów taka, że dostarcza rozwiązanie problemu z błędem

nie większym niż ustalony

• Wielomianowe schematy aproksymacyjne: czas działania

algorytmu jest ograniczony od góry przez wielomian od
rozmiaru instancji N(I) oraz funkcję wykładniczą od
odwrotności błędu (PTAS)

• W pełni wielomianowe schematy aproksymacyjne: czas

działania algorytmu jest ograniczony od góry przez wielomian
od rozmiaru instancji N(I) oraz wielomian od odwrotności
błędu (FPTAS)


Wyszukiwarka

Podobne podstrony:
kozik,projektowanie algorytmów,ALGORYTMY PRZYBLIŻONE
k balinska projektowanie algorytmow i struktur danych
kozik,projektowanie algorytmów,TEORIA ZŁOŻONOŚCI OBLICZENIOWEJ
kozik,projektowanie algorytmów,ALGORYTMY SORTOWANIA
SII 15 Projektowanie algorytmow
zasady projektowania algorytmów
9 Zasady Projektowania Algorytmow
9 Zasady projektowania algorytmów II
9 Zasady projektowania algorytmów III
9. Zasady projektowania algorytmów, pytania egzamin inżynierski AiR ARS
kozik,projektowanie algorytmów,TEORIA GRAFÓW
kozik,projektowanie algorytmów,STRUKTURY?NYCH
kozik,projektowanie algorytmów,METODY SZTUCZNEJ INTELIGENCJI
kozik,projektowanie algorytmów,Zastosowanie algorytmu metaheurystycznego do rozwiązywania problemu n
SII 15 Projektowanie algorytmow
Algorytm projektowania przekrojów mimośrodoweo ściskanych

więcej podobnych podstron