1 / 15

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH. WYKŁAD 07 Kolejki, listy, stosy Grażyna Mirkowska PJWSTK, semestr zimowy 2002/2003. Plan wykładu. Kolejki Specyfikacja implementacja Listy Przykłady zastosowań Sito Obliczanie wartości wyrażeń.

Download Presentation

ALGORYTMY I STRUKTURY DANYCH

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. ALGORYTMY I STRUKTURY DANYCH WYKŁAD 07 Kolejki, listy, stosy Grażyna Mirkowska PJWSTK, semestr zimowy 2002/2003

  2. Plan wykładu • Kolejki • Specyfikacja • implementacja • Listy • Przykłady zastosowań • Sito • Obliczanie wartości wyrażeń MOTTOStruktury danych modyfikują świat, w którym realizowany jest algorytm, usprawniają działanie, ułatwiają zrozumienie algorytmu. G. Mirkowska, ASD_07 Kolejki, listy, stosy

  3. Koniec kolejki Początek kolejki Abstrakcyjna struktura kolejek Zasada -- FIFO pokaz Standardowa struktura kolejek First(e1,...en) = e1 , gdy n>0 i nieokr. w p.p. In((e1,...,en),e) = (e1,e2,...,en,e) Out(e1,...en) = (e2,...,en) , gdy n>0 i nieokr. w p.p. Empty(e) wttw e jest ciągiem pustym G. Mirkowska, ASD_07 Kolejki, listy, stosy

  4. Specyfikacja kolejek FIFO Q =  E  Q , in, out, first, empty, =  empty(q)  out(in(e,q)) = q in : E  Q  Qout : Q  Qfirst Q  Eempty : Q  Bo empty(q)  first(in(e,q)) = e Własności kolejek empty(in(e,q)) empty(q)  first(in(e,q)) = first(q) Sygnatura empty(q)  in(e,out(q)) = out(in(e,q)) G. Mirkowska, ASD_07 Kolejki, listy, stosy

  5. Specyfikacja kolejek FIFO Q =  E  Q , in, out, first, empty, =  in : E  Q  Qout : Q  Qfirst : Q  Eempty : Q  Bo while empty(q) do q := out(q) od ten programnie zapętla się Własności Algorytmiczne P = {b:=true; while (empty(q)empty(q’)  b) do b := (first(q)=first(q’)); q := out(q); q’:= out(q’) ; od } q =q’ wttw Po wykonaniu programu P spełniony jest warunek(empty(q) empty(q’)  b) G. Mirkowska, ASD_07 Kolejki, listy, stosy

  6. e1 e2 e3 en ... Początek Koniec Impelementacja kolejek Public class ogniwo (int e){ ogniwo next; ........} Public kolejka in (int e; kolejka q){ o = New ogniwo(e); o. next = null; if (q=null) {q = New kolejka(); q.początek = o;} else q.koniec.next = o; q.koniec = o; return q} Public class kolejka( ){ ogniwo poczatek; ogniwo koniec; ..................... } Koszty operacji ! G. Mirkowska, ASD_07 Kolejki, listy, stosy

  7. ... Listy Kolejki i Stosy są szczególnymi przykładami struktur listowych. • Operacje na listach • Dostęp do elementu listy • Podlista • Złożenie • wkładanie elementu • Usuwanie elementu Realizacje : - Tablicowa- dowiązaniowa Lista : jednokierunkowa, cykliczna dwukierunkowa Dwukierunkowa cykliczna G. Mirkowska, ASD_07 Kolejki, listy, stosy

  8. Sito Eratostenesa z tablicą { for i := 2 to n do tab[i] := i od; for i := 2 to n do if tab[i] <>0 then for j := i+1 to n do if ( tab[j] mod i = 0) then tab[j] := 0; fi; od; fi od } Tablica wszystkich liczb naturalnych  n Wykreślam z tablicy wszystkie liczby podzielne przez i Niezmiennik Wszystkie elementy tablicy różne od zera na pozycjach < i sąliczbami pierwszymi tab[i] , o ile nie jest zerem, jest liczbą pierwszą G. Mirkowska, ASD_07 Kolejki, listy, stosy

  9. poczatek Wartość=4 Wartość=2 Wartość=3 Wartość=5 next next next next Sito Eratostenesa z listą { poczatek := new ogniwo(2); x := początek; for i := 3 to n do x.next:= new ogniwo(i); x:= x.next; od; x := początek; while x<>null do w:= x.wartość; poprzedni := x; y :=x.next; while y<>null do if ( y.wartość mod w = 0) then poprzedni.next := y.next; else poprzedni := y; fi; y := y.next; od; x:= x.next; od } x poprzedni y Jak to działa? G. Mirkowska, ASD_07 Kolejki, listy, stosy

  10. Sito Eratostenesa z kolejką Znaleźć wszystkie liczby pierwsze  n. { p:= null; wynik := null; for i := 2 to n do p := in(i,p) od; while not empty(p) do i := first(p); wynik := in(i,wynik); p := out(p); q:= null; while not empty(p) do if (first(p) mod i <>0) then q := in(first(p), q) fi; p := out(p) od; p := qod } Kolejka wynik zawiera wszystkie liczby pierwsze < first(p).Kolejka p zawiera liczby n, które nie dzielą się przez x wynik Usuwamy z kolejki p wszystkie liczby podzielne przez i G. Mirkowska, ASD_07 Kolejki, listy, stosy

  11. Obliczanie wartości wyrażeń Zbiorem wyrażeń algebraicznych WA nazywać będziemy najmniejszy zbiór napisów nad alfabetem {x,y,z,u}  {+,* -}  {(,)} taki, że (1) x,y, z, u WA(2) jeśli w1, w2  WA , to (w1+w2) oraz (w1*w2) należą do WA,(3) Jeśli w  WA, to (-w)  WA. Definicja Obliczyć wartość danego wyrażenia algebraicznego. Zadanie Uwagi -założenia : 1. Wyrażenie jest zapisane w tablicy znakowej o elementach s[1],...,s[n].2. Wartości zmiennych są zapisane w obiekcie v, którego atrybutami są x,y,z,u. G. Mirkowska, ASD_07 Kolejki, listy, stosy

  12. y*z -u x x+(y*z) Opis metody Czytamy kolejno znaki wyrażenia i kolejne argumenty operacji wpisujemy na stos argumentów, a kolejno spotkane operacje wpisujemy na stos operacji. Pojawienie się ‘)’ sygnalizuje, że można wykonać ostatnio zapamiętaną operację. Metoda ((x+(y*z))+(-u)) z y u x x+(y*z) x+(y*z)+(-u) Przykład Stos argumentów * - + + + + Stos operacji G. Mirkowska, ASD_07 Kolejki, listy, stosy

  13. i := 1 Schemat blokowy algorytmu i<n+1 s[i] jest operacją tak nie Wpisz s[i] na stos operacji s[i] jest zmienną nie tak s[i] =‘)’ nie tak włóż wartość s[i] na stos argumentów Weź operację o ze stosu Weź ze stosu odpowiednią liczbę argumentów. Oblicz wynik operacji o na tych argumentach. i:=i+1 Usuń ze stosu wykonaną operacje i użyte argumenty Wpisz wynik na stos argumentów G. Mirkowska, ASD_07 Kolejki, listy, stosy

  14. i := 1 i<n+1 A jaki jest koszt ? s[i] jest operacją tak nie Wpisz s[i] na stos operacji OP s[i] jest zmienną nie tak s[i] =‘)’ nie tak włóż wartość s[i] na stos argumentów ARG O := top(OP);OP :=pop(OP);a := top(ARG);ARG := pop(ARG); i:=i+1 O dwuargumentowa nie tak a := O(a) b:= top(ARG);ARG := pop(ARG);a:= O(a,b) G. Mirkowska, ASD_07 Kolejki, listy, stosy ARG:= push(ARG,a)

  15. Zadanie do domu Napisać implementację omówionego algorytmu obliczania wartości wyrażeń arytmetycznych. G. Mirkowska, ASD_07 Kolejki, listy, stosy

More Related