New Wydawnictwo UG | Wydawnictwo UG - Matematyka dyskretna · 2018. 11. 7. · 6 Spis tre´sci 2.12...

24

Transcript of New Wydawnictwo UG | Wydawnictwo UG - Matematyka dyskretna · 2018. 11. 7. · 6 Spis tre´sci 2.12...

  • Matematyka dyskretna

  • Andrzej Szepietowski

    Matematykadyskretna

    Wydawnictwo Uniwersytetu GdańskiegoGdańsk 2018

  • Recenzja

    prof. dr hab. Marek Zaionc

    Redakcja wydawnicza

    Dorota Zgaińska

    Projekt okładki i stron tytułowych

    Gabriela Gic-Grusza

    Skład i łamanie

    Marcin Babnis

    Wydanie drugie poprawione

    c© Copyright by Uniwersytet GdańskiWydawnictwo Uniwersytetu Gdańskiego

    ISBN 978-83-7865-747-7

    Wydawnictwo Uniwersytetu Gdańskiego

    ul. Armii Krajowej 119/121, 81-824 Sopot

    tel./fax 58 523 11 37, tel. 725 991 206

    e-mail: [email protected]

    www.wyd.ug.edu.pl

    Księgarnia internetowa: www.kiw.ug.edu.pl

  • Spis treści

    Przedmowa 13

    1 Podstawowe pojęcia, oznaczenia 15

    1.1 Sumy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 15

    1.2 Iloczyny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

    1.3 Zbiory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 17

    1.4 Różnica symetryczna zbiorów . . . . . . . . . . . . . . . . . . . . . . . 18

    1.5 Iloczyn kartezjański . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19

    1.6 Rodzina zbiorów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20

    1.7 Grafy (nieskierowane) . . . . . . . . . . . . . . . . . . . . . . . . . . . 21

    1.8 Drzewa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 23

    1.9 Drzewa ukorzenione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 24

    1.10 Grafy skierowane . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    1.11 Słowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

    1.12 Zaokrąglenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    1.13 Przedrostki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 27

    1.14 Notacja asymptotyczna . . . . . . . . . . . . . . . . . . . . . . . . . . . 28

    1.15 Wielomiany . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 30

    1.15.1 Dzielenie wielomianów . . . . . . . . . . . . . . . . . . . . . . 31

    1.15.2 Schemat Horna . . . . . . . . . . . . . . . . . . . . . . . . . . . 32

    1.15.3 Pierwiastki wielomianu . . . . . . . . . . . . . . . . . . . . . . . 33

    1.16 Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 33

    2 Arytmetyka 37

    2.1 System dziesiętny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 37

    2.2 System dwójkowy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 38

    2.3 Zwiększanie liczby o jeden . . . . . . . . . . . . . . . . . . . . . . . . . 39

    2.4 Porównywanie liczb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 40

    2.5 Operacje arytmetyczne w systemie dwójkowym . . . . . . . . . . . . . . 40

    2.6 Zamiana systemu . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41

    2.7 Długość liczby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43

    2.8 Duże liczby . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    2.9 Ułamki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 44

    2.10 System szesnastkowy . . . . . . . . . . . . . . . . . . . . . . . . . . . . 45

    2.11 Reprezentacja liczb w komputerze . . . . . . . . . . . . . . . . . . . . . 46

    2.11.1 Integer . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 47

    2.11.2 Real . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 48

  • 6 Spis treści

    2.12 Wyrażenia arytmetyczne w języku Pascal . . . . . . . . . . . . . . . . . 48

    2.13 Poszukiwania binarne (binary search) . . . . . . . . . . . . . . . . . . . 49

    2.13.1 Poszukiwanie pierwiastka . . . . . . . . . . . . . . . . . . . . . 50

    2.14 Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 51

    2.15 Problemy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    2.15.1 Uzupełnieniowy zapis liczb ujemnych . . . . . . . . . . . . . . . 52

    2.15.2 Liczby w postaci ósemkowej i szesnastkowej w języku C . . . . . 52

    2.15.3 Sumy potęg dwójki . . . . . . . . . . . . . . . . . . . . . . . . . 52

    2.15.4 Waga . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 52

    3 Kombinatoryka 55

    3.1 Zasada podwójnego zliczania . . . . . . . . . . . . . . . . . . . . . . . . 55

    3.2 Ciągi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 56

    3.3 Funkcje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

    3.4 Ciągi bez powtórzeń . . . . . . . . . . . . . . . . . . . . . . . . . . . . 57

    3.5 Permutacje . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 58

    3.6 Podzbiory . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 60

    3.7 Podzbiory k-elementowe . . . . . . . . . . . . . . . . . . . . . . . . . . 613.8 Dwumian Newtona . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 63

    3.9 Zasada szufladkowa Dirichleta . . . . . . . . . . . . . . . . . . . . . . . 64

    3.10 Zasada sumy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 64

    3.11 Zasada włączania i wyłączania . . . . . . . . . . . . . . . . . . . . . . . 65

    3.12 Przestawienia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 68

    3.13 Generowanie obiektów kombinatorycznych . . . . . . . . . . . . . . . . 69

    3.13.1 Generowanie podzbiorów . . . . . . . . . . . . . . . . . . . . . 69

    3.13.2 Generowanie k-elementowych podzbiorów . . . . . . . . . . . . 703.13.3 Generowanie permutacji . . . . . . . . . . . . . . . . . . . . . . 71

    3.14 Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 71

    3.15 Problemy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    3.15.1 Najkrótsze drogi . . . . . . . . . . . . . . . . . . . . . . . . . . 74

    3.15.2 Rozmieszczanie przedmiotów w pudełkach. . . . . . . . . . . . . 75

    3.15.3 Wybór n przedmiotów k rozróżnialnych typów . . . . . . . . . . 753.15.4 Kombinacje z powtórzeniami . . . . . . . . . . . . . . . . . . . 76

    3.15.5 Permutacje z powtórzeniami . . . . . . . . . . . . . . . . . . . . 76

    3.15.6 Podziały uporządkowane . . . . . . . . . . . . . . . . . . . . . . 76

    3.15.7 Permutacje bez punktów stałych . . . . . . . . . . . . . . . . . . 77

    3.15.8 Liczba surjekcji . . . . . . . . . . . . . . . . . . . . . . . . . . . 77

    3.15.9 Twierdzenie Ramseya . . . . . . . . . . . . . . . . . . . . . . . 77

    3.15.10 Twierdzenie Halla o różnych reprezentantach . . . . . . . . . . . 78

    4 Rachunek prawdopodobieństwa 81

    4.1 Przestrzeń zdarzeń elementarnych . . . . . . . . . . . . . . . . . . . . . 81

    4.1.1 Zdarzenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 81

    4.1.2 Dalsze przykłady przestrzeni zdarzeń elementarnych . . . . . . . 82

    4.2 Prawdopodobieństwo . . . . . . . . . . . . . . . . . . . . . . . . . . . . 83

    4.2.1 Klasyczna definicja prawdopodobieństwa, rozkład jednostajny . . 84

    4.2.2 Własności prawdopodobieństwa . . . . . . . . . . . . . . . . . . 84

  • Spis treści 7

    4.3 Prawdopodobieństwo warunkowe . . . . . . . . . . . . . . . . . . . . . 85

    4.4 Zdarzenia niezależne . . . . . . . . . . . . . . . . . . . . . . . . . . . . 86

    4.5 Prawdopodobieństwo całkowite . . . . . . . . . . . . . . . . . . . . . . 87

    4.6 Schemat dwumianowy (Bernoulliego) . . . . . . . . . . . . . . . . . . . 89

    4.6.1 Rzut symetryczną monetą . . . . . . . . . . . . . . . . . . . . . 89

    4.6.2 Kolorowanie wierzchołków grafu . . . . . . . . . . . . . . . . . 90

    4.6.3 Trzykrotny rzut niesymetryczną monetą . . . . . . . . . . . . . . 91

    4.6.4 Ogólny schemat – n-krotny rzut niesymetryczną monetą . . . . . 92

    4.7 Zmienna losowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 93

    4.7.1 Gęstość rozkładu prawdopodobieństwa zmiennej losowej . . . . . 93

    4.7.2 Dalsze przykłady zmiennych losowych . . . . . . . . . . . . . . 94

    4.7.3 Rozkład jednopunktowy . . . . . . . . . . . . . . . . . . . . . . 95

    4.7.4 Rozkład zero-jedynkowy . . . . . . . . . . . . . . . . . . . . . . 95

    4.8 Łączny rozkład prawdopodobieństwa . . . . . . . . . . . . . . . . . . . 95

    4.8.1 Gęstość łącznego rozkładu . . . . . . . . . . . . . . . . . . . . . 96

    4.9 Niezależność zmiennych losowych . . . . . . . . . . . . . . . . . . . . . 97

    4.9.1 Własność niezależnych zmiennych losowych . . . . . . . . . . . 98

    4.10 Rozkład dwumianowy (Bernoulliego) . . . . . . . . . . . . . . . . . . . 99

    4.11 Wartość oczekiwana, średnia . . . . . . . . . . . . . . . . . . . . . . . . 100

    4.11.1 Własności wartości oczekiwanej . . . . . . . . . . . . . . . . . . 100

    4.11.2 Wartość oczekiwana rozkładu jednopunktowego . . . . . . . . . 101

    4.11.3 Wartość oczekiwana rozkładu zero-jedynkowego . . . . . . . . . 102

    4.11.4 Wartość oczekiwana rozkładu dwumianowego . . . . . . . . . . 102

    4.11.5 Wartość oczekiwana liczby różnokolorowych krawędzi . . . . . . 102

    4.11.6 Własności wartości oczekiwanej, cd. . . . . . . . . . . . . . . . . 103

    4.12 Nierówność Markowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . 103

    4.13 Wariancja . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 104

    4.13.1 Wariancja rozkładu jednopunktowego . . . . . . . . . . . . . . . 105

    4.13.2 Wariancja rozkładu zero-jedynkowego . . . . . . . . . . . . . . . 105

    4.13.3 Wariancja rozkładu dwumianowego . . . . . . . . . . . . . . . . 105

    4.13.4 Wariancja liczby różnokolorowych krawędzi . . . . . . . . . . . 105

    4.14 Nierówność Czebyszewa . . . . . . . . . . . . . . . . . . . . . . . . . . 106

    4.15 Krańce rozkładu dwumianowego . . . . . . . . . . . . . . . . . . . . . . 107

    4.16 Problem dnia urodzin . . . . . . . . . . . . . . . . . . . . . . . . . . . . 107

    4.17 Algorytmy probabilistyczne . . . . . . . . . . . . . . . . . . . . . . . . 108

    4.17.1 Algorytm z jednostronnym błędem . . . . . . . . . . . . . . . . 108

    4.17.2 Algorytm sprawdzający mnożenie wielomianów . . . . . . . . . 108

    4.17.3 Algorytmy z błędem obustronnym . . . . . . . . . . . . . . . . . 109

    4.17.4 Algorytm kolorowania wierzchołków grafu . . . . . . . . . . . . 109

    4.18 Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 110

    4.19 Problemy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 114

    4.19.1 Niezależność zmiennych losowych . . . . . . . . . . . . . . . . 114

  • 8 Spis treści

    5 Funkcje boolowskie 115

    5.1 Algebra Boole’a . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 115

    5.1.1 Algebra podzbiorów . . . . . . . . . . . . . . . . . . . . . . . . 117

    5.1.2 Alternatywa wykluczająca, xor . . . . . . . . . . . . . . . . . . . 117

    5.2 Wyrażenia boolowskie . . . . . . . . . . . . . . . . . . . . . . . . . . . 118

    5.2.1 Wyrażenia boolowskie w języku Pascal . . . . . . . . . . . . . . 119

    5.3 Funkcje boolowskie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 120

    5.3.1 Funkcje boolowskie jednej zmiennej . . . . . . . . . . . . . . . . 120

    5.3.2 Funkcje boolowskie dwóch zmiennych . . . . . . . . . . . . . . 121

    5.3.3 Alternatywa i koniunkcja n zmiennych . . . . . . . . . . . . . . 1225.3.4 Funkcja progowa . . . . . . . . . . . . . . . . . . . . . . . . . . 122

    5.3.5 Postacie normalne funkcji boolowskich . . . . . . . . . . . . . . 123

    5.4 Wielowartościowe funkcje boolowskie . . . . . . . . . . . . . . . . . . . 124

    5.5 Sieci boolowskie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 125

    5.5.1 Sieć dla alternatywy kilku zmiennych . . . . . . . . . . . . . . . 126

    5.5.2 Sumator . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 127

    5.6 Operacje boolowskie na wektorach . . . . . . . . . . . . . . . . . . . . . 128

    5.6.1 Reprezentacja zbioru . . . . . . . . . . . . . . . . . . . . . . . . 129

    5.6.2 Operacje na wektorach w języku Pascal . . . . . . . . . . . . . . 130

    5.6.3 Operacje na wektorach w języku C . . . . . . . . . . . . . . . . 130

    5.6.4 Flagi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 131

    5.6.5 Reprezentacja ustawienia bierek w grze w szachy . . . . . . . . . 131

    5.6.6 Szyfrowanie w systemie one-pad . . . . . . . . . . . . . . . . . . 131

    5.7 Funkcja parzystości (parity) . . . . . . . . . . . . . . . . . . . . . . . . 133

    5.8 Odciski, zabezpieczanie danych . . . . . . . . . . . . . . . . . . . . . . 134

    5.9 Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 136

    5.10 Problemy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

    5.10.1 Gra w kamienie . . . . . . . . . . . . . . . . . . . . . . . . . . . 137

    5.10.2 Tożsamości w algebrze podzbiorów . . . . . . . . . . . . . . . . 137

    5.10.3 Sieci funkcji progowych i sortujących . . . . . . . . . . . . . . . 138

    5.10.4 Wspólne losowanie bitów . . . . . . . . . . . . . . . . . . . . . 138

    6 Teoria liczb 139

    6.1 Dzielenie całkowitoliczbowe . . . . . . . . . . . . . . . . . . . . . . . . 139

    6.2 Podzielność liczb . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 140

    6.3 Relacja kongruencji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 141

    6.4 Klasy abstrakcji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 142

    6.5 Pierścień Zm . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 143

    6.5.1 Pierścień Z5 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 144

    6.5.2 Pierścień Z4 . . . . . . . . . . . . . . . . . . . . . . . . . . . . 145

    6.6 Największy wspólny dzielnik . . . . . . . . . . . . . . . . . . . . . . . . 145

    6.7 Algorytm Euklidesa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 146

    6.7.1 Rozszerzony algorytm Euklidesa . . . . . . . . . . . . . . . . . . 147

    6.8 Liczby pierwsze i względnie pierwsze . . . . . . . . . . . . . . . . . . . 149

    6.9 Rozkład liczb na czynniki pierwsze . . . . . . . . . . . . . . . . . . . . 149

    6.10 Elementy odwracalne . . . . . . . . . . . . . . . . . . . . . . . . . . . . 151

    6.11 Funkcja liniowa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 152

  • Spis treści 9

    6.12 Szyfry liniowe . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 154

    6.13 Chińskie twierdzenie o resztach . . . . . . . . . . . . . . . . . . . . . . 156

    6.14 Obliczenia na dużych liczbach . . . . . . . . . . . . . . . . . . . . . . . 159

    6.15 Szybkie potęgowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . 161

    6.16 Pierwiastki kwadratowe . . . . . . . . . . . . . . . . . . . . . . . . . . . 163

    6.17 Funkcja Eulera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 164

    6.18 Małe twierdzenie Fermata . . . . . . . . . . . . . . . . . . . . . . . . . 164

    6.19 Szyfry RSA . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 165

    6.20 Testy pierwszości . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

    6.20.1 Test naiwny . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

    6.20.2 Test Fermata . . . . . . . . . . . . . . . . . . . . . . . . . . . . 166

    6.20.3 Test Millera-Rabina . . . . . . . . . . . . . . . . . . . . . . . . 167

    6.20.4 Losowanie liczb pierwszych . . . . . . . . . . . . . . . . . . . . 169

    6.21 Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 169

    6.22 Problemy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 171

    6.22.1 Największy wspólny dzielnik . . . . . . . . . . . . . . . . . . . 171

    6.22.2 Najmniejsza wspólna wielokrotność . . . . . . . . . . . . . . . . 172

    6.22.3 Liczby względnie pierwsze . . . . . . . . . . . . . . . . . . . . . 172

    6.22.4 Liczby pierwsze . . . . . . . . . . . . . . . . . . . . . . . . . . 172

    6.22.5 Chińskie twierdzenie o resztach . . . . . . . . . . . . . . . . . . 172

    6.22.6 System szyfrowania one-pad . . . . . . . . . . . . . . . . . . . . 172

    6.22.7 Przestrzeń liniowa . . . . . . . . . . . . . . . . . . . . . . . . . 173

    6.22.8 Uogólnienie małego twierdzenia Fermata . . . . . . . . . . . . . 173

    6.22.9 Algorytm Euklidesa dla wielomianów . . . . . . . . . . . . . . . 173

    6.22.10 Wspólne losowanie liczby, gra w marynarza . . . . . . . . . . . . 173

    7 Stosy, kolejki i drzewa 175

    7.1 Listy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

    7.2 Stosy i kolejki . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 175

    7.3 Implementacja stosu . . . . . . . . . . . . . . . . . . . . . . . . . . . . 176

    7.4 Implementacja kolejki . . . . . . . . . . . . . . . . . . . . . . . . . . . 177

    7.5 Drzewa ukorzenione . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

    7.6 Drzewa binarne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 178

    7.7 Drzewa wyrażeń arytmetycznych . . . . . . . . . . . . . . . . . . . . . . 179

    7.8 Przeszukiwanie drzew binarnych . . . . . . . . . . . . . . . . . . . . . . 182

    7.8.1 Przeszukiwanie drzewa w głąb . . . . . . . . . . . . . . . . . . . 182

    7.8.2 Przeszukiwanie drzewa wszerz . . . . . . . . . . . . . . . . . . . 183

    7.9 Drzewa decyzyjne . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 184

    7.10 Drzewo gry . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 185

    7.10.1 Algorytm waluacji drzewa gry . . . . . . . . . . . . . . . . . . . 187

    7.11 Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

    7.12 Problemy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 189

    7.12.1 Szukanie fałszywej monety . . . . . . . . . . . . . . . . . . . . . 189

  • 10 Spis treści

    8 Rekurencja 191

    8.1 Wieże Hanoi . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 191

    8.2 Drzewo rekursji . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192

    8.3 Algorytm Euklidesa, wersja rekurencyjna . . . . . . . . . . . . . . . . . 193

    8.3.1 Rekurencyjne algorytmy przeszukiwania drzew . . . . . . . . . . 194

    8.4 Drzewa poszukiwań binarnych . . . . . . . . . . . . . . . . . . . . . . . 195

    8.5 Funkcje rekurencyjne . . . . . . . . . . . . . . . . . . . . . . . . . . . . 197

    8.6 Funkcja (ciąg) Fibonacciego . . . . . . . . . . . . . . . . . . . . . . . . 197

    8.7 Algorytm sortowania przez scalanie . . . . . . . . . . . . . . . . . . . . 198

    8.8 Rozwiązywanie równań i nierówności rekurencyjnych . . . . . . . . . . 199

    8.9 Metoda podstawiania . . . . . . . . . . . . . . . . . . . . . . . . . . . . 199

    8.10 Metoda iteracyjna . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 201

    8.11 Metoda rekurencji uniwersalnej . . . . . . . . . . . . . . . . . . . . . . 202

    8.12 Funkcje tworzące . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 203

    8.13 Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 204

    8.14 Problemy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

    8.14.1 Wieże Hanoi . . . . . . . . . . . . . . . . . . . . . . . . . . . . 207

    9 Grafy (nieskierowane) 209

    9.1 Izomorfizm grafów . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 210

    9.2 Drogi i cykle . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 211

    9.3 Drzewa . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 212

    9.4 Przeszukiwanie grafów w głąb . . . . . . . . . . . . . . . . . . . . . . . 214

    9.5 Algorytm przeszukiwania grafu wszerz . . . . . . . . . . . . . . . . . . 215

    9.6 Liczenie składowych spójności . . . . . . . . . . . . . . . . . . . . . . . 216

    9.7 Drzewa spinające . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 216

    9.8 Fundamentalny zbiór cykli . . . . . . . . . . . . . . . . . . . . . . . . . 218

    9.9 Minimalne drzewo spinające . . . . . . . . . . . . . . . . . . . . . . . . 220

    9.10 Cykle i drogi Eulera . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 221

    9.11 Drogi i cykle Hamiltona . . . . . . . . . . . . . . . . . . . . . . . . . . 224

    9.12 Kolorowanie grafów . . . . . . . . . . . . . . . . . . . . . . . . . . . . 225

    9.12.1 Kolorowanie z nawrotami . . . . . . . . . . . . . . . . . . . . . 225

    9.12.2 Kolorowanie grafu dwoma kolorami . . . . . . . . . . . . . . . . 227

    9.12.3 Heurystyki kolorowania grafów . . . . . . . . . . . . . . . . . . 228

    9.13 Hiperkostka . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 228

    9.13.1 Rozgłaszanie wiadomości . . . . . . . . . . . . . . . . . . . . . 230

    9.13.2 Zbieranie informacji . . . . . . . . . . . . . . . . . . . . . . . . 231

    9.13.3 Plotkowanie . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

    9.14 Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 231

    9.15 Problemy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 233

    9.15.1 Drzewa spinające . . . . . . . . . . . . . . . . . . . . . . . . . . 233

    9.15.2 Skojarzenia . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

    9.15.3 Minimalne drzewo spinające . . . . . . . . . . . . . . . . . . . . 234

    9.15.4 Cykle Eulera . . . . . . . . . . . . . . . . . . . . . . . . . . . . 234

  • Spis treści 11

    10 Grafy skierowane 237

    10.1 Podstawowe definicje . . . . . . . . . . . . . . . . . . . . . . . . . . . . 237

    10.2 Najkrótsze drogi w grafie . . . . . . . . . . . . . . . . . . . . . . . . . . 238

    10.3 II etap . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 239

    10.4 Algorytm Forda-Bellmana . . . . . . . . . . . . . . . . . . . . . . . . . 239

    10.5 Dodatnie długości, algorytm Dijkstry . . . . . . . . . . . . . . . . . . . . 241

    10.6 Najkrótsza droga w grafach acyklicznych . . . . . . . . . . . . . . . . . 243

    10.7 Zadania . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

    10.8 Problemy . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

    10.8.1 Spójność . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 245

    10.8.2 Cykl Eulera w grafie skierowanym . . . . . . . . . . . . . . . . . 246

    10.8.3 Ciąg de Bruijna . . . . . . . . . . . . . . . . . . . . . . . . . . . 246

    Bibliografia 247

    Skorowidz 248

  • Przedmowa

    Jest to kolejne, poprawione, wydanie podręcznika z matematyki dyskretnej. Jest on prze-

    znaczony dla studentów pierwszego roku kierunku informatyki i zawiera materiał rocz-

    nego wykładu z matematyki dyskretnej, prowadzonego przeze mnie na Uniwersytecie

    Gdańskim. Sądzę, że zawarty materiał może być pomocny także dla studentów innych

    kierunków.

    Głównym celem wykładu jest przygotowanie słuchaczy do dalszego studiowania in-

    formatyki, a w szczególności do nauki projektowania algorytmów. Podręcznik zawiera

    podstawowe wiadomości z tak zwanej matematyki dyskretnej, czyli z arytmetyki, kom-

    binatoryki, funkcji logicznych i teorii liczb. Zawiera także wiele przykładów algorytmów

    oraz zadań algorytmicznych do samodzielnego rozwiązania.

    Nie wymaga się od czytelnika specjalnego przygotowania, poza znajomością mate-

    matyki na poziomie szkoły średniej.

    Gdańsk, 10 września 2018 Andrzej Szepietowski

  • Rozdział 1

    Podstawowe pojęcia, oznaczenia

    1.1 Sumy

    Mając dany skończony ciąg liczb a1, a2, . . . , ak, sumę jego elementów zapisujemy jako

    k∑

    i=1

    ai.

    Niezbyt formalnie możemy to zapisać

    k∑

    i=1

    ai = a1 + a2 + · · ·+ ak.

    Jako przykład zastosujmy symbol sumy do zapisu wzoru na sumę ciągu arytmetycznego

    k∑

    i=1

    i = 1 + 2 + · · ·+ k = (k + 1)k2

    (1.1)

    oraz wzoru na sumę ciągu geometrycznego

    k∑

    i=0

    xi = 1 + x+ x2 + · · ·+ xk = xk+1 − 1x− 1 (1.2)

    (wzór (1.2) jest słuszny dla każdego x 6= 1).Będziemy też używać zapisu typu

    1≤i≤6ai = a1 + a2 + a3 + a4 + a5 + a6.

    W tym przypadku zbiór indeksów określony jest za pomocą warunku pod znakiem sumy.

    Warunek określający indeksy, po których należy sumować, może być bardziej skompli-

    kowany, na przykład∑

    1≤i≤6i parzyste

    ai = a2 + a4 + a6.

  • 16 Rozdział 1. Podstawowe pojęcia, oznaczenia

    Stosować będziemy także zapis∑

    i∈Iai,

    oznaczający sumę tych elementów ai, których indeksy należą do skończonego zbioruindeksów I . Na przykład jeżeli I = {1, 3, 5, 7}, to

    i∈Iai = a1 + a3 + a5 + a7.

    Możemy też sumować ciągi, których elementy zależą od dwóch indeksów,

    1≤i≤32≤j≤3

    aij =∑

    1≤i≤3

    2≤j≤3aij = a12 + a13 + a22 + a23 + a32 + a33.

    Korzystając ze znanych własności działań arytmetycznych oraz z indukcji matematycz-

    nej, łatwo można udowodnić następujące wzory

    a ·∑

    1≤i≤nai =

    1≤i≤na · ai, (1.3)

    1≤i≤n(ai + bi) =

    1≤i≤nai +

    1≤i≤nbi, (1.4)

    1≤i≤mai

    ·

    1≤j≤nbj

    =∑

    1≤i≤m1≤j≤n

    aibj , (1.5)

    1≤i≤mai

    2

    =∑

    1≤i≤ma2i +

    1≤i

  • 1.3. Zbiory 17

    1.3 Zbiory

    ∅ oznacza zbiór pusty, który nie zawiera żadnych elementów.N oznacza zbiór liczb naturalnych, N = {0, 1, 2, 3, . . .}.Z oznacza zbiór liczb całkowitych.

    Q oznacza zbiór liczb wymiernych.

    R oznacza zbiór liczb rzeczywistych.

    a ∈ A oznacza, że element a należy do zbioru A, a /∈ A – że element a nie należy dozbioru A. Najprostszy sposób zdefiniowania zbioru polega na wypisaniu jego elementóww nawiasach klamrowych. Na przykład zbiór {1, 2, 3} zawiera elementy 1, 2, 3. Innysposób definiowania zbioru polega na podaniu własności, którą spełniają elementy zbioru.

    Na przykład {x | x ∈ N, 3 < x < 7} oznacza zbiór liczb naturalnych większych od 3 imniejszych od 7.

    |A| oznacza moc zbioru A, czyli liczbę jego elementów,

    |{3, 6, 9}| = 3, |∅| = 0.

    A ∪ B oznacza sumę zbiorów, czyli zbiór zawierający elementy, które należą do A lubdo B,

    A ∪B = {x : x ∈ A lub x ∈ B}.Zatem suma A∪B zawiera wszystkie elementy zbioru A i wszystkie elementy zbioru B.

    A ∩ B oznacza iloczyn lub przekrój zbiorów, czyli zbiór zawierający elementy, którenależą do obu zbiorów naraz,

    A ∩B = {x : x ∈ A i x ∈ B}.

    A−B oznacza różnicę zbiorów, czyli zbiór zawierający elementy, które należą do Ai nie należą do B,

    A−B = {x : x ∈ A i x /∈ B}.

    Przykład 1.1 Dla A = {1, 2, 4} i B = {1, 4, 6} mamy

    A ∪B = {1, 2, 4, 6}, A ∩B = {1, 4}, A−B = {2}.

    A ⊆ B oznacza, że zbiórA zawiera się w zbiorzeB, to znaczy wszystkie elementy zbioruA należą do zbioru B,

    {2, 1} ⊆ {1, 2, 3}.Dwa zbiory są równe, jeżeli zawierają te same elementy, lub inaczej A = B wtedy i tylkowtedy, gdy A ⊆ B i B ⊆ A,

    {1, 4, 2, 3} = {4, 1, 3, 2}.

    Jak widać, kolejność elementów w zapisie zbioru nie ma znaczenia. I tak na przykład

    {1, 2} = {2, 1}. Taki zbiór dwuelementowy nazywamy parą nieuporządkowaną.W poniższym lemacie zebrano podstawowe własności operacji sumy oraz iloczynu

    zbiorów.

    Lemat 1.2 • A ∪B = B ∪A (przemienność sumy).

  • 18 Rozdział 1. Podstawowe pojęcia, oznaczenia

    • A ∩B = B ∩A (przemienność iloczynu).

    • A ∪ (B ∪ C) = (A ∪B) ∪ C (łączność sumy).

    • (A ∩B) ∩ C = A ∩ (B ∩ C) (łączność iloczynu).

    • (A ∪B) ∩ C = A ∩ C ∪B ∩ C (rozdzielność sumy względem iloczynu).

    • (A ∩B) ∪ C = (A ∪ C) ∩ (B ∪ C) (rozdzielność iloczynu względem sumy).

    • A ∪ ∅ = A, A ∩ ∅ = ∅, A ∪A = A, A ∩A = A.

    Dowód. Udowodnimy tylko rozdzielność sumy względem iloczynu. W tym celu pokaże-

    my dwa zawierania: (A∪B)∩C ⊂ A∩C ∪B ∩C oraz A∩C ∪B ∩C ⊂ (A∪B)∩C.Aby udowodnić zawieranie (A∪B)∩C ⊂ A∩C ∪B ∩C, weźmy dowolny element

    x ∈ (A ∪ B) ∩ C; wtedy x ∈ A ∪ B oraz x ∈ C, a to oznacza, że x należy do C i dojednego ze zbiorów A lub B (lub do obu), czyli należy do A ∩ C lub do B ∩ C, a więcx ∈ A ∩ C ∪ B ∩ C. Pokazaliśmy więc, że dowolny element z (A ∪ B) ∩ C należy doA ∩ C ∪B ∩ C.

    Aby udowodnić zawieranie A∩C ∪B ∩C ⊂ (A∪B)∩C, weźmy dowolny elementx ∈ A ∩ C ∪ B ∩ C; wtedy x ∈ A ∩ C lub x ∈ B ∩ C, a to oznacza, że x należy do Ci do jednego ze zbiorów A lub B (lub do obu), czyli należy do A ∪ B oraz do C, a więcx ∈ (A ∪ B) ∩ C. Pokazaliśmy więc, że dowolny element z A ∩ C ∪ B ∩ C należy do(A ∪B) ∩ C. ✷

    1.4 Różnica symetryczna zbiorów

    A ⊕ B oznacza różnicę symetryczną zbiorów, która zawiera elementy należące tylko dojednego z dwóch zbiorów

    A⊕B = (A−B) ∪ (B −A).

    Przykład 1.3

    {1, 2, 4} ⊕ {1, 4, 6} = {2, 6}.

    W poniższym lemacie zebrano podstawowe własności różnicy symetrycznej zbiorów.

    Lemat 1.4 • A⊕B = B ⊕A (przemienność).

    • (A⊕B)⊕ C = A⊕ (B ⊕ C) (łączność).

    • (A⊕B) ∩ C = A ∩ C ⊕B ∩ C (rozdzielność względem iloczynu).

    • A⊕ ∅ = A, A⊕A = ∅.

    • Jeżeli A⊕B = ∅, to A = B.

    Dowód. Udowodnimy, tylko dwie tożsamości, dowód pozostałych pozostawiamy czytel-

    nikowi jako ćwiczenie.

    Aby pokazać, że różnica symetryczna jest łączna, wystarczy zauważyć, że zbiór A⊕(B⊕C) lub (A⊕B)⊕C zawiera te elementy, które należą do nieparzystej liczby zbiorów,czyli te, które należą tylko do A, B lub C, plus te, które należą do przekroju A ∩B ∩ C.

  • 1.5. Iloczyn kartezjański 19

    Udowodnimy teraz ostatnią implikację. Jeżeli A⊕B = ∅, to

    A = A⊕ ∅ = A⊕ (A⊕B) = (A⊕A)⊕B = ∅ ⊕B = B.

    Twierdzenie 1.5 Różnica symetryczna n zbiorów

    A1 ⊕A2 ⊕ . . . ⊕An

    zawiera elementy, które należą do nieparzystej liczby spośród zbiorów A1, A2, . . . , An.

    Dowód przez indukcję ze względu na n. Twierdzenie jest oczywiste dla n = 1 lubn = 2. Załóżmy teraz, że jest ono prawdziwe dla n i rozpatrzmy

    A1 ⊕ . . . ⊕An ⊕An+1 = (A1 ⊕ . . . ⊕An)⊕An+1.

    Zbiór ten zawiera te elementy, które należą do (A1 ⊕ . . . ⊕ An) i nie należą do An+1,oraz te, które nie należą do (A1 ⊕ . . . ⊕ An) i należą do An+1. W pierwszym przypad-ku są to elementy, które nie należą do An+1 i na mocy założenia indukcyjnego należądo jakiejś nieparzystej liczby zbiorów spośród A1, . . . , An. W drugim przypadku są toelementy, które należą do An+1, a także do pewnej parzystej liczby zbiorów spośródA1, . . . , An. Razem mamy wszystkie elementy należące do nieparzystej liczby zbiorówspośród A1, . . . , An+1. ✷

    1.5 Iloczyn kartezjański

    Para uporządkowana jest to dwuelementowy ciąg (x, y). Mamy (x, y) = (u, v) wtedy itylko wtedy, gdy x = u oraz y = v. Dopuszczalne jest także x = y.

    A×B oznacza iloczyn kartezjański zbiorów A i B. Jest to zbiór wszystkich uporząd-kowanych par (a, b), w których a ∈ A i b ∈ B. Inaczej

    A×B = {(a, b) | a ∈ A, b ∈ B}.

    Przykład 1.6 Dla A = {1, 3, 5} i B = {3, 4} mamy

    A×B = {(1, 3), (1, 4), (3, 3), (3, 4), (5, 3), (5, 4)}.

    Można łatwo wykazać, że |A×B| = |A| · |B|. Podobnie można tworzyć iloczyn większejliczby składników.

    A×B × C = {(a, b, c) | a ∈ A, b ∈ B c ∈ C}.

    Elementy iloczynu kartezjańskiego będziemy też nazywać wektorami.A2 oznaczaA×A,podobnie A3 = A×A×A i ogólnie An = {(a1, . . . , an) | ∀iai ∈ A}.

  • 20 Rozdział 1. Podstawowe pojęcia, oznaczenia

    1.6 Rodzina zbiorów

    Czasami będziemy mieli do czynienia ze zbiorem, którego elementami są zbiory. Przez

    P(A) lub 2A

    oznaczamy zbiór wszystkich podzbiorów zbioru A.

    Przykład 1.7 Dla A = {a, b}P(A) = {∅, {a}, {b}, {a, b}}.

    Zbiór zbiorów nazywamy czasami rodziną zbiorów. Na przykład A = {A1, A2, A3, A4}jest rodziną zawierającą cztery zbioryA1,A2,A3 iA4; są to elementy zbioru A. Możemyteż zapisać A = {Ai | 1 ≤ i ≤ 4}.

    Zbiory z rodziny możemy sumować. Suma

    k⋃

    i=1

    Ai

    zawiera te elementy, które należą do któregoś ze zbiorów A1, A2, . . . , Ak, czyli

    k⋃

    i=1

    Ai = {x | ∃i 1≤i≤k x ∈ Ai}.

    Inaczej możemy to zapisać

    k⋃

    i=1

    Ai = A1 ∪A2 ∪ . . . ∪Ak.

    Będziemy też używać zapisu⋃

    i∈IAi

    na oznaczenie sumy wszystkich zbiorów Ai, których indeksy należą do zbioru I . Zacho-dzi wtedy

    i∈IAi = {x | ∃i∈I x ∈ Ai}.

    Zbiór indeksów sumowania może być określony za pomocą warunku⋃

    1

  • 1.7. Grafy (nieskierowane) 21

    Możemy też brać przekroje zbiorów z rodziny. Przekrój

    k⋂

    i=1

    Ai

    zawiera te elementy, które należą do wszystkich zbiorów A1, A2, . . . , Ak, czyli

    k⋂

    i=1

    Ai = {x | ∀i 1≤i≤k x ∈ Ai}.

    Inaczej możemy to zapisać

    k⋂

    i=1

    Ai = A1 ∩A2 ∩ . . . ∩Ak.

    Będziemy też używać zapisu⋂

    i∈IAi

    na oznaczenie przekroju wszystkich zbiorów Ai, których indeksy należą do zbioru I .Zachodzi wtedy

    i∈IAi = {x | ∀i∈I x ∈ Ai}.

    Zbiór indeksów przekroju może być określony za pomocą warunku

    1

  • 22 Rozdział 1. Podstawowe pojęcia, oznaczenia

    O krawędzi e = {u, v} mówimy, że łączy wierzchołki u i v, a o wierzchołkach u i v – żesą końcami krawędzi e. Wierzchołki połączone krawędzią nazywamy sąsiednimi. Stopieńwierzchołka v, oznaczany przez d(v), jest to liczba krawędzi wychodzących z v.

    Rysunek 1.1: Przykład grafu

    a b c

    d

    e f g

    Przykład 1.12 Rysunek 1.1 przedstawia graf G = (V,E) ze zbiorem wierzchołków V ={a, b, c, d, e, f, g} i zbiorem krawędzi

    E = {{a, b}, {a, d}, {a, e}, {a, g}, {b, c}, {c, g}, {c, f}, {d, f}, {e, f}, {f, g}}.

    Stopień wierzchołków a i f wynosi 4, wierzchołki c i g są stopnia 3, wierzchołki b, d i estopnia 2.

    Graf H = (VH , EH) nazywamy podgrafem grafu G = (VG, EG), jeżeli VH ⊆ VGoraz EH ⊆ EG.

    Przykład 1.13 Drzewo przedstawione na rysunku 1.3 jest podgrafem grafu z rysunku 1.1.

    Graf pełny o n wierzchołkach, oznaczany przez Kn, jest to graf z n wierzchołkami,w którym każde dwa wierzchołki połączone są krawędzią.

    Droga lub ścieżka w grafie G = (VG, EG) jest to ciąg wierzchołków v0, v1, . . . , vk,taki że dla każdego i, 1 ≤ i ≤ k, wierzchołki vi−1, vi są połączone krawędzią, czyli{vi−1, vi} ∈ EG. O drodze v0, v1, . . . , vk mówimy, że łączy wierzchołki v0 i vk. Mó-wimy także, że wierzchołek vk jest osiągalny z wierzchołka v0. Droga jest zamknięta,jeżeli v0 = vk. Droga jest prosta, jeżeli wszystkie występujące w niej wierzchołki sąróżne. Drogę v0, v1, . . . , vk nazywamy cyklem, jeżeli v0 = vk, k ≥ 3 oraz wszystkiewierzchołki v1, . . . , vk są różne.

    Przykład 1.14 W grafie z rysunku 1.1 ciąg e, a, d, a, b, c, g jest drogą, a ciąg a, e, f ,d, a jest cyklem. Ciąg a, e, f, d, a, b, c, g, a jest drogą zamkniętą, ale nie jest cyklem.

    GrafG jest spójny, jeżeli dla każdych dwóch wierzchołków u, v ∈ VG istnieje ścieżkałącząca u i v.