9 Zasady projektowania algorytmów III

background image

Zasady projektowania algorytmów

Adam Morawiec
163125
ARK, W-4
PWR

background image

Algorytm - poj

ę

cie

Algorytm – w matematyce oraz informatyce

skończony,

uporządkowany

ciąg

jasno

zdefiniowanych

czynności,

koniecznych

do

wykonania pewnego rodzaju zadań. Algorytm ma
przeprowadzić

system

z

pewnego

stanu

początkowego do pożądanego stanu końcowego.

background image

Techniki projektowania algorytmów

Dziel i zwyci

ęż

aj (divide and conquer ) –

rekursja

Redukcja (r educt ion, t r ansf or m and

conquer )

Programowanie liniowe (linear

pr ogr am m ing)

Programowanie zachłanne (gr eedy m et hod)

Programowanie dynamiczne (dynam ic

pr ogr am m ing)

Algorytmy przeszukuj

ą

ce (t r ial and er r or )

Algorytmy probabilistyczne i heurystyki

(pr obabilist ic, heur ist ic)

background image

Rekursja

Rekursja albo rekurencja (ang. recursion, z łac.

recurrere,

przybiec

z

powrotem)

to

w

programowaniu i w matematyce odwoływanie
się(np. funkcji lub definicji) do samej siebie. Każda
definicja rekurencyjna potrzebuje przynajmniej
jednego przypadku bazowego (nie rekurencyjnego).

- Wie

ż

e Hanoi,

- algorytm Euklidesa znajdowania NWD,

Przykładowy algorytm - QuickSort

background image

Programowanie liniowe

Programowanie

liniowe

to

klasa

problemów

programowania

matematycznego,

w

której

wszystkie warunki ograniczające oraz funkcja celu
mają postać liniową. Rozwiązania tego problemu
nazywamy rozwiązaniami optymalnymi.

Metody rozwiązywania:
- graficznie,
- algorytm Simplex,
- metoda elipsoid,
- algorytm Karmarkera,

background image

Programowanie zachłanne

Algorytm zachłanny – algorytm, który 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
wykonywać 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

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 cechować własność optymalnej
podstruktury. Zazwyczaj jednym z parametrów definiujących
podproblemy jest liczba elementów znajdujących się w
rozpatrywanym problemie, drugim jest pewna wartość
liczbowa, zmieniająca się w zakresie od 0 do największej stałej
występującej w problemie. Możliwe są jednak bardziej
skomplikowane dobory parametrów, a także większa ich liczba.
Ponieważ jednak uzyskiwany algorytm zazwyczaj wymaga
pamięci (i czasu) proporcjonalnego do iloczynu maksymalnych
wartości wszystkich parametrów, stosowanie większej ilości
parametrów niż 3-4 rzadko bywa praktyczne.

background image

Algorytmy przeszukuj

ą

ce

Algorytm przeszukujący - redukujący liczbę węzłów, które

muszą być rozwiązywane w drzewach przeszukujących
przez

algorytm

min-max.

Jest

to

przeszukiwanie

wykorzystywane w grach dwuosobowych, takich jak kółko
i krzyżyk, szachy, go. Warunkiem stopu jest znalezienie
przynajmniej jednego rozwiązania czyniącego obecnie
badaną opcję ruchu gorszą od poprzednio zbadanych opcji.
Wybranie takiej opcji ruchu nie przyniosłoby korzyści
graczowi ruszającemu się, dlatego też nie ma potrzeby
przeszukiwać dalej gałęzi drzewa tej opcji. Ta technika
pozwala zaoszczędzić czas poszukiwania bez zmiany
wyniku działania algorytmu.

background image

Algorytmy probabilistyczne i
heurystyczne

Algorytm probabilistyczny albo randomizowany to algorytm który do

swojego działania używa losowości. W praktyce oznacza to że
implementacja takiego algorytmu korzysta przy obliczeniach z
generatora

liczb

losowych.

Główną

zaletą

algorytmów

probabilistycznych w porównaniu z deterministycznymi jest działanie
zawsze w "średnim przypadku", dzięki czemu złośliwe dane
wejściowe nie wydłużają jego działania. Formalnie efektywność
takiego algorytmu jest zmienną losową określoną na przestrzeni
możliwych losowych ciągów. Wartość oczekiwana takiej zmiennej
nazywana

jest

oczekiwanym

czasem

działania.

Przypadek

pesymistyczny jest zwykle na tyle mało prawdopodobny, że można
go pominąć w analizie.

Heurystyka - metoda znajdowania rozwiązań, dla której nie ma

gwarancji znalezienia rozwiązania optymalnego, a często nawet
prawidłowego.

background image

KONIEC


Wyszukiwarka

Podobne podstrony:
zasady projektowania algorytmów
9 Zasady Projektowania Algorytmow
9 Zasady projektowania algorytmów II
9. Zasady projektowania algorytmów, pytania egzamin inżynierski AiR ARS
JAiO - Projekt 3, Studia, III Semestr, Języki, Algorytmy i Obliczenia, Projekty
JAiO - Projekt 4, Studia, III Semestr, Języki, Algorytmy i Obliczenia, Projekty
34 Zasady projektowania strefy wjazdowej do wsi
p 43 ZASADY PROJEKTOWANIA I KSZTAŁTOWANIA FUNDAMENTÓW POD MASZYNY
MiTR Projekt 1 A B GiG III gr 1 niestacjonarne
Zasady projektowania wymienników ciep
io w11 zasady projektowania opr
kozik,projektowanie algorytmów,ALGORYTMY PRZYBLIŻONE
k balinska projektowanie algorytmow i struktur danych
10 Przedstawić zasady projektowania sieci dostępowych i szkieletowych
Zasady projektowania zbieraczy

więcej podobnych podstron