Grażyna Mirkowska PJWSTK, 10 stycznia 2001

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

Tablice 1. Deklaracja tablicy
Sympleksy n=2.
Algorytmy – c.d. struktury danych złożoność algorytmów
Schemat blokowy M START KONIEC
METODY ANALIZY PROGRAMÓW
Grażyna Mirkowska PJWSTK 15 listopad 2000
Metody Analizy Programów Wykład 02
Wykład 10 Metody Analizy Programów Specyfikacja Struktur Danych
Wykład 06 Metody Analizy Programów System Hoare
Wykład 6 Najkrótsza ścieżka w grafie z jednym źródłem
Filip Andrzejewski Remigiusz Chiluta
Temat: WIELOŚCIANY KLASA III P r.
VI Rachunek predykatów
Przygotowały: Jagoda Pacocha Dominika Ściernicka
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Elementarne struktury danych Piotr Prokopowicz
Grafika komputerowa Wykład 7 Krzywe na płaszczyźnie
Geometria obliczeniowa Wykład 1
ZŁOŻONOŚĆ OBLICZENIOWA
ALGORYTMY GEOMETRYCZNE.
Programowanie imperatywne i język C Copyright, 2004 © Jerzy R. Nawrocki Wprowadzenie.
ALGORYTMY I STRUKTURY DANYCH
Materiały pomocnicze do wykładu
Matematyka Dyskretna, Struktury algebraiczne G.Mirkowska, PJWSTK
Elementy Kombinatoryki (c.d.)
Pola Figur Płaskich.
Geometria obrazu Wykład 6
ALGORYTMY I STRUKTURY DANYCH
Matematyka Dyskretna, G.Mirkowska PJWSTK
Podstawy programowania
Operacje na strukturach listowych
IV OTWARTE MISTRZOSTWA OPOLA W PROGRAMOWANIU ZESPOŁOWYM
Geometria obliczeniowa Wykład 3
Zadanie programowania liniowego PL dla ograniczeń mniejszościowych
II Zadanie programowania liniowego PL
TWORZYMY ELIPSĘ Z PŁASZCZYZNY STOŻKOWEJ TWORZYMY ELIPSĘ Z PŁASZCZYZNY
Dane INFORMACYJNE (do uzupełnienia)
Trójkąty.
Zadanie programowania liniowego PL dla ograniczeń mniejszościowych
II. Matematyczne podstawy MK
Przykładowy algorytm geometryczny (geometria płaska)
II Zadanie programowania liniowego PL
Wypełnianie obszaru.
ALGORYTMY I STRUKTURY DANYCH WYKŁAD 03 cd. Wyszukiwanie Grażyna Mirkowska PJWSTK, 2003/2004.
Geometria obliczeniowa Wykład 13 Planowanie ruchu 1.Znajdywanie ścieżki między dwoma punktami. 2.Ruch postępowy robota wielokątnego na płasz- czyźnie.
Grafika i komunikacja człowieka z komputerem
KNW- Wykład 3 Powtórzenie. PROGRAM WYKŁADU NR 3 Przykładowe zadania z logiki Modele możliwych światów.
Grafika i komunikacja człowieka z komputerem
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
Geometria obrazu Wykład 6
ALGORYTMY I STRUKTURY DANYCH WYKŁAD 04 k-ty co do wielkości. Stosy Grażyna Mirkowska PJWSTK, ITN semestr letni 2002.
WIELOKĄTY Karolina Zielińska kl.v Aleksandra Michałek kl v
Systemy wspomagające dowodzenie twierdzeń
IFS, IFSP I GRA W CHAOS ZBIORY FRAKTALNE I WYBRANE SPOSOBY ICH GENEROWANIA.
ALGORYTMY I STRUKTURY DANYCH
1.problem próbkowania (sampling problem) dobór charakterystycznych punktów powierzchni w celu uzyskania najlepszego efektu przy minimalizacji ilości danych.
Geometria obliczeniowa Wykład 1
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Przykładowy algorytm geometryczny (geometria płaska)
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

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

Wyklad 11 Metody Analizy Programow Programowanie obiektowe 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 . np.(((x+y) *(y-z))*(-x)) 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. ZADANIE Obliczyć wartość wyrażenia algebraicznego dla dowolnie zadanych wartości zmiennych. Idea metody Wyklad 11 Metody Analizy Programow Programowanie obiektowe

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

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. Wyklad 11 Metody Analizy Programow Programowanie obiektowe

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łą). 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 Uwaga zbiór punktów Q otoczka wypukła 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(n4) Koszt Wyklad 11 Metody Analizy Programow Programowanie obiektowe

Wyklad 11 Metody Analizy Programow Programowanie obiektowe 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. p1 p2 p3 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 (*). Wyklad 11 Metody Analizy Programow Programowanie obiektowe

Wyklad 11 Metody Analizy Programow Programowanie obiektowe Przykład wykonania 1 4 2 5 6 8 9 7 3 Dany zbiór punktów Zawartość stosu 9 7 8 5 4 6 3 21 Wyklad 11 Metody Analizy Programow Programowanie obiektowe

Wyklad 11 Metody Analizy Programow Programowanie obiektowe 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 <i , których nie ma w stosie, leżą wewnątrz tego wielokąta. Kolejnośc wierzchołków na stosie odpowiada kolejności wierzchołków w wielokącie czytanych przeciwnie do ruchu wskazówek zegara. 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 Koszt algorytmu Operacja dominująca to badanie po której stronie danej prostej leży punkt. T(n) = O(n) + O(n lg n) Wyklad 11 Metody Analizy Programow Programowanie obiektowe

Poprawność algorytmu Grahama Fakt 1 Punkty usuwane ze stosu rzeczywiście nie mogą należeć do otoczki wypukłej OW(Q). pi pk p0 pj 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. Wyklad 11 Metody Analizy Programow Programowanie obiektowe

c.d. poprawność algorytmu Grahama Fakt 2 pj pk p0 pi 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. pk pi p0 pj Gdy dołączymy do wielokata wypukłego dowolny punkt z zakreślonego obszaru, to nadal otrzymamy wielokąt wypukły. Wyklad 11 Metody Analizy Programow Programowanie obiektowe

Wyklad 11 Metody Analizy Programow Programowanie obiektowe Służy do reprezentacji zbiorów uporządkowanych Kolejka priorytetowa Definicja Strukturę danych < E  X ; insert, delmin, min, member, empty,  > o sygnaturze insert : E  X  X delmin : E  X  X min : X  E member : E  X  B0 empty : X  B0  : X  X  B0 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 minimum i operacja należenia Wyklad 11 Metody Analizy Programow Programowanie obiektowe

Aksjomaty kolejek priorytetowych Zwrotna antysymetryczna przechodnia spójna Aksjomaty kolejek priorytetowych PQ1 : relacja  jest liniowym porządkiem w E wartość min(q) jest najmniejszym elementem w q 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) Wyklad 11 Metody Analizy Programow Programowanie obiektowe

c.d. aksjomaty kolejek priorytetowych operacja insert powoduje dołaczenie nowego el.em. c.d. aksjomaty kolejek priorytetowych PQ4 : member(e, insert(e, q)) e  e’  member (e’,q)  member(e’, insert(e,q)) operacja delmin usuwa element minimalny PQ5 :  member(e, delmin(q)) e  e’  member (e’,q)  member(e’, delmin(q)) member daje w wyniku wartość true, gdy elem. e należy do kolejki 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; Wyklad 11 Metody Analizy Programow Programowanie obiektowe

Wyklad 11 Metody Analizy Programow Programowanie obiektowe Model standardowy PQST(E) = < E + Fin(E), insert, delmin, minm member, empty,  > 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 AX Twierdzenie Struktura PQST(E) jest modelem aksjomatów PQ1-PQ6 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. Twierdzenie Każdy model zbioru aksjomatow PQ jest izomorficzny z pewnym modelem standardowym. Wyklad 11 Metody Analizy Programow Programowanie obiektowe

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; Wyklad 11 Metody Analizy Programow Programowanie obiektowe

Wyklad 11 Metody Analizy Programow Programowanie obiektowe Przykład T(n) = O(n lg n) Koszt 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; DRZEWO TABLICA Synowie elementu z pozycji itej znajdują się na pozycjach 2i oraz 2i+1 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). Niezmiennik WP : a(i)a(j) dla i  j i,j  {1, ...,n}, a(i)  <E, > WK : a(1)  a(2)  ...  a(n) Wyklad 11 Metody Analizy Programow Programowanie obiektowe