Matematyka Dyskretna. Andrzej Szepietowski. 25 marca 2004 roku

Wielkość: px
Rozpocząć pokaz od strony:

Download "Matematyka Dyskretna. Andrzej Szepietowski. 25 marca 2004 roku"

Transkrypt

1 Matematyka Dyskretna Andrzej Szepietowski 25 marca 2004 roku

2

3 Rozdział 1 Stosy, kolejki i drzewa 1.1 Listy Lista to uporządkowany ciąg elementów. Przykładami list są tablice jednowymiarowe. W tablicach mamy dostęp do dowolnego elementu, poprzez podanie indeksu tego elementu. Przykład 1.1 W języku Pascal przykładem typu tablicy jednowymiarowej jest array[1..n] of integer. Jeżeli mamy zmienną tego typu a:array[1..n] of integer, to tablica a zawiera N elementów a[1], a[2],...,a[n]. W programie możemy odwoływać się do całej tablicy, na przykład w instrukcji przypisania a:=b, lub do pojedynczych elementów: a[i]:=a[i+1]. Możemy także używać tablic dwu lub więcej wymiarowych. Przykładem tablicy dwuwymiarowej jest typ array[1..n,1..m] of real. Zmienna c:array[1..n,1..m] of real zawiera N M elementów. Dla każdej pary liczb i, j spełniajacej warunki 1 i N, 1 j M, element c[i,j] zawiera liczbę typu real. 1.2 Stosy i kolejki Czasami wygodniej posługiwać się listami bez używania indeksów. Przykładami list, których można używać bez konieczności odwoływania się do indeksów poszczególnych ele- 3

4 4 Rozdział 1. Stosy, kolejki i drzewa mentów, są kolejki i stosy. Definicja 1.2 Kolejka jest lista z trzema operacjami: dodawania nowego elementu na koniec kolejki, zdejmowania pierwszego elementu z poczatku kolejki, sprawdzania, czy kolejka jest pusta. Taki sposób dodawania i odejmowania elementów jest określany angielskim skrótem FIFO (first in first out, czyli pierwszy, który wszedł, pierwszy wyjdzie). Przykłady kolejek spotykamy w sklepach, gdzie klienci czekający na obsłużenie tworzą kolejki. Definicja 1.3 Stos jest lista z trzema operacjami: dodawania elementu na wierzch stosu, zdejmowania elementu z wierzchu stosu, sprawdzania, czy stos jest pusty. Na stosie dodajemy i odejmujemy elementy z tego samego końca, podobnie jak w stosie talerzy spiętrzonym na stole. Talerze dokładane są na wierzch stosu i zdejmowane z wierzchu stosu. Taka organizacja obsługi listy określana jest angielskim skrótem LIFO (last in first out, czyli ostatni, który wszedł, pierwszy wyjdzie). Niektórzy w ten sposób organizują pracę na biurku. Przychodzące listy układają na stosie i jak mają czas, to zdejmują jeden list i odpowiadają na niego. Przyjrzyjmy się zastosowaniu kolejki lub stosu do szukania. Przypuśćmy, że szukamy przez telefon pewnej informacji (na przykład chcielibyśmy się dowiedzieć, kto z naszych znajomych ma pewną książkę). Algorytm szukania ksiażki wśród znajomych tworzymy STOS, który na początku jest pusty, wkładamy na STOS numery telefonów swoich znajomych, dopóki na stosie są jakieś numery, powtarzamy: zdejmujemy z wierzchu STOSU jeden numer telefonu, dzwonimy pod ten numer, jeżeli osoba, do której się dodzwoniliśmy, posiada szukaną książkę, to koniec poszukiwań, w przeciwnym przypadku pytamy ją o znajomych, którzy mogą mieć książkę numery tych znajomych są dopisywani na STOS. W powyższym algorytmie zamiast stosu może być użyta kolejka.

5 1.3 Implementacja stosu 1.3. Implementacja stosu 5 W wielu językach programowania stosy i kolejki nie występują jako standardowe struktury danych. W tym i następnym podrozdziale pokażemy jak można je utworzyć za pomocą tablic. Tworzymy tablicę ST OS[0..max] oraz zmienna W ierzchstosu. W tablicy przechowujemy elementy stosu. Element ST OS[0] leży na dnie stosu, a kolejne elementy nad nim. Zmienna W ierzchstosu wskazuje na pierwsze wolne miejsce w tablicy ST OS. W pustym stosie W ierzchstosu = 0. Operacja włożenia nowego elementu x na ST OS implementujemy za pomocą instrukcji: ST OS[W ierzchstosu] := x; W ierzchstosu := W ierzchstosu + 1; Tak skonstruowany stos może pomieścić co najwyżej max + 1 elementów. Jeżeli W ierzchstosu = max + 1, to stos jest pełny i nie można na niego wkładać nowych elementów. Operacja zdejmowania elementu z wierzchu ST OSU implementujemy za pomocą instrukcji: W ierzchstosu := W ierzchstosu 1; x := ST OS[W ierzchstosu]; Operację tą można wykonać, jeżeli stos nie jest pusty, to znaczy jeżeli W ierzchstosu > Implementacja kolejki Kolejkę też można utworzyć za pomocą tablicy. W tym celu deklarujemy tablicę KOLEJKA[0...max] oraz dwie zmienne P oczatekkolejki, KoniecKolejki. W tablicy przechowujemy elementy kolejki. Zmienna P oczatekkolejki wskazuje na pierwsze element kolejki, a zmienna KonieckKolejki na pierwsze wolne miejsce za kolejką. Kolejka jest pusta, jeżeli P oczatekkolejki = KonieckKolejki. Operacja włożenia nowego elementu x do KOLEJKI implementujemy za pomocą dwóch instrukcji: KOLEJKA[KoniecKolejki] := x; KoniecKolejki := KoniecKolejki + 1; Operacja zdejmowania elementu z końca KOLEJKI implementujemy za pomocą instrukcji: x := KOLEJKA[P oczatekkolejki]; P oczatekkolejki := P oczatekkolejki + 1;

6 6 Rozdział 1. Stosy, kolejki i drzewa Ta operacja może być wykonana, jeżeli kolejka nie jest pusta, to znaczy jeżeli P oczatekkolejki KoniecKolejki; Aby lepiej wykorzystać tablicę KOLEJKA, należy zapełniać ją cyklicznie. To znaczy po dojściu do końca (miejsca max 1) dalsze elementy wstawiamy na początek (jeżeli zwolniły się tam miejsca po zdjęciu elementów). Trzeba tylko zadbać, żeby za ostatni elementem w kolejce było przynajmniej jedno wolne miejsce. Operacje na kolejce przedstawiają się teraz następująco: Jeżeli (KoniecKolejki+1) mod (max + 1) = P oczatekkolejki, to KOLEJKA jest pełna. Jeżeli KoniecKolejki = P oczatekkolejki, to KOLEJKA jest pusta. Wstawianie nowego elementu x na koniec kolejki implementujemy za pomocą instrukcji: KOLEJKA[KoniecKolejki] := x; KoniecKolejki := (KoniecKolejki + 1) mod (max + 1); Zdejmowanie ostatniego elementu x z początku kolejki implementujemy za pomocą instrukcji: x := KOLEJKA[P oczatekkolejki]; P oczatekkolejki := (P oczatekkolejki + 1) mod (max + 1); 1.5 Drzewa ukorzenione Przypomnijmy, że drzewo ukorzenione to drzewo z wyróżnionym jednym wierzchołkiem, korzeniem. Każdy wierzchołek v różny od korzenia jest z nim połączony dokładnie jedną drogą prostą. Sąsiad leżący na drodze do korzenia nazywamy ojcem wierzchołka v. Pozastali sąsiedzi są synami wierzchołka v. Korzeń drzewa nie ma ojca, wszyscy jego sąsiedzi są jego synami. Wierzchołek, który nie posiada syna nazywamy liściem. 1.6 Drzewa binarne Drzewa binarne to takie drzewa ukorzenione, w których każdy wierzchołek ma co najwyżej dwóch synów. Do oznaczania wierzchołków w drzewie binarnym wygodnie jest używać ciągów zer i jedynek, czyli elementów zbioru {0, 1}. Wierzchołki drzewa oznaczamy w następujący sposób: korzeń drzewa oznaczamy przez λ pusty ciąg, jeżeli jakiś wierzchołek jest oznaczony przez x, to jego synowie oznaczeni są przez x0 i x1.

7 1.6. Drzewa binarne 7 Rysunek 1.1: Przykład drzewa binarnego λ Przy takim oznaczeniu wierzchołków drzewa binarnego nazwa wierzchołka x mówi nam, jaka ścieżka prowadzi od korzenia do x. Na przykład, aby dojść od korzenia do wierzchołka 110 nalezy: pójść w prawo do 1, potem znowu w prawo do 11, a na końcu w lewo do 110. Jeżeli mamy drzewo binarne T, to z każdym wierzchołkiem x możemy skojarzyć poddrzewo T x złożone z wierzchołka x i wszystkich jego potomków. Na przykład w drzewie przedstawionym na rysunku 1.1 wierzchołek x = 1 wyznacza poddrzewo T x przedstawione na rysunku 1.2. Mówimy też, że drzewo T x składa się z korzenia Rysunek 1.2: Poddrzewo T (wierzchołka x), z lewego poddrzewa T x0 i z prawego poddrzewa T x1. Wysokością drzewa nazywamy długość (liczbę krawędzi) najdłuższej ścieżki w drzewie prowadzącej od korzenia do liścia. Na przykład drzewo z rysunku 1.1 jest wysokości 3.

8 8 Rozdział 1. Stosy, kolejki i drzewa 1.7 Drzewa wyrażeń arytmetycznych Przykładem zastosowania drzew binarnych są drzewa wyrażeń arytmetycznych. Najpierw przykład. Na rysunku 1.3 przedstawiono drzewo wyrażenia 2a+3/d. W drzewie tym każdy wierzchołek ma etykietę. Liście etykietowane są stałymi albo zmiennymi. Wierzchołki nie będące liśćmi etykietowane są operacjami arytmetyczymi. Każdemu wierzchołkowi w drzewie możemy przypisać wyrażenie arytmetyczne według następującej zasady: dla liści wyrażeniami są etykiety tych liści (stałe lub zmienne), jeżeli wierzchołek x ma etykietę op, a jego synom przypisano wyrażenia W (x0) i W (x1), to wierzchołkowi x przypisujemy wyrażenie W (x) = (W (x0) op W (x1)). Rysunek 1.3: Drzewo wyrażenia 2a + 3/d + / 2 a 3 d Przykład 1.4 W drzewie z rysunku1.3 wierzchołkowi z etykieta odpowiada wyrażenie 2 a, wierzchołkowi z etykieta / wyrażenie 3/d, a korzeniowi wyrażenie ((2 a) + (3/d)). Wyrażenie to zawiera więcej nawiasów, niż to się zwykle stosuje. Normalnie to samo wyrażenie przedstawiamy bez nawiasów w postaci 2a + 3/d. Opuszczenie nawiasów może prowadzić do niejednoznaczności lub może zmienić sens wyrażenia. Na przykład wyrażenie 2(a + 3/d) po opuszczeniu nawiasów stanie się identyczne z wyrażeniem 2a + 3/d i zmieni sens. Drzewo, które odpowiada wyrażeniu 2(a + 3/d), przedstawiono na rysunku 1.4. Drzewo wyrażenia arytmetycznego oddaje logiczną strukturę i sposób obliczania tego wyrażenia.

9 1.7. Drzewa wyrażeń arytmetycznych 9 Rysunek 1.4: Drzewo wyrażenia 2(a + 3/d) 2 + a / 3 d Istnieje sposób przedstawiania wyrażeń arytmetycznych nie wymagający nawiasów. Jest to tak zwana notacja polska lub Łukasiewicza. Jest ona też nazywana notacją postfixową, ponieważ znak operacji stoi na końcu wyrażenia, za argumentami, czyli wyrażenie w notacji postfixowej ma postać: pierwszy argument drugi argument operacja. Notacja, do jakiej jesteśmy przyzwyczajeni, nazywa się infixowa, ponieważ operacja znajduje się pomiędzy argumentami, czyli wyrażenie w notacji infixowej ma postać: pierwszy argument operacja drugi argument. Przykład 1.5 Wyrażenie w postaci postfixowej 2, a+ ma w postaci infixowej postać a wyrażenie 2 + a, 2, a 3, d/+ jest postfixową postacią wyrażenia 2a + 3/d. W wyrażeniach w postaci postfixowej nie potrzeba nawiasów. Wartość wyrażenia można w sposób jednoznaczny odtworzyć z samego wyrażenia za pomocą następującego algorytmu.:

10 10 Rozdział 1. Stosy, kolejki i drzewa Algorytm obliczania wartości wyrażenia w postaci postfixowej. Dla kolejnych elementów zapisu wyrażenia: jeżeli element jest stałą lub zmienną, to wkładamy jego wartość na stos, jeżeli element jest znakiem operacji, to: zdejmujemy dwie wartości z wierzchu stosu, wykonujemy operację na tych wartościach, obliczoną wartość wkładamy na wierzch stosu. Po przejściu całego wyrażenia jego wartość znajduje się na stosie. Przykład 1.6 Zademonstrujmy ten algorytm na przykładzie wyrażenia: abc + de/+ Załóżmy, że zmienne maja następujące wartości: a = 3, b = 2, c = 1, d = 4, e = 2. Poniższa tabela przedstawia zawartość stosu po przeczytaniu kolejnych elementów wyrażenia. czytany element stos a 3, b 3, 2, c 3, 2, 1, + 3, 3, 9, d 9, 4, e 9, 4, 2, / 9, 2, Przeszukiwanie drzew binarnych Zajmiemy się teraz dwoma algorytmami przeszukiwania drzew (binarnych): przeszukiwanie w głąb i wszerz. Różnią się one rodzajem użytych struktur danych. W algorytmie przeszukiwania w głąb użyjemy stosu, a w algorytmie przeszukiwania wszerz użyjemy kolejki Przeszukiwanie drzewa w głab Algorytm przeszukiwania drzewa w głab. Dane wejściowe: drzewo T. Odwiedzamy korzeń λ i wkładamy go na STOS; dopóki STOS nie jest pusty, powtarzamy: Niech v będzie wierzchołkiem na wierzchu STOSU,

11 1.8. Przeszukiwanie drzew binarnych 11 sprawdzamy, czy istnieje syn u wierzchołka v, który nie był jeszcze odwiedzony, jeżeli takie u się znajdzie, to odwiedzamy u i wkładamy go na wierzch STOSU, jeżeli takiego u nie ma, to zdejmujemy v ze STOSU; cofamy się do wierzchołka będącego na stosie pod spodem. Algorytm powinien dodatkowo zapamiętywać, jaki wierzchołek był ostatnio zdjęty ze stosu. Pozwala to stwierdzić, który z synów wierzchołka znajdującego się na stosie pod spodem należy teraz rozpatrzeć. Przykład 1.7 Poniższa tabela pokazuje jaki wierzchołek jest odwiedzany i jaka jest zawartość stosu po każdej kolejnej iteracji pętli algorytmu, gdy przeszukiwane jest drzewo z rysunku 1.1. Wierzchołek STOS λ λ 0 λ,0 00 λ,0,00 0 λ,0 01 λ,0,01 0 λ,0 λ λ 1 λ,1 10 λ,1,10 1 λ,1 11 λ,1, λ,1,11, λ,1, λ,1,11, λ,1,11 1 λ,1 λ λ W metodzie przeszukiwania w głąb po każdym kroku algorytmu wierzchołki znajdujące się na stosie tworzą ścieżkę od wierzchołka wejściowego do wierzchołka aktualnie odwiedzanego Przeszukiwanie drzewa wszerz Następny algorytm przeszukiwania drzew używa kolejki jako pomocniczej struktury danych. Algorytm przeszukiwania wszerz. Dane wejściowe: drzewo T.

12 12 Rozdział 1. Stosy, kolejki i drzewa Odwiedzamy korzeń drzewa λ i wkładamy go do KOLEJKI. Dopóki KOLEJKA nie jest pusta, powtarzamy: bierzemy jeden wierzchołek v z początku KOLEJKI, odwiedzamy wszystkich synów wierzchołka v każdego wkładamy na koniec kolejki. Poniżej przedstawiono odwiedzane wierzchołki oraz zawartość kolejki po każdej kolejnej iteracji pętli algorytmu przeszukiwania wszerz drzewa przedstawionego na rysunku 1.1. wierzchołki KOLEJKA λ λ 0,1 0,1 00,01 1,00,01 10,11 00,01,10,11-01,10,11-10, , , W metodzie przeszukiwania wszerz wierzchołki są przeszukiwane w kolejności od wierzchołków będących najbliżej wierzchołka początkowego do wierzchołków będących dalej. 1.9 Drzewa decyzyjne Rysunek 1.5 przedstawia drzewo decyzyjne dla pewnego sposobu posortowania trzech elementów a, b, c, które pochodzą z jakiegoś uporządkowanego zbioru. W korzeniu drzewa porównujemy elementy a i b. Jeżeli a < b, to idziemy do następnego wierzchołka w lewo wzdłuż krawędzi z etykietą <. Jeżeli a > b, to idziemy w prawo wzdłuż krawędzi z etykietą >. Podobnie postępujemy w innych wierzchołkach wewnętrznych. Liście drzewa odpowiadają ostatecznym decyzjom i mówią jak należy uporządkować elementy a, b i c, aby tworzyły one ciąg rosnący. Drzewo z rysunku 1.5 opisuje pewien sposób postępowania. Jak widać ten sposób wymaga maksymalnie trzech porównań. Można zadać pytanie, czy istnieje inny schemat postępowania wymagający mniej porównań. Aby odpowiedzieć na to pytanie, przypuśćmy, że na zmienne a, b, c podstawiamy wartości kolejnych permutacji π zbioru {1, 2, 3}. Zauważmy, że każda permutacja π powinna prowadzić do innego liścia. Rzeczywiście, przypuśćmy bowiem, że mamy dwie różne permutacje π i τ, które prowadzą do tego samego liścia. Ponieważ prowadzi je do tego samego liścia, to będą one tak samo posortowane. Ale z drugiej strony, ponieważ są one różne więc istnieją 1 i < j 3 takie, że π(i) < π(j) i τ(i) > τ(j). Z czego wynika, że nie powinny one być tak samo posortowane. Tak więc drzewo dowolnego schematu sortującego trzy elementy musi mieć 6 = 3! liści i głębokość co najmniej 3. Drzewo decyzyjne z rysunku 1.6 przedstawia schemat postępowania w następującym problemie. Mamy trzy monety a, b, c. Jedna z nich jest fałszywa, to znaczy trochę cięższa

13 1.9. Drzewa decyzyjne 13 Rysunek 1.5: Drzewo decyzyjne a?b < > b?c a?c < > < > abc a?c bac b?c < > < > acb cab bca cba Rysunek 1.6: Drzewo decyzyjne a?b < = > a?c a?c a?c < = < > = > a b+ c+ c b a+

14 14 Rozdział 1. Stosy, kolejki i drzewa lub trochę lżejsza od dwóch pozostałych. Schemat pokazuje jak za pomocą wagi szalkowej bez odważników znaleźć fałszywą monetę. W korzeniu na lewej szalce kładziemy monetą a, na prawej b. Jeżeli a okaże się lżejsz od b, to idziemy w dół wzdłuż krawędzi z etykietą <. Jeżeli a jest ciższa od b, idziemy wzdłuż krawędzi >, a jeżeli szalki będą w równowadze, to idziemy wzdłuż krawędzi =. W innych wewnętrznych wierzchołkach postępujemy podobnie. W liściach mamy ostateczne decyzje, która moneta jest fałszywa, oraz czy jest ona cięższa (znak +), czy lżejsza (znak ) Drzewo gry Rozważmy następującą grę. Mamy trzy kupki kamyków. Gracze po kolei zabierają kamienie z kupek, przy czym wolno brać kamienie tylko z jednej kupki i oczywiście jakieś kamienie trzeba zabrać. Gra ta jest podobna do gry rozważanej w rozdziale o funkcjach boolowskich, tylko inna jest zasada, kto wygrywa. Teraz przegrywa gracz, który zabiera ostatnie kamienie. Rysunek 1.7: Drzewo gry 1(2, 1) 2(1, 1) 2(2, 0) 2(0, 1) 1(1, 0) 1(1, 0) 1(0, 0) 1(0, 0) 2(0, 0) 2(0, 0) Rysunek 1.7 przedstawia drzewo dla tej gry. Dla uproszczenia przyjęto, że są tylko dwie kupki, w jednej są dwa kamienie, a w drugiej jeden. Wierzchołki drzewa posiadają etykiety postaci x(y, z); gdzie x oznacza, czyja jest kolej na wykonanie ruchu, pierwszego czy drugiego gracza; y i z oznaczają liczby kamieni w kupkach. W korzeniu pierwszy gracz ma ruch, na kupkach są 2 i 1 kamień. Trzej synowie korzenia odpowiadają sytuacjom po wykonaniu pierwszego ruchu. W liściach mamy puste kupki.

15 1.10. Drzewo gry 15 Rysunek 1.8: Drzewo gry z waluacją 1(2, 1)+ 2(1, 1) 2(2, 0) 2(0, 1)+ 1(1, 0) 1(1, 0) 1(0, 0)+ 1(0, 0)+ 2(0, 0) 2(0, 0) Każdemu wierzchołkowi drzewa przypisujemy teraz wartość 1 lub -1, w zależności czy jest to konfiguracja wygrywająca, czy przegrywająca dla pierwszego gracza. Przypisywanie wartości zaczynamy od liści. Jeżeli w liściu ruch ma pierwszy gracz, to nadajemy mu wartość 1, ponieważ wygrał on grę, przed chwilą drugi gracz zabrał ostatnie kamienie. Jeżeli ruch należy do drugiego gracza, to liść dostaje wartość -1. Następnie nadajemy wartości wewnętrznym wierzchołkom. Jeżeli wszyscy synowie jakiegoś wierzchołka v mają już wartości, to można przypisać wartość wierzchołkowi v. Jeżeli ruch ma pierwszy gracz, to wierzchołkowi v nadajemy wartość równą największej wartości synów v. Jeżeli ruch należy do drugiego gracza, to bierzemy minimum. Na rysunku 1.8 zaznaczono wartości wszystkich wierzchołków. Znak + oznacza wartość +1, znak wartość -1. Korzeń ma wartość +1, co oznacza, że gracz pierwszy może wygrać tą grę. Powinien w pierwszym ruchu przejść do wierzchołka z wartością 1 (w tym wypadku do trzeciego syna) Algorytm waluacji drzewa gry Opiszemy teraz algorytm, który oblicza wartości wszystkich wierzchołków w drzewie gry. Używając stosu będzie on przeszukiwał w głąb drzewo gry. Elementy na stosie są następującej postaci: gdzie x = (cr(x), konf(x), war(x), nr(x)),

16 16 Rozdział 1. Stosy, kolejki i drzewa cr(x) oznacza, czyj ruch, konf(x) oznacza konfigurację kamieni, czyli ile kamieni jest w poszczególnych kupkach. war(x) oznacza wartość wierchołka, nr(x) oznacza, numer następnego do rozpatrzenia ruchu. Algorytmu waluacji drzewa gry Tworzymy elemenet dla konfiguracji rozpoczynaąjcej grę i wkładamy go na stos. Dopóki stos nie jest pusty obrabiamy element x z na wierzchu stosu. Procedura obróbki elementu x z wierzchu stosu Jeżeli element x jest liściem, to: nadajemy mu wartość według zasady: jeżeli cr(x) = 2, to war(x) := 1, jeżeli cr(x) = 1, to war(x) := 1, zdejmujemy x ze stosu. Jeżeli poprzednią operacją na stosie było zdjęcie elementu z, to: uaktualniamy wartość war(x) według zasady: Jeżeli cr(x) = 1, to war(x) := max(war(x), war(z)). Jeżeli cr(x) = 2, to war(x) := min(war(x), war(z)). Jeżeli można wykonać następny ruch (z numerem nr(x)), to tworzymy nowy element y z polami: cr(y) := 3 cr(x); konf(y) := conf(x) po wykonaniu ruchu nr(x); jeżeli cr(y) = 2, to war(y) := 1, jeżeli cr(y) = 1), to war(y) = 1. nr(y) := 1. nr(x) := nr(x) + 1 wkładamy element y na stos (element x nie jest zdejmowany ze stosu i y jest kładzione na nim. Jeżeli ruchu o numerze nr(x) nie można wykonać, to zdejmujemy x ze stosu. Pierwszy element odpowiadający początkowej konfiguracji jest ze stosu zdejmowany na samym końcu. Jego wartość w chwili zdjęcia ze stosu jest końcową wartością. Jeżeli jest ona równa 1, to gracz pierwszy posiada w tej grze strategię wygrywającą. Strategia ta polega na wybieraniu takiego ruchu, który w drzewie gry prowadzi do stanu z największą wartością. W czasie algorytmu waluacji całe drzewo nie jest zapamiętywane. Nawet dla niewielkiej gry może ono być bardzo duże. W każdym momencie pamiętana jest na stosie tylko ścieżka od korzenia do bieżącej konfiguracji. Aby wiedzieć jak pierwszy gracz powinien grać, dobrze jest zapamiętywać numer ruchu, który prowadzi z korzenia do elementu z

17 1.10. Drzewo gry 17 wartością 1. Dla innych elementów taka informacja nie może być zapamiętywana, bo wymagałoby to zbyt duęj pamięci. Dlatego po wykonaniu pierwszego ruchu i po odpowiedzi drugiego gracza pierwszy gracz musi znowu obliczać wartosc dla bieżącej konfiguracji. Przykład 1.8 Zobaczmy jaka będzie zawartość stosu po kolejnych krokach algorytmu waluacji dla gry opisanej wyżej. Zaczynamy od konfiguracji poczatkowej [1, (2, 1), 1, 1], która odpowiada poczatkowi gry. Przypominamy, że pierwsza jedynka oznacza, że ruch należy do pierwszego gracza, para (2, 1) oznacza konfigurację kamieni, 1 jest wstępna waluacją korzenia gry, a ostatnia jedynka oznacza, że następny do rozpatrzenia jest pierwszy syn. Po trzech kolejnych iteracjach głównej pętli algorytmu stos wyglada następująco: [1, (2, 1), 1, 2] [2, (1, 1), +1, 1] [1, (2, 1), 1, 2] [2, (1, 1), +1, 2] [1, (1, 0), 1, 1] [1, (2, 1), 1, 2] [2, (1, 1), +1, 2] [1, (1, 0), 1, 2] [2, (0, 0), +1, 1] Ostatni element na stosie jest liściem. Można teraz obliczyć jego wartość -1. [1, (2, 1), 1, 2] [2, (1, 1), +1, 2] [1, (1, 0), 1, 2] [2, (0, 0), +1, 1] W następnych iteracjach zdejmowane sa kolejne elementy ze stosu: [1, (2, 1), 1, 2] [2, (1, 1), +1, 2] [1, (1, 0), 1, 2] [1, (2, 1), 1, 2] [2, (1, 1), 1, 2] [1, (2, 1), 1, 2] Nastapił powrót do korzenia. Teraz rozważany będzie drugi ruch w konfiguracji poczat- kowej. [1, (2, 1), 1, 3] [2, (2, 0), +1, 1] [1, (2, 1), 1, 3] [2, (2, 0), +1, 2] [1, (1, 0), 1, 1] [1, (2, 1), 1, 3] [2, (2, 0), +1, 2] [1, (1, 0), 1, 2] [2, (0, 0), +1, 1] Ostatni element na stosie jest liściem. Obliczamy jego wartość 1. [1, (2, 1), 1, 3] [2, (2, 0), +1, 2] [1, (1, 0), 1, 2] [2, (0, 0), +1, 1] W następnych krokach zdejmowane sa kolejne elementy ze stosu: [1, (2, 1), 1, 3] [2, (2, 0), +1, 2] [1, (1, 0), 1, 2] [1, (2, 1), 1, 3] [2, (2, 0), 1, 3] Nastapił powrót do drugiego syna konfiguracji poczatkowej. Teraz rozpatywany będzie drugi ruch z tej konfiguracji. [1, (2, 1), 1, 3] [2, (2, 0), 1, 3] [1, (0, 0), 1, 1] Znowu dotarliśmy do liścia; jego wartość wunosi +1. [1, (2, 1), 1, 3] [2, (2, 0), 1, 3] [1, (0, 0), 1, 1] Zdejmujemy dwa elementy ze stosu [1, (2, 1), 1, 3] [2, (2, 0), 1, 3] [1, (2, 1), 1, 3] Znowy jesteśmy w korzeniu drzewa. Do rozpatrzenia został trzeci ruch [1, (2, 1), 1, 4] [2, (1, 0), 1, 1] [1, (2, 1), 1, 4] [2, (1, 0), +1, 1] [1, (0, 0), 1, 1] Znowu dotarliśmy do liścia; jego wartość wynosi +1 [1, (2, 1), 1, 4] [2, (1, 0), +1, 1] [1, (0, 0), 1, 1] Teraz zostana po kolei zdjęte wszystkie elementy ze stosu [1, (2, 1), 1, 4] [2, (1, 0), +1, 1]

18 18 Rozdział 1. Stosy, kolejki i drzewa [1, (2, 1), +1, 4] Koniec pracy algorytmu; ostateczna wartość korzenia wynosi Zadania 1. Ile wierzchołków może mieć drzewo binarne wysokości h? 2. Przeszukaj metodą w głąb ( wszerz ) drzewo z rysunku??. 3. Narysuj drzewo dla wyrażenie 2(a + 3)/(b + 4). Przedstaw to wyrażenie w postaci postfixowej i prefixowej. 4. Narysuj drzewo dla wyrażenie 2, 3+5/7 3, 1. Przedstaw to wyrażenie w postaci infixowej i prefixowej. Oblicz wartość tego wyrażenia. Przedstaw to wyrażenie w postaci infixowej i prefixowej. 5. Udowodnij, że każde pełne drzewo binarne o n liściach ma n 1 wierzchołków wewnętrznych. Drzewo binarne nazywa się pełne, jeżeli każdy jego wierzchołek ma albo dwóch synów, albo nie ma synów wcale (jest liściem). 6. Narysuj drzewo decyzyjne dla sortowania czterech elementów. 7. Jak implementować drzewo binarne za pomocą tablic Problemy Szukanie fałszywej monety 1. Zaprojektuj drzewo decyzyjne dla szukania jednej fałszywej spośród 9 monet, jeżeli wiadomo, że fałszywa moneta jest lżejsza. 2. Opisz jak za pomocą k ważeń wyszukać lżejszą spośród 3 k monet. 3. Zaprojektuj drzewo decyzyjne dla szukania jednej fałszywej (lżejszej lub cięzszej) spośród monet a, b, c i d, jeżeli mamy dodatkowo do dyspozycji dobrą monetę x. 4. Pokaż, że jeżeli mamy dodatkowe dobre monety, to za pomocą k ważeń możemy zidentyfikować fałszywą monetę (i powiedzieć, czy jest lżejsza, czy cięższa) dla co najwyżej (3k 1) 2 monet. 5. Pokaż, że jeżeli nie mamy dodatkowych monet, to za pomocą k ważeń możemy zidentyfikować fałszywą monetę dla co najwyżej (3k 3) 2 monet.

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku

Matematyka Dyskretna. Andrzej Szepietowski. 25 czerwca 2002 roku Matematyka Dyskretna Andrzej Szepietowski 25 czerwca 2002 roku Rozdział 1 Struktury danych 1.1 Listy, stosy i kolejki Lista to uporz adkowany ci ag elementów. Przykładami list s a wektory lub tablice

Bardziej szczegółowo

UNIWERSYTET GDAŃSKI MATERIAŁY DYDAKTYCZNE DO PRZEDMIOTU MATEMATYKA DYSKRETNA. pod redakcją: Hanna Furmańczyk Karol Horodecki Paweł Żyliński

UNIWERSYTET GDAŃSKI MATERIAŁY DYDAKTYCZNE DO PRZEDMIOTU MATEMATYKA DYSKRETNA. pod redakcją: Hanna Furmańczyk Karol Horodecki Paweł Żyliński UNIWERSYTET GDAŃSKI MATERIAŁY DYDAKTYCZNE DO PRZEDMIOTU MATEMATYKA DYSKRETNA pod redakcją: Hanna Furmańczyk Karol Horodecki Paweł Żyliński kierunek: Informatyka GDAŃSK 2019 Niniejsze materiały powstały

Bardziej szczegółowo

Algorytmiczna teoria grafów

Algorytmiczna teoria grafów Przedmiot fakultatywny 20h wykładu + 20h ćwiczeń 21 lutego 2014 Zasady zaliczenia 1 ćwiczenia (ocena): kolokwium, zadania programistyczne (implementacje algorytmów), praca na ćwiczeniach. 2 Wykład (egzamin)

Bardziej szczegółowo

2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0,

2 Arytmetyka. d r 2 r + d r 1 2 r 1...d d 0 2 0, 2 Arytmetyka Niech b = d r d r 1 d 1 d 0 będzie zapisem liczby w systemie dwójkowym Zamiana zapisu liczby b na system dziesiętny odbywa się poprzez wykonanie dodawania d r 2 r + d r 1 2 r 1 d 1 2 1 + d

Bardziej szczegółowo

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy)

Dynamiczny przydział pamięci w języku C. Dynamiczne struktury danych. dr inż. Jarosław Forenc. Metoda 1 (wektor N M-elementowy) Rok akademicki 2012/2013, Wykład nr 2 2/25 Plan wykładu nr 2 Informatyka 2 Politechnika Białostocka - Wydział Elektryczny Elektrotechnika, semestr III, studia niestacjonarne I stopnia Rok akademicki 2012/2013

Bardziej szczegółowo

Algorytmy i Struktury Danych

Algorytmy i Struktury Danych Algorytmy i Struktury Danych Kopce Bożena Woźna-Szcześniak bwozna@gmail.com Jan Długosz University, Poland Wykład 11 Bożena Woźna-Szcześniak (AJD) Algorytmy i Struktury Danych Wykład 11 1 / 69 Plan wykładu

Bardziej szczegółowo

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz

Grafy (3): drzewa. Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków. UTP Bydgoszcz Grafy (3): drzewa Wykłady z matematyki dyskretnej dla informatyków i teleinformatyków UTP Bydgoszcz 13 (Wykłady z matematyki dyskretnej) Grafy (3): drzewa 13 1 / 107 Drzewo Definicja. Drzewo to graf acykliczny

Bardziej szczegółowo

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy

Wykład 3. Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy Wykład 3 Złożoność i realizowalność algorytmów Elementarne struktury danych: stosy, kolejki, listy Dynamiczne struktury danych Lista jest to liniowo uporządkowany zbiór elementów, z których dowolny element

Bardziej szczegółowo

Wstęp do programowania

Wstęp do programowania Wstęp do programowania Stosy, kolejki, drzewa Paweł Daniluk Wydział Fizyki Jesień 2013 P. Daniluk(Wydział Fizyki) WP w. VII Jesień 2013 1 / 25 Listy Lista jest uporządkowanym zbiorem elementów. W Pythonie

Bardziej szczegółowo

Wykłady z Matematyki Dyskretnej

Wykłady z Matematyki Dyskretnej Wykłady z Matematyki Dyskretnej dla kierunku Informatyka dr Instytut Informatyki Politechnika Krakowska Wykłady na bazie materiałów: dra hab. Andrzeja Karafiata dr hab. Joanny Kołodziej, prof. PK Grafy

Bardziej szczegółowo

Struktury danych: stos, kolejka, lista, drzewo

Struktury danych: stos, kolejka, lista, drzewo Struktury danych: stos, kolejka, lista, drzewo Wykład: dane w strukturze, funkcje i rodzaje struktur, LIFO, last in first out, kolejka FIFO, first in first out, push, pop, size, empty, głowa, ogon, implementacja

Bardziej szczegółowo

prowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325

prowadzący dr ADRIAN HORZYK /~horzyk e-mail: horzyk@agh tel.: 012-617 Konsultacje paw. D-13/325 PODSTAWY INFORMATYKI WYKŁAD 8. prowadzący dr ADRIAN HORZYK http://home home.agh.edu.pl/~ /~horzyk e-mail: horzyk@agh agh.edu.pl tel.: 012-617 617-4319 Konsultacje paw. D-13/325 DRZEWA Drzewa to rodzaj

Bardziej szczegółowo

Wysokość drzewa Głębokość węzła

Wysokość drzewa Głębokość węzła Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.

Bardziej szczegółowo

Podstawy Informatyki. Wykład 6. Struktury danych

Podstawy Informatyki. Wykład 6. Struktury danych Podstawy Informatyki Wykład 6 Struktury danych Stałe i zmienne Podstawowymi obiektami występującymi w programie są stałe i zmienne. Ich znaczenie jest takie samo jak w matematyce. Stałe i zmienne muszą

Bardziej szczegółowo

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 6a Model danych oparty na drzewach 1 Model danych oparty na drzewach Istnieje wiele sytuacji w których przetwarzane informacje mają strukturę hierarchiczną lub zagnieżdżoną,

Bardziej szczegółowo

Listy, kolejki, stosy

Listy, kolejki, stosy Listy, kolejki, stosy abc Lista O Struktura danych składa się z węzłów, gdzie mamy informacje (dane) i wskaźniki do następnych węzłów. Zajmuje tyle miejsca w pamięci ile mamy węzłów O Gdzie można wykorzystać:

Bardziej szczegółowo

Notacja RPN. 28 kwietnia wyliczanie i transformacja wyrażeń. Opis został przygotowany przez: Bogdana Kreczmera.

Notacja RPN. 28 kwietnia wyliczanie i transformacja wyrażeń. Opis został przygotowany przez: Bogdana Kreczmera. 1 wyliczanie i transformacja wyrażeń (wersja skrócona) Opis został przygotowany przez: Bogdana Kreczmera 28 kwietnia 2002 Strona 1 z 68 Zakład Podstaw Cybernetyki i Robotyki - trochę historii...............

Bardziej szczegółowo

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb.

1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb. 1. Algorytmy przeszukiwania. Przeszukiwanie wszerz i w głąb. Algorytmy przeszukiwania w głąb i wszerz są najczęściej stosowanymi algorytmami przeszukiwania. Wykorzystuje się je do zbadania istnienia połączenie

Bardziej szczegółowo

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce.

ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 2014/2015. Drzewa BST c.d., równoważenie drzew, kopce. POLITECHNIKA WARSZAWSKA Instytut Automatyki i Robotyki ZASADY PROGRAMOWANIA KOMPUTERÓW ZAP zima 204/205 Język programowania: Środowisko programistyczne: C/C++ Qt Wykład 2 : Drzewa BST c.d., równoważenie

Bardziej szczegółowo

Matematyka dyskretna - 7.Drzewa

Matematyka dyskretna - 7.Drzewa Matematyka dyskretna - 7.Drzewa W tym rozdziale zajmiemy się drzewami: specjalnym przypadkiem grafów. Są one szczególnie przydatne do przechowywania informacji, umożliwiającego szybki dostęp do nich. Definicja

Bardziej szczegółowo

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je.

operacje porównania, a jeśli jest to konieczne ze względu na złe uporządkowanie porównywanych liczb zmieniamy ich kolejność, czyli przestawiamy je. Problem porządkowania zwanego również sortowaniem jest jednym z najważniejszych i najpopularniejszych zagadnień informatycznych. Dane: Liczba naturalna n i ciąg n liczb x 1, x 2,, x n. Wynik: Uporządkowanie

Bardziej szczegółowo

ALGORYTMY I STRUKTURY DANYCH

ALGORYTMY I STRUKTURY DANYCH LGORTM I STRUKTUR DNH Temat 6: Drzewa ST, VL Wykładowca: dr inż. bigniew TRPT e-mail: bigniew.tarapata@isi.wat.edu.pl http://www.tarapata.strefa.pl/p_algorytmy_i_struktury_danych/ Współautorami wykładu

Bardziej szczegółowo

Abstrakcyjne struktury danych - stos, lista, drzewo

Abstrakcyjne struktury danych - stos, lista, drzewo Sprawozdanie Podstawy Informatyki Laboratoria Abstrakcyjne struktury danych - stos, lista, drzewo Maciej Tarkowski maciek@akom.pl grupa VII 1/8 1. Stos Stos (ang. Stack) jest podstawową liniową strukturą

Bardziej szczegółowo

Wykład 2. Drzewa zbalansowane AVL i 2-3-4

Wykład 2. Drzewa zbalansowane AVL i 2-3-4 Wykład Drzewa zbalansowane AVL i -3-4 Drzewa AVL Wprowadzenie Drzewa AVL Definicja drzewa AVL Operacje wstawiania i usuwania Złożoność obliczeniowa Drzewa -3-4 Definicja drzewa -3-4 Operacje wstawiania

Bardziej szczegółowo

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego.

Kolejka priorytetowa. Często rozważa się kolejki priorytetowe, w których poszukuje się elementu minimalnego zamiast maksymalnego. Kolejki Kolejka priorytetowa Kolejka priorytetowa (ang. priority queue) to struktura danych pozwalająca efektywnie realizować następujące operacje na zbiorze dynamicznym, którego elementy pochodzą z określonego

Bardziej szczegółowo

SZTUCZNA INTELIGENCJA

SZTUCZNA INTELIGENCJA SZTUCZNA INTELIGENCJA WYKŁAD 12. PRZESZUKIWANIE Częstochowa 2014 Dr hab. inż. Grzegorz Dudek Wydział Elektryczny Politechnika Częstochowska ROZWIĄZYWANIE PROBLEMÓW JAKO PRZESZUKIWANIE Istotną rolę podczas

Bardziej szczegółowo

Każdy węzeł w drzewie posiada 3 pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste.

Każdy węzeł w drzewie posiada 3 pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste. Drzewa binarne Każdy węzeł w drzewie posiada pola: klucz, adres prawego potomka i adres lewego potomka. Pola zawierające adresy mogą być puste. Uporządkowanie. Zakładamy, że klucze są różne. Klucze leżące

Bardziej szczegółowo

Porządek symetryczny: right(x)

Porządek symetryczny: right(x) Porządek symetryczny: x lef t(x) right(x) Własność drzewa BST: W drzewach BST mamy porządek symetryczny. Dla każdego węzła x spełniony jest warunek: jeżeli węzeł y leży w lewym poddrzewie x, to key(y)

Bardziej szczegółowo

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303

Obliczenia na stosie. Wykład 9. Obliczenia na stosie. J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 Wykład 9 J. Cichoń, P. Kobylański Wstęp do Informatyki i Programowania 266 / 303 stos i operacje na stosie odwrotna notacja polska języki oparte na ONP przykłady programów J. Cichoń, P. Kobylański Wstęp

Bardziej szczegółowo

ZADANIE 1. Ważenie (14 pkt)

ZADANIE 1. Ważenie (14 pkt) ZADANIE 1. Ważenie (14 pkt) Danych jest n przedmiotów o niewielkich gabarytach i różnych wagach. Jest też do dyspozycji waga z dwiema szalkami, ale nie ma odważników. Kładąc na wadze przedmioty a i b,

Bardziej szczegółowo

dr inż. Paweł Myszkowski Wykład nr 11 ( )

dr inż. Paweł Myszkowski Wykład nr 11 ( ) dr inż. Paweł Myszkowski Politechnika Białostocka Wydział Elektryczny Elektronika i Telekomunikacja, semestr II, studia stacjonarne I stopnia Rok akademicki 2015/2016 Wykład nr 11 (11.05.2016) Plan prezentacji:

Bardziej szczegółowo

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno

Podstawy programowania 2. Temat: Drzewa binarne. Przygotował: mgr inż. Tomasz Michno Instrukcja laboratoryjna 5 Podstawy programowania 2 Temat: Drzewa binarne Przygotował: mgr inż. Tomasz Michno 1 Wstęp teoretyczny Drzewa są jedną z częściej wykorzystywanych struktur danych. Reprezentują

Bardziej szczegółowo

Typy danych. 2. Dane liczbowe 2.1. Liczby całkowite ze znakiem i bez znaku: 32768, -165, ; 2.2. Liczby rzeczywiste stało i zmienno pozycyjne:

Typy danych. 2. Dane liczbowe 2.1. Liczby całkowite ze znakiem i bez znaku: 32768, -165, ; 2.2. Liczby rzeczywiste stało i zmienno pozycyjne: Strona 1 z 17 Typy danych 1. Dane tekstowe rozmaite słowa zapisane w różnych alfabetach: Rozwój metod badawczych pozwala na przesunięcie granicy poznawania otaczającego coraz dalej w głąb materii: 2. Dane

Bardziej szczegółowo

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST)

Drzewa BST i AVL. Drzewa poszukiwań binarnych (BST) Drzewa ST i VL Drzewa poszukiwań binarnych (ST) Drzewo ST to dynamiczna struktura danych (w formie drzewa binarnego), która ma tą właściwość, że dla każdego elementu wszystkie elementy w jego prawym poddrzewie

Bardziej szczegółowo

Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola:

Drzewo. Drzewo uporządkowane ma ponumerowanych (oznaczonych) następników. Drzewo uporządkowane składa się z węzłów, które zawierają następujące pola: Drzewa Drzewa Drzewo (ang. tree) zbiór węzłów powiązanych wskaźnikami, spójny i bez cykli. Drzewo posiada wyróżniony węzeł początkowy nazywany korzeniem (ang. root). Drzewo ukorzenione jest strukturą hierarchiczną.

Bardziej szczegółowo

INFORMATYKA DANE.

INFORMATYKA DANE. INFORMATYKA DANE http://www.infoceram.agh.edu.pl DANE Dane to zbiory liczb, znaków, sygnałów, wykresów, tekstów, itp., które mogą być przetwarzane. Pojęcie danych jest relatywne i istnieje tylko razem

Bardziej szczegółowo

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA

WYŻSZA SZKOŁA INFORMATYKI STOSOWANEJ I ZARZĄDZANIA Rekurencja - zdolność podprogramu (procedury) do wywoływania samego (samej) siebie Wieże Hanoi dane wejściowe - trzy kołki i N krążków o różniących się średnicach wynik - sekwencja ruchów przenosząca krążki

Bardziej szczegółowo

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru.

Przypomnij sobie krótki wstęp do teorii grafów przedstawiony na początku semestru. Spis treści 1 Drzewa 1.1 Drzewa binarne 1.1.1 Zadanie 1.1.2 Drzewo BST (Binary Search Tree) 1.1.2.1 Zadanie 1 1.1.2.2 Zadanie 2 1.1.2.3 Zadanie 3 1.1.2.4 Usuwanie węzła w drzewie BST 1.1.2.5 Zadanie 4

Bardziej szczegółowo

Teoretyczne podstawy informatyki

Teoretyczne podstawy informatyki Teoretyczne podstawy informatyki Wykład 6b: Model danych oparty na drzewach http://hibiscus.if.uj.edu.pl/~erichter/dydaktyka2010/tpi-2010 Prof. dr hab. Elżbieta Richter-Wąs 1 Model danych oparty na drzewach

Bardziej szczegółowo

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2

Metody teorii gier. ALP520 - Wykład z Algorytmów Probabilistycznych p.2 Metody teorii gier ALP520 - Wykład z Algorytmów Probabilistycznych p.2 Metody teorii gier Cel: Wyprowadzenie oszacowania dolnego na oczekiwany czas działania dowolnego algorytmu losowego dla danego problemu.

Bardziej szczegółowo

Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski

Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski : idea Indeksowanie: Drzewo decyzyjne, przeszukiwania binarnego: F = {5, 7, 10, 12, 13, 15, 17, 30, 34, 35, 37, 40, 45, 50, 60} 30 12 40 7 15 35 50 Tadeusz Pankowski www.put.poznan.pl/~tadeusz.pankowski

Bardziej szczegółowo

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %).

Twój wynik: 4 punktów na 6 możliwych do uzyskania (66,67 %). Powrót Twój wynik: 4 punktów na 6 możliwych do uzyskania (6667 %). Nr Opcja Punkty Poprawna Odpowiedź Rozważmy algorytm AVLSequence postaci: 1 Niech drzewo będzie rezultatem działania algorytmu AVLSequence

Bardziej szczegółowo

0-0000, 1-0001, 2-0010, 3-0011 itd... 9-1001.

0-0000, 1-0001, 2-0010, 3-0011 itd... 9-1001. KODOWANIE Jednym z problemów, z którymi spotykamy się w informatyce, jest problem właściwego wykorzystania pamięci. Konstruując algorytm staramy się zwykle nie tylko o zminimalizowanie kosztów czasowych

Bardziej szczegółowo

Lista 4. Kamil Matuszewski 22 marca 2016

Lista 4. Kamil Matuszewski 22 marca 2016 Lista 4 Kamil Matuszewski 22 marca 2016 1 2 3 4 5 6 7 8 9 10 Zadanie 2 Ułóż algorytm który dla danego n-wierzchołkowego drzewa i liczby k pokoloruje jak najwięcej wierzchołków tak, by na każdej ścieżce

Bardziej szczegółowo

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek

Algorytmy i str ruktury danych. Metody algorytmiczne. Bartman Jacek Algorytmy i str ruktury danych Metody algorytmiczne Bartman Jacek jbartman@univ.rzeszow.pl Metody algorytmiczne - wprowadzenia Znamy strukturę algorytmów Trudność tkwi natomiast w podaniu metod służących

Bardziej szczegółowo

Stos LIFO Last In First Out

Stos LIFO Last In First Out Stos LIFO Last In First Out Operacje: push - dodanie elementu na stos pop - usunięcie elementu ze stosu empty - sprawdzenie, czy stos jest pusty size - zwrócenie liczby elementów na stosie value (peek)

Bardziej szczegółowo

Instrukcje dla zawodników

Instrukcje dla zawodników Instrukcje dla zawodników Nie otwieraj arkusza z zadaniami dopóki nie zostaniesz o to poproszony. Instrukcje poniżej zostaną ci odczytane i wyjaśnione. 1. Arkusz składa się z 3 zadań. 2. Każde zadanie

Bardziej szczegółowo

Poprawność semantyczna

Poprawność semantyczna Poprawność składniowa Poprawność semantyczna Poprawność algorytmu Wypisywanie zdań z języka poprawnych składniowo Poprawne wartościowanie zdań języka, np. w języku programowania skutki wystąpienia wyróżnionych

Bardziej szczegółowo

Metody Kompilacji Wykład 3

Metody Kompilacji Wykład 3 Metody Kompilacji Wykład 3 odbywa się poprzez dołączenie zasad(reguł) lub fragmentów kodu do produkcji w gramatyce. Włodzimierz Bielecki WI ZUT 2 Na przykład, dla produkcji expr -> expr 1 + term możemy

Bardziej szczegółowo

Algorytmy i struktury danych. wykład 5

Algorytmy i struktury danych. wykład 5 Plan wykładu: Wskaźniki. : listy, drzewa, kopce. Wskaźniki - wskaźniki Wskaźnik jest to liczba lub symbol który w ogólności wskazuje adres komórki pamięci. W językach wysokiego poziomu wskaźniki mogą również

Bardziej szczegółowo

Matematyka Dyskretna - zadania

Matematyka Dyskretna - zadania zad. 1. Chcemy zdefiniować rekurencyjnie zbiór Z wszystkich trójkątów równoramiennych ABC, gdzie współrzędne wierzchołków będą liczbami całkowitymi, wierzchołek A zawsze będzie leżeć w początku układu

Bardziej szczegółowo

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1

Zofia Kruczkiewicz, Algorytmu i struktury danych, Wykład 14, 1 Wykład Algorytmy grafowe metoda zachłanna. Właściwości algorytmu zachłannego:. W przeciwieństwie do metody programowania dynamicznego nie występuje etap dzielenia na mniejsze realizacje z wykorzystaniem

Bardziej szczegółowo

Znajdowanie wyjścia z labiryntu

Znajdowanie wyjścia z labiryntu Znajdowanie wyjścia z labiryntu Zadanie to wraz z problemem pakowania najcenniejszego plecaka należy do problemów optymalizacji, które dotyczą znajdowania najlepszego rozwiązania wśród wielu możliwych

Bardziej szczegółowo

a) 7 b) 19 c) 21 d) 34

a) 7 b) 19 c) 21 d) 34 Zadanie 1. Pytania testowe dotyczące podstawowych własności grafów. Zadanie 2. Przy każdym z zadań może się pojawić polecenie krótkiej charakterystyki algorytmu. Zadanie 3. W zadanym grafie sprawdzenie

Bardziej szczegółowo

7a. Teoria drzew - kodowanie i dekodowanie

7a. Teoria drzew - kodowanie i dekodowanie 7a. Teoria drzew - kodowanie i dekodowanie Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie zima 2016/2017 rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7a. wteoria Krakowie) drzew - kodowanie i

Bardziej szczegółowo

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227

INFORMATYKA W SZKOLE. Podyplomowe Studia Pedagogiczne. Dr inż. Grażyna KRUPIŃSKA. D-10 pokój 227 INFORMATYKA W SZKOLE Dr inż. Grażyna KRUPIŃSKA grazyna@fis.agh.edu.pl D-10 pokój 227 Podyplomowe Studia Pedagogiczne Sortowanie Dane wejściowe : trzy liczby w dowolnym porządku Dane wyjściowe: trzy liczby

Bardziej szczegółowo

Matematyka Dyskretna Zestaw 2

Matematyka Dyskretna Zestaw 2 Materiały dydaktyczne Matematyka Dyskretna (Zestaw ) Matematyka Dyskretna Zestaw 1. Wykazać, że nie istnieje liczba naturalna, która przy dzieleniu przez 18 daje resztę 13, a przy dzieleniu przez 1 daje

Bardziej szczegółowo

Wyszukiwanie binarne

Wyszukiwanie binarne Wyszukiwanie binarne Wyszukiwanie binarne to technika pozwalająca na przeszukanie jakiegoś posortowanego zbioru danych w czasie logarytmicznie zależnym od jego wielkości (co to dokładnie znaczy dowiecie

Bardziej szczegółowo

dodatkowe operacje dla kopca binarnego: typu min oraz typu max:

dodatkowe operacje dla kopca binarnego: typu min oraz typu max: ASD - ćwiczenia IX Kopce binarne własność porządku kopca gdzie dla każdej trójki wierzchołków kopca (X, Y, Z) porządek etykiet elem jest następujący X.elem Y.elem oraz Z.elem Y.elem w przypadku kopca typu

Bardziej szczegółowo

Wstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel

Wstęp do programowania. Drzewa podstawowe techniki. Piotr Chrząstowski-Wachtel Wstęp do programowania Drzewa podstawowe techniki Piotr Chrząstowski-Wachtel Drzewa wyszukiwań Drzewa często służą do przechowywania informacji. Jeśli uda sie nam stworzyć drzewo o niewielkiej wysokości

Bardziej szczegółowo

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne Przypominajka: 152 drzewo filogenetyczne to drzewo, którego liśćmi są istniejące gatunki, a węzły wewnętrzne mają stopień większy niż jeden i reprezentują

Bardziej szczegółowo

Drzewa czerwono-czarne.

Drzewa czerwono-czarne. Binboy at Sphere http://binboy.sphere.p l Drzewa czerwono-czarne. Autor: Jacek Zacharek Wstęp. Pojęcie drzewa czerwono-czarnego (red-black tree) zapoczątkował Rudolf Bayer w książce z 1972 r. pt. Symmetric

Bardziej szczegółowo

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Projekt współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego Publikacja jest dystrybuowana bezpłatnie Program Operacyjny Kapitał Ludzki Priorytet 9 Działanie 9.1 Poddziałanie

Bardziej szczegółowo

Pole wielokąta. Wejście. Wyjście. Przykład

Pole wielokąta. Wejście. Wyjście. Przykład Pole wielokąta Liczba punktów: 60 Limit czasu: 1-3s Limit pamięci: 26MB Oblicz pole wielokąta wypukłego. Wielokąt wypukły jest to wielokąt, który dla dowolnych jego dwóch punktów zawiera również odcinek

Bardziej szczegółowo

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np.

Drzewa binarne. Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0. jest drzewem binarnym Np. Drzewa binarne Drzewo binarne to dowolny obiekt powstały zgodnie z regułami: jest drzewem binarnym Jeśli T 0 i T 1 są drzewami binarnymi to T 0 T 1 jest drzewem binarnym Np. ( ) ( ( )) Wielkość drzewa

Bardziej szczegółowo

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie.

Zadanie 1 Przygotuj algorytm programu - sortowanie przez wstawianie. Sortowanie Dane wejściowe: ciąg n-liczb (kluczy) (a 1, a 2, a 3,..., a n 1, a n ) Dane wyjściowe: permutacja ciągu wejściowego (a 1, a 2, a 3,..., a n 1, a n) taka, że a 1 a 2 a 3... a n 1 a n. Będziemy

Bardziej szczegółowo

Lista liniowa dwukierunkowa

Lista liniowa dwukierunkowa 53 Lista liniowa dwukierunkowa Jest to lista złożona z elementów, z których każdy posiada, oprócz wskaźnika na element następny, również wskaźnik na element poprzedni. Zdefiniujmy element listy dwukierunkowej

Bardziej szczegółowo

Projekt 4: Programowanie w logice

Projekt 4: Programowanie w logice Języki Programowania Projekt 4: Programowanie w logice Środowisko ECL i PS e W projekcie wykorzystane będzie środowisko ECL i PS e. Dostępne jest ono pod adresem http://eclipseclp.org/. Po zainstalowaniu

Bardziej szczegółowo

Luty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl

Luty 2001 Algorytmy (7) 2000/2001 s-rg@siwy.il.pw.edu.pl System dziesiętny 7 * 10 4 + 3 * 10 3 + 0 * 10 2 + 5 *10 1 + 1 * 10 0 = 73051 Liczba 10 w tym zapisie nazywa się podstawą systemu liczenia. Jeśli liczba 73051 byłaby zapisana w systemie ósemkowym, co powinniśmy

Bardziej szczegółowo

Sortowanie - wybrane algorytmy

Sortowanie - wybrane algorytmy Sortowanie - wybrane algorytmy Aleksandra Wilkowska Wydział Matematyki - Katedra Matematyki Stosowanej Politechika Wrocławska 2 maja 2018 1 / 39 Plan prezentacji Złożoność obliczeniowa Sortowanie bąbelkowe

Bardziej szczegółowo

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane:

Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, Grafy dzielimy na grafy skierowane i nieskierowane: Wykład 4 grafy Grafem nazywamy strukturę G = (V, E): V zbiór węzłów lub wierzchołków, E zbiór krawędzi, Grafy dzielimy na grafy skierowane i nieskierowane: Formalnie, w grafach skierowanych E jest podzbiorem

Bardziej szczegółowo

Ogólne wiadomości o grafach

Ogólne wiadomości o grafach Ogólne wiadomości o grafach Algorytmy i struktury danych Wykład 5. Rok akademicki: / Pojęcie grafu Graf zbiór wierzchołków połączonych za pomocą krawędzi. Podstawowe rodzaje grafów: grafy nieskierowane,

Bardziej szczegółowo

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne

Algorytmy i struktury danych. Drzewa: BST, kopce. Letnie Warsztaty Matematyczno-Informatyczne Algorytmy i struktury danych Drzewa: BST, kopce Letnie Warsztaty Matematyczno-Informatyczne Drzewa: BST, kopce Definicja drzewa Drzewo (ang. tree) to nieskierowany, acykliczny, spójny graf. Drzewo może

Bardziej szczegółowo

Teoria gier. wstęp. 2011-12-07 Teoria gier Zdzisław Dzedzej 1

Teoria gier. wstęp. 2011-12-07 Teoria gier Zdzisław Dzedzej 1 Teoria gier wstęp 2011-12-07 Teoria gier Zdzisław Dzedzej 1 Teoria gier zajmuje się logiczną analizą sytuacji, gdzie występują konflikty interesów, a także istnieje możliwość kooperacji. Zakładamy zwykle,

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Sieci powiązań Paweł Daniluk Wydział Fizyki Jesień 2015 P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2015 1 / 21 Sieci powiązań Można (bardzo zgrubnie) wyróżnić dwa rodzaje powiązań

Bardziej szczegółowo

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe

Algorytmy i złożoności. Wykład 3. Listy jednokierunkowe Algorytmy i złożoności Wykład 3. Listy jednokierunkowe Wstęp. Lista jednokierunkowa jest strukturą pozwalającą na pamiętanie danych w postaci uporzadkowanej, a także na bardzo szybkie wstawianie i usuwanie

Bardziej szczegółowo

Luty 2001 Algorytmy (4) 2000/2001

Luty 2001 Algorytmy (4) 2000/2001 Mając dany zbiór elementów, chcemy znaleźć w nim element największy (maksimum), bądź najmniejszy (minimum). We wszystkich naturalnych metodach znajdywania najmniejszego i największego elementu obecne jest

Bardziej szczegółowo

INFORMATYKA. Podstawy programowania w języku C. (Wykład) Copyright (C) 2005 by Sergiusz Sienkowski IME Zielona Góra

INFORMATYKA. Podstawy programowania w języku C. (Wykład) Copyright (C) 2005 by Sergiusz Sienkowski IME Zielona Góra INFORMATYKA Podstawy programowania w języku C (Wykład) Copyright (C) 2005 by Sergiusz Sienkowski IME Zielona Góra INFORMATYKA Temat: Struktury dynamiczne Wykład 7 Struktury dynamiczne lista jednokierunkowa,

Bardziej szczegółowo

Algorytm obejścia drzewa poszukiwań i zadanie o hetmanach szachowych

Algorytm obejścia drzewa poszukiwań i zadanie o hetmanach szachowych Algorytm obejścia drzewa poszukiwań i zadanie o hetmanach szachowych 1 Algorytm obejścia drzewa poszukiwań i zadanie o hetmanach szachowych Alexander Denisjuk Prywatna Wyższa Szkoła Zawodowa w Giżycku

Bardziej szczegółowo

Rekurencja. Przykład. Rozważmy ciąg

Rekurencja. Przykład. Rozważmy ciąg Rekurencja Definicje rekurencyjne Definicja: Mówimy, iż ciąg jest zdefiniowany rekurencyjnie, jeżeli: (P) Określony jest pewien skończony zbiór wyrazów tego ciągu, zwykle jest to pierwszy wyraz tego ciągu

Bardziej szczegółowo

Definicja pliku kratowego

Definicja pliku kratowego Pliki kratowe Definicja pliku kratowego Plik kratowy (ang grid file) jest strukturą wspierająca realizację zapytań wielowymiarowych Uporządkowanie rekordów, zawierających dane wielowymiarowe w pliku kratowym,

Bardziej szczegółowo

Gra rodzinna dla 2-4 osób w wieku od 7 do 99 lat

Gra rodzinna dla 2-4 osób w wieku od 7 do 99 lat Drogi kliencie! Nasze gry kompletowane są ze szczególną starannością. Jeśli jednak zdarzą się jakieś braki (za co z góry serdecznie przepraszamy), prosimy wypełnić ten kupon i wysłać pod adres: GRANNA,

Bardziej szczegółowo

PODSTAWY INFORMATYKI wykład 6.

PODSTAWY INFORMATYKI wykład 6. PODSTAWY INFORMATYKI wykład 6. Adrian Horzyk Web: http://home.agh.edu.pl/~horzyk/ E-mail: horzyk@agh.edu.pl Google: Adrian Horzyk Gabinet: paw. D13 p. 325 Akademia Górniczo-Hutnicza w Krakowie WEAIiE,

Bardziej szczegółowo

Analiza algorytmów zadania podstawowe

Analiza algorytmów zadania podstawowe Analiza algorytmów zadania podstawowe Zadanie 1 Zliczanie Zliczaj(n) 1 r 0 2 for i 1 to n 1 3 do for j i + 1 to n 4 do for k 1 to j 5 do r r + 1 6 return r 0 Jaka wartość zostanie zwrócona przez powyższą

Bardziej szczegółowo

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel

Wstęp do programowania. Drzewa. Piotr Chrząstowski-Wachtel Wstęp do programowania Drzewa Piotr Chrząstowski-Wachtel Drzewa Drzewa definiują matematycy, jako spójne nieskierowane grafy bez cykli. Równoważne określenia: Spójne grafy o n wierzchołkach i n-1 krawędziach

Bardziej szczegółowo

2012-01-16 PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew

2012-01-16 PLAN WYKŁADU BAZY DANYCH INDEKSY - DEFINICJE. Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew 0-0-6 PLAN WYKŁADU Indeksy jednopoziomowe Indeksy wielopoziomowe Indeksy z użyciem B-drzew i B + -drzew BAZY DANYCH Wykład 9 dr inż. Agnieszka Bołtuć INDEKSY - DEFINICJE Indeksy to pomocnicze struktury

Bardziej szczegółowo

7. Teoria drzew - spinanie i przeszukiwanie

7. Teoria drzew - spinanie i przeszukiwanie 7. Teoria drzew - spinanie i przeszukiwanie Grzegorz Kosiorowski Uniwersytet Ekonomiczny w Krakowie zima 2016/2017 rzegorz Kosiorowski (Uniwersytet Ekonomiczny 7. wteoria Krakowie) drzew - spinanie i przeszukiwanie

Bardziej szczegółowo

Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska

Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska 1 Przykład wyliczania wyrażeń arytmetycznych Bogdan Kreczmer bogdan.kreczmer@pwr.wroc.pl Zakład Podstaw Cybernetyki i Robotyki Instytut Informatyki, Automatyki i Robotyki Politechnika Wrocławska Copyright

Bardziej szczegółowo

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe

Wykład 1_2 Algorytmy sortowania tablic Sortowanie bąbelkowe I. Struktury sterujące.bezpośrednie następstwo (A,B-czynności) Wykład _2 Algorytmy sortowania tablic Sortowanie bąbelkowe Elementy języka stosowanego do opisu algorytmu Elementy Poziom koncepcji Poziom

Bardziej szczegółowo

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott

Struktury danych i złożoność obliczeniowa Wykład 5. Prof. dr hab. inż. Jan Magott Struktury danych i złożoność obliczeniowa Wykład. Prof. dr hab. inż. Jan Magott Algorytmy grafowe: podstawowe pojęcia, reprezentacja grafów, metody przeszukiwania, minimalne drzewa rozpinające, problemy

Bardziej szczegółowo

Koszt zamortyzowany. Potencjał - Fundusz Ubezpieczeń Kosztów Algorytmicznych

Koszt zamortyzowany. Potencjał - Fundusz Ubezpieczeń Kosztów Algorytmicznych Koszt zamortyzowany Jeśli mamy ciąg operacji, to koszt zamortyzowany jednej z nich jest sumarycznym kosztem wykonania wszystkich operacji podzielonym przez liczbę operacji. Inaczej mówiąc jest to, dla

Bardziej szczegółowo

Matematyczne Podstawy Informatyki

Matematyczne Podstawy Informatyki Matematyczne Podstawy Informatyki dr inż. Andrzej Grosser Instytut Informatyki Teoretycznej i Stosowanej Politechnika Częstochowska Rok akademicki 03/0 Przeszukiwanie w głąb i wszerz I Przeszukiwanie metodą

Bardziej szczegółowo

KODY SYMBOLI. Kod Shannona-Fano. Algorytm S-F. Przykład S-F

KODY SYMBOLI. Kod Shannona-Fano. Algorytm S-F. Przykład S-F KODY SYMBOLI Kod Shannona-Fano KODOWANIE DANYCH, A.Przelaskowski Metoda S-F Kod Huffmana Adaptacyjne drzewo Huffmana Problemy implementacji Kod Golomba Podsumowanie Kod drzewa binarnego Na wejściu rozkład:

Bardziej szczegółowo

Programowanie obiektowe

Programowanie obiektowe Programowanie obiektowe Sieci powiązań Paweł Daniluk Wydział Fizyki Jesień 2014 P. Daniluk (Wydział Fizyki) PO w. IX Jesień 2014 1 / 24 Sieci powiązań Można (bardzo zgrubnie) wyróżnić dwa rodzaje powiązań

Bardziej szczegółowo

Sortowanie topologiczne skierowanych grafów acyklicznych

Sortowanie topologiczne skierowanych grafów acyklicznych Sortowanie topologiczne skierowanych grafów acyklicznych Metody boolowskie w informatyce Robert Sulkowski http://robert.brainusers.net 23 stycznia 2010 1 Definicja 1 (Cykl skierowany). Niech C = (V, A)

Bardziej szczegółowo

Sortowanie. Bartman Jacek Algorytmy i struktury

Sortowanie. Bartman Jacek Algorytmy i struktury Sortowanie Bartman Jacek jbartman@univ.rzeszow.pl Algorytmy i struktury danych Sortowanie przez proste wstawianie przykład 41 56 17 39 88 24 03 72 41 56 17 39 88 24 03 72 17 41 56 39 88 24 03 72 17 39

Bardziej szczegółowo

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste

WSTĘP DO INFORMATYKI. Drzewa i struktury drzewiaste Akademia Górniczo-Hutnicza Wydział Elektrotechniki, Automatyki, Informatyki i Inżynierii Biomedycznej WSTĘP DO INFORMATYKI Adrian Horzyk Drzewa i struktury drzewiaste www.agh.edu.pl DEFINICJA DRZEWA Drzewo

Bardziej szczegółowo

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał

REKURENCJA W JĘZYKU HASKELL. Autor: Walczak Michał REKURENCJA W JĘZYKU HASKELL Autor: Walczak Michał CZYM JEST REKURENCJA? Rekurencja zwana rekursją, polega na wywołaniu przez funkcję samej siebie. Algorytmy rekurencyjne zastępują w pewnym sensie iteracje.

Bardziej szczegółowo

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania

Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych. Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania Uniwersytet Zielonogórski Instytut Sterowania i Systemów Informatycznych Ćwiczenie 3 stos Laboratorium Metod i Języków Programowania Celem ćwiczenia jest zapoznanie studentów z najprostszą dynamiczną strukturą

Bardziej szczegółowo

liniowa - elementy następują jeden za drugim. Graficznie możemy przedstawić to tak:

liniowa - elementy następują jeden za drugim. Graficznie możemy przedstawić to tak: Sortowanie stogowe Drzewo binarne Binary Tree Dotychczas operowaliśmy na prostych strukturach danych, takich jak tablice. W tablicy elementy ułożone są zgodnie z ich numeracją, czyli indeksami. Jeśli za

Bardziej szczegółowo