1 Struktury danych. 2 Using Data Structures u Records u Lists u Association Lists u Binary Trees u Hierarchical Modelling u Tree Layout.

Slides:



Advertisements
Podobne prezentacje
ALGORYTMY I STRUKTURY DANYCH
Advertisements

Połączenia oporników a. Połączenie szeregowe: R1 R2 Rn i U1 U2 Un U.
I część 1.
Klasyfikacja roczna w roku szkolnym 2012/2013
Wstawianie i wyszukiwanie kluczy w tablicach i drzewach binarnych
STRUKTURY DANYCH.
Reinhard Kulessa1 Wykład Środek masy Zderzenia w układzie środka masy Sprężyste zderzenie centralne cząstek poruszających się c.d.
Obserwowalność System ciągły System dyskretny
Przetwarzanie i rozpoznawanie obrazów
WYKŁAD 6 ATOM WODORU W MECHANICE KWANTOWEJ (równanie Schrődingera dla atomu wodoru, separacja zmiennych, stan podstawowy 1s, stany wzbudzone 2s i 2p,
Ludwik Antal - Numeryczna analiza pól elektromagnetycznych –W10
TERMO-SPRĘŻYSTO-PLASTYCZNY MODEL MATERIAŁU
Bazy danych II Instrukcja SELECT Piotr Górczyński 25/08/2001.
Liczby pierwsze.
DZIAŁANIA NA LICZBACH NATURALNYCH
1 mgr inż. Sylwester Laskowski Opiekun Naukowy: prof. dr hab. inż. Andrzej P. Wierzbicki.
Łączenie rezystorów Rezystory połączone szeregowo R1 R2 R3 RN
Zamiana GWIAZDA-TRÓJKĄT
Twierdzenie Thevenina-Nortona
Elementarne struktury danych Piotr Prokopowicz
MS Access 2000 Kwerendy Piotr Górczyński 25/08/2001.
MS Access 2000 Normalizacja Paweł Górczyński 2005.
WIELOMIANY HARALD KAJZER ZST NR 2 HARALD KAJZER ZST NR 2.
Wykład 2: Upraszczanie, optymalizacja i implikacja
1 Rozdział 1: Więzy Czym są więzy i do czego służą.
Wzory ułatwiające obliczenia
UKŁADY SZEREGOWO-RÓWNOLEGŁE
Jaki jest następny wyraz ciągu: 1, 2, 4, 8, 16, …?
Klasyfikacja systemów
Transformacja Z (13.6).
Równania i Nierówności czyli:
Kolejność wykonywania działań
Jak wypadliśmy na maturze z matematyki w 2010 roku?
Matematyka.
Teoria sterowania Wykład 3
Automatyka Wykład 3 Modele matematyczne (opis matematyczny) liniowych jednowymiarowych (o jednym wejściu i jednym wyjściu) obiektów, elementów i układów.
O relacjach i algorytmach
Technika Mikroprocesorowa 1
Technika Mikroprocesorowa 1
Algorytmy i struktury danych
Synteza układów sekwencyjnych z (wbudowanymi) pamięciami ROM
Wyrażenia algebraiczne
Raport z badań termowizyjnych – RECTICEL Rys. 1a. Rozdzielnia RS14 Temperatura maksymalna 35,27 o C Rys. 1b. Rozdzielnia RS14 (wizyjny) 3.
Rezystancja zastępcza, połączenie trójkąt-gwiazda
ŻYWE JĘZYKI PROGRAMOWANIA LIVING IT UP WITH A LIVE PROGRAMMING LANGUAGE Sean McDirmid Ecole Polytechnique Fédérale de Lausanne (EPFL)
Analiza wpływu regulatora na jakość regulacji (1)
Analiza wpływu regulatora na jakość regulacji
Modelowanie i Identyfikacja 2011/2012 Metoda propagacji wstecznej Dr hab. inż. Kazimierz Duzinkiewicz, Katedra Inżynierii Systemów Sterowania 1 Warstwowe.
Podstawy automatyki 2011/2012Systemy sterowania - struktury –jakość sterowania Mieczysław Brdyś, prof. dr hab. inż.; Kazimierz Duzinkiewicz, dr hab. inż.
Wykład 22 Modele dyskretne obiektów.
Lekcja 13 Strona 15. Lekcja 13 Strona 16 Lekcja 13 Strona 17 Vertical primary and secondary Tesla coil Jacobs ladder.
MATURA 2007 raport ZESPÓŁ SZKÓŁ I PLACÓWEK KSZTAŁCENIA ZAWODOWEGO.
1. ŁATWOŚĆ ZADANIA (umiejętności) 2. ŁATWOŚĆ ZESTAWU ZADAŃ (ARKUSZA)
Układ trójkąt - gwiazda
(C) Jarosław Jabłonka, ATH, 5 kwietnia kwietnia 2017
EcoCondens Kompakt BBK 7-22 E.
W2 Modelowanie fenomenologiczne I
User experience studio Użyteczna biblioteka Teraźniejszość i przyszłość informacji naukowej.
Obliczalność czyli co da się policzyć i jak Model obliczeń sieci liczące dr Kamila Barylska.
Jak Jaś parował skarpetki Andrzej Majkowski 1 informatyka +
Dr hab. Renata Babińska- Górecka
przedmiot i metody analizy
Systemy dynamiczne 2014/2015Obserwowalno ść i odtwarzalno ść  Kazimierz Duzinkiewicz, dr hab. in ż. Katedra In ż ynierii Systemów Sterowania 1 Obserwowalność.
Wyznaczniki, równania liniowe, przestrzenie liniowe Algebra 1
Obwody elektryczne - podstawowe prawa
567.Jakie prądy płyną przez poszczególne opory na schemacie poniżej, jeśli R 1 =3 , R 2 =7 , R 3 =20 , U=20V, a galwanometr wskazuje i G =0? B R1R1.
Kalendarz 2020.
Ankieta dotycząca kart bankomatowych i kont bankowych.
Elementy geometryczne i relacje
ALGORYTMY I STRUKTURY DANYCH
Zapis prezentacji:

1 Struktury danych

2 Using Data Structures u Records u Lists u Association Lists u Binary Trees u Hierarchical Modelling u Tree Layout

3 Rekordy u najprostszą strukturą danych jest rekord u rekord tworzy jedną paczkę z różnych elementów, często różnego typu u np. date(3, feb, 1997) u np. liczba zespolona X + Yi może być zapisana jako rekord c(X, Y)

4 Liczby zespolone Liczba zespolona X + Yi jest reprezentowana jako c(X,Y) Predykaty dla dodawania i mnożenia c_add(c(R1,I1), c(R2,I2), c(R3,I3)) :- R3 = R1 + R2, I3 = I1 + I2. c_mult(c(R1,I1), c(R2,I2), c(R3,I3)) :- R3 = R1*R2 - I1*I2, I3 = R1*I2 + R2*I1. Mogą być używane do odejmowania/dzielenia

5 Przykład dodawanie 1+3i do 2+Yi Po uproszczeniu wzgl C3 i Y otrzymujemy

6 Rekordy u Za pomocą równań na termach można u tworzyć rekordC3 = c(R3, I3) u uzyskać dostęp do pola C2 = c(R2, I2) u underscore _ opisuje zmienną anonimową, każde jej wystąpienie jest inne. Przydaje się do dostępu do pól u D = date(_, M, _)

7 Listy u W liście zapisuje się pewną ilość obiektów tego samego typu. u Lista pusta [](list) u konstruktor listowy.(item x list -> list) u specjalna notacja:

8 Programowanie z listami u Dwie formy listy L u lista pusta L = [] u lista niepusta L = [F|R] u Połączenie L1 i L2 daje L3 u L1 jest pusta, L3 to L2 u L1 to [F|R], jeśli Z to R połączone z L2 to L3 = [F|Z] append([], L2, L2). append([F|R], L2, [F|Z]) :- append(R,L2,Z).

9 Konkatenacja append([], L2, L2). append([F|R], L2, [F|Z]) :- append(R,L2,Z). Łączenie list append([1,2],[3,4],L) odpowiedź L = [1,2,3,4] rozdzielanie list append(X,Y,[1,2]) odp X=[]/\Y=[1,2],X=[1]/\Y=[2],X=[1,2 ]/\Y=[] Czy istnieje lista równa sobie + [1]? append(L,[1],L) daje nieskończone obliczenia!

10 Alldifferent Możemy zaprogramować alldifferent używając nierówności alldifferent_neq([]). alldifferent_neq([Y|Ys]) :- not_member(Y,Ys), alldifferent_neq(Ys). not_member(_, []). not_member(X, [Y|Ys]) :- X != Y, not_member(X, Ys). The goal alldifferent_neq([A,B,C]) has one solution

11 Tablice u Można reprezentować tablice jako listy list u opis metalowej tablicy 6 x 7 ze 100C na górnym z ze 0C na innych brzegach [[0, 100, 100, 100, 100, 100, 0], [0, _, _, _, _, _, 0], [0, 0, 0, 0, 0, 0, 0]]

12 Tablice. Przykład u W rozgrzanej tablicy metalowej każdy punkt ma temperaturę równą średniej temperaturze sąsiadów rows([_,_]). rows([R1,R2,R3|Rs]) :- cols(R1,R2,R3), rows([R2,R3|Rs]). cols([_,_], [_,_], [_,_]). cols([TL,T,TR|Ts],[L,M,R|Ms],[BL,B,BR|Bs]):- M = (T + L + R + B)/4, cols([T,TR|Ts],[M,R|Ms],[B,BR|Bs]).

13 Tablice. Przykład  Po zapytaniu rows( plate ) otrzymujemy plate równe [[0, 100, 100, 100, 100, 100, 0], [0, 46.6, 62.5, 66.4, 62.5, 46.6, 0], [0, 24.0, 36.9, 40.8, 36.9, 24.0, 0], [0, 12.4, 20.3, 22.9, 20.3, 12.4, 0], [0, 5.3, 9.0, 10.2, 9.0, 5.3, 0], [0, 0, 0, 0, 0, 0, 0]]

14 Listy skojarzeń u lista par jest listą skojarzeń u dostęp do pary za pomocą połówki informacji u np.. Książka telefoniczna [p(peter, ), p(kim, ), p(nicole, )] u nazwiemy ją phonelist

15 Należenie do listy member(X, [X|_]). member(X, [_|R]) :- member(X, R). X należy do listy jeżeli jest jej pierwszym elementem, lub należy do jej ogona Możemy znaleźć telefon do Kima member(p(kim,N), phonelist ) Unikalna odpowiedź: N =

16 Przykład

17 Typ abstrakcyjny: słownik lookup informacja skojarzona z kluczem newdic buduje pustą listę skojarzeń add key oraz informacje delete key oraz informacje lookup(D,Key,Info):-member(p(Key,Info),D). newdic([]). addkey(D0,K,I,D) :- D = [p(K,I)|D0]. delkey([],_,[]). delkey([p(K,_)|D],K,D). delkey([p(K0,I)|D0],K,[p(K0,I)|D]) :- K != K0, delkey(D0,K,D).

18 Modelowanie grafu u Możemy myśleć o grafie skierowanym jako o liście par złożonych z węzła i listy jego sąsiadów [p(fn,[]), p(iw,[fn]), p(ch,[fn]), p(ew,[fn]), p(rf,[ew]), p(wd,[ew]), p(tl,[ch,rf]), p(dr,[iw])] graf ten nazwiemy house

19 Znajdywanie poprzedników Poprzednicy węzła to jego bezpośredni poprzednicy oraz ich poprzednicy predecessors(N,D,P) :- lookup(D,N,NP), list_predecessors(NP,D,LP), list_append([NP|LP],P). list_predecessors([],_,[]). list_predecessors([N|Ns],D,[NP|NPs]) :- predecessors(N,D,NP), list_predecessors(Ns,D,NPs).

20 Znajdywanie poprzedników list_append([],[]). list_append([L|Ls],All) :- list_append(Ls,A), append(L,A,All). Łączy listę list w jedną listę. Możemy określić poprzedników (tl) używając: predecessors(tl, house, Pre) Odpowiedź to Pre = [ch, rf, fn, ew, fn] Dwa ray znaleźliśmy fn

21 Akumulacja u Używanie odpowiedzi policzonej do tej pory w celu przyśpieszenia obliczeń u Zamiast jednego argumentu 2: odpowiedź do tej pory i odpowiedź ostateczna u To jest accumulator pair

22 Znajdywanie poprzedników u Lepsza metoda. predecessors(N,D,P0,P) :- lookup(D,N,NP), cumul_predecessors(NP,D,P0,P). cumul_predecessors([],_,P,P). cumul_predecessors([N|Ns],D,P0,P) :- member(N,P0), cumul_predecessors(Ns,D,P0,P). cumul_predecessors([N|Ns],D,P0,P) :- not_member(N,P0), predecessors(N,D,[N|P0],P1), cumul_predecessors(Ns,D,P1,P).

23 Drzewa binarne u drzewo puste: null u niepuste: node(t1, i, t2) gdzie t1 i t2 to drzewa, natomiast i to zapamiętany w węźle element danych u programy zgodne z wzorcem (tak, jak dla list) u klauzula dla pustego drzewa u klauzula rekurencyjna dla niepustego

24 Drzewa binarne node(node(null,p(k,282),null),p(n,282),node(null,p(p,616),null)) Drzewo binarne z tą samą infornacją co phonelist. Nazywamy je ptree.

25 Drzewa binarne traverse(null,[]). traverse(node(T1,I,T2),L) :- traverse(T1,L1), traverse(T2,L2), append(L1,[I|L2],L). Program przeglądający drzewo binarne i zbierający elementy traverse( ptree,L) daje jedną odpowiedź L = [p(k,282),p(n,282),p(p,616)]

26 drzewa przeszukiwań binarnych u binary search tree (BST): Drzewo pb; porządek na elementach taki, że dla każdego węzła node(t1,i,t2), każdy element w t1 jest mniejszy niż i oraz każdy element w t2 jest większy niz i u poprzedni przykład to bst u daje implementację słownika

27 drzewa przeszukiwań binarnych find(node(_,I,_),E) :- E = I. find(node(L,I,_),E):-less_than(E,I),find(L,E). find(node(_,I,R),E):-less_than(I,E),find(R,E). Szukanie elementu w drzewie bst less_than(p(k,_),p(n,_)). less_than(p(k,_),p(p,_)). less_than(p(n,_),p(p,_)). Weźmy zapytanie find( ptree, p(k,N))z poniższą definicją less_than

28 drzewa przeszukiwań binarnych Efektywny słownik: wyszukiwanie, kasowanie i dodawanie w średnim czasie logarytmicznym

29 Modelowanie hierarchiczne u Często problemy mają hierarchiczną naturę u Złożone obiekty są kolekcjami obiektów prostszych u modelowanie powinno odzwierciedlać hierarchiczną naturę problemu

30 Modelowanie hierarch. Przykład u ciągłe układy RLC u sinusoidalne napięcie i natężenie wyrażane za pomocą liczb zespolonychs: u każdy element układu ma stowarzyszone I oraz V: u układy powstają z łączenia komponentów

31 Modelowanie hierarch. Przykład u Napięcie i natężenie to liczby zespolone: V = c(X,Y) u Elementy układu to drzewa z wartościami par. komponetów: E = resistor(100), E = capacitor(0.1), E = inductor(2) u Więzy to kombinacje lub pojedyńcze elementy: C = parallel(E1,E2), C = series(E1,E2), C = E

32 Modelowanie hierarch. Przykład. resistor(R,V,I,_) :- c_mult(I,c(R,0),V). inductor(L,V,I,W) :- c_mult(c(0,W*L),I,V). capacitor(C,V,I,W) :- c_mult(c(0,W*C),V,I). circ(resistor(R),V,I,W):-resistor(R,V,I,W). circ(inductor(L),V,I,W):-inductor(L,V,I,W). circ(capacitor(C),V,I,W):-capacitor(C,V,I,W). circ(parallel(C1,C2),V,I,W) :-c_add(I1,I2,I), circ(C1,V,I1,W),circ(C2,V,I2,W). circ(series(C1,C2),V,I,W) :- c_add(V1,V2,V), circ(C1,V1,I,W),circ(C2,V2,I,W).

33 Modelowanie hierarch. Przykład Zapytanie circ(series(parallel(resistor(100),capacitor(0.0001)), parallel(inductor(2),resistor(50))),V,I,60). Daje odpowiedź I=c(_t23,_t24) V=c(-103.8*_t *_t23,52.7*_t *_t23)

34 Wygląd drzewa u Drzewa rysowane za pomocą więzów (trudno ręcznie) u Drzewa na tym samym poziomie wyrównywane horyzontalnie u Rożne poziomy oddzielone o co najmniej 10 u Minimalna przerwa pomiędzy węzłami na tym samym poziomie wynosi 10 u Rodzic jest powyżej i pośrodku swoich dzieci u Minimalna szerokość drzewa

35 Wygląd drzewa u Można napisać program CLP, który mając zadane drzewo próbuje je narysować spełniając zadane więzy u lista skojarzeń łączy węzeł ze współrzędnymi u predykaty do tworzenia więzów u predykaty do obliczania wysokości u zapytanie minimalizujące

36 Wygląd drzewa node(node(node(node(null,kangaroo,null),marsupial,node(null,ko ala,null)),mammal,node(null,monotreme,node(null,platypus,null) )),animal,node(node(node(null,cockatoo,null),parrot(node(null,lo rikeet,null)),bird,node(null,raptor,node(null,eagle,null))))

37 Data Structures Summary u Tree constraints provide data structures u accessing and building in the same manner u Records, lists and trees are straightforward u Programs reflect the form of the data struct. u Association lists are useful data structure for attaching information to objects u Hierarchical modelling