Systemy iteracyjne

advertisement
Systemy iteracyjne
Podstawy programowania
wykład 2
Pojęcie iteracji
Systemy rzeczywistości, tj. wyróŜnione struktury relacyjne
(często z relacją porządku), w których realizowane jest
powtarzalne wykonywanie tych samych operacji lub wchodzenie
w te same relacje nazywamy systemami iteracyjnymi.
W ujęciu algebraicznym przez iterację moŜna rozumieć ten sam
typ skończonej ilości złoŜeń operacji (niekonieczne tych samych
operacji) w algebrach naleŜących do klasy wszystkich
analogicznych (dokładniej: podobnych z dokładnością do
homomorfizmu)
algebr częściowych (podalgebr sytemu
iteracyjnego), a w ujęciu logicznym ten sam typ złoŜeń operacji i
relacji w strukturze relacyjnej naleŜącej do klasy wszystkich
analogicznych (dokładniej: podobnych z dokładnością do
homomorfizmu) struktur relacyjnych (podsystemów sytemu
iteracyjnego).
Przykład iteracji
Np. dla homomorficznych algebr
A1 = < U1, f1, f2 >, A2 = < U2, g1, g2 >,
gdzie pierwsze operacje są jednoargumentowe, a drugie
dwuargumentowe, złoŜenia
f(x1, x2) = f2(x1,f1(x2)) i g(x1, x2) = g2(x1, g1(x2))
mają ten sam typ.
Gdy oznaczymy ten typ przez i, to piszemy i{f1, f2} = f,
i{g1, g2} = g. Iterację i jednej funkcji f zapisujemy if.
PoniewaŜ kaŜda struktura relacyjna indukuje zbiór iteracji,
więc system iteracyjny moŜemy utoŜsamiać z indukującą
iteracje strukturą relacyjną.
Bardziej precyzyjne
określenie iteracji
Wprowadzone wcześniej pojęcie iteracji moŜna bardziej
precyzyjnie określić za pomocą klasy abstrakcji.
Dowolną klasę wszystkich izomorficznych podsystemów systemu
iteracyjnego nazywamy iteracją.
Liczby kardynalne są iteracjami: Niech <U, R> jest systemem
iteracyjnym, w którym U jest dowolnie ustalonym nieskończonym
zbiorem, a rodzina relacji R jest pusta. Wtedy, dowolny podzbiór
U wyznacza podsystem tego systemu iteracyjnego, a iteracja jako
klasa wszystkich izomorficznych podsystemów jest klasą
wszystkich równolicznych zbiorów, tj. jest liczbą kardynalną.
Podobnie: liczby porządkowe są iteracjami.
„Kreskowy” system
zliczania przedmiotów
- izomorficzne podsystemy zliczania przedmiotów
- jednoelementowy podsystem
- dwuelementowy podsystem
- trzyelementowy podsystem
Iteracje w „kreskowym” systemie zliczania przedmiotów są modelem liczb
naturalnych.
Systemy pomiarowe jako
systemy iteracyjne
Mechanizm pomiaru - mechanizm ustalający w danym stanie
dokonywania pomiaru wystąpienie kolejnej jednostki pomiaru. Włączenie
mechanizmu pomiaru za kaŜdym razem powiększa na skali pomiaru wynik
pomiaru o następną jednostkę. Nie wystąpienie następnej jednostki pomiaru
oznacza jego zakończenie. Pomiar jest więc iterowaniem jednostek
pomiaru.
ZłoŜenie jednostek pomiaru - wynik skończonej ilości niezaleŜnych pomiarów,
np. jednostka miary pola powierzchni cm2 = cm*cm, jednostka siły N = kg* m /s.
Wielkości są niezaleŜne, gdy nie mogą się wzajemnie określać tak, aby do
wyznaczenia którejś jednostki wystarczał pomiar pozostałych jednostek. Zbór
niezaleŜnych wielkości wymiarowych wraz z operacjami i relacjami tworzy
przestrzeń wymiarową. Jest ona systemem iteracyjnym. Klasa wszystkich
izomorficznych podprzestrzeni tej przestrzeni jest iteracją. Wielkości określone
przez operacje nazywamy ekstensjonalnymi, a określone przez relacje intensjonalnymi. We współczesnej fizyce iteracjami w przestrzeniach
wymiarowych są liczby rzeczywiste. ZłoŜenie wielkości ekstensjonalnej z
intesjonalną jest wielkością energii
Liczby całkowite jako
iteracje
M = < U, π, I >,
gdzie U jest nieskończonym niepustym zbiorem, a π
róŜnowartościową funkcją określoną na tym zbiorze, a I
funkcją toŜsamościową (I(x) = x). I tak
I1. ZłoŜenie funkcji π ma typ 0, gdy jego wynikiem jest
funkcja toŜsamościowa I. Przez 1 oznaczamy iterację,
oznaczającą typ złoŜenia funkcji π, którego wynikiem jest
funkcja π. Piszemy 0π = I;
I2. Jeśli i jest iteracją, to istnieje taka iteracja i* , Ŝe i*π =
(iπ)π, gdzie zapis f1f2 jest złoŜeniem funkcji f1, f2
określonym wzorem f1f2(x)=f2(f1(x));
I3. JeŜeli do zbioru iteracji naleŜy 0 i spełniony jest warunek
I2 to kaŜda iteracja naleŜy do tego zbioru.
Liczby całkowite jako
iteracje
Sumę i iloczyn iteracji określamy następująco:
Sum. (n + k) π = (nπ)(kπ);
Il.
(n * k) π = n(kπ).
Zbiór iteracji równowaŜny zbiorowi liczb całkowitych
uzyskamy, jeśli będziemy rozwaŜać złoŜenia funkcji wśród
których jest funkcja odwrotna do funkcji π, tj.
M = < U. π, I, π-1>.
Wtedy przyjmiemy oznaczenie (nπ)-1 = (-n)π.
Oczywiście n + (-n) = 0, a ponadto zachodzą pozostałe
własności liczb całkowitych.
Iteracyjne ujęcie teorii liczb
rzeczywistych
Iterowanie, tj. powtarzanie się czegoś w systemie iteracyjnym, moŜe być
rozumiane jako homomorfizm (izomorfizm) pomiędzy podsystemami systemu
iteracyjnego.
Określenie liczb rzeczywistych. Niech zbiór U jest uporządkowany przez
relację ≥ w sposób gęsty i bez luk, a więc w sposób ciągły, bez elementu
pierwszego i ostatniego. Wybierzmy w tym zbiorze dowolne dwa róŜne
elementy 0 i 1, tak aby 1≥0. ZałóŜmy, Ŝe wtedy, dla dowolnego elementu
x∈U, istnieje pewien izomorfizm monotoniczny ix, przekształcający 0 w
liczbę x oraz pewien automorfizm monotoniczny ax przekształcający element 1
w
x≠0. JeŜeli klasę automorfizmów rozszerzymy o homomorfizm
a0 : U → {0}, to moŜemy określić na U następujące działania:
x + y = ix(y),
x*y = ax(y).
MoŜna sprawdzić, Ŝe struktura <U, +, * , ≥, 0, 1> spełnia aksjomaty teorii
liczb rzeczywistych.
Liczby zespolone jako
iteracje
Ze względów dydaktycznych zalecany moŜe być następujący
przykład systemu iteracyjnego:
operacja π jest wykonywaniem przez ucznia kroków do przodu
w danym kierunku, zbiór U jest zbiorem połoŜeń ucznia,
funkcja I to postój w miejscu.
Najbardziej interesującym przykładem jest system iteracji, w
którym oprócz kroków do przodu w danym kierunku,
wykonywane są kroki prostopadle na lewo, w bok od kierunku
przemieszczania się ucznia. Oznaczmy przez π kroki do
przodu, a przemieszczanie się o krok na lewo od kierunku ruchu
przez i Wtedy kroki wykonane na lewo od kroków wykonanych
na lewo od kierunku do przodu, są. krokami do tyłu.
Liczny zespolone jako
iteracje
Wprowadzając analogiczne jak poprzednio pojecie iloczynu
iteracji, mamy iiπ = - 1π
π, lub krócej: i2 = -1. Tak więc iteracja
n + ki , oznaczająca n kroków w danym kierunku i następnie k
kroków na lewo od tego kierunku, moŜe być utoŜsamiana z
liczbą zespoloną. ZauwaŜmy, Ŝe iteracja n + ki ustala nowy
kierunek ruchu i wyznacza pewne przemieszczenie, które
moŜemy traktować jako nowy krok. Iloczyn iteracji (n1 + k1 i)
(n2 + k2 i) będzie wtedy oznaczał wykonanie n1 tych nowych
kroków do przodu i k1 w kierunku na lewo od kierunku
ustalonego przez iterację n2 + k2 i. Dokładnie:
(n1 + k1 i) (n2 + k2 i) = (n1 n2 – k1 k2) + (n1 k2 + k1 n2) i
(dlaczego?).
Grupy krystalografii jako
systemy iteracyjne
Projektowanie parkietów
lub posadzek
Grupy krystalografii wykorzystuje się przy projektowaniu parkietów lub
posadzek z płytek drewnianych lub ceramicznych.
Problem ten, dla przypadku płytek w kształcie wielokątów foremnych, jest juŜ
znany od czasów staroŜytnych. Całą płaszczyznę dzieli się na stykające się w
wierzchołkach wielokąty foremne, tak aby w kaŜdym wierzchołku stykały się
wszystkie przystające do wybranych wielokąty. PoniewaŜ wielokąt o n bokach
posiada kąt o mierze (n - 2) * 1800/ n, a suma miar wszystkich połączonych w
wierzchołku kątów wynosi 3600, więc przykładowo dla trzech wielokątów (o
ilości boków n1, n2, n3) mamy warunek
1/n1 + 1/n2 + 1/n3 = 1/2,
a dla czterech wielokątów (o ilości boków n1, n2, n3, n4)
1/n1 + 1/n2 + 1/n3 + 1/n4 = 1.
Przykładowe projekty parkietów przedstawiamy dalej. MoŜna je zrealizować w
edytorach grafiki (np. Power Point).
Systemy geometryczne
Sztuka M.C.Eschera
System geometryczny
Parkiet 1
System geometryczny
Parkiet 2
System geometryczny
Parkiet 3
System geometryczny
Parkiet 4
System geometryczny
Parkiet 5
System geometryczny
Parkiet 6
System geometryczny
Parkiet 7
System geometryczny
Parkiet 8
System geometryczny
Parkiet 9
System geometryczny
Parkiet 10
Iteracyjne ujęcie liczb
pitagorejskich
Źródło: J. H. Conway, R. K. Guy, Księga liczb, WNT, Warszawa 1999, s.51
Iteracyjne ujęcie liczb
pitagorejskich
Źródło: J. H. Conway, R. K. Guy, Księga liczb, WNT, Warszawa 1999, s.62
Operacja przypisania
Systemy podstawień
ZłoŜenie funkcji określa się jako ciąg podstawień termów: t1:=
τ1, t2:= τ2, ..., tn:= τn.
Np. złoŜeniu z = f(g(h(x,y)), h(x,g(y))) odpowiada następujący
ciąg podstawień:
z:= f(x1, x2),
x1:= g(x3),
x2:= h(x, x4),
x3:= h(x, y),
x4:= g(y)
Iteracja jako klasa drzew
podstawień
f
g
h
h
x
x
y
g
y
Procedury w systemach
iteracyjnych
Niech U zbiorem wszystkich rozwaŜanych przedmiotów
(teoretycznych i empirycznych) w dowolnie ustalonym systemie
iteracyjnym. Jedne z tych przedmiotów są znane inne nieznane.
Ciąg relacji r1, r2, ..., rk+1, wiąŜących przedmioty znane z
nieznanymi nazywamy procedurą relacyjną, a jeśli jest ciągiem,
określającym przedmiot α, to nazywamy go procedurą relacyjną
wyprowadzenia α.. Ciąg operacji określających osiągalność
jakiegoś x∈ U, uporządkowanych według kolejności ich
składania, nazywamy procedurą operacyjną.
JeŜeli procedura relacyjna wyprowadzenia α nie prowadzi
do wyprowadzenia α, to mówimy Ŝe zawodzi, a w przeciwnym
wypadku, Ŝe nie zawodzi.
Zbór procedur w systemie
iteracyjnym
Zbiorem procedur w danym systemie iteracyjnym jest najmniejszy
zbiór do którego naleŜą:
1.Procedury relacyjne (wyprowadzenia),
2.Procedury operacyjne,
3.Ciągi procedur,
4.Układy trzech procedur postaci jeŜeli (procedura relacyjna
wyprowadzenia α, procedura pierwsza, procedura druga),
reprezentujące wykonanie procedury pierwszej, gdy procedura
relacyjna wyprowadzenia α nie zawodzi, a drugiej, gdy zawodzi.
5.Układy dwóch procedur zwane procedurami iteracyjnymi, postaci
powtarzaj (procedura relacyjna, dana procedura), określające
osiągalność kaŜdego stanu wyprowadzonego przez kolejne
stosowanie tej samej procedury wyprowadzenia – dopóki procedura
relacyjna nie zawodzi wykonywana jest dana procedura.
Procedura iteracyjna
procedura
wyprowadzenia
tak
Procedura
Reprezentacje procedur
oraz programy
MoŜna wyróŜnić trzy sposoby reprezentacji procedur:
R1.
reprezentacja ikoniczna – schematy blokowe, grafy,
diagramy, drzewa, reprezentacje multimedialne, itp.
R2.
reprezentacja symboliczna – języki programowania:
strukturalne, logiczne, obiektowe, wizualne.
R3.
reprezentacja enaktywna - tabele decyzyjne, arkusze
kalkulacyjne, bazy danych, symulacje.
Język, w którym wyraŜamy procedury realizowane w pewnym
systemie iteracji nazywamy językiem programowania, a
wyraŜenia odpowiadające procedurom programami.
Programy reprezentujące
procedury operacyjne
S jest zbiorem programów reprezentujących procedury operacyjne, realizowane w
jakimś systemie iteracyjnym wtedy i tylko wtedy, gdy jest najmniejszym spośród
zbiorów S’ spełniającym następujące warunki:
P1.
podzbiorem S’ jest zbiór wszystkich podstawień termu t za zmienną
indywiduową x, postaci x:= t,
Symbol := jest niekiedy w podręcznikach nazywany symbolem przypisania.
Niestety, jest to myląca nazwa, sugerująca uczniowi jakoby przypisanie było
czymś innym niŜ podstawienie. Tym bardziej, Ŝe operację podstawienia zna on
świetnie z lekcji matematyki.
P2.
jeśli α jest formułą logiczną spełnioną w danym systemie rzeczywistości
Re oraz K,M, K1, K2, ..., Kn,, dla dowolnych n>0, naleŜą do S’, to wyraŜenia:
begin K1; K2,; ..., Kn end
(odpowiada ciągowi procedur),
if α then K else M
(odpowiada procedurze typu jeŜeli...),
while α do K
(odpowiada procedurze iteracyjnej),
naleŜą do S’.
Programy reprezentujące
procedury relacyjne
Deklaracje procedur relacyjnych moŜna wyrazić za pomocą ciągów zbiorów
deklaracji relacji lub negacji ich deklaracji. Deklaracje nazywamy klauzulami,
a programowanie w języku klauzul (np. język PROLOG) nazywamy
programowaniem logicznym. Zdefiniujemy teraz bardziej precyzyjnie
składnię języka klauzul. Najbardziej dogodnym zapisem klauzul jest zapis
postaci (R. Kowalski, Logika w rozwiązywaniu zadań, WNT, Warszawa 1989.)
B1, B2, ..., Bm :- A1, A2, ..., An
Gdzie znak “:-“ czytamy: jeśli, przy czym B1, B2, ..., Bm, są formułami
atomowymi, n ≥ 0 i m ≥ 0. Formuły atomowe A1, A2, ..., An stanowią
koniunkcję warunków klauzuli, a B1, B2, ..., Bm– alternatywę konkluzji.
Spośród klauzul wyróŜnia się klauzule hornowskie postaci
B :- A1, A2, ..., An
Jeśli klauzula zawiera zmienne x1, ..., xk, naleŜy ja interpretować jako
stwierdzenie, Ŝe dla wszystkich x1, ..., xk : B1 lub ... lub Bm jeśli A1 i ... i An.
Jeśli n = 0, klauzulę naleŜy interpretować jako bezwarunkowe stwierdzenie, Ŝe
dla wszystkich x1, ..., xk : B1 lub ... lub Bm .
Programy reprezentujące
procedury relacyjne
Jeśli m = 0, klauzulę naleŜy interpretować jako stwierdzenie, Ŝe dla wszystkich
x1, ..., xk nieprawda, Ŝe zachodzi A1 i ... i An.
Jeśli m = n = 0, klauzulę zapisuje się w postaci (klauzula pusta) i
interpretuje jako zdanie zawsze fałszywe.
Atom (lub formuła atomowa) to wyraŜenie postaci: R (t1, ..., tm), przy czym R
jest m-argumentowym symbolem relacyjnym, t1, ..., tm są termami oraz m ≥ l.
Atom naleŜy interpretować jako stwierdzenie, Ŝe relacja o nazwie R zachodzi
między indywiduami o nazwach t1, ..., tm.
Term jest zmienną, stałą lub wyraŜeniem postaci f (t1, ..., tm), przy czym f jest
m - argumentowym symbolem funkcyjnym, t1, ..., tm są termami oraz m ≥ l. .
Symbol implikacji w języku klauzul jest skierowany w kierunku odwrotnym niŜ
w klasycznym języku logiki. Przyzwyczajenie kaŜe pisać raczej: A :- B (jeśli A
to B), a nie
B :- A (B jeśli A). JednakŜe róŜnica jest nieistotna. Notację: B :- A stosuje się
w celu wyeksponowania konkluzji klauzuli.
Download