Pobieranie prezentacji. Proszę czekać

Pobieranie prezentacji. Proszę czekać

Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych 1 Wykład 10 Metody Analizy Programów Specyfikacja Struktur Danych Grażyna Mirkowska PJWSTK,

Podobne prezentacje


Prezentacja na temat: "Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych 1 Wykład 10 Metody Analizy Programów Specyfikacja Struktur Danych Grażyna Mirkowska PJWSTK,"— Zapis prezentacji:

1

2 Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych 1 Wykład 10 Metody Analizy Programów Specyfikacja Struktur Danych Grażyna Mirkowska PJWSTK, 3 stycznia 2001

3 Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych 2 Po co i jak specyfikować ? Wiemy, że realizacja algorytmu, przebieg obliczenia programu zależy w dużym stopniu od struktury danych, w której jest on realizowany. Aby można było uzasadniać poprawność algorytmu musimy znać strukturę danych, która została użyta. Ale … co to znaczy znać? Na ogół zbiór faktów dotyczących struktury danych jest nieskończony. Czy musimy je wszystkie znać by pisać poprawne programy? Niektórzy mówią, że najlepszą specyfikacją struktury danych jest jej implementacja. Ale … w takim razie dowód poprawności algorytmu dotyczyć będzie tej tylko implementacji struktury i każda zmiana wymagać będzie nowego dowodu. Jednakże przy dowodzeniu poprawności programu, korzystamy raczej z własności operacji i relacji struktury a nie z konkretnych detali implementacji! Na ogól nie jest ważne jak zaimplementowano np. Drzewo. Istotny jest raczej fakt, że rozważana struktura rzeczywiście jest grafem bez pętli a operacje na niej zachowują się tak jak to ma miejsce w drzewie.

4 Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych 3 Co to jest specyfikacja struktury danych? Definicja Powiemy, że dana jest specyfikacja struktury danych M, jeżeli dany jest zbiór formuł X charakteryzujących własności funkcji, relacji i elementów uniwersum tej struktury, tzn. M |= X. Przykład 10/1 sygnatura f : U U g : U x U U r : U x U B 0 c U własności x r y f(x) r f(y) g(f(x),y) r f(g(x),y)) Przyjmijmy dodatkowo dla wszystkich x, y,z : f( x) = c g(c,x) r x U= N x r x (x r y y r x) ((x r y y r z) x r z)

5 Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych 4 Przykład 10/2 Arytmetyka Specyfikacja AR:N = s : N N 0 N s(x) = s(x) s(x) = 0 s(x) = s(y) x = y x=0 while x=y do x := s(x) od true s jest funkcją całkowitą, jest określona dla wszystkich x funkcja s nie przyjmuje wartości 0 s jest funkcją różnowartościową Każdą liczbę naturalną y można otrzymać z zera przez skończoną liczbę operacji następnika. Nie każdą strukturę można tak dobrze wyspecyfikować! Specyfikacja Arytmetyki AR jest kategoryczna. Definicja Powiemy, że specyfikacja X jest kategoryczna, jeżeli jest niesprzeczna i każde dwa jej modele są izomorficzne.

6 Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych 5 Przykład 10/3 Stosy Standardową strukturą stosów nazywamy dwusortowy system algebraiczny, w którym E est niepustym zbiorem elementów, a S jest zbiorem (stosów) ciągów skończonych o elementach z E, push jest dwuargumentową operacją, push : S E S pop, top są jednoargumentowymi operacjami w S, pop : S S, top : S E, empty jest relacją jednoargumentową, empty S = jest relacją binarną w S oraz dla dowolnego ciągu s=(e 1,e 2,…,e n ), push(s,e) = (e 1,e 2,…,e n,e) pop(s) = (e 1,e 2,…e n-1 ) top(s)= e n, gdy n>0 push(s,e) = (e) pop(s), top(s) jest nieokreślone, gdy n=0.

7 Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych 6 Przykładowe implementacje e2 poprz. e1 poprz. e3 poprz. s : top Lista Dynamiczna e1e2e3e4 top Tablica top e5 Przykład (*) M= top(x) = entier(10*x), gdy x 0 top(x) nieokr., gdy x=0 pop(x) = 10*x - top(x) dla x 0 pop(x) nieokr., gdy x=0 push(x,i) = (i+x)/10 empty(x) wttw x=0 np.: AX

8 Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych 7 A czy tak też można zaimplementować stos? Przykład 10/4 M = gdzie push(n,i) = (n*10 + 1) + i pop(n) = (n-1) div 10, gdy n>0 pop(n) nieokr., gdy n=0 top(n) = (n-1) mod 10, gdy n>0 top(n) nieokr., gdy n=0 empty(n) wttw n= Stos pusty

9 Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych 8 Specyfikacja struktury stosów empty(push(s,e)) top(push(s,e)) = e empty(s) push(pop(s),top(s)) = s pop(push(s,e)) = s while empty(s) do s := pop(s) od true s1= s2 wttw P(bool empty(s1) empy(s2)) gdzie P :begin bool := true; while empty(s1) empty(s2) bool do bool := top(s1) = top(s2); s1 := pop(s1); s2 := pop(s2) od end Jeśli do stosu włożymy jakiś element to stos nie jest pusty. Ostatnio włożony element jest na szczycie stosu Jeśli najpierw włożymy a potem usuniemy element ze stosu, to stos pozostanie niezmieniony. Każdy stos zawiera tylko skończoną liczbę elementów. Stosy są równe gdy zawierają ten sam ciąg elementów ?R

10 Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych 9 Każdy model specyfikacji stosów jest izomorficzny z pewnym modelem standardowym. Niech K będzie pewną klasą struktur podobnych (tzn. o tej samej sygnaturze). Powiemy, że zbiór formuł X jest zupełną specyfikacją klasy K wttw każda struktura klasy K jest modelem zbioru X i każdy model zbioru X należy do klasy K, tzn. K|= X i ( M) M|= X M K. Zbiór formuł AxS jest zupełną specyfikacją klasy standardowych struktur stosów zamkniętej ze względu na izomorfizm. Przypomnienie Dwie struktury danych podobne A= B= są izomorficzne wttw istnieje wzajemnie jednoznaczna funkcja h: A B taka, że h(f(a 1,…,a n ))= f*(h(a 1 ),…,h(a n )) r(a 1,…,a m ) wttw r*(h(a 1 ),…,h(a m )) dla wszystkich funkcji f i relacji r struktury A i dla dowolnych argumentów a i ze zbioru A.

11 Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych 10 Abstrakcyjna struktura stosów Można zatem uważać, że AxS stanowi definicję abstrakcyjnej struktury stosów. Czy struktury z poprzednich przykładów są więc stostami?

12 Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych 11 Kolejki n Pierwszy element kolejki Ostatni element kolejki Standardowa struktura kolejek Q(E) = dla dowolnego q=(e 1,e 2,…,e n ) first(q) = e 1 gdy n>0, nieokreślone dla n=0 in(q,e) = (e 1,e 2,…,e n, e) out(q) = (e 2,e 3,…,e n ), gdy n>0, nieokr., gdy n=0 empty(q) wttw n=0 in włóż element do kolejki out Usuń jeden el. z kolejki Podaj pierwszy el. kolejki first

13 Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych 12 Specyfikacja struktury kolejek empty(in(q,e)) empty(q) first(in(q,e)) = first(q) empty(q) first(in(q,e)) = e empty(q) in(out(q),e) = out(in(q,e)) empty(q) q =out(in(q,e)) while empty(q) do q := out(q) od true q1= q2 wttw P(bool empty(q1) empy(q2)) gdzie P :begin bool := true; while empty(q1) empty(q2) bool do bool := first(q1) = first(q2); q1 := out(q1); q2 := out(q2) od end Jeśli do kolejki włożymy jakiś element to kolejka nie jest pusta. Pierwszy element kolejki nie zmienia się, gdy włożymy do niepustej kolejki nowy element. Operacje wkładania i usuwania są przemienne dla niepustych kolejek Każda kolejka zawiera tylko skończoną liczbę elementów. kolejki są równe, gdy zawierają te same ciągi elementów

14 Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych 13 Rezultaty Zbiór formuł AxQ jest niesprzeczny. Każda struktura standardowa kolejek jest modelem zbioru AxQ. Każdy model zbioru formuł AxQ jest izomorficzny z pewnym modelem standardowym kolejek. Dokładniej, z modelem standardowym zdeterminowanym przez ten sam zbiór elementów. Można więc przyjąć definicję: abstrakcyjna kolejka, to dowolna struktura, która jest modelem zbioru AxQ.

15 Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych 14 Klasa struktur danych K Klasa struktur danych K Klasa modeli zbioru formuł X Klasa modeli zbioru formuł X Klasa struktur danych K Klasa modeli zb X Klasa struktur danych K Klasa modeli zbioru formuł X Formuły nie wyrażają własności klasy rozważanych struktur Niektóre wasności struktur nie zostały scharakteryzowane Pełna zgodność własności struktur i specyfikacji. Pewne struktury nie spełniają własności wymienionych w X i pewne własności nie są spełnione przez żadną strukturę klasy K.


Pobierz ppt "Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych 1 Wykład 10 Metody Analizy Programów Specyfikacja Struktur Danych Grażyna Mirkowska PJWSTK,"

Podobne prezentacje


Reklamy Google