Alexander Denisjuk. Matematyka Dyskretna. Skrypt przeznaczony dla studentów kierunku Informatyka Stosowana. Prywatna Wyższa Szkoła Zawodowa w Giżycku

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

Funkcja kwadratowa. f(x) = ax 2 + bx + c,

Przykładowe zadania z teorii liczb

Matematyka dyskretna. Andrzej Łachwa, UJ, A/15

Funkcja kwadratowa. f(x) = ax 2 + bx + c = a

Treść wykładu. Pierścienie wielomianów. Dzielenie wielomianów i algorytm Euklidesa Pierścienie ilorazowe wielomianów

Matematyka dyskretna. Andrzej Łachwa, UJ, A/14

Matematyka dyskretna

Matematyczne Podstawy Informatyki

Matematyka dyskretna dla informatyków

Jarosław Wróblewski Matematyka Elementarna, zima 2014/15

Reprezentacje grafów nieskierowanych Reprezentacje grafów skierowanych. Wykład 2. Reprezentacja komputerowa grafów

Pierścień wielomianów jednej zmiennej

Zadania do samodzielnego rozwiązania

Wielomiany. XX LO (wrzesień 2016) Matematyka elementarna Temat #2 1 / 1

1 Macierze i wyznaczniki

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

7. CIĄGI. WYKŁAD 5. Przykłady :

Matematyka dyskretna

Pytania i polecenia podstawowe

Grupy. Permutacje 1. (G2) istnieje element jednostkowy (lub neutralny), tzn. taki element e G, że dla dowolnego a G zachodzi.

Algorytmy i struktury danych. Wykład 4

DB Algebra liniowa semestr zimowy 2018

Matematyka dyskretna

Jarosław Wróblewski Matematyka Elementarna, lato 2014/15

Matematyka dyskretna

III. Funkcje rzeczywiste

1. Wykład NWD, NWW i algorytm Euklidesa.

Podstawowe struktury algebraiczne

Indukcja matematyczna

Algorytmy równoległe. Rafał Walkowiak Politechnika Poznańska Studia inżynierskie Informatyka 2010

E: Rekonstrukcja ewolucji. Algorytmy filogenetyczne

Sumy kwadratów kolejnych liczb naturalnych

Matematyka dyskretna. Andrzej Łachwa, UJ, B/14

Jarosław Wróblewski Matematyka Elementarna, zima 2015/16

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

Teoria grafów podstawy. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Indukcja. Materiały pomocnicze do wykładu. wykładowca: dr Magdalena Kacprzak

Wykład 4. Określimy teraz pewną ważną klasę pierścieni.

1 + x 1 x 1 + x + 1 x. dla x 0.. Korzystając z otrzymanego wykresu wyznaczyć funkcję g(m) wyrażającą liczbę pierwiastków równania.

Zadania egzaminacyjne

Matematyka dyskretna. 1. Relacje

MATEMATYKA DYSKRETNA - MATERIAŁY DO WYKŁADU GRAFY

Relacje. opracował Maciej Grzesiak. 17 października 2011

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

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

Zestaw zadań dotyczących liczb całkowitych

Graf. Definicja marca / 1

Podstawowe własności grafów. Wykład 3. Własności grafów

Matematyka dyskretna. Andrzej Łachwa, UJ, B/14

Spotkanie olimpijskie nr lutego 2013 Kombinatoryka i rachunek prawdopodobieństwa

1. Liczby naturalne, podzielność, silnie, reszty z dzielenia

3 1 + i 1 i i 1 2i 2. Wyznaczyć macierze spełniające własność komutacji: [A, X] = B

1 Logika (3h) 1.1 Funkcje logiczne. 1.2 Kwantyfikatory. 1. Udowodnij prawa logiczne: 5. (p q) (p q) 6. ((p q) r) (p (q r)) 3.

Macierze. Rozdział Działania na macierzach

Jarosław Wróblewski Matematyka Elementarna, lato 2012/13. W dniu 21 lutego 2013 r. omawiamy test kwalifikacyjny.

Wykłady z Matematyki Dyskretnej

Ciała i wielomiany 1. przez 1, i nazywamy jedynką, zaś element odwrotny do a 0 względem działania oznaczamy przez a 1, i nazywamy odwrotnością a);

Liczby zespolone. x + 2 = 0.

O MACIERZACH I UKŁADACH RÓWNAŃ

Matematyka dyskretna. Andrzej Łachwa, UJ, /14

0.1 Pierścienie wielomianów

Układy równań i nierówności liniowych

Algorytmy i Struktury Danych, 9. ćwiczenia

Digraf. 13 maja 2017

Próbny egzamin maturalny z matematyki Poziom rozszerzony

1 Zbiory i działania na zbiorach.

5. Rozwiązywanie układów równań liniowych

MATEMATYKA DYSKRETNA - KOLOKWIUM 2

1. Funkcje monotoniczne, wahanie funkcji.

Znajdowanie skojarzeń na maszynie równoległej

Zajęcia nr 1 (1h) Dwumian Newtona. Indukcja. Zajęcia nr 2 i 3 (4h) Trygonometria

Luty 2001 Algorytmy (7) 2000/2001

Algorytmy grafowe. Wykład 1 Podstawy teorii grafów Reprezentacje grafów. Tomasz Tyksiński CDV

Jarosław Wróblewski Matematyka Elementarna, lato 2010/11

1. Wielomiany Podstawowe definicje i twierdzenia

Liga zadaniowa Seria I, 2014/2015, Piotr Nayar, Marta Strzelecka

Lista zadań - Relacje

Matematyka dyskretna. Andrzej Łachwa, UJ, /10

Samodzielnie wykonaj następujące operacje: 13 / 2 = 30 / 5 = 73 / 15 = 15 / 23 = 13 % 2 = 30 % 5 = 73 % 15 = 15 % 23 =

TEORIA GRAFÓW I SIECI

FUNKCJE LICZBOWE. Na zbiorze X określona jest funkcja f : X Y gdy dowolnemu punktowi x X przyporządkowany jest punkt f(x) Y.

Matematyczne Podstawy Informatyki

SPÓJNOŚĆ. ,...v k. }, E={v 1. v k. i v k. ,...,v k-1. }. Wierzchołki v 1. v 2. to końce ścieżki.

1 Zacznijmy od początku... 2 Tryb tekstowy. 2.1 Wyliczenia

Projekt Era inżyniera pewna lokata na przyszłość jest współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

φ(x 1,..., x n ) = a i x 2 i +

Wielomiany. dr Tadeusz Werbiński. Teoria

Macierz o wymiarach m n. a 21. a 22. A =

Sortowanie topologiczne skierowanych grafów acyklicznych

Jarosław Wróblewski Matematyka Elementarna, zima 2012/13


Rozważmy funkcję f : X Y. Dla dowolnego zbioru A X określamy. Dla dowolnego zbioru B Y określamy jego przeciwobraz:

Przykładowe zadania na kółko matematyczne dla uczniów gimnazjum

Matematyka dyskretna. Andrzej Łachwa, UJ, /15

Projekt Era inżyniera pewna lokata na przyszłość jest współfinansowany przez Unię Europejską w ramach Europejskiego Funduszu Społecznego

Matematyka dyskretna - 7.Drzewa

Matematyka Dyskretna 2/2008 rozwiązania. x 2 = 5x 6 (1) s 1 = Aα 1 + Bβ 1. A + B = c 2 A + 3 B = d

Transkrypt:

Alexander Denisjuk Matematyka Dyskretna Skrypt przeznaczony dla studentów kierunku Informatyka Stosowana Prywatna Wyższa Szkoła Zawodowa w Giżycku Giżycko 004

c A. Denisjuk, MMIV v. 1.0

56 Spis treści III. Podzielność liczb naturalnych.................................... 18 1. Dzielenie liczb całkowitych i pierścień Z m......................... 18. Kryteria podzielności............................................ 19 3. Przykłady obliczeń w pierścieniu Z m............................. 0 4. Liczby pierwsze................................................. 1 5. Największy wspólny podzielnik i najmniejsza wspólna wielokrotność................................................... 6. Pytania na egzamin............................................. 4 IV. Teoria grafów.................................................... 7 1. Podstawowe definicje............................................ 7. Drogi i cykle w grafach.......................................... 9 3. Macierzowa reprezentacja grafa.................................. 30 4. Grafy eulerowskie............................................... 3 5. Hamiltonowskie ścieżki i cykle w grafach.......................... 33 6. Pytania na egzamin............................................. 33 V. Wybrane algorytmy na grafach................................... 37 1. Obejście drzewa poszukiwań (szukanie z powracaniem, backtraking)..................................................... 37. Pytania na egzamin............................................. 45 VI. Funkcje tworzące................................................ 48 1. Definicje........................................................ 48. Funkcje tworzące i kombinacje.................................... 49 3. Liczby Fibonacciego.............................................. 50 4. Liczby Catalana................................................. 51 5. Zagadnienia z kombinatoryki, związane z liczbami Catalana...... 5 6. Pytania na egzamin............................................. 5 Skorowidz........................................................... 54 Literatura........................................................... 56 Uznanie............................................................. 56 I. Kombinatoryka Rozdział I: Kombinatoryka 1 Oznaczenie. Niech X będzie skończonym zbiorem. Przez X oznaczamy ilość elementów X Twierdzenie 1.1. Niech X i Y dwa skończone zbiory. Wówczas X = = Y wtedy i tylko wtedy, gdy istnieje wzajemnie jednoznaczne odwzorowanie f: X Y. Wszystkie zbiory w tym rozdziale będą skończone. 1. Zasady sumy i iloczynu Twierdzenie 1.. Niech X 1 i X będą dwa zbiory nieprzecinające się, X 1 X =. Wtedy X 1 X = X 1 + X. Twierdzenie 1.3. Niech X 1 i X będą dwa zbiory. Wtedy X 1 X = X 1 X. Twierdzenie 1.. Niech X 1, X,..., X k będą zbiory nieprzecinające się parami, X i X j = dla i j. Wtedy Twierdzenie 1.3. k i=1 X i = k X k. i=1 Niech X 1, X,..., X k będą zbiory. Wtedy k k X i = X k. i=1 i=1. Wariacje i kombinacje Definicja 1.4. Zestaw elementów x i1,..., x i1 zbioru X = {x 1,..., x n } nazywa się (n, r)-próbką. Jeśli kolejność elementów w próbce jest istotną, to próbka jest uporządkowana, inaczej nieuporządkowana. Jeżeli pośród elementów próbki dopuszczalne są jednakowe, to próbka jest z powtórzeniami, inaczej bez powtórzeń. Uporządkowana (n, r)-próbka nazywa się (n, r)-wariacją. Nieuporządkowana (n, r)-próbka nazywa się (n, r)-kombinacja. (n, n)- -wariacja bez powtórzeń nazywa się permutacją zbioru X. Ilość (n, r)-wariacji z powtórzeniami oznacza się przez Ār n, bez powtórzeń przez A r n, ilość permutacji n-elementowego zbioru przez P n. Ilość (n, r)- -kombinacji z powtórzeniami oznacza się przez C n r, bez powtórzeń przez Cn r (lub ( n r) ).

&! ( ( &! Rozdział I: Kombinatoryka Twierdzenia 1.5. 1. Ā r n = n r.. A r n = n! (n r)! dla r n i A r n = 0 dla r > n. 3. P n = n!. 4. Cn r = Ar n r! = n! r!(n r)! dla r n i Cn r = 0 dla r > n. 5. Cr n = Cn+r 1 r. 3. Wariacje i odwzorowania Definicja 1.6. Przez Y X oznaczamy zbiór odwzorowań z X w Y. Twierdzenia 1.7. Niech X = r, Y = n. Wtedy 1. Y X = Ār n = n r = Y X.. Ilość wszystkich różnowartościowych odwzorowań f : X Y równa jest A r n. 3. Ilość wzajemnie-jednoznacznych odwzorowań n-elementowego zbioru w siebie równa jest n!. 4. Przykłady stosowania wzorów Przykład 1.8. Na ile sposobów można pomalować kwadrat, podzielony na cztery części pięcioma kolorami a) 1 dopuszczając jednakowe kolory; b) jeśli różne części maluje się na różne kolory? Przykład 1.9 3. Ile jest sposobów na wybranie 0 numerów z 80? Przykład 1.10. W ilu przypadkach w grze w «Multi lotka» (zgadywanie 5 numerów) zostaną prawidłowo wybrane a) 4 dokładnie 3 numery; b) 5 dokładnie 4 numery; c) 6 dokładnie 5 numerów; d) 7 nie mniej niż 3 numery? Przykład 1.11 8. Z talii kart, liczącej 5 karty, wybrano 10 kart. W ilu przypadkach spośród wybranych okażą się wszystkie cztery asy? Przykład 1.1 9. Zestaw liczy 30 monet wartości 1, oraz 5 złotych. Ile istnieje zestawów? 1 5 4 = 65. 5!/(5 4)! = 10. 3 C80 0 = 3 535 316 14 1 174 30. 4 C0 3 C 60 = 017 800. 5 C0 4 C1 60 = 90 700. 6 C0 5 = 15 504. 7 34 004. 8 C48 6 = 1 71 51. 9 C30 3 = C30 3 = 496. Literatura Spis treści 55 1. Rasiowa H.: Wstep do matematyki wspolczesnej, PWN, Warszawa, 1975.. Lipski W.: Kombinatoryka dla programistow, WNT, Warszawa, 198. 3. Robin J. Wilson: Wprowadzenie do teorii grafow, PWN, Warszawa, 1998. 4. Ross K. A., Wright C. R. B.: Matematyka dyskretna, PWN, Warszawa 1996 5. Kulikowski J. L.: Zarys teorii grafow, PWN, Warszawa 1986. 6. Banachowski L., Diks K., Rytter W.: Algorytmy i struktury danych, WNT, Warszawa 1996. 7. Klin M. C., Poesche R., Rosenbaum K.: Algebra stosowana dla matematykow i informatykow: grupy, grafy, kombinatoryka, PWN, Warszawa 1996. http://www.mccme.ru/ium/ancient/. -, + * " ) ( % " # / ' # http://www.mccme.ru/ium/ancient/combs93.htm Uznanie ( # % "$# Jestem wdzięczny studentom pierwszego roku (003-004), którzy wskazali na liczne błędy wstępnej wersji skryptu oraz znacznie poprawili polszczyznę. Spis treści I. Kombinatoryka..................................................... 1 1. Zasady sumy i iloczynu........................................... 1. Wariacje i kombinacje............................................ 3. Wariacje i odwzorowania......................................... 4. Przykłady stosowania wzorów.................................... 5. Rozbicia.......................................................... 3 6. Wzór wielomianowy.............................................. 5 7. Zasada włączeń i wyłączeń....................................... 5 8. Pytania na egzamin............................................... 7 II. Algorytmy kombinatorne.......................................... 9 1. Niezmiennik pętli................................................. 9 Przykłady................................................... 10. Wariacje z powtórzeniami....................................... 11 3. Permutacje...................................................... 13 4. Podzbiory....................................................... 14 5. Pytania na egzamin............................................. 15 ' #

54 Skorowidz Liczba pierwsza 1 podzielna 18 zmiennoprzecinkowa 15, 16 liczby wzajemnie pierwsze liść 37 Łuk wchodzący 8 wychodzący 8 łuki grafa 8 Macierz n m 30 incydencji 31 grafa skierowanego 31 kwadratowa stopnia n 30 przyległości 31 grafa skierowanego 31 mantysa 15, 16 marszruta w grafie 9 Niezmiennik pętli 9 Odwzorowanie wzajemnie jednoznaczne 1 Permutacja pętla 8 pierścień Z m 19 pionownica 40 początek łuku 8 poddrzewo 37 lewe 5 prawe 5 podgraf 30 podzielnik 18 poprzednik 1 porównywalność liczb 18 półstopień wejścia 8 wyjścia 8 próbka bez powtórzeń nieuporządkowana uporządkowana z powtórzeniami przekątna lewa 43 prawa 4 Relacja porównywalności 18 przechodnia 18 równoważności 18 symetryczna 18 zwrotna 18 reszta 18 rozbicie 3 różnica funkcji tworzących 48 Schemat Gornera 10 składowa grafa 30 stan dopuszczalny 4 pusty 40 stopień wierzchołka 8 suma funkcji tworzących 48 szachownica 40 Ścieżka eulerowska 3 hamiltonowska 33 Trasa w grafie 9 Uporządkowanie leksyko-graficzne 1 Wariacja węzeł grafa 8 wielokrotność 18 wiersz macierzy 30 wierzchołek grafa 8 izolowany 8 wiszący 8 wierzchołki sąsiednie 8 wyznacznik części potęgowej 15, 16 Zasada iloczynu 1 sumy 1 zbiory nieprzecinające się 1 parami 1 zbiór odwzorowań Rozdział I: Kombinatoryka 3 Przykład 1.13 10. Wzór na ilość całkowitych rozwiązań równania { x1 + + x n = r, gdzie n 1, a i są liczby całkowite. x i a i, i = 1,..., n, Rozwiązanie. Cq n jest liczbą nieujemnych całkowitych rozwiązań równania y 1 + + y n = q. Każdemu rozwiązaniu podporządkujemy kombinację z powtórzeniami elementów zbioru { b 1,..., b n }, w którą b 1 wchodzi x 1 razy, b wchodzi x razy,..., b n wchodzi x n razy. Definicje 1.14. 5. Rozbicia 1. Rozbiciem zbioru X nazywa się zbiór takich podzbiorów X 1,..., X k, X = k X i,x i Xj = przy i j. (Oznaczenie X = k X i.) i=1. Ilość rozbić zbioru X, X = n na k podzbiorów, takich że X i = n i oznacza się przez C n1,...,n k n. 3. Ilość rozbić zbioru X, X = n na podzbiory, spośród których dla każdego i = 1,... n jest dokładnie m i 0 podzbiorów z i elementami ( n im i = n) oznacza się przez N(m 1,..., m n ). Twierdzenia 1.15. 1. C n1,...,n k n. C n1,...,n k n = Cn n1cn n n 1... C n k n n 1 n k 1 = n! n 1!...n k!. zgadza się z ilością (n, k)-wariacji, wśród elementów których znajduje się n 1 elementów 1-go typu, n elementów -go typu,..., n k elementów k-go typu. 3. N(m 1,..., m n ) = n! m 1!...m n!(1!) m 1...(n!) mn. Dowód. () Każdej wariacji przyporządkujemy rozbicie zbioru { 1,..., n } na podzbiory X 1,..., X k, gdzie X i jest zbiorem numerów elementów i-go typu w próbce. (3) Każde nieuporządkowane rozbicie w m 1!m!... m n! sposobów można sprowadzić do uporządkowanych rozbić postaci X 1,..., X m1, X m1+1,..., X m1+m,..., X m1+m + +m n 1+1,..., X m1+m + +m n, gdzie X 1 = = X m1 = 1, X m1+1 = = X m1+m =,..., X m1+m + +m n 1+1 = = X m1+m + +m n = n. 10 C r n i=1 a i n = C r n i=1 a i n r n i=1 a i 1, jeśli r n i=1 a i, 0, jeśli r < n i=1 a i. i=1 i=1

4 Rozdział I: Kombinatoryka Przykład 1.16 11. Grupa studentów liczy 5 osób. W wyborach samorządowych na P. Nowaka głosowało 1 osób, przeciw niemu 10 osób, trzy osoby wstrzymały się od głosu. Na ile sposobów mogło odbyć się takie głosowanie? Przykład 1.17 1. Na ile sposobów można pomalować kwadrat, rozbity na dziewięć części w czterech kolorach tak, żeby w pierwszym kolorze zostały pomalowany 3 części, w drugim, w trzecim 3, w czwartym 1? Przykład 1.18 13. Na ile sposobów można stworzyć 5 koalicji po 5 osób z grupy liczącej 5 osób? Przykład 1.19 14. Ile jest sposobów określenia na zbiorze X = {1,..., 5} relacji równoważności z trzema klasami abstrakcji? Skorowidz 53 19. Wypisz pięć pierwszych liczb Catalana. 0. Wypisz funkcję tworzącą dla liczb Catalana. 1. Udowodnij, że dla liczb Catalana cn+1 c n = 4n+ n+.. Podaj przykład zagadnienia z kombinatoryki, w którym występują liczby Catalana. 3. Ile jest sposobów triangulacji wieloboku o n wierzchołkach? 4. Na ile sposobów można wykonać mnożenia w ilozynie a 1 a... a n? 5. Ile istnieje drzew binarnych o n wierzchołkach? 6. Zdefiniuj drzewo binarne. 7. Podaj przykład drzewa binarnego o 10 wierzchołkach. Skorowidz 6. Wzór wielomianowy Twierdzenie 1.0. (x 1 + + x k ) n n! = n 1!...n k! xn1 1... xn k k. n 1+ +n k =n Przykład 1.1 15. Ustalić współczynnik przy x 3 1 x4 x3 3 w rozwinięciu (x 1 + + x + x 3 ) 10. 7. Zasada włączeń i wyłączeń Twierdzenie 1.. Niech X i będą zbiory, i = 1,..., n, n. Wówczas X 1 X n = ( X 1 + + X n ) 11 C 1,10,3 5 = 1 487 85 800. 1 C 3,,3,1 9 = 5 040. 13 N(0, 0, 0, 0, 5, 0,..., 0) = 5! 5! 6. 14 m1+m + +5m 5 =5 m1+m + +m 5 =3 15 C 3,4,3 10 = 400. ( X 1 X + X 1 X 3 + + X n 1 X n ) + + ( X 1 X X 3 + + X n X n 1 X n )... + ( 1) n 1 X 1 X n. N(m 1,..., m 5 ) = = m1+m + +5m 5 =5 m1+m + +m 5 =3 5! m 1!... m 5!(1!) m 1... (5!) m 5. Cykl eulerowski 3 hamiltonowski 33 prosty 9 w grafie 9 Długość marszruty w grafie 9 drzewo 30 binarne 5 poszukiwań 37 stanów 40 dopuszczalnych 4 dzielnik 18 Funkcja tworząca 48 Graf 8 acykliczny 30 eulerowski 3 hamiltonowski 33 prosty 8 pusty 5 skierowany 8 spójny 30 zorientowany 8 zupełny 9 Iloczyn Cauchy ego 48 funkcji tworzącej i liczby rzeczywistej 48 tworzących 48 iloraz 18 ilość całkowitych rozwiązań 3 elementów zbioru 1 kombinacji bez powtórzeń z powtórzeniami nieuporządkowanych rozbić 3 odwzorowań różnowartościowych wzajemnie-jednoznacznych permutacji uporządkowanych rozbić 3 wariacji 4 bez powtórzeń z powtórzeniami incydencja 8 Klasy reszt 18 kolumna macierzy 30 kombinacja koniec łuku 8 końce krawędzi 8 korzeń 37, 5 krawędzie przyległe 8 równoległe 8 wielokrotne 8 krawędź grafa 8 łącząca dwa wierzchołki 8 krotność krawędzi 8

5 Rozdział VI: Funkcje tworzące Rozdział I: Kombinatoryka 5 a b c d a b c d a b c d a b c d b a c d Wniosek 1.3. Nich X będzie zbiorem, X i, i = 1,..., n będą jego podzbiorami. Wówczas X \ (X1 X n ) ( = X X1 + + X n ) + + ( X 1 X + + X n 1 X n ) + ( 1) n X 1 X n. Wniosek 1.4. Niech X będzie N-elementowym zbiorem, α 1,..., α k będą własności (predykaty jednoargumentowe), określone na zbiorze X. Przez N(α i1,..., α ij ) oznaczymy ilość elementów zbioru X, posiadających jednocześnie własności α i1,..., α is. Przez N 0 oznaczmy ilość elementów X, nie posiadających żadnych z wymienionych własności. Wtedy N 0 = N S 1 + S + ( 1) k S k, gdzie S j = 1 i 1< <i j k N(α i1,..., α ij ), j = 1,..., k. Przykład 1.5 16. Niech X = {0, 1,..., 10}. Obliczyć ilość elementów zbioru X, nie posiadających żadne z wymienonych własności: a) x jest liczbą parzystą, b) x > 6, c) < x < 8. Przykład 1.6. Wyznaczyć ilość całkowitych rozwiązań układu { x1 + x + + x n = r, Rysunek 6.. Zagadnienia, związane z liczbami Catalana* 15. Wyprowadzić funkcję tworzącą dla liczb Fibonacciego. 16. Wypisać jawny wzór na k-tą liczbę Fibonacciego. 17. Wyprowadzić jawny wzór na k-tą liczbę Fibonacciego. 18. Zdefiniować liczby Catalana. * Rysunek jest zapożyczony z materiałów S. Dużyna, Moskiewski Niezależny Uniwersytet, za zgodą autora a i x i b i, i = 1,..., n Rozwiązanie. Określimy predykaty α i = (x i b i +1). Zbiór X będzie zbiorem rozwiązań bez górnych ograniczeń. Przykład 1.7 17. Wyznaczyć ilość trzycyfrowych liczb, suma cyfr których równa jest 0. Przykład 1.8 18. (Zadanie o nieporządkach.) Dane jest n różnych przedmiotów a 1,..., a n i n różnych komórek. Ile jest sposobów na to, by rozmieścić przedmioty po komórkach tak, żeby żaden przedmiot a i nie trafił do komórki b i. Rozwiązanie. Jako zbiór X przyjmiemy zbiór wszystkich możliwych rozmieszczeń przedmiotów w komórkach. Wtedy N = n!. Wprowadzimy własności α i = = (przedmiot a i trafił do komórki b i ). Wtedy N(α i1,..., α ik ) = (n k)!, S k = N(α i1,..., α ik ) = Cn(n k k)! = n! k!. 16 1. 17 36. 18 n! n ( 1)k 1/k!. 1 i 1< <i k n

6 Rozdział I: Kombinatoryka Przykad 1.9. Ile jest liczb od 1 do 1000 niepodzielnych ani przez, ani przez 3, ani przez 5? Rozwiązanie. 1. X = { 1..1000 }, N = 1000.. α 1 (x) = (x jest podzielna przez ), 3. α (x) = (x jest podzielna przez 3), 4. α 3 (x) = (x jest podzielna przez 5). 5. N(α 1 ) = 500, N(α ) = 333, N(α 3 ) = 00, S 1 = 1033. 6. N(α 1, α ) = 166, N(α 1, α ) = 100, N(α, α 3 ) = 66, S = 33. 7. N(α 1, α, α 3 ) = 33, S 3 = 33. 8. N 0 = 1000 1033 + 33 33 = 66. Rozdział VI: Funkcje tworzące 51 5. Zagadnienia z kombinatoryki, związane z liczbami Catalana Na rysunkach 6.1 i 6. przedstawione są niektóre zagadnienia z kombinatoryki, związane z liczbami Catalana. Definicja 6.11. Drzewem binarnym o n wierzchołkach nazywa się graf pusty, jeżeli n = 0, oraz przy n > 1 graf, mający wierzchołek k, nazywany korzeniem, lewe poddrzewo L o l wierzchołkach i prawe poddrzewo R o r wierzchołkach. Przy czym l + r + 1 = n. 8. Pytania na egzamin 1. Niech X będzie zbiorem. Co oznacza się przez X?. Sformułować zasadę sumy. 3. Udowodnić zasadę sumy. 4. Sformułować zasadę iloczynu. 5. Udowodnić zasadę iloczynu. 6. Co nazywa się (n, r)-próbką? 7. Co nazywa się (n, r)-próbką uporządkowaną? 8. Co nazywa się (n, r)-próbką nieuporządkowaną? 9. Co nazywa się (n, r)-próbką z powtórzeniami? 10. Co nazywa się (n, r)-wariacją? 11. Co nazywa się (n, r)-kombinacją? 1. Podać przykład (n, r)-kombinacji bez powtórzeń. 13. Podać przykład (n, r)-kombinacji z powtórzeniami. 14. Podać przykład (n, r)-wariacji bez powtórzeń. 15. Podać przykład (n, r)-wariacji z powtórzeniami. 16. Co nazywa się permutacją? 17. Co oznacza się przez Ār n? 18. Co oznacza się przez A r n? 19. Co oznacza się przez C r n? 0. Co oznacza się przez C r n? 1. Podać wzór na C r n.. Podać wzór na Ār n. 3. Podać wzór na C r n. 4. Podać wzór na A r n. 5. Podać wzór na ilość permutacji. 6. Udowodnić wzór na C r n. 7. Udowodnić wzór na Ār n. 8. Udowodnić wzór na C r n. Rysunek 6.1. Drzewa binarne o trzech wierzchołkach 6. Pytania na egzamin 1. Zdefiniować funkcję tworzącą ciągu.. Zdefiniować sumę funkcji tworzących. 3. Zdefiniować iloczyn funkcji tworzącej i liczby rzeczywistej. 4. Zdefiniować iloczyn funkcji tworzących. 5. Podać przykład funkcji tworzącej. 6. Co będzie funkcja tworzącą la ciągu a k = C k n? 7. Co będzie funkcja tworzącą la ciągu a k = C k n? 8. Niech X = { a 1, a, a 3 }, c k będzie ilością k-kombinacji z powtórzeniami, wśród elementów których a 1 może występować co najwyżej dwa razy, a trzy, zaś a 3 cztery razy. Jaka będzie funkcja tworząca dla ciągu c k? 9. Niech X = { a 1, a, a 3 }, c k będzie ilością k-kombinacji z powtórzeniami, wśród elementów których a 1 może występować jeden lub dwa razy, a zero lub trzy razy, zaś a 3 zero, dwa lub cztery razy. Jaka będzie funkcja tworząca dla ciągu c k? 10. Niech X = { a 1, a, a 3 }, c k będzie ilością k-kombinacji z powtórzeniami, wśród elementów których a 1 może występować zero lub jeden raz, a zero lub trzy razy, zaś a 3 dowolną ilość razy. Jaka będzie funkcja tworząca dla ciągu c k? 11. Niech X = { a 1, a, a 3 }, c k będzie ilością k-kombinacji z powtórzeniami, wśród elementów których a 1 może występować zero lub jeden raz, a dowolną parzystą ilość razy, natomiast a 3 dowolną nieparzystą ilość razy. Jaka będzie funkcja tworząca dla ciągu c k? 1. Podać definicję liczb Fibonacciego. 13. Podać pierwsze pięć liczb Fibonacciego. 14. Wypisać funkcję tworzącą dla liczb Fibonacciego.

50 Rozdział VI: Funkcje tworzące przy czym { skąd A 1 5 + B 1+ 5 = 1, A + B = 0, A = 1 5, B = 1 5. Mamy zatem ( ) F (x) = 1 1 5 1 1+ 5 x 1 = 1 1 5 x ( = 1 ( ) k 1 + 5 ( ) ) k 1 5 x k x k = 5 [( ) k ( ) k ] 1 1 + 5 1 5 = x k. 5 I ostatecznie Definicja 6.6. F k = 1 [( ) k ( ) k ] 1 + 5 1 5. 5 4. Liczby Catalana c 0 = 1, c k+1 = c 0 c k + c 1 c k 1 + + c k 1 c1 + c k c 0 = k c i c k i, k = 1,, 3,... i=0 Oto początek ciągu liczb Catalana: 1, 1,, 5, 14, 4, 13. Rozważmy funkcję tworzącą dla liczb Catalana: C(x) = c 0 + c 1 x + c x +.... Lemat 6.7. Funkcja C(x) spełnia równanie C(x) = xc(x)c(x) + 1. Wniosek 6.8. Funkcja tworząca dla liczb Catalana równa jest C(x) = 1 1 4x. x Wniosek 6.9. Dla liczb Catalana zachodzi równość c n = (n)! n!(n + 1)! = 1 n + 1 Cn n. Wniosek 6.10. Dla liczb Catalana zachodzi równość c n+1 = 4n+ n+ c n. Rozdział I: Kombinatoryka 7 9. Udowodnić wzór na A r n. 30. Udowodnić wzór na ilość permutacji. 31. Niech X i Y będą zbiorami. Co oznacza się przez Y X? 3. Niech X i Y będą zbiorami. Podać wzór na Y X. 33. Niech X i Y będą zbiorami. Udowodnić wzór na Y X. 34. Ile istnieje różnowartościowych odwzorowań X Y? 35. Udowodnić wzór na ilość różnowartościowych odwzorowań X Y? 36. Na ile sposobów można pomalować romb, podzielony na pięć części, sześcioma kolorami dopuszczając jednakowe kolory? 37. Na ile sposobów można pomalować romb, podzielony na pięć części, sześcioma kolorami, jeśli różne części maluje się na różne kolory? 38. Ile jest sposobów na wybranie pięciu kostek z pełnego zestawu 8 kostek domina? 39. Niech X będzie n-elementowym zbiorem (n > 1). Czego jest więcej: n-wariacji czy n-kombinacji elementów X? 40. Wśród 0 sztuk towaru jest 15 sztuk standardowych. Na ile sposobów można wybrać 4 sztuki w taki sposób, żeby w próbce były dokładnie sztuki standardowe? 41. Wśród 0 sztuk towaru jest 15 sztuk standardowych. Na ile sposobów można wybrać 4 sztuki w taki sposób, żeby w próbce były nie mniej niż sztuki standardowe? 4. Zestaw liczy 0 monet nominału 1, oraz 5 { złotych. Ile istnieje zestawów? x1 + + x k = r, 43. Ile istnieje całkowitych rozwiązań układu gdzie x i a i, i = 1,..., k, n 1, a i są liczby całkowite? { x1 + x + x 3 = 10, 44. Ile istnieje całkowitych rozwiązań układu x i i, i = 1,, 3? 45. Udowodnić { wzór na ilość całkowitych rozwiązań układu x1 + + x k = r, gdzie n 1. x i 0, i = 1,..., k, 46. Co nazywa się rozbiciem zbioru? 47. Co oznacza się przez C n1,n,...,n k n, gdzie n 1 + + n k = n? 48. Co oznacza się przez N(m 1, m,..., m n ), gdzie m 1 + m + + nm n = n? 49. Podać wzór na C n1,n,...,n k n, gdzie n 1 + + n k = n. 50. Podać wzór na N(m 1, m,..., m n ), gdzie m 1 + m + + nm n = n. 51. Udowodnić wzór na C n1,n,...,n k n, gdzie n 1 + + n k = n. 5. Udowodnić wzór na N(m 1, m,..., m n ), gdzie m 1 + m + + nm n = n. 53. Niech X = { a a,..., a k }. Ile istnieje n-wariacji z powtórzeniami, wśród elementów których znajduje się n 1 elementów a 1, n elementów a,..., n k elementów a k? 54. Niech X = { a a,..., a k }. Udowodnić, że istnieje dokładnie C n1,n,...,n k n n-wariacji z powtórzeniami, wśród elementów których znajduje się n 1 elementów a 1, n elementów a,..., n k elementów a k?

8 Rozdział I: Kombinatoryka 55. Grupa studentów liczy 0 osób. W wyborach samorządowych na P. Nowaka głosowało 8 osób, przeciw niemu 7 osób, pięć osob wstrzymały się od głosu. Na ile sposobów mogło odbyć się takie głosowanie? 56. Na ile sposobów można pomalować romb, rozbity na osiem części w cztery kolory tak, żeby w pierwszy kolor zostało pomalowano 3 części, w drugi 1, w trzeci, w czwarty? 57. Na ile sposobów z grupy liczącej 0 osób można stworzyć koalicji po 6 osób i cztery koalicje po osoby? 58. Podać wzór na (x 1 + + x n ) k. 59. Udowodnić wzór na (x 1 + + x n ) k. 60. Ustalić współczynnik przy x 3 1 x4 x3 3 x5 4 w rozwinięciu (x 1 + x + x 3 + x 4 ) 15. 61. Sformułować zasadę włączeń i wyłączeń. 6. Objaśnić, dlaczego zachodzi wzór włączeń i wyłączeń dla n = 3. 63. Niech X = {0, 1,..., 100}. Obliczyć ilość elementów zbioru X, nie posiadających żadnej z wymienonych własności: a) x jest liczbą parzystą, b) x > 6, c) < x < 88. 64. Wyznaczyć ilość liczb całkowitych od 1 do 1000, które są niepodzielne ani przez, ani przez 5, ani przez 7, ani przez 3. II. Algorytmy kombinatorne 1. Niezmiennik pętli Definicja.1. Niezmiennikiem pętli nazywa się logiczne wyrażenie, wartość którego się nie zmienia podczas wykonywania pętli Zastosowania niezmienników oparte są na następującym twierdzeniu. Twierdzenie.. Jeżeli w pętli WHILE (algorytm.1) przed pętlą niezmiennik N ma wartość prawda, to po pętli niezmiennik N ma wartość prawda, zaś warunek kontynuacji pętli W ma wartość fałsz. {Niezmiennik: N} while W do Działania Algorytm.1. Pętla WHILE Projektowanie pętli ma następujące etapy: 1. Wybór niezmiennika pętli.. Dobór warunku pętli w zależności od niezmiennika. 3. Projektowanie działań wstępnych, gwarantujących że niezmiennik ma wartość prawda przed pętlą. 4. Projektowanie ciała pętli, ze względem niezmiennika. Rozdział VI: Funkcje tworzące 49 W szczególności, jeżeli każdy z elementów zbioru X = { a 1, a,... a n } może się pojawić w kombinacji dowolną ilość razy, funkcja tworząca będzie równa C n k xk = (1 + x + x +... )... (1 + x + x +... ) = }{{} n razy Różniczkując k razy, otrzymamy Więc Definicja 6.5. = 1 1 x... 1 1 x = 1 (1 x) n. d k dx k 1 (1 x) n = n(n + 1)... (n + k 1) 1 (1 x) n+k. C k n = n(n + 1)... (n + k 1) k! 3. Liczby Fibonacciego F 0 = 0, F 1 = 1, = C k n+k 1. F k+1 = F k + F k 1, k =, 3,.... Oto początek ciągu Fibonacciego: 0, 1, 1,, 3, 5, 8, 13, 1, 34. Funkcja tworząca F (x) dla ciągu Fibonacciego spełnia równanie skąd F (x) = F k x k = 0 + x + (F k + F k 1 )x k = k= k= = x + x F k x k + x F k 1 x k 1 = k= = x + x F (x) + xf (x) = x + (x + x)f (x), F (x) = x 1 x x. Żeby uzyskać jawny wzór na F n, przedstawimy ( F )( (x) jako sumę ) ułamków najprostszych. Ponieważ (1 x x ) = 1 1+ 5 x 1 1 5 x, powinna zachodzić równość x 1 x x = A 1 1+ 5 x + B 1 1 5 x,

48 Rozdział VI: Funkcje tworzące Przykłady 6.4. 1. a k = 1, A(x) =. a k = 1 k!, A(x) = x k = 1 1 x. 1 k! xk = e x. 3. a k = Cn k, A(x) = Cn kxk = n C k n xk = (1 + x) n. 4. a k = k, A(x) = k x k = (x) k = 1 Rozważmy wzór 1 x.. Funkcje tworzące i kombinacje (1 + x) n = (1 + x)(1 + x)... (1 + x) = }{{} n razy C k n xk Każdy czynnik (1 + x) można traktować jako odpowiadający pewnemu elementowi a i zbioru X = { a 1,..., a n } i jako reprezentujący dwie możliwości pojawienia się tego elementu w podzbiorze: zero razy (składnik x 0 = 1) i jeden raz (składnik x 1 = x). Każdy podzbiór X jest jednoznacznie określony przez definicję ilości pojawienia się w nim każdego elementu, i. e. przez wybór jednego ze składników iloczynu (1+x)... (1+x). Określony w ten sposób każdy składnik da wkład do współczynnika przy x k, gdzie k jest ilością elementów podzbioru. Więc ilość k-elementowych podzbiorów zbioru X jest równa C k n. Rozumowanie to można przenieść na kombinacje z powtórzeniami. Niech X = { a 1, a, a 3, a 4 }. Oznaczmy przez c k ilość k-kombinacji z powtórzeniami, w których a 1 może występować co najwyżej dwa razy, a trzy, a 3 jeden, zaś a 4 cztery razy. Funkcja tworząca dla ciągu c k jest C(x) = c k x k = = (1 + x + x )(1 + x + x + x 3 )(1 + x)(1 + x + x + x 3 + x 4 ) = = 1 + 4x + 9x + 15x 3 + 0x 4 + x 5 + 0x 6 + 15x 7 + 9x 8 + 4x 9 + x 10. Dobierając i-ty czynnik można nakładać dowolne ograniczenia na ilość wchodzeń elementu a i. Na przykład, jeżeli element a i może występować 0, 3 lub 7 razy, czynnik ma postać 1 + x 3 + x 7 ; jeżeli a i może występować dowolną parzystą liczbę razy, czynnik jest równy 1 + x + x 4 + = 1 1 x. Rozdział II: Algorytmy kombinatorne 9 Przykłady Przykład.3. Znaleźć max{ a 1, a,..., a n }. Rozwiązanie: patrz algorytm.. Dane: n 1 Wyniki: M = max{ a 1, a,..., a n } k 1 M a 1 {Niezmiennik: M = max{ a 1,..., a k }} while k n do k k + 1 if a k > M then M a k Algorytm.. Obliczenie max{ a 1,..., a n } Przykład.4. Obliczyć n i=1 a i. Rozwiązanie: patrz algorytm.3. Dane: n 1 Wyniki: S = n i=1 a i k 1 S a 1 {Niezmiennik: S = k i=1 a i} while k n do k k + 1 S S + a k Przykład.5. Obliczyć x n. Rozwiązanie: patrz algorytmy.4.6. Algorytm.3. Obliczenie n i=1 a i Uwaga.6. Rozwiązania.4 i.5 wymagają O(n) działań, zaś rozwiązanie.6 tylko O(log n) działań. Przykład.7. Obliczyć a 0 + a 1 x + a x + + a n x n. Rozwiązanie: patrz algorytm.7 (Schemat Gornera).

10 Rozdział II: Algorytmy kombinatorne Dane: n 0 Wyniki: S = x n k 0 S 1 {Niezmiennik: S = x k } while k n do k k + 1 S S x Dane: n 0 Wyniki: S = x n k n S 1 {Niezmiennik: S = x n k } while k 0 do k k 1 S S x Dane: n 0 Wyniki: S = x n k n S 1 b x {Niezmiennik: S b k = x n } while k 0 do if k jest liczbą parzystą then k k/ b b else {k jest liczbą nieparzystą} k k 1 S S b Algorytm.4. Obliczenie x n Algorytm.5. Obliczenie x n Algorytm.6. Obliczenie x n. Wariacje z powtórzeniami Zadanie.8. Wydrukować wszystkie ciągi długości k z liczb 1,..., n. Rozdział VI: Funkcje tworzące 47 4. Zaprojektuj sposób zastosowania algorytmu obejścia drzewa do wydrukowania wszystkich ciągów z n zer, jedynek i dwójek, w których żadna cyfra nie pojawia się dwa razy pod rząd. Zaimplementuj procedurę JestZPrawej. 5. Zaprojektuj sposób zastosowania algorytmu obejścia drzewa do wydrukowania wszystkich ciągów z n zer i dwójek, w których żadna cyfra nie pojawia się trzy razy pod rząd. Narysuj drzewo poszukiwania dla n = 5. VI. Funkcje tworzące 1. Definicje Definicja 6.1. Niech a 0, a 1, a,... będzie ciągiem. Funkcją tworzącą nazywamy szereg formalny A(x) = a k x k. (6.1) Definicja 6.. Niech A(x) = a kx k i B(x) = b kx k będą funkcje tworzące. 1. Sumą (różnicą) nazywamy szereg A(x) ± B(x) = (a k ± b k )x k.. Iloczynem funkcji A(x) i liczby rzeczywistej λ nazywamy szereg λa(x) = (λa k )x k. 3. Iloczynem (iloczynem Cauchy ego) nazywamy szereg gdzie c k = A(x) B(x) = c k x k, k a i b k i = a 0 b k + a 1 b k 1 + + a k b 0. i=0 Uwaga 6.3. Jeżeli szereg (6.1) jest zbieżnym w otoczeniu zera, to funkcji tworzącej odpowiada funkcja rzeczywista, określona w tym samym otoczeniu zera. W tym przypadku działaniom, określonym w definicji 6. odpowiadają działania nad funkcjami rzeczywistymi. Szereg (6.1) jest rozwinięciem funkcji w szereg Maclaurina. Więc a k = A(k) (0). k!

46 Rozdział V: Wybrane algorytmy na grafach 7. Podaj przykład drzewa poszukiwań i wierzchołka W, tak żeby istniały dokładnie 3 liście po lewej stronie od W. 8. Podaj przykład drzewa poszukiwań i wierzchołka W, tak żeby istniały dokładnie 3 liście z góry od W. 9. Podaj przykład drzewa poszukiwań i wierzchołka W, tak żeby istniały dokładnie 3 wierzchołki po prawej stronie od W. 10. Podaj przykład drzewa poszukiwań i wierzchołka W, tak żeby istniały dokładnie 3 wierzchołki po lewej stronie od W. 11. Podaj przykład drzewa poszukiwań i wierzchołka W, tak żeby istniały dokładnie 3 wierzchołki z góry od W. 1. Podaj przykład drzewa poszukiwań i wierzchołka W, tak żeby istniały dokładnie 3 wierzchołki z doły od W. 13. Zaprojektuj modyfikację rozwiązania zadania o hetmanach szachowych, żeby wydrukowane zostało tylko jedno umieszczenie. 14. Zaprojektuj sposób zastosowania algorytmu obejścia drzewa do wydrukowania wszystkich ciągów długości k z liczb 1,..., n. Narysuj drzewo poszukiwań dla k =, n = 3. 15. Zaprojektuj sposób zastosowania algorytmu obejścia drzewa do wydrukowania wszystkich ciągów długości k z liczb 1,..., n. Zaimplementuj procedurę JestZGóru. 16. Zaprojektuj sposób zastosowania algorytmu obejścia drzewa do wydrukowania wszystkich n-permutacji. Narysuj drzewo poszukiwań dla n = 3. 17. Zaprojektuj sposób zastosowania algorytmu obejścia drzewa do wydrukowania wszystkich n-permutacji. Zaimplementuj procedurę JestZPrawej. 18. Zaprojektuj sposób zastosowania algorytmu obejścia drzewa do wydrukowania wszystkich k-elementowych podzbiorów zbioru { 1,..., n }. Narysuj drzewo poszukiwań dla k =, n = 3. 19. Zaprojektuj sposób zastosowania algorytmu obejścia drzewa do wydrukowania wszystkich k-elementowych podzbiorów zbioru { 1,..., n }. Zaimplementuj procedurę WGórę. 0. Niech dane będą tablica liczb a 1,..., a n i liczba s. Zaprojektuj sposób zastosowania algorytmu obejścia drzewa do rozwiązania zadania, czy można przedstawić s jako sumę niektórych a i. Narysuj drzewo poszukiwań dla a = = (, 3, 1), s =. 1. Niech dane będą tablica liczb a 1,..., a n i liczba s. Zaprojektuj sposób zastosowania algorytmu obejścia drzewa do rozwiązania zadania, czy można przedstawić s jako sumę niektórych a i. Zaimplementuj procedurę WPrawo.. Niech dane będą tablica liczb a 1,..., a n i liczba s. Zaprojektuj sposób zastosowania algorytmu obejścia drzewa do rozwiązania zadania, czy można przedstawić s jako sumę niektórych a i. Narysuj drzewo poszukiwań dla a = = (, 3, 1), s =. 3. Zaprojektuj sposób zastosowania algorytmu obejścia drzewa do wydrukowania wszystkich ciągów z n zer, jedynek i dwójek, w których żadna cyfra nie pojawia się dwa razy pod rząd. Narysuj drzewo poszukiwania dla n = 5. Dane: n 0 Wyniki: S = a 0 + + a n x n k 0 S a n {Niezmiennik: S = a n x k + a n 1 x k 1 + + a n k x 0 } while k n do k k + 1 S S x + a n k Algorytm.7. Schemat Gornera Rozdział II: Algorytmy kombinatorne 11 Definicja.9 (Uporządkowanie leksyko-graficzne). Ciąg a = a 1,..., a k jest poprzednikiem ciągu b = b 1,..., b l, jeżeli istnieje liczba naturalna m 0, taka że 1. a i = b i dla i = 1,..., m,. a m+1 < b m+1 lub a m+1 nie istnieje, zaś b m+1 istnieje (k = m < l). Oznaczenie: a b. Rozwiązanie zadania.8. Wydrukujmy ciągi w porządku leksyko-graficznym. Pierwszym ciągiem będzie 1,..., 1, ostatnim n,..., n. Patrz algorytm.8. }{{}}{{} k razy k razy Dane: n, k 1 Wyniki: Wydrukować wszystkie ciągi długości k z liczb 1,..., n. {l jest ostatnim ciągiem} l 1 n,..., l k n x 1 1,..., x k 1 wydrukować x {Niezmiennik: wydrukowane są wszystkie ciągi do x włącznie} while x l do x następny ciąg wydrukować x Algorytm.8. Wydrukowanie wszystkich ciągów długości k z liczb 1,..., n Przejście do następnego ciągu w algorytmie.8 odbywa się w sposób następujący: 1. znaleźć pierwszy z prawej wyraz, mniejszy od n,. powiększyć go o jeden,

1 Rozdział II: Algorytmy kombinatorne Dane: x nie jest ostatnim ciągiem Wyniki: x jest następnym ciągiem w porządku leksyko-graficznym p k {Niezmiennik: x p+1 = = x k = n} while x p = n do p p 1 {x p < n, x p+1 = = x k = n} x p x p + 1 i p {Niezmiennik: x p+1 = = x i = 1} while i n do i i + 1 x i 1 Algorytm.9. Przejście do następnego ciągu w algorytmie.8 3. następne wyrazy ciągu przyrównać do jedynki. Implementacja dana jest w algorytmie.9. Uwaga.10. Jeżeli wyrazami ciągu są liczby od 0 do n 1, to przejściu do następnego ciągu odpowiada dodawanie jedynki przy podstawie numeracji n. Zadanie.11. Wydrukować wszystkie podzbiory zbioru { 1,... k }. Podpowiedź. Podzbiory znajdują się we wzajemnie-jednoznacznym odwzorowaniu z ciągami długości k z zer i jedynek. 3. Permutacje Zadanie.1. Wydrukować wszystkie permutacje zbioru { 1,..., n } Rozwiązanie. Wydrukujmy permutacje w porządku leksyko-graficznym. Pierwszą permutacją będzie 1,,..., n, zaś ostatnią n,...,, 1. Algorytm jest podobny do algorytmu.8. Przejście do następnej permutacji odbywa się w sposób następujący (v. algorytm.10): 1. Znaleźć największe k, takie że x k < x k+1 oraz x k+1 > > x n.. Powiększyć x k w najmniejszy możliwy sposób, i. e., zamienić x k z najmniejszą spośród x k+1,..., x n liczbą, która jest większa od x k. 3. Umieścić liczby x k+1,... x n w porządku wzrostu, żeby otrzymana permutacja była najmniejszą. Można skorzystać z tego, że ciąg x k+1,..., x n jest malejącym. Rozdział V: Wybrane algorytmy na grafach 45 Dane: Robot jest w dopuszczalnym k-stanie Wyniki: JestZPrawej = prawda i nowy numer pionownicy dla hetmana k zapisany jest w New lub JestZPrawej = fałsz i nie ma możliwości umieścić hetmana k w tej samej poziomnicy y k x P k + 1 {Niezmiennik: JestZPrawej = fałsz i nie można umieścić hetmana w pinownicach P k+1,..., x 1 lub JestZPrawej = prawda i można umieścić hetmana w pionownicy x} while x n i JestZPrawej = fałsz do if H x = fałsz i U x y = fałsz i V x+y = fałsz then JestZPrawej prawda else {Pionownica lub jedna z przekątnych nie jest wolna} x x + 1 if JestZPrawej = prawda then New x Algorytm 5.10. Procedura JestZPrawej do zadania o hetmanach Dane: Robot jest w dopuszczalnym k-stanie i można umieścić hetmana w pinownicy New Wyniki: Robot jest w następnym dopuszczalnym k-stanie. x P k y k H x fałsz U x y fałsz V x+y fałsz x New P k x H x prawda U x y prawda V x+y prawda Algorytm 5.11. Procedura WPrawo do zadania o hetmanach. Co nazywa się liściem w drzewie poszukiwań? 3. Co nazywa się korzeniem w drzewie poszukiwań? 4. Podaj przykład drzewa poszukiwań, które ma 6 liści. 5. Podaj przykład drzewa poszukiwań, które ma 6 wierzchołków. 6. Podaj przykład drzewa poszukiwań i wierzchołka W, tak żeby istniały dokładnie 3 liście po prawej stronie od W.

44 Rozdział V: Wybrane algorytmy na grafach Dane: Robot jest w dopuszczalnym k-stanie Wyniki: JestZGóru = prawda i numer pionownicy dla kolejnego hetmana zapisany jest w New lub JestZGóru = fałsz i nie ma możliwości umieścić kolejnego hetmana if k = n then JestZGóru fałsz else {k < n} JestZGóru fałsz y k + 1 x 1 {Niezmiennik: JestZGóru = fałsz i nie można umieścić hetmana w pinownicach 1,..., x 1 lub JestZGóru = prawda i można umieścić hetmana w pionownicy x} while x n i JestZGóru = fałsz do if H x = fałsz i U x y = fałsz i V x+y = fałsz then JestZGóru prawda else {Pionownica lub jedna z przekątnych nie jest wolna} x x + 1 if JestZGóru = prawda then New x Algorytm 5.8. Procedura JestZGóru do zadania o hetmanach W procedurze WPrawo trzeba zdjąć hetmana z pozycji (P k, k) i umieścić jego w pozycji (New, k). Implementacja algorytm 5.11. W procedurze Wydrukować trzeba sprawdzić, czy zostały umieszczone wszystkie hetmany i, jeżeli tak, to wydrukować rozwiązanie. Implementacja dana jest w algorytmie 5.1. Dane: Robot jest w liściu. Wyniki: Jeżeli liść odpowiada rozwiązaniu, to ono jest wydrukowane if k = n then Wydrukować P. Algorytm 5.1. Procedura Wydrukować do zadania o hetmanach 1. Zdefiniuj drzewo poszukiwań.. Pytania na egzamin Rozdział II: Algorytmy kombinatorne 13 Dane: x nie jest ostatnią permutacją Wyniki: x jest następną permutacją w porządku leksyko-graficznym k n 1 {Niezmiennik: x k+1 > > x n } while x k > x k+1 do k k 1 {x k < x k+1 oraz x k+1 > > x n } t k + 1 {Niezmiennik: t n oraz x k+1 > > x t > x k } while t n i x t+1 > x k do t t + 1 {x k+1 > > x t > x k > x t+1 > > x n } x k x t {x k+1 > > x n } Przestawić x k+1,... x n w porządku odwrotnym. Algorytm.10. Przejście do następnego ciągu w algorytmie wyliczenia permutacji 4. Podzbiory Zadanie.13. Wydrukować wszystkie k-elementowe podzbiory zbioru { 1,..., n }. Pierwsze rozwiązanie. Przedstawmy k-elementowy podzbiór zbioru { 1,..., n } jako ciąg zer i jedynek długości n, zawierających dokładnie k jedynek. Wydrukujemy je w porządku leksyko-graficznym. Pierwszym ciągiem będzie 0,..., 0, 1,..., 1. Ostatnim zaś 1,..., 1, 0,..., 0. }{{}}{{}}{{}}{{} n k razy k razy k razy n k razy Algorytm jest podobny do algorytmu.8. Przy przejściu do kolejnego ciągu x s można powiększyć, tylko gdy x s = 0, a po prawej stronie są jedynki. Przejście do następnego ciągu, przedstawiającego podzbiór odbywa się w sposób następujący (v. algorytm.11): 1. Znaleźć największe takie s, że x s = 0, x s+1 = 1.. Zamienić x s na jedynkę. 3. Rozstawić x s+1,..., x n tak, żeby na początku były same zera, a potem same jedynki, i. e., żeby otrzymany ciąg był najmniejszym z możliwych. Drugie rozwiązanie. Przedstawmy podzbiór poprzez przeliczenie jego elementów. Żeby każdy podzbiór został wydrukowany jeden raz, wymieniamy elementy w porządku rosnącym. W taki sposób trzeba wydrukować wszystkie rosnące ciągi długości k z liczb 1,..., n. Wydrukujmy je w porządku

14 Rozdział II: Algorytmy kombinatorne Dane: x przedstawia nie ostatni podzbiór Wyniki: x przedstawia następny podzbiór w porządku leksyko-graficznym s n 1 while x s 0 lub x s+1 1 do s s 1 {x s = 0 oraz x s+1 = 1} x s 1 I 0 k s {Niezmiennik: I zgadza się z ilością jedynek spośród x s+1,..., x k } while k n do k k + 1 I I + x k x s+1 0,..., x n I+1 0 x n I+ 1,..., x n 1 Algorytm.11. Przejście do następnego ciągu w pierwszym algorytmie wyliczania podzbiorów długości k zbioru { 1,..., n } leksyko-graficznym. Pierwszym ciągiem będzie 1,,..., k, zaś ostatnim (n k + 1),..., (n 1), n. Przy przejściu do kolejnego ciągu x s można powiększyć, tylko gdy x s < < n k +s, więc przejście do kolejnego ciągu odbywa się w sposób następujący (v. algorytm.1): 1. Znaleźć największe takie s, że x s < n k + s.. Powiększyć x s o jedynkę. 3. Kolejne wyrazu ciągu powinny rosnąć o jeden. 5. Pytania na egzamin 1. Co nazywa się niezmiennikiem pętli?. Niech przed pętlą WHILE niezmiennik pętli będzie mieć wartość prawda. Jakie wartości będą miały po pętle niezmiennik oraz warunek kontynuacji pętli? 3. Podaj przykład pętli WHILE. 4. Zaprojektuj pętlę do odnalezienia max{ y 1,..., y t } używając niezmiennik. 5. Zaprojektuj pętlę do obliczania iloczynu y 1 y... y t używając niezmiennik. 6. Zaprojektuj pętlę do obliczania sumy y 1 y +y 3 +( 1) t 1 y t używając niezmiennik. 7. Liczba zmiennoprzecinkowa przedstawiona jest jako para (x, k), gdzie x [1, 10) jest mantysą, k Z nazywa się wyznacznikiem części potęgowej. Rozdział V: Wybrane algorytmy na grafach 43 Wyniki: JestZDołu = fałsz Robot jest w korzeniu if k = 0 then JestZDołu fałsz else {k > 0} JestZDołu prawda Algorytm 5.6. Procedura JestZDołu do zadania o hetmanach Dane: Robot jest w dopuszczalnym stanienie, nie w korzeniu (k > 0) Wyniki: Robot jest w dopuszczalnym stanie o jeden poziom niżej x P k ; y k H x fałsz U x y fałsz V x+y fałsz k k 1 Algorytm 5.7. Procedura WDół do zadania o hetmanach JestZGóru powinno być fałsz. Jeżeli k < n, to trzeba dobrać taką wartość P k+1 między 1 a n, żeby odpowiedne pionownica i dwie przekątne były wolne. Jeżeli takiej wartości nie ma, JestZGóru powinno być fałsz. Jeżeli JestZGóru = fałsz, wartość P k+1 nie jest istotną. Implementacja procedury dana jest w algorytmie 5.8. W procedurze WGórę trzeba umieścić kolejnego hetmana w pionownicy P k+1, i. e., oznaczyć pionownicę i obydwie przekątne, jako zajęte i powiększyć poziom Robota w drzewie. Implementacja procedury dana jest w algorytmie 5.9. Dane: Robot jest w dopuszczalnym k-stanie i można umieścić kolejnego hetmana w pinownicy New Wyniki: Robot jest w pierwszym dopuszczalnym (k + 1)-stanie. k k + 1 x New y k P k x H x prawda U x y prawda V x+y prawda Algorytm 5.9. Procedura WGórę do zadania o hetmanach Procedura JestZPrawej jest podobna do procedury JestZGóru. Różnica polega na tym, że dobieramy pionownicę dla hetmana w tej samej poziomnicy. Implementacja procedury dana jest w algorytmie 5.10.

4 Rozdział V: Wybrane algorytmy na grafach poziomnicy y i pionownicy x, znajduje się na prawej przekątnej x + y, v. rysunek 5.9. V i ma wartość prawda, jeżeli na i-ej lewej przekątnej znajduje się hetman, odpowiednio fałsz, jeżeli i-ta lewa przekątna jest wolna. Hetman, umieszczony na poziomnicy y i pionownicy x, znajduje się na lewej przekątnej x y, v. rysunek 5.10. 4 3 1 1 3 4 3 4 5 6 7 8 Rysunek 5.9. Prawe przekątne U -3 - -1 0 1 1 3 4 3 4 3 1 Rysunek 5.10. Lewe przekątne Tablicy H, U i V pomogą sprawdzić dopuszczalność stanu. Na przykład, dla stanu A na rysunku 5.8 tablicy te równe są odpowiednio H = (prawda, prawda, fałsz, fałsz), U = (prawda, fałsz, fałsz, prawda, prawda, fałsz, fałsz), V = (fałsz, fałsz, prawda, prawda, fałsz, prawda, fałsz). W korzeniu wszystkie wartości tych tablic równe są fałsz. Do rozwiązania zadania zastosujemy algorytm 5.. Główny program, łącznie z działaniami wstępnymi, przedstawiony jest w algorytmie 5.5. Dane: n > 0 Wyniki: wydrukowane są wszystkie rozwiązania zadania o hetmanach k 0 U fałsz,..., U n fałsz V 1 n fałsz,..., V n 1 fałsz H 1 fałsz,..., H n fałsz algorytm 5. Algorytm 5.5. Program główny do zadania o hetmanach Do implementacja procedur JestZDołu oraz WDół zauważmy, że poziom Robota na drzewie określony jest poprzez wartość zmiennej k (ilości umieszczonych hetmanów). W szczególności, w korzeniu k = 0. Implementacja procedur dana jest w algorytmach 5.6 i 5.7. W procedurze JestZGóru trzeba dobrać pionownicę dla kolejnego hetmana. W szczególności, jeżeli k = n, i.e. wszystkie hetmany zostały umieszczone, V Rozdział II: Algorytmy kombinatorne 15 Dane: x przedstawia nie ostatni podzbiór Wyniki: x przedstawia następny podzbiór w porządku leksyko-graficznym s n while x s n k + s do s s 1 x s x s + 1 i s {Niezmiennik: w ciągu x s,..., x i każdy następny wyraz jest o 1 większy od poprzedniego} while i n do i i + 1 x i x i 1 + 1 Algorytm.1. Przejście do następnego ciągu w drugim algorytmie wyliczania podzbiorów długości k zbioru { 1,..., n } Wartość liczby zmiennoprzecinkowej to x 10 k. Opracować algorytm do podniesienia liczby zmiennoprzecinkowej (x, k) do potęgi s o skomplikowaności O(s). 8. Liczba zmiennoprzecinkowa przedstawiona jest jako para (x, k), gdzie x [1, 10) jest mantysą, k Z nazywa się wyznacznikiem części potęgowej. Wartość liczby zmiennoprzecinkowej to x 10 k. Opracować algorytm do podniesienia liczby zmiennoprzecinkowej (x, k) do potęgi s o skomplikowaności O(log s). Podpowiedź: można użyć niezmiennik (y 10 α ) (b 10 β ) λ = (x 10 k ) s, 1 y, b < 10. 9. Obliczyć według schematu Gornera wartość wielomianu x 5 x 4 + 3x 3 4x + 5 w punkcie. 10. Uporządkować w porządku leksyko-graficznym ciągi: a 1 = (1,, 3), a = = (1, 1, 1), a 3 = (1, 1), a 4 = (1). 11. Podaj definicję porządku leksyko-graficznego. 1. Podaj przykład ciągu, który jest między c 1 = (1, 1, 1) a c = (1, 1) względem porządku leksyko-graficznego. 13. Podaj przykład ciągu x, takiego, że x y, gdzie y = (0, 0, 0). 14. Ustal wzajemnie-jednoznaczne odwzorowanie zbioru wszystkich podzbiorów zbioru { 1,,..., n } na zbiór wszystkich ciągów długości n, złożonych z zer i jedynek. Co odpowiada zbiorowi pustemu? 15. Zaprojektuj algorytm wydrukowania wszystkich ciągów długości k z liczb 1,..., n w porządku, odwrotnym do leksyko-graficznego. (Bez implementacji przejścia do następnego ciągu). 16. Zaprojektuj algorytm przejścia do kolejnego ciągu przy wydrukowaniu wszystkich ciągów długości k z liczb 1,..., n w porządku, odwrotnym do

16 Rozdział II: Algorytmy kombinatorne leksyko-graficznego. 17. Zaprojektuj algorytm wydrukowania wszystkich podzbiorów zbioru { 1,,..., k }. 18. Zaprojektuj algorytm wydrukowania wszystkich permutacji zbioru { 1,..., n } w porządku, odwrotnym do leksyko-graficznego. (Bez implementacji przejścia do następnego ciągu). 19. Zaprojektuj algorytm przejścia do kolejnego ciągu przy wydrukowaniu wszystkich permutacji zbioru { 1,..., n } w porządku, odwrotnym do leksyko-graficznego. 0. Przedstawmy k-elementowy podzbiór zbioru { 1,..., n } jako ciąg zer i jedynek długości n, zawierających dokładnie k jedynek. Zaprojektuj algorytm wydrukowania wszystkich k-elementowych podzbiorów zbioru { 1,..., n } w porządku, odwrotnym do leksyko-graficznego. (Bez implementacji przejścia do następnego ciągu). 1. Przedstawmy k-elementowy podzbiór zbioru { 1,..., n } jako ciąg zer i jedynek długości n, zawierających dokładnie k jedynek. Zaprojektuj algorytm przejścia do kolejnego ciągu przy wydrukowaniu wszystkich k-elementowych podzbiorów zbioru { 1,..., n } w porządku, odwrotnym do leksyko-graficznego.. Przedstawmy k-elementowy podzbiór zbioru { 1,..., n } jako rosnący ciąg jego elementów. Zaprojektuj algorytm przejścia do kolejnego ciągu przy wydrukowaniu wszystkich k-elementowych podzbiorów zbioru { 1,..., n } w porządku, odwrotnym do leksyko-graficznego. 3. Przedstawmy k-elementowy podzbiór zbioru { 1,..., n } jako malejący ciąg jego elementów. Zaprojektuj algorytm przejścia do kolejnego ciągu przy wydrukowaniu wszystkich k-elementowych podzbiorów zbioru { 1,..., n } w porządku, odwrotnym do leksyko-graficznego. 4. Przedstawmy k-elementowy podzbiór zbioru { 1,..., n } jako malejący ciąg jego elementów. Zaprojektuj algorytm przejścia do kolejnego ciągu przy wydrukowaniu wszystkich k-elementowych podzbiorów zbioru { 1,..., n } w porządku leksyko-graficznym. 5. Wypisać wszystkie 3-elementowe ciągi z liczb { 0, 1 } w porządku leksyko- -graficznym. 6. Wypisać wszystkie -elementowe ciągi z liczb { 0, 1, } w porządku, odwrotnym do leksyko-graficznego. 7. Wypisać wszystkie podzbiory zbioru { 0, 1 } w porządku leksyko-graficznym. 8. Wypisać wszystkie podzbiory zbioru { 0, 1, } w porządku, odwrotnym do leksyko-graficznego. 9. Wypisać wszystkie permutacje zbioru { 0, 1 } w porządku leksyko-graficznym. 30. Wypisać wszystkie permutacje zbioru { 0, 1, } w porządku, odwrotnym do leksyko-graficznego. 31. Przedstawmy k-elementowy podzbiór zbioru { 1,..., n } jako malejący ciąg jego elementów. Wypisać wszystkie -elementowe podzbiory zbioru Rozdział V: Wybrane algorytmy na grafach 41 sensu kontynuować poszukiwanie po tej gałęzi. Nazwiemy k-stan dopuszczalnym, jeżeli hetmany się nie atakują. Rozważmy drzewo, złożone tylko z dopuszczanych stanów (v. rysunek 5.8). A Rysunek 5.8. Drzewo stanów dopuszczalnych w zadaniu o hetmanach szachowych dla n = 4 Przedstawmy stan za pomocą zmiennej k, ilości ustawionych hetmanów, oraz tablicy P i, i = 1,... n, gdzie P i jest numerem pionownicy hetmana numer i, ustanowionego w poziomnicy i. Na przykład, stanowi A na rysunku 5.8 odpowiada k = 3, P = (1, 4,, ), w korzeniu k = 0. Przy i > k wartość P i nie jest istotną. Wprowadzimy trzy tablicy pomocnicze H i, i = 1,..., n, U i, i =,... n oraz V j, j = 1 n,..., n 1. H i ma wartość prawda, jeżeli na i-ej pionownicy znajduje się hetman, oraz fałsz, jeżeli i-ta pionownica jest wolna. U i ma wartość prawda, jeżeli na i-ej prawej przekątnej znajduje się hetman, oraz fałsz, jeżeli i-ta prawa przekątna jest wolna. Hetman, umieszczony na

40 Rozdział V: Wybrane algorytmy na grafach Dane: Robot jest w korzeniu, wierzchołki nie wydrukowane Wyniki: Robot jest w korzeniu, wierzchołki są wydrukowane {Wydrukowane są wszystkie wierzchołki po lewej stronie i z dołu} WGóręIWydrukować {Niezmiennik: Wydrukowane są wszystkie wierzchołki po lewej stronie, z dołu i z góry} while JestZDołu do if JestZPrawej then WPrawo {Wydrukowane są wszystkie wierzchołki po lewej stronie i z dołu} WGóręIWydrukować else {Nie ma z prawa, jest z dołu} WDół {Robot jest w korzeniu, więc wydrukowane są wszystkie wierzchołki} Algorytm 5.4. Wydrukowanie wszystkich wierzchołków drzewa poszukiwań (k + 1)-ty hetman. Otrzymany graf będzie drzewem poszukiwań i można zastosować program obejścia drzewa 5., wybierając do druku tylko te liście, w których hetmany się nie atakują. Rysunek 5.7. Drzewo stanów w zadaniu o hetmanach szachowych dla n = Drzewo poszukiwania, określone w poprzednim akapicie, ma n n liści i nn+1 1 n 1 wierzchołków. W taki sposób, można spodziewać się algorytmu o skomplikowaności O(n n ). Można powiększyć efektywność algorytmu, zmniejszywszy drzewo. Zauważmy, że jeżeli w k-stanie dwa hetmany się atakują, to nie ma Rozdział III: Podzielność liczb naturalnych 17 { 0, 1,, 3 } w porządku leksyko-graficznym. 3. Przedstawmy k-elementowy podzbiór zbioru { 1,..., n } jako rosnący ciąg jego elementów. Wypisać wszystkie 3-elementowe podzbiory zbioru { 0, 1,, 3 } w porządku, odwrotnym do leksyko-graficznego. 33. Przedstawmy k-elementowy podzbiór zbioru { 1,..., n } jako ciąg z zer i jedynek, zawierający dokładnie k jedynek. Wypisać wszystkie 3-elementowe podzbiory zbioru { 0, 1,, 3 } w porządku, odwrotnym do leksyko-graficznego. 34. Przedstawmy k-elementowy podzbiór zbioru { 1,..., n } jako ciąg z zer i jedynek, zawierający dokładnie k jedynek. Wypisać wszystkie -elementowe podzbiory zbioru { 0, 1,, 3 } w porządku leksyko-graficznym. III. Podzielność liczb naturalnych 1. Dzielenie liczb całkowitych i pierścień Z m Twierdzenie 3.1. Możliwość dzielenia z resztą. x, y Z, y 0 istnieją jedyne q, r Z, 0 r y 1, takie że x = qy + r, q = x div y nazywa się ilorazem, r = x mod y resztą. Definicja 3.. Liczba całkowita x jest podzielna przez y (wielokrotnością y), jeżeli reszta przy dzieleniu wynosi zero, czyli q Z, x = qy. Mówimy również, że y jest dzielnikiem (podzielnikiem) x, piszemy y x. Ustalmy liczbę m Z, m > 1. Definicja 3.3. Liczby całkowite x i y są porównywalne modulo m, jeżeli x y jest podzielna przez m: x y (mod m). Lemat. x y (mod m) x i y mają jednakowe reszty przy dzieleniu przez m Twierdzenie 3.4. Relacja porównywalności jest relacją równoważności. Dowód. Sprawdźmy, że relacja ta jest zwrotną, symetryczną, oraz przechodnią. Wniosek 3.5. relacją porównywalności rozbija zbiór Z na klasy reszt [x] = = { y Z y x (mod m) }. Przy tym 1. [x 1 ] = [x ] x 1 x (mod m),. jeżeli x 1 x (mod m), to [x 1 ] [x ] =.