Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Wyklad 11 Metody Analizy Programow Programowanie obiektowe 1 Wykład 11 Metody Analizy Programów Struktury Danych: Specyfikacja i Weryfikacja Grażyna Mirkowska.

Podobne prezentacje


Prezentacja na temat: "Wyklad 11 Metody Analizy Programow Programowanie obiektowe 1 Wykład 11 Metody Analizy Programów Struktury Danych: Specyfikacja i Weryfikacja Grażyna Mirkowska."— Zapis prezentacji:

1

2 Wyklad 11 Metody Analizy Programow Programowanie obiektowe 1 Wykład 11 Metody Analizy Programów Struktury Danych: Specyfikacja i Weryfikacja Grażyna Mirkowska PJWSTK, 10 stycznia 2001

3 Wyklad 11 Metody Analizy Programow Programowanie obiektowe 2 Przykład 11/1 Zbiór wyrażeń algebraicznych WA jest to najmniejszy zbiór ciągów znaków taki, że (1) x,y, z,u WA (2) jeżeli w1, w2 WA, to (w1+ w2) WA, (w1- w2) WA, (w1* w2) WA (3) jeżeli w WA, to (- w) WA. ZADANIE Obliczyć wartość wyrażenia algebraicznego dla dowolnie zadanych wartości zmiennych. Przyjmijmy, że dane wyrażenie zostało zapisane jako string a, i wartościowanie v jako klasa (czy rekord) o atrybutach x, y, z, u. Ponadto załóżmy, że mamy do dyspozycji dwa stosy SA i SO. Elementami SO będą znaki a elementami SA wartości zmiennych. Idea metody np.(((x+y) *(y-z))*(-x))

4 Wyklad 11 Metody Analizy Programow Programowanie obiektowe 3 c.d.Przykład 11/1 i n a(i) jest operacją? a(i) jest zmienną? a(i) = )? o := top(SO) a2 := top(SA) SA := pop(SA) a1 := top(SA) SA := push(SA, v(a(i))) SO:= push(SO, a(i)) oblicz a - wynik operacji o na arg. a1 i ew. a2 dwu - arg? a1 := top(SA) SA := push(SA,a) koniec start Schemat blokowy algorytmu WP : a WA, i=1, WK : top(SA)= WA(v) i := i+1

5 Wyklad 11 Metody Analizy Programow Programowanie obiektowe 4 Przykładowe obliczenie wartości wyrażenia Wyrażenie: ((- (x+ z))* (z - (u + y))) wartościowanie: v(x,y,z,u )=(2,3,4,5) SO - SA 2 SO -, + SA 2, 4 SO - SA 6 SO SA -6 SO * SA -6, 4 SO *, - SA -6, 4, 5 SO *, -, + SA -6, 4, 5, 3 SO *, -, SA -6, 4, 8 SO * SA -6, -4 SO SA 24 Niezmiennik pętli: jeżeli stos operacji SO jest niepusty i o=top(SO), to - top(SA) jest argumentem operacji o, gdy jest ona jednoargumentowa - top(pop(SA)) i top(SA) są odpowiednio lewym iprawym argumentem operacji o, gdy jest ona 2-argumentowa. Jeżeli aktualnie czytanym znakiem jest ) pewnego podwyrażenia, to top(SO) jest operacją główną w tym podwyrażeniu, a ostatnio zapisane wartości na stosie SA są poprawnymi argumentami tej operacji.

6 Wyklad 11 Metody Analizy Programow Programowanie obiektowe 5 Przykład 11/2 Otoczka wypukła Dla danego skończonego zbioru punktów Q na płaszczyźnie, znaleźć najmiejszy zbiór wypukły taki, że każdy punkt zbioru Q znajduje się albo w jego wnętrzu albo na brzegu ( taki zbiór nazywa się otoczką wypukłą). zbiór punktów Qotoczka wypukła zb.Q Punkt p nie jest wierzchołkiem otoczki wttw gdy leży wewnątrz trójkąta w wierzchołkach ze zbioru Q różnych od p lub, gdy leży na odcinku łączącym dwa różne od niego punkty zb.Q Prosty algorytm Dla każdej trójki punktów z Q : (1) jeśli są współliniowe, to usuwamy środkowy (2) jeśli nie są współliniowe, to usuwamy wszystkie punkty leżące wewnątrz utworzonego przez nie trójkąta. Jeśli card(Q)= n, to mamy (n nad 3) trójkąty, czyli T(n) = O(n 4 )

7 Wyklad 11 Metody Analizy Programow Programowanie obiektowe 6 Algorytm Grahama Algorytm ten wykorzystuje stos S jako strukturę pomocniczą. Każdy punkt zbioru Q jest jeden raz wkładany do stosu i o ile stwierdzimy, że nie może być wierzchołkiem otoczki, jest usuwany ze stosu. Na zakńczenie stos zawiera wszystkie wierzchołki otoczki. KROK1 Wybrać ze zb. Q punkt p0 o najmniejszej współrzędnej y. KROK2 Posortować pozostałe punkty p ze względu na kąt, jaki tworzy wektor p0p z dodatnim kierunkiem osi x. Jeśli kilka punktów tworzy ten sam kąt, usunąć wszystkie z wyjątkiem najbardziej oddalonego od p0. Niech uzyskanym w wyniku sortowania ciągiem będzie p1,...,pm KROK3 Do początkowo pustego stosu S wkładamy punkty p0, p1,p2. KROK4 Dla każdego i >2 sprawdzamy, (*)czy po dołączeniu punktu pi, zbiór na stosie byłby wypukły. Jeśli tak, to dopisujemy do stosu pi. Jeśli nie, to usuwamy, po jednym, ostatnio włożone punty tak długo aż spełniony będzie warunek (*). p1 p2 p3

8 Wyklad 11 Metody Analizy Programow Programowanie obiektowe 7 Przykład wykonania Dany zbiór punktów Zawartość stosu

9 Wyklad 11 Metody Analizy Programow Programowanie obiektowe 8 Krok4 algorytmu begin i :=3; while i<= n do y:= top(S); x := top(pop(S)); while{p(i) leży na prawo od wektora (xy)} do S := pop(S); y := x; x := top(pop(S)) od; S := push( S, p(i)); i := i+1 od end Niezmiennikiem pętli zewnętrznej jest własność (*) zbiór punktów na stosie tworzy wielokąt wypukły przechodzący przez punkt pi. Wszystkie punkty o indeksach

10 Wyklad 11 Metody Analizy Programow Programowanie obiektowe 9 Poprawność algorytmu Grahama Punkty usuwane ze stosu rzeczywiście nie mogą należeć do otoczki wypukłej OW(Q). Przypuśćmy, że pj jest usuwane ze stosu. Ma to miejsce tylko wtedy, gdy punkt rozważany pi leży na prawo od wektora pkpj( =ostatnio utworzona krawędź ) (pj jest na szczycie stosu a pk poniżej). Ponieważ przeglądamy punkty w porządku rosnących współrzędnych biegunowych względem p0, to dla punktu pj istnieje trójkąt (p0pkpi), we wnętrzu którego znalazłoby się pj. Zatem pj nie może być wierzchołkiem otoczki wypukłej. pi pk p0 pj

11 Wyklad 11 Metody Analizy Programow Programowanie obiektowe 10 c.d. poprawność algorytmu Grahama Gdy dołączymy do wielokata wypukłego dowolny punkt z zakreślonego obszaru, to nadal otrzymamy wielokąt wypukły. pj pk p0 pi pk pi p0 pj Zgodnie z wykonywanym testem pi leży po lewej stronie wektora pkpj, a ponadto kąt jaki tworzy pip0 z dodatnim kierunkiem osi OX jest większy niż kąt jaki tworzy pj p0 z osią OX. Czyli mamy gwarancję, że dołączany punkt należy do zakreskowanego obszaru.

12 Wyklad 11 Metody Analizy Programow Programowanie obiektowe 11 Kolejka priorytetowa Strukturę danych o sygnaturze insert : E X Xdelmin : E X X min : X Emember : E X B 0 empty : X B 0 : X X B 0 nazywamy kolejką priorytetową wttw gdy jej uniwersum składa się z dwóch rozłącznych zbiorów E i X ( elementów i kolejek pr.) oraz relacje i operacje struktury spełniają wymienione niżej postulaty PQ (aksjomaty). Operacje wstawiania i usuwania elementu Operacja minimu m i operacja należeni a Służy do reprezentacji zbiorów uporządkowanych

13 Wyklad 11 Metody Analizy Programow Programowanie obiektowe 12 Aksjomaty kolejek priorytetowych PQ1 : relacja jest liniowym porządkiem w E Zwrotna antysymetryczna przechodnia spójna PQ2 : while empty(q) do q := delmin( q) od true q ma tylko skończoną liczbę elementów z E PQ3 : empty(q) (member(e,q) min(q) e) wartość min(q) jest najmniejszym elementem w q

14 Wyklad 11 Metody Analizy Programow Programowanie obiektowe 13 c.d. aksjomaty kolejek priorytetowych PQ4 : member(e, insert(e, q)) e e member (e,q) member(e, insert(e,q)) PQ5 : member(e, delmin(q)) e e member (e,q) member(e, delmin(q)) PQ 6: member(e,q) P bool, gdzie P: begin bool := false; while not empty and not bool do e1 := min(q); bool := (e=e1); q:= delmin(q) od; end; operacja insert powoduje dołaczenie nowego el.em. operacja delmin usuwa element minimalny member daje w wyniku wartość true, gdy elem. e należy do kolejki

15 Wyklad 11 Metody Analizy Programow Programowanie obiektowe 14 Model standardowy PQ ST (E) = gdzie insert(q,e) = q {e} delmin (q) = q -{ min(q)} min(q) = e0 wttw ( e) ( member(e,q) e0 e) member (e,q) wttw e q relacja porządku liniowego w zbiorze E Struktura PQ ST (E) jest modelem aksjomatów PQ1-PQ6 Każdy model zbioru aksjomatow PQ jest izomorficzny z pewnym modelem standardowym. AX Niech M będzie dowolnym modelem zbioru PQ. Definiujemy funkcję h(x) = {e E : memeber(e,x)} h(e)= e dla e E Funkcja h jest izomorfizmem odwzorowującym model M na model standardowy wyznaczony przez zbiór E.

16 Wyklad 11 Metody Analizy Programow Programowanie obiektowe 15 Przykładowa implementacja unit StrE : class; unit rel : function (e1,e2 : E): boolean; end rel; unit E : class; end E; end StrE; unit StrPQ : StrE class; unit PQ : class; end PQ; unit min : function (q : PQ) : E; end min; unit insert: function(e: E, q: PQ): PQ; end insert; unit delmin: function( q : PQ): PQ; end delmin; unit memeber : function(e:E, q :PQ) : boolean; end memeber; unit empty : fumction(q : PQ) : boolean; end empty; end StrPQ;

17 Wyklad 11 Metody Analizy Programow Programowanie obiektowe 16 Przykład pref StrPQ block pq := new PQ; for i := 1 to n do insert(a(i), pq) od; i := 1; while not empty(pq) do a(i) := min(pq); pq := delmin(pq); i := i+1 od; end; WP : a(i) a(j) dla i j i,j {1,...,n}, a(i) WK : a(1) a(2)... a(n) TABLICA Synowie elementu z pozycji itej znajdują się na pozycjach 2i oraz 2i+1 DRZEWO T(n) = O(n lg n) a(1) a(2)... a(i-1) kolejka zawiera tylko te elementy zbioru początkowego, ktore nie należą do ciągu a(1),...,a(i-1).


Pobierz ppt "Wyklad 11 Metody Analizy Programow Programowanie obiektowe 1 Wykład 11 Metody Analizy Programów Struktury Danych: Specyfikacja i Weryfikacja Grażyna Mirkowska."

Podobne prezentacje


Reklamy Google