Wykład 10 Metody Analizy Programów Specyfikacja Struktur Danych

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

II Relacje i relacje równoważności
Algorytmy – c.d. złożoność algorytmów struktury danych
Algorytmy – c.d. struktury danych złożoność algorytmów
Zaawansowane techniki algorytmiczne
Grażyna Mirkowska PJWSTK, 10 stycznia 2001
RACHUNEK ZDAŃ.
11. Różniczkowanie funkcji złożonej
Dynamiczne struktury danych Listy, Kolejki, Stosy
METODY ANALIZY PROGRAMÓW
Grażyna Mirkowska PJWSTK 15 listopad 2000
Metody Analizy Programów Wykład 02
Wykład 06 Metody Analizy Programów System Hoare
VI Rachunek predykatów
Badania operacyjne. Wykład 2
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Matematyka Dyskretna, G.Mirkowska, PJWSTK
ALGORYTMY I STRUKTURY DANYCH
Elementarne struktury danych Piotr Prokopowicz
Współprogramy II W tym wykładzie pogłębimy naszą znajomość z współprogramami. Omówimy współpracę procedur rekurencyjnych i współprogramów, wprowadzimy.
Metoda pierwszeństwa operatorów
pseudokody algorytmów
Liczby Pierwsze - algorytmy
ALGEBRA ZBIORÓW.
ZŁOŻONOŚĆ OBLICZENIOWA
ALGORYTMY GEOMETRYCZNE.
WYKŁAD 7. Spójność i rozpięte drzewa
GRAFY PLANARNE To grafy, które można narysować na płaszczyźnie tak, by krawędzie nie przecinały się (poza swoimi końcami). Na przykład K_4, ale nie K_5.
ALGORYTMY I STRUKTURY DANYCH
Materiały pomocnicze do wykładu
Materiały pomocnicze do wykładu
Matematyka Dyskretna, Moce zbiorów G.Mirkowska, PJWSTK
Matematyka Dyskretna, Struktury algebraiczne G.Mirkowska, PJWSTK
12 grudnia 2001Matematyka Dyskretna, Elementy Kombinatoryki G.Mirkowska, PJWSTK 1 Wykład 11 Elementy Kombinatoryki.
Elementy Kombinatoryki (c.d.)
Odkrywanie wzorców sekwencji
Macierz incydencji Macierzą incydencji grafu skierowanego D = (V, A), gdzie V = {1, ..., n} oraz A = {a1, ..., am}, nazywamy macierz I(D) = [aij]i=1,...,n,
Analiza kosztu zamortyzowanego
8. LOGIKA TEMPORALNA Składnia zdaniowej logiki temporalnej:
ALGORYTMY I STRUKTURY DANYCH
Matematyka Dyskretna, G.Mirkowska PJWSTK
WYKŁAD 7. Spójność i rozpięte drzewa Graf jest spójny, gdy dla każdego podziału V na dwa rozłączne podzbiory A i B istnieje krawędź z A do B. Definicja.
Matematyka.
POJĘCIE ALGORYTMU Pojęcie algorytmu Etapy rozwiązywania zadań
Podstawy programowania II
Operacje na strukturach listowych
Listy, stosy i kolejki..
Rodzaje, przechodzenie grafu
Podstawy analizy matematycznej I
II. Matematyczne podstawy MK
Rachunki Gentzena Joanna Witoch.
Model relacyjny.
Sterowanie – metody alokacji biegunów II
Informatyka MZT1 Wykład 6 Iteracje while i repeat Tablice Rekordy
ZWIĄZKI MIĘDZY KLASAMI KLASY ABSTRAKCYJNE OGRANICZENIA INTERFEJSY SZABLONY safa Michał Telus.
Dynamiczne struktury danych
Algorytmy i Struktury Danych
WYKŁAD 06 Programowanie dynamiczne Grażyna Mirkowska.
Systemy wspomagające dowodzenie twierdzeń
ALGORYTMY I STRUKTURY DANYCH
STOS. STL (ang. Standard Template Library) jest to biblioteka zawierająca algorytmy, pojemniki, iteratory oraz inne konstrukcje w formie szablonów, gotowe.
Pojęcia podstawowe c.d. Rachunek podziałów Elementy teorii grafów
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

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

Po co i jak specyfikować ? 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? 1 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. 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. 5 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. 3 Jednakże przy dowodzeniu poprawności programu, korzystamy raczej z własności operacji i relacji struktury a nie z konkretnych detali implementacji! 4 Niektórzy mówią, że najlepszą specyfikacją struktury danych jest jej implementacja. 2 Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych

Co to jest specyfikacja struktury danych? Przykład 10/1 < U; f, g, c , r > sygnatura f : U  U g : U x U  U r : U x U  B0 c  U ----------------------------- własności x r y  f(x) r f(y) g(f(x),y) r f(g(x),y)) 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. Ale czy to wystarczy? Jak dużo formuł trzeba dodać aby mieć pewność, o jaką strukturę chodzi? 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) Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych

Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych Specyfikacja Arytmetyki AR jest kategoryczna . Twierdzenie Przykład 10/2 Arytmetyka Specyfikacja AR: N = < N; s, 0, = > 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. Definicja Powiemy, że specyfikacja X jest kategoryczna, jeżeli jest niesprzeczna i każde dwa jej modele są izomorficzne. Definicja Ale... Nie każdą strukturę można tak dobrze wyspecyfikować! Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych

Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych Przykład 10/3 Stosy Definicja Standardową strukturą stosów nazywamy dwusortowy system algebraiczny < S + E; push, pop, top, empty, = >, 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=(e1,e2,…,en) , push(s,e) = (e1,e2,…,en,e) pop(s) = (e1,e2,…e n-1) top(s)= en , gdy n>0 push(s,e) = (e) pop(s), top(s) jest nieokreślone, gdy n=0. Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych

Przykładowe implementacje M= <{0,1, …9}+ [0,1); push, pop, top, empty, = > 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.: 0.1346 ? Lista Dynamiczna e3 poprz. top s : top e2 poprz. e1 e2 e3 e4 top Tablica e1 poprz. e5 AX Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych

A czy tak też można zaimplementować stos? Przykład 10/4 M = <{0,1,…9} + N; push, pop, top, empty, = > 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=0 1598 2001 7 8 9 4 8 1 5 3 8 Stos pusty 2 26 264 2649 Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych

Specyfikacja struktury stosów AxS Specyfikacja struktury stosów Jeśli do stosu włożymy jakiś element to stos nie jest pusty. 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 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 Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych

Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych Twierdzenie o reprezentacji Każdy model specyfikacji stosów jest izomorficzny z pewnym modelem standardowym. Zbiór formuł AxS jest zupełną specyfikacją klasy standardowych struktur stosów zamkniętej ze względu na izomorfizm. Twierdzenie 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. Definicja Przypomnienie Dwie struktury danych podobne A= <A;(fi)iI, (rj)j  J> B= <A;(f*i)iI, (r*j)j  J> są izomorficzne wttw istnieje wzajemnie jednoznaczna funkcja h: A B taka, że h(f(a1,…,an))= f*(h(a1),…,h(an)) r(a1,…,am) wttw r*(h(a1),…,h(am)) dla wszystkich funkcji f i relacji r struktury A i dla dowolnych argumentów ai ze zbioru A. Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych

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

Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych Kolejki Jakie własności są charakterystyczne dla tej struktury? 1 2 3 Pierwszy element kolejki 4 . . . n Ostatni element kolejki in włóż element do kolejki Standardowa struktura kolejek Q(E) = <E +E*; in out, first, empty, = > dla dowolnego q=(e1,e2,…,en) first(q) = e1 gdy n>0 , nieokreślone dla n=0 in(q,e) = (e1,e2,…,en, e) out(q) = (e2,e3,…,en), gdy n>0, nieokr., gdy n=0 empty(q) wttw n=0 out Usuń jeden el. z kolejki Podaj pierwszy el. kolejki first Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych

Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych AxQ Specyfikacja struktury kolejek Jeśli do kolejki włożymy jakiś element to kolejka nie jest pusta.  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 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 Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych

Twierdzenie Twierdzenie o reprezentacji Rezultaty Każda struktura standardowa kolejek jest modelem zbioru AxQ. Twierdzenie Zbiór formuł AxQ jest niesprzeczny. Można więc przyjąć definicję: abstrakcyjna kolejka, to dowolna struktura, która 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. Twierdzenie o reprezentacji Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych

Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych Klasa struktur danych K Klasa modeli zbioru formuł X Klasa struktur danych K Klasa modeli zb X Formuły nie wyrażają własności klasy rozważanych struktur Niektóre wasności struktur nie zostały scharakteryzowane Klasa modeli zbioru formuł X Klasa struktur danych K Klasa modeli zbioru formuł X Klasa struktur danych K 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. Pełna zgodność własności struktur i specyfikacji. Wyklad 10 Metody Analizy Programow Specyfikacja Struktur Danych