bi pary
Transkrypt
bi pary
Matematyka dyskretna © Andrzej Łachwa, UJ, 2012 [email protected] Wybrane zagadnienia Algorytm Halla, wersja 1 Niech A i B będą zbiorami dziewcząt i chłopców, |A|≤|B|. Warunek, że każde r dziewcząt zna w sumie co najmniej r chłopców, jest warunkiem koniecznym i wystarczającym na to, by każda z dziewczyn z A znalazła sobie męża wśród znanych jej chłopców z B. Algorytm „znajdowania męża” Niech Bi to zbiór chłopców, które zna dziewczyna ai. Dopóki jest to możliwe dobieramy kolejnym dziewczynom a1, a2, a3 … aj chłopców b1, b2, b3 … bj, przy czym b1∈B1 b2∈B2 \{b1}, b3∈B3 \{b1, b2} itd. Jeżeli uda się to zrobić dla wszystkich dziewczyn, to algorytm znajdowania mężów zakończy się. Jeżeli jednak dla pewnej dziewczyny aj zbiór znanych jej chłopców Bj \{b1, b2 … bj-1} jest już pusty, to trzeba zerwać przynajmniej jedne zaręczyny. W tym celu dziewczyna aj urządza przyjęcie, na które zaprasza wszystkich znanych jej chłopców (Bj). Chłopcy ci przychodzą ze swoimi narzeczonymi, ale te – na wszelki wypadek – zabierają ze sobą swoich znajomych chłopców, a ci swoje narzeczone itd, aż do momentu gdy na przyjęcie zostanie zaproszony chłopiec, który nie jest jeszcze zaręczony. Musi się taki znaleźć, bo każda grupa r dziewcząt zna w sumie co najmniej r chłopców, czyli dziewczyny zaproszone na przyjęcie znają w sumie co najmniej tyle samo chłopców a ponadto dziewczyna aj nie jest zaręczona. Ów niezaręczony chłopiec będzie tańczył z dziewczyną, która go zaprosiła, jej narzeczony – z dziewczyną która go zaprosiła, itd. aż na parkiecie znajdzie się chłopiec tańczący z gospodynią przyjęcia. Pary na parkiecie będą to nowe pary narzeczonych, a te, które nie tańczą pozostaną niezmienione. Po przyjęciu wszystkie dziewczyny a1, a2, a3 … aj mają narzeczonych i możemy kontynuować dobieranie narzeczonych dla kolejnych dziewczyn. Przykład Niech A={a, b, c, d, e}, B={A, B, C, D, E, F, G, H} oraz a zna A i B b zna A, B, D c zna A, B, C d zna A i C e zna D, E, F, G, H Łączymy (a, A), (b, B), (c, C) i dla d brakuje narzeczonego. Na przyjęcie d zaprasza chłopców A, C, ci swoje narzeczone a, c, te swoich znajomych A, B, C. Chłopiec B zaprasza narzeczoną b, a ona swoich znajomych A, B, D, z których tylko ostatni nie był jeszcze zaproszony (a ponadto nie ma narzeczonej). Pary na parkiecie: (D, b), (B, c), (C, d). Nie tańczą (A, a). Na koniec dobieramy narzeczonego dla e, np. G. Algorytm Halla, wersja 2 Niech rodzina (B1, B2, … Bk) składa się z niepustych podzbiorów skończonego zbioru B. Transwersalą rodziny (B1, B2, … Bk) nazywamy różnowartościowy ciąg reprezentantów (b1, b2, … bk) taki, że bi∈Bi dla i=1, 2, … k. Rodzina zbiorów skończonych (B1, B2, … Bk) ma transwersalę wtw gdy dla dowolnego J⊆{1, 2, … k} zachodzi |J|≤| U Bi |. i∈J Algorytm Halla, wersja 3 Niech G(V1∪V2, E) będzie grafem dwudzielnym, a funkcja Φ(A) zwraca dla A⊆V1 zbiór tych wierzchołków z V2, które są sąsiednie z przynajmniej jednym wierzchołkiem w zbiorze A. Skojarzenie w grafie dwudzielnym G nazwiemy podzbiór krawędzi, w którym żadne dwie krawędzie nie wychodzą z tego samego wierzchołka. Powiemy, że wierzchołek v∈Vi jest skojarzony, jeśli istnieje w∈V3-i taki, że krawędź vw należy do skojarzenia. Pełne skojarzenie V1 z V2 w grafie dwudzielnym G to skojarzenie, w którym każdy wierzchołek z V1 jest skojarzony. Pełne skojarzenie V1 z V2 istnieje wtedy i tylko wtedy, gdy |A|≤ ≤|Φ Φ(A)| dla każdego podzbioru A zbioru V1. Algorytm „znajdowania męża” przedstawimy w wersji z losowym doborem narzeczonych. Oznacza to zbudowanie dowolnego skojarzenia w grafie G. Mamy wtedy podzbiór krawędzi M⊆E i podzbiór „dziewcząt” (podzbiór V1) ze skojarzonymi narzeczonymi z V2. Jeżeli wylosowane skojarzenie nie jest pełne (i nie da się rozszerzyć do pełnego) to musimy znaleźć dla M tzw. ścieżkę alternującą i zastąpić M skojarzeniem M’ opartym na tej ścieżce. Skojarzenie M’ ma moc większą o 1 od mocy M. Jeżeli M’ nie jest pełne to tworzymy ścieżkę alternującą dla M’ i zastępujemy M’ skojarzeniem M” opartym na tej ostatniej ścieżce. Postępujemy tak aż do otrzymania skojarzenia pełnego. Zadanie z hasłami (numerami rejestracyjnymi) Tworzymy 5-cyfrowe hasła (z cyfr 0, 1, … 9). Hasła uważamy za podobne, gdy zbiory cyfr, z których się składają są takie same. Np. hasło 27311 jest podobne do hasła 77312, bo ich zbiory cyfr to {1,2,3,7}. Ile jest niepodobnych haseł? Rozwiązanie pierwsze 10 Klasy haseł o 5 różnych cyfrach można utworzyć na sposobów. 5 Zbiór haseł o 4 takich samych cyfrach składa się z haseł, w których jedna cyfra powtarza się dwukrotnie. Każdą taką klasę haseł można utworzyć przez wybór cyfry powtarzającej się i wybór trzech innych cyfr, czyli na 9 10 ⋅ = 840 sposobów. 3 Każda klasa haseł o 3 cyfrach składa się z haseł, w których albo dwie cyfry występują dwukrotnie, albo jedna cyfra występuje trzykrotnie. Klasę pierwszego rodzaju można wybrać na 10 ⋅ 9 ⋅ 8 = 720 sposobów, bo najpierw wybieramy cyfrę pojedynczą, potem inną cyfrę podwójną i znowu jeszcze inną cyfrę podwójną. Klasę drugiego rodzaju na 10 ⋅ 9 2 sposobów, bo ... To rozwiązanie nie jest poprawne! Rozwiązanie poprawne Zbiór cyfr 5-cyfrowego hasła może mieć od 5 do 1 elementów. Każdy taki zbiór reprezentuje klasę haseł podobnych. Trzeba więc dodać do siebie liczby podzbiorów pięcio, cztero, trzy, dwu i jednoelementowych: 10 = 252 , 5 10 = 210 , 4 10 = 120 , 3 10 = 45 , 2 10 = 10 1 Szukanych klas jest 252+210+120+45+10 = 637. W rozwiązaniu pierwszym wybór grupy haseł 4-cyfrowych polegał na wyborze cyfry powtarzającej się, a następnie 3 cyfr z pozostałych dziewięciu. Wybór taki można dla konkretnego przypadku oznaczyć jako {8, {7, 6, 5}}, a różnych grup jest 840. W rozwiązaniu poprawnym odpowiedni wybór możemy oznaczyć jako {8, 7, 6, 5}, a różnych grup jest 210. Dlaczego jest ich 4 razy mniej? Bo grupa {8, 7, 6, 5} składa się z haseł podobnych należących do 4 podgrup postaci: {8, {7,6,5}} {7, {8,6,5}} {6, {8,7,5}} {5, {8,7,6}} . A gdyby to były hasła 3-cyfrowe? Wtedy dodajemy 10 = 120 , 3 10 = 45 , 2 10 = 10 , czyli 1 120+45+10=175. Dla takich 3-cyfrowych haseł policzmy ile jest elementów w każdej grupie haseł podobnych? Na przykład niech „345” oznacza grupę haseł złożonych z tych trzech cyfr. Można je uporządkować na 3! sposobów, więc w każdej takiej grupie jest 6 haseł podobnych. Niech „34” oznacza grupę haseł złożonych tylko z dwóch takich cyfr. Należą do niej 334, 343, 433, 443, 434, 344, czyli 6 haseł. Niech „3” oznacza grupę haseł zbudowanych z cyfry 3. Należy do niej tylko jedno hasło. Sprawdzamy: 120 grup po 6 haseł i 45 grup do 6 haseł i 10 grup do 1 haśle daje łącznie 720+270+10=1000. I to się zgadza, bo 3-cyfrowych liczb dziesiętnych jest 103. Przeprowadźmy podobne rozumowanie dla haseł 4-cyfrowych. Mamy 10 = 210 , 4 10 = 120 , 3 10 = 45 , 2 10 = 10 1 grup cztero, trzy, dwu i jednoelementowych, łącznie 210+120+45+10 = 385 grup. W każdej grupie typu „2345” mamy 4! różnych haseł. W grupie typu „234” – 36 haseł, bo na 3 sposoby wybieramy cyfrę, która wystąpi dwukrotnie (np. będzie to cyfra 4), pozostałe dwie cyfry mogą wystąpić w różnej kolejności (2 przypadki: 23 i 32), a wybraną cyfrę można wstawić do każdej pary cyfr na 6 sposobów (4423, 4243, 4234, 2443, 2434, 2344). W grupie typu „56” będzie 14 haseł, bo 8 haseł z potrojoną cyfrą (5556, 5565, 5655, 6555, 6665, 6656, 6566, 5666) i 6 haseł z podwojonymi cyframi (5566, 5656, 5665, 6655, 6565, 6556). I na koniec w grupie typu „5” będzie jedno hasło postaci 5555. Sprawdzamy: 210⋅24+120⋅36+45⋅14+10=5040+4320+630+10=10000. I dla haseł 5-cyfrowych. W każdej grupie typu „34567” mamy 5! różnych haseł, a grup takich jest 10 = 252 , łącznie mamy tu 5 Grup typu „3456” jest 252⋅120=30240. 10 = 210 , a 4 w każdej z nich jest 240 haseł, mamy bowiem 4!=24 permutacje i dla każdej z nich 10 haseł (np. dla permutacji 6543 mamy hasła 66543, 65643, 65463, 65436, 56643, 56463, 56436, 54663, 54636, 54366). Łącznie jest tu 210⋅24⋅10=50400. Grup typu „345” jest 10 = 120 . 3 Każdą taką grupę podzielimy na podgrupę z potrojoną cyfrą i podgrupę z dwoma podwojonymi cyframi. W pierwszej z nich najpierw wybieramy potrojoną cyfrę (3 sposoby wyboru), następnie ustalamy kolejność dwóch pozostałych (2 sposoby) i wstawiamy cyfrę potrojoną na 10 sposobów. Razem jest w takiej podgrupie 60 haseł. Przykład: potrojona niech będzie cyfra 5, a wybrana kolejność pozostałych, to 34. Wtedy mamy hasła: 55534, 55354, 55345, 53554, 53545, 53455, 35554, 35545, 35455, 34555. W drugiej podgrupie mamy 90 haseł. Bierze się to stąd, że najpierw wybieramy cyfrę niepodwojoną (3 sposoby). Dalej, cyfry podwojone mogą utworzyć ciągi 3355, 3535, 3553, 5335, 5353, 5533. Do każdego z tych ciągów można wstawić cyfrę niepodwojoną na 5 sposobów, np. do ciągu 3355 wstawiamy cyfrę 4: 43355, 34355, 33455, 33545, 33554. Każda grupa typu „345” ma ostatecznie 150 haseł. Razy 120 grup daje nam 18000 haseł. Grup typu „34” jest 10 = 45 , a 2 w każdej z nich jest 30 haseł. Jest tak dlatego, że 5-elementowych łańcuchów z dwóch znaków można zbudować 25 czyli 32, ale dwa z nich nas nie interesują (33333, 44444). Wreszcie grup typu „3” jest 10. Sprawdzamy: 30240+210⋅240+120⋅(60+90)+45⋅30+10=30240+50400+18000+1350+10 = 100 000. Pytania na egzamin licencjacki z zakresu matematyki dyskretnej Omów metody obliczania sum skończonych Liczby Fibonacciego a "złoty podział"; wniosek Keplera Twierdzenie Halla i algorytm łączenia w pary Trójkąt Stirlinga (dla podziałów) i liczby Bella Zasada szufladkowa Dirichleta