MATEMATYKA DYSKRETNA. - Naprawdę jest tak was wielu? - Naprawdę !! - wrzasnęli z niesłychaną dumą. - jesteśmy nieprzeliczalni. Stanisław Lem “Cyberiada” Wykład 1 - Wi ed z ia ł ? Myślisz, że jest to taka rzecz, o której wie K ró lik ? - Oho, Kłapouszku, on jest mądry, ten Królik. - Mądry! – zawołał Kłapouchy z pogardą, ciężko kładąc kopyto na swoich trzech patykach. – Wykształcenie! – powiedział z goryczą, skacząc na swoich sześciu patykach. – Czym jest Wiedza? – zapytał podrzucając swoje dwanaście patyków w powietrze. – Rzeczą, którą posiadł Królik. Ha! - Myślę... –zaczął Prosiaczek nerwowo. - Nie myśl – rzekł Kłapouchy. A.A. Milne „Chatka Puchatka”, tłum Irena Tuwim Propaganda Matematyka „ciągła”, oparta na pojęciu granicy (funkcji czy ciągu) i czegoś co tak naprawdę nie istnieje, ale występuje w żargonie, tzn. wielkości „nieskończenie małej” była, jest i będzie narzędziem i językiem, wywodzących się z czasów rewolucji przemysłowej, nauk ścisłych i technicznych. W tym kursie zajmujemy się matematyką „dyskretną”, gdzie słowo „dyskretna” znalazło się zupełnie (dla Polaka) bez sensu. Jest to kalka z angielskiego, gdzie istnieją dwa podobnie brzmiące słowa, discreet i discrete. Pierwsze oznacza to co u nas, a drugie oznacza przeciwieństwo filologicznie rozumianej ciągłości. Woda jest „ciągła” (dlatego mówimy water, a nie „a water”) a krzesła są „dyskretne” (dlatego mówimy „a chair” a nie chair). Matematyka dyskretna jest więc działem matematyki, który zajmuje się porządnie oddzielonymi od siebie nawzajem obiektami. Wyrosła z matematyki rekreacyjnej, służącej rozrywce umysłowej (kiedyś nie było DVD, Facebooka i gier komputerowych) po czym niespodziewanie okazało się, że jest cennym, a nawet niezbędnym narzędziem teoretycznym dla informatyków. W tym kursie zajmiemy się najpierw kombinatoryką, czyli nauką o liczeniu elementów skończonych zbiorów, oraz teorią „grafów” czyli bardzo prostych systemów relacyjnych. Zliczanie permutacji i wariacji Dociekliwy słuchacz/czytelnik ryknie gromkim śmiechem : „Jaki problem policzyć elementy zbioru skończonego? Bierzemy zbiór i liczymy elementy jeden po drugim.”. No i bardzo słusznie, tylko że nasz zbiór to nie fizycznie istniejący obiekt jak stajnia, gdzie możemy wejść i policzyć konie pokazując je palcem. Czasem będzie to zbiór liczb, czasem zbiór zbiorów liczb, czasem zbiór funkcji. Prawie zawsze pytanie, które sobie stawiamy brzmi z grubsza „Na ile sposobów można ...?” Niemniej tamto naiwne podejście nie jest bez sensu. Jedną z metod przeliczenia elementów zbioru jest wypisanie („wygenerowanie”) wszystkich i potem ewentualne policzenie palcem. Zresztą czasem problem polega właśnie na wygenerowaniu wszystkich obiektów pewnego zbioru. Na przykład aby sprawdzić za pomocą tabelki czy formuła o n zmiennych zdaniowych jest tautologią n musimy wygenerować wszystkie 2 możliwych kombinacji zer i jedynek, i niczego nie przegapić. Jeśli robi się to bez planu to łatwo (przy n dostatecznie dużym) coś zrobić dwa razy a coś innego przegapić, o czym niejeden student boleśnie się przekonał. Czyli mamy dwa rodzaje problemów : Wypisz („wygeneruj”) wszystkie elementy pewnego zbioru (funkcji, liczb, relacji), przy czym oczywiście definicja konkretnego zbioru może być dowolnie skomplikowana. Rozwiązaniem tu ma być przepis (algorytm), który dla danej rodziny problemów zawsze zwraca poszukiwany zbiór. Przykładowo: podaj metodę wypisywania wszystkich n-elementowych ciągów zer i jedynek. Metoda musi gwarantować, że nie przegapimy żadnego z ciągów i żadnego nie wypiszemy więcej niż raz. Znajdź liczbę elementów pewnego zbioru (funkcji, liczb, relacji), i t.d. Tu oczekujemy rozwiązania w postaci liczby, a właściwie funkcji, która argumentowi n reprezentującemu rozmiar danych naszego problemu przypisuje liczbę. Dla przykładu : ile jest wszystkich n-elementowych ciągów złożonych z zer i jedynek? Zacznijmy od spraw najprostszych. Kiedy wykładowca Matematyki Dyskretnej przygotowuje egzamin chce wiedzieć ilu ma studentów, żeby nie wydrukować za dużo ani za mało egzemplarzy zadań. Pytam więc Państwa ile jest na roku dziewczyn? Powiedzmy 27. Ilu jest chłopaków? Niech będzie 32. Z tego przebiegle wnioskuję, że mam przygotować 59 egzemplarzy zadań egzaminacyjnych. Jest to przykład zastosowania twierdzenia znanego jako Twierdzenie (Reguła dodawania) Jeśli A i B są zbiorami skończonymi, C=AB oraz AB= to |C|=|A|+|B| Dowód. Indukcja względem n=|B|. Jeśli n=0 lub n=1 to równość jest oczywista. Przypuśćmy, że |B|=n+1, n1. Wówczas dla dowolnego bB mamy B=(B\{b}){b}. Mamy więc |AB| = |A((B\{b}){b})| = |(A(B\{b})){b}| = |A(B\{b})|+|{b}| = = |A|+|B\{b}|+1 (na mocy założenia indukcyjnego) = |A|+|B| (bo element b był wzięty z B). Łatwo stąd wywnioskować Twierdzenie (Uogólniona reguła dodawania) Jeśli A1,A2, ... An są zbiorami skończonymi, parami rozłącznymi (czyli ijAiAj=) to |A1A ...An| =| A1|+|A2|+ ... +|An|. Dowód. Pomijamy – prosta indukcja względem n. Wbrew pozorom nie jest to zupełnie bez sensu i wielokrotnie będziemy się na tę sztuczkę powoływać. Na razie wykorzystajmy ją do udowodnienia kolejnego, na pozór banalnego faktu. Twierdzenie (Reguła mnożenia) Dla dowolnych, skończonych zbiorów A i B, |AB|=|A||B|. Dowód Niech A={a1,a2, ... ,an}. Wówczas AB = ({a1}B)({a2}B) ... ({an}B). Zbiory po prawej stronie są parami rozłączne więc, na mocy uogólnionej reguły dodawania, mamy |AB| = |{a1}B|+|{a2}B|+ ... +|{an}B| = |B|+|B|+ ... +|B| = n|B| = |A||B|. Regułę mnożenia można wyrazić też następująco: Jeśli jakąś czynność można podzielić na dwa etapy, pierwszy może przebiegać na k, a drugi na n sposobów to cały proces może przebiegać na kn sposobów Prosta indukcja daje nam uogólnioną regułę mnożenia Twierdzenie. Dla dowolnych, skończonych zbiorów A1, A2, ... ,An, |A1A2...An| = |A1||A2| ... |An|. Przykład Kapral o szczególnym poczuciu humoru nakazał swoim pięciu żołnierzom aby przez miesiąc, na każdej zbiórce stawali w szeregu w innej kolejności. Codziennie odbywają się cztery zbiórki. Czy rozkaz kaprala jest wykonalny? Stosujemy regułę mnożenia w następujący sposób: pierwszego (prawoskrzydłowego) żołnierza można wyznaczyć na 5 sposobów, możemy go wybrać w dowolny sposób. Na drugim miejscu może stać dowolny z pozostałych czterech i tak dalej. Liczba możliwych różnych ustawień 5 żołnierzy w szeregu jest więc równa 5*4*3*2*1 = 5! = 120. Odpowiedź brzmi więc „To zależy jaki mamy miesiąc. Jeśli ma 30 lub mniej dni to tak, jeśli 31 to nie”. Przykład Na ile sposobów 5 żołnierzy może stanąć w dwuszeregu? Odpowiedź brzmi „A jaka to różnica w szeregu, czy w dwuszeregu? 120” Kapral wynalazł w ten sposób pojęcie permutacji. Definicja. Permutacją zbioru n-elementowego nazywamy każde ustawienie elementów tego zbioru w ciąg. Można też myśleć o permutacjach jako o różnowartościowych funkcjach zbioru na siebie. Często, dla uproszczenia, zamiast mówić o dowolnym zbiorze n elementowym mówimy o zbiorze [n] = {1,2, ... ,n}. Wówczas łatwo widać, że permutacje jako uporządkowania i permutacje jako funkcje to jedno i to samo, bo wypisanie tych liczb w pewnej (być może różnej od naturalnej) kolejności a1,a2, ... an to to samo co określenie funkcji f(i)=ai. I na odwrót. Przykład Na ile sposobów można sformować szereg długości 6 mając 8 żołnierzy? Stosujemy regułę mnożenia jak poprzednio. Na pierwszym miejscu jeden z 8 żołnierzy, czyli 8 możliwości, na drugim 7, i tak dalej, na szóstym musimy wybrać jednego z pozostałych 3 żołnierzy. Mamy więc 8*7*6*5*4*3 = 20160 możliwości. Przykład Na ile sposobów można 6 ławek pomalować 4 kolorami (każdą innym kolorem)? Tu postępujemy podobnie, pierwszą ławkę na pierwszy kolor, drugą – na drugi, trzecią na trzeci, czwartą na czwarty, a co z piątą? Ano zabrakło kolorów. Odpowiedź 0. Wynaleźliśmy teraz pojęcie wariacji, czyli różnowartościowego ciągu elementów z zadanego zbioru. Definicja. k-elementową wariacją (k-wariacją) zbioru n-elementowego nazywamy każdy różnowartościowy ciąg długości k utworzony z elementów tego zbioru. O wariacjach możemy myśleć jako o różnowartościowych funkcjach z [k] w [n]. Permutacja jest więc szczególnym przypadkiem k-wariacji, mianowicie dla k=n. Z reguły mnożenia wynika natychmiast Twierdzenie. (Wzór na liczbę k-wariacji w zbiorze n-elementowym) Liczba k-wariacji w zbiorze [n] jest równa n(n-1)(n-2) ... (n-k+1). W szczególności, liczba permutacji zbioru n-elementowego jest równa n!. Liczbę k-wariacji zbioru [n] można też zapisać jako n! . ( n k )! Przykład. Grafem nazywamy parę G = (V,E), gdzie V jest niepustym zbiorem skończonym a EP2(V). V nazywamy wówczas zbiorem wierzchołków grafu G a E zbiorem krawędzi. Dla dowolnych dwóch wierzchołków x i y grafu G = (V,E) x-y drogą prostą długości k nazywamy każdy różnowartościowy ciąg wierzchołków (v0,v1, ... ,vk) taki, że x=v0, y=vk i vivi+1E dla i=0,1,...,k-1. Ile jest dróg prostych długości k z x1 do xn w grafie pełnym o zbiorze wierzchołków {x1,x2, ... ,xn} (G=(V,E) nazywamy grafem pełnym gdy E=P2(V))? Ponieważ nasz graf jest pełny więc x1-xn dróg prostych długości k jest oczywiście tyle ile (k-1) (n 2)! wariacji zbioru n-2 elementowego {x2,x3, ... ,xn-1}, czyli (n-2)(n-3)...(n-k) = ( n k 1)! Przykład Na ile sposobów można 10 ławek pomalować 3 kolorami (każdą jednym kolorem)? Pierwszą ławkę malujemy dowolnym z trzech kolorów. Drugą też. I trzecią. I tak dalej. Nasz proces rozłożyliśmy więc na 10 etapów, w każdym etapie mamy 3 możliwości. Reguła mnożenia mówi, że mamy 310 różnych sposobów pomalowania naszych ławek. A gdybyśmy malowali 3 ławki 10 kolorami? No to oczywiście 103=1000 możliwości. Przykład Na ile sposobów można rozłożyć k skarpetek do n szufladek. Podobnie; pierwszą skarpetkę wkładamy do dowolnej z n szufladek, drugą też, i t.d. Odpowiedzią k jest oczywiście n . No dobrze, to o czym właściwie była mowa w ostatnich przykładach? Każdej ławce przyporządkuj, byle jak, ale tylko jeden kolor. Każdej skarpetce dokładnie jedną szufladkę. No to jesteśmy w domu – chodzi o liczbę funkcji (wszystkich, nie tylko różnowartościowych jak przy wariacjach) ze zbioru 10-elementowego w zbiór 3 elementowy, a ogólnie o liczbę wszystkich funkcji ze zbioru n w kelementowy. Jest to najprostszy przypadek problemu rozmieszczenia n obiektów w k pojemnikach. Niektórzy uważają, że warto takim obiektom nadać specjalną „kombinatoryczną” nazwę i nazywają je wariacjami z powtórzeniami. Twierdzenie (Liczba funkcji ze zbioru n-elementowego w k-elementowy) Liczba k-elementowych wariacji z powtórzeniami ze zbioru n-elementowego, czyli liczba funkcji z [k] k [k] w [n], czyli |[n] | = n . Przykład Na ile sposobów można przejść z punktu (0,0,0) do punktu (3,6,5) wykonując wyłącznie kroki długości jeden w dodatnim kierunku każdej z osi współrzędnych. Niech x oznaczają wykonanie pojedynczego kroku w dodatnim kierunku odpowiedniej osi X, podobnie y i z. XYZ(3,6,5) niech oznacza poszukiwaną liczbę. Oczywiście aby dojść do punktu (3,6,5) musimy wykonać 14 kroków, z tego 3 iksy, 6 igreków i 5 zetów. Przykładowa taka ścieżka wygląda tak (z,x,z,y,z,y,y,z,y,x,z,x,y,y). XYZ(3,6,5) jest więc liczbą różnych ścieżek czyli ciągów długości 14 złożonych z symboli trzech typów, a dokładniej 3 symboli pierwszego typu, 6 drugiego i 5 trzeciego. Wybierzmy jedną z tych ścieżek. Można to zrobić na XYZ(3,6,5) sposobów. Występujące w niej 3 iksy zastąpmy przez x1, x2, x3 - można to zrobić na 3! sposobów. Podobnie igreki możemy „rozróżnić” na 6!, a zety na 5! sposobów. W ten sposób wybranej ścieżce przypisaliśmy pewien podzbiór zbioru wszystkich permutacji zbioru S = { x1, x2, x3, y1, y2, ..., y6, z1, z2, ... ,z5}, złożony z dokładnie 3!6!5! permutacji. Zauważmy, że zbiory permutacji przypisane różnym ścieżkom są rozłączne, oraz że każda permutacja zbioru S jest przypisana jakiejś ścieżce. Zdefiniowaliśmy więc podział zbioru wszystkich permutacji zbioru S na parami rozłączne podzbiory, każdy o liczności 3!6!5! Z uogólnionej reguły dodawania otrzymujemy, że wszystkich permutacji zbioru 14-elementowego 14! jest XYZ(3,6,5)(3!)(6!)(5!). Z drugiej strony wiemy, że jest ich 14!, czyli XYZ(3,6,5) = . 3!6!5! Przykład Mamy ki egzemplarzy cyfry i, i=1,2,3,4. Ile można z nich ułożyć różnych liczb. Taką konstrukcję, czyli ciąg n-elementowy złożony z ni kopii symbolu ai, i=1,2, ... ,k, gdzie ni = n nazywamy permutacją z powtórzeniami. Rozwiązanie ostatniego przykładu można bez żadnej trudności uogólnić: Twierdzenie (Liczba permutacji zbioru n-elementowego z powtórzeniami) Ciągów n-elementowych złożonych z ni kopii symbolu ai, i=1,2, ... ,k, ni = n, jest n! . n1! n2 !...nk ! Przykładowe zadania Ile trzeba rozegrać spotkań, żeby każdy z n zawodników zagrał z każdym? Na ile sposobów można n klientów ustawić w kolejki do k kas? Na ile sposobów można 30 naboi kal. 7,62 załadować do trzech magazynków do Kałasznikowa? Przypominam, że pojemność jednego magazynka wynosi 30 szt., naboje są identyczne magazynki różne. A co jeśli naboje są rozróżnialne a magazynki nie? Co jeśli i naboje, i magazynki są rozróżnialne? Co jeśli i naboje, i magazynki są nierozróżnialne? Uwaga o rozróżnialności O co chodzi z tą rozróżnialnością (lub nierozróżnialnością)? Przedmioty materialne zawsze są rozróżnialne! Otóż chodzi o to, że niektóre pary wyników naszego działania umawiamy się „utożsamiać”, czyli traktować jako równoważne. W przykładzie z identycznymi magazynkami i nabojami rozkłady naboi (10,15,5), (10,5,15), (5,10,15), (5,15,10), (15,5,10) oraz (15,10,5) traktujemy jako równoważne i liczymy jako jeden rozkład bo nie interesuje nas który nabój pójdzie do którego magazynka. Oczywiście w tle tego rozważania czai się pojęcie relacji równoważności i jej klas abstrakcji. Naszym zadaniem jest policzenie klas abstrakcji pewnej relacji równoważności. Problemem jest oczywiście uzmysłowienie sobie na jakim zbiorze jest to relacja, jaka to relacja, czy klasy abstrakcji są równoliczne, jeśli tak to jak liczne itd. Zliczanie podzbiorów i kombinacji Przyjrzyjmy się teraz rodzinie podzbiorów zbioru [n]. Twierdzenie. (Liczba podzbiorów zbioru n-elementowego) n [n] n n Wszystkich podzbiorów zbioru n-elementowego jest 2 . Inaczej |2 | = 2 , lub |P([n])| = 2 . Dowód. Indukcja względem n. Wzór jest oczywiście prawdziwy dla n=0 i dla n=1. Załóżmy, że wzór jest prawdziwy dla pewnego n1 i rozważmy zbiór [n+1]. Tych podzbiorów zbioru [n+1], n które nie zawierają liczby 1 jest oczywiście 2 (bo jest on n-elementowy). Podzbiorów zawierających 1 jest tyle samo - bo możemy je wszystkie otrzymać dołączając jedynkę do każdego zbioru z pierwszej rodziny. Ponieważ rodzina podzbiorów nie zawierających jedynki jest oczywiście rozłączna z rodziną podzbiorów zawierających jedynkę, możemy stosować zasadę dodawania, czyli n n n n+1 poszukiwaną liczbą jest 2 +2 = 2*2 = 2 . Definicja. Dla każdego podzbioru A zbioru X funkcją charakterystyczną A nazywamy funkcję A (x X ) A ( x) wartość_logiczna( x A ) Udowodnimy, że wszystkich podzbiorów dowolnego zbioru X jest tyle samo co wszystkich funkcji z X w {0,1}. Twierdzenie. Zbiór P(X) jest równoliczny ze zbiorem {0,1}X. Dowód. Skonstruujemy bijekcję :{0,1}X P(X), mianowicie (f) = {xX : f(x)=1}. jest różnowartościowa bo (f) = (g) oznacza, że {xX : f(x)=1} = {xX : g(x)=1}, czyli f(x)=1 wtedy i tylko wtedy, gdy g(x)=1 a ponieważ jedynymi wartościami f i g są 0 i 1, to oznacza, że f=g. jest „na” bo dla każdego AX, A=( A ). Twierdzenie. (Liczba podzbiorów zbioru n-elementowego revisited) n [n] n n Wszystkich podzbiorów zbioru n-elementowego jest 2 . Inaczej |2 | = 2 , lub |P([n])| = 2 . Dowód. Wynika to natychmiast z poprzedniego twierdzenia i twierdzenia o liczbie funkcji.