Matematyka dyskretna
Andrzej Szepietowski Matematyka dyskretna Wydawnictwo Uniwersytetu Gdańskiego Gdań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ński Wydawnictwo 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: wydawnictwo@ug.edu.pl 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.......................... 61 3.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............ 70 3.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.......... 75 3.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.............. 122 5.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ń Z m................................ 143 6.5.1 PierścieńZ 5............................ 144 6.5.2 PierścieńZ 4............................ 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