Przeskocz do treści

Delta mi!

Zliczamy skojarzenia (I). O układaniu domina i permanencie

Tomasz Idziaszek

o artykule ...

  • Publikacja w Delcie: październik 2015
  • Publikacja elektroniczna: 30-09-2015
  • Wersja do druku [application/pdf]: (344 KB)

Zajmiemy się takim oto zadaniem: dana jest szachownica rozmiaru |n× m i N = nm/2 kostek domina, z których każda może przykryć dwa sąsiednie pola szachownicy. Na ile sposobów możemy przykryć całą szachownicę?

obrazek

Rys. 1 Dwa spośród 12988816 przykryć szachownicy rozmiaru 8 8 za pomocą 32 kostek domina.

Rys. 1 Dwa spośród 12988816 przykryć szachownicy rozmiaru 8 8 za pomocą 32 kostek domina.

Przyjmujemy, że dwa sposoby są różne, jeśli istnieją dwa pola przykryte w pierwszym sposobie tą samą kostką, a w drugim sposobie różnymi kostkami (Rys. 1).

Przykładowo, szachownicę rozmiaru 3 × 4 można przykryć sześcioma kostkami na 11 sposobów (uzyskujemy 3 ⋅3 sposobów, jeśli przykrywamy niezależnie lewą i prawą połówkę, oraz dodatkowe 2 sposoby, gdy istnieją kostki leżące na obu połówkach):

obrazek

Aby rozwiązać to zadanie, naszą szachownicę przedstawimy jako graf. Każdemu polu szachownicy będzie odpowiadał jeden wierzchołek, a krawędź będzie łączyła dwa wierzchołki, jeśli odpowiadające im pola sąsiadują (mają wspólny bok). Wierzchołki, tak jak pola szachownicy, możemy pomalować na biało i czarno. Zauważmy, że każda krawędź będzie łączyć wierzchołki różnych kolorów, zatem uzyskany przez nas graf będzie dwudzielny. Oznaczmy jego białe wierzchołki przez u1,...,uN , a czarne przez |v,...,v , 1 N co więcej, ponumerujmy te wierzchołki kolejno wierszami i załóżmy, że liczba kolumn |m jest parzysta (co najmniej jedna z liczb |n, m musi taka być).

Graf dwudzielny możemy też opisać za pomocą zerojedynkowej macierzy dwusąsiedztwa |A= (ai, j) rozmiaru N× N, w której |ai, j = 1 wtedy, gdy istnieje krawędź łącząca biały wierzchołek |ui z czarnym wierzchołkiem v . j Przykładowo, dla szachownicy 3 × 4 graf i jego macierz dwusąsiedztwa wyglądają następująco.

obrazek

A czym w terminologii grafowej są pokrycia szachownicy kostkami domina? Otóż odpowiadają one doskonałym skojarzeniom, czyli takim zbiorom złożonym z N krawędzi grafu, że każdy wierzchołek jest incydentny z dokładnie jedną krawędzią z tego zbioru. Natomiast w macierzy dwusąsiedztwa odpowiadają one wybraniu N komórek z wartością 1, z których żadne dwie nie leżą w jednym wierszu ani w jednej kolumnie.

obrazek

Rys. 2 Doskonałe skojarzenia (wyróżnione kolorem) w kracie 3 4 odpowiadające permutacjom π1 i |π2.

Rys. 2 Doskonałe skojarzenia (wyróżnione kolorem) w kracie 3 4 odpowiadające permutacjom π 1 i |π. 2

Aby wyznaczyć liczbę doskonałych skojarzeń, można rozważyć wszystkie przyporządkowania, które każdemu wierzchołkowi białemu przypisują pewien wierzchołek czarny połączony z nim krawędzią (przy czym każdy wierzchołek czarny musi być przypisany dokładnie jednemu wierzchołkowi białemu). Takie przyporządkowanie można zakodować za pomocą permutacji |π zbioru {1,...,N}, która wierzchołkowi ui przypisuje wierzchołek |v . π i Wierzchołki te są połączone krawędzią, jeśli |ai,π i = 1, zatem przyporządkowanie jest poprawne, gdy iloczyn |a1,π,πN 1 a2,π 2 ...aN jest równy jeden (Rys. 2). Tak więc liczba doskonałych skojarzeń to po prostu permanent macierzy |A :

,πN perm(A) = Q a1,π 1 a2,π 2 ...aN . π

W krótkiej notatce O wieżach, permanencie i parzystości zamieszczonej w Delcie 10/2010 pisaliśmy już o tym, jak efektywnie obliczać parzystość permanentu macierzy całkowitoliczbowej przez porównanie go z wyznacznikiem tej samej macierzy. Wspomnieliśmy również, że problem obliczenia permanentu (a nie tylko jego parzystości) jest dużo trudniejszy i nie znamy dla niego szybszych algorytmów niż wykładnicze ze względu na N. W szczególności oznacza to, że nie znamy lepszych algorytmów wyznaczania liczby doskonałych skojarzeń w dowolnych grafach dwudzielnych. Okazuje się jednak, że w przypadku specjalnego rodzaju grafu (kraty |n× m ), z którym mamy tu do czynienia, możemy to zrobić w czasie wielomianowym. I znowu pomoże nam w tym fakt, że umiemy efektywnie obliczać wyznacznik macierzy.

Przypomnijmy, że wyznacznik również można zdefiniować w języku permutacji. Jest to analogiczna suma jak w przypadku permanentu, z tym że iloczyn odpowiadający permutacji π mnożymy teraz przez znak tej permutacji, który oznaczymy przez |sgn(π) :

,πN det(A) = Qπ sgn(π )a1,π 1 a2,π 2 ...aN .

obrazek

Rys. 3 Pokrycia cyklowe (wyróżnione pogrubionymi krawędziami) w kracie 3 4 odpowiadające permutacjom π1 i π2, oraz reprezentacja cyklowa i znaki tych permutacji.

Rys. 3 Pokrycia cyklowe (wyróżnione pogrubionymi krawędziami) w kracie 3 4 odpowiadające permutacjom π1 i π2, oraz reprezentacja cyklowa i znaki tych permutacji.

Do zdefiniowania znaku permutacji przyda nam się pojęcie cyklu permutacji. Cyklem długości s nazwiemy ciąg indeksów |(i1i2...is), dla którego zachodzi π (i1) = i2,π(i2) = i3,..., π(is) = i1. Każdą permutację możemy przedstawić w postaci zbioru rozłącznych cykli. Permutacja π jest parzysta, a jej znak wynosi sgn(π ) = 1, jeśli w jej rozkładzie na cykle występuje parzysta liczba cykli parzystej długości. W przeciwnym przypadku permutacja jest nieparzysta, a jej znak to |sgn( π) =− 1.

Jeśli w grafie wyróżnimy krawędzie doskonałego skojarzenia odpowiadającego permutacji |π, a także wszystkie krawędzie łączące pary wierzchołków o różnych kolorach, lecz tych samych numerach (tzn. |u i z v i ), to każdy wierzchołek będzie incydentny z dokładnie dwiema krawędziami z wyróżnionego zbioru, zatem zbiór ten będzie pokryciem cyklowym grafu (czyli takim zbiorem rozłącznych cykli, że każdy wierzchołek należy do dokładnie jednego cyklu). Przy czym dopuszczamy, że niektóre krawędzie wyróżnimy dwukrotnie, co będzie odpowiadało trywialnym cyklom. Zapewne nie zdziwi nas, że każdy cykl długości s z permutacji |π wyznacza pewien cykl długości 2s z pokrycia cyklowego (Rys. 3).

obrazek

Jesteśmy już gotowi na przedstawienie błyskotliwego pomysłu, który pozwoli nam użyć algorytmu obliczania wyznacznika do obliczenia permanentu macierzy A. Idea polega na takiej modyfikacji niezerowych elementów macierzy A, żeby dla każdej permutacji π , odpowiadającej doskonałemu skojarzeniu, iloczyn L ai,π i był równy 1, jeśli ta permutacja jest parzysta, oraz |−1, jeśli jest nieparzysta. Okazuje się, że aby to osiągnąć, wystarczy zastąpić jedynki występujące w komórkach macierzy A odpowiadających pionowym krawędziom kraty przez liczbę zespoloną  √ --- |i = −1. Oznaczmy tak uzyskaną macierz przez A′ ; dla kraty 3 × 4 wygląda ona następująco.

 ⎛ 1 0 i 0 0 0⎞ ⎜ 1 1 0 i 0 0⎟ ⎜⎜ i 0 1 1 i 0⎟⎟ A′ = ⎜⎜ ⎟⎟ ⎜⎜ 0 i 0 1 0 i⎟⎟ ⎜ 0 0 i 0 1 0⎟ ⎝ 0 0 0 i 1 1⎠

Przypatrzmy się, jaki wkład do iloczynu L ai,π i mają krawędzie z doskonałego skojarzenia odpowiadające ustalonemu cyklowi permutacji |π. Jeśli oznaczymy liczność każdego z trzech rodzajów krawędzi, które mogą pojawić się na odpowiadającym mu cyklu w grafie, odpowiednio przez eH (poziome krawędzie ze skojarzenia), eB | (poziome krawędzie nie ze skojarzenia) oraz e | V (pionowe krawędzie, zawsze pochodzące ze skojarzenia), to ten wkład będzie równy  eH eV 1 ⋅i . Przykładowy cykl wraz z licznościami krawędzi przedstawiono na rysunku 4. Zauważmy, że jeśli cykl ten ma długość 1, to odpowiada mu jedna pozioma krawędź (zatem wkład jest równy 1). Dalej zakładamy zatem, że cykl ten jest nietrywialny.

obrazek

Rys. 4 Cykl w kracie 4 4 odpowiadający permutacji |π3 ma krawędzie: eH 2, eB 8,eV 6.

Rys. 4 Cykl w kracie 4 4 odpowiadający permutacji |π3 ma krawędzie: eH 2, eB 8,eV 6.

Aby obejść cykl w grafie i wrócić do punktu wyjścia, liczba pionowych krawędzi, którymi będziemy iść w dół, oraz liczba tych krawędzi, którymi będziemy iść w górę, muszą być równe. Zatem eV jest liczbą parzystą. Symetryczny argument dowodzi, że liczba e + e H B jest parzysta. Co więcej, z uwagi na rozmieszczenie krawędzi nie ze skojarzenia, każde przejście dwiema kolejnymi krawędziami powoduje albo zmianę numeru kolumny o 2 (gdy przechodzimy krawędziami eB i eH ), albo zmianę parzystości tej kolumny, ale tylko w obrębie pary kolumn, tzn. j = ( j mod 2)+ 1 (gdy przechodzimy krawędziami eB i eV , więc kolejna krawędź |eB znajduje się tuż pod lub tuż nad poprzednią). Z tego wynika, że obu rodzajów przejść musi być parzyście wiele, zatem liczby |eH i eV | są parzyste. W konsekwencji parzysta jest też liczba e , B zatem w pokryciu cyklowym wszystkie nietrywialne cykle odpowiadają parzystym cyklom permutacji.

obrazek

Przypatrzmy się kierunkom (lewo bądź prawo), w których poruszamy się poziomymi krawędziami, podczas obchodzenia cyklu w grafie. Każda zmiana kierunku odbywa się wtedy i tylko wtedy, gdy przechodzimy pionową krawędzią (znowu wynika to z faktu, że dwie kolejne krawędzie |eB na cyklu rozdzielone krawędzią e V muszą znajdować się pod sobą). Wynika z tego, że wszystkimi poziomymi krawędziami leżącymi w wierszach o ustalonej parzystości będziemy przechodzić w tym samym kierunku. A ponieważ spośród wierszy kraty zawierających krawędzie z cyklu, pierwszy i ostatni musimy przejść w przeciwnych kierunkach (dlaczego?), więc muszą być one różnej parzystości. Jeśli podzielimy cykl na maksymalne kawałki niezawierające krawędzi z pierwszego i ostatniego wiersza, to dwa z tych kawałków (łączące różne wiersze) będą zawierały nieparzystą liczbę krawędzi |e . V Jako ćwiczenie dla Czytelnika zostawiamy dowód faktu, że w pozostałych kawałkach (łączących ten sam wiersz) liczba krawędzi eV będzie podzielna przez 4. Z tego wynika, że liczba |eV/2 jest nieparzysta.

Skoro zatem eV jest parzystą liczbą niepodzielną przez 4, to każdemu nietrywialnemu cyklowi permutacji odpowiada wartość 1eH⋅1ev = (−1)eV~2 = −1. Ponieważ, jak pokazaliśmy wyżej, wszystkie nietrywialne cykle permutacji odpowiadającej doskonałemu skojarzeniu w kracie są długości parzystej, więc iloczyn L ai,π i będzie równy |−1 dokładnie wtedy, gdy będzie ich nieparzyście wiele (w przeciwnym przypadku będzie równy 1). Tak więc będzie on równy znakowi permutacji |π. To pokazuje, że  ′ |perm(A) = det(A), zatem

 ′ liczba doskona łych skojarzeń = det(A).

obrazek

Rys. 5 Pokrycia szachownicy 3 4 z dwiema zabronionymi krawędziami (wyróżnione kolorem).

Rys. 5 Pokrycia szachownicy 3 4 z dwiema zabronionymi krawędziami (wyróżnione kolorem).

Warto wspomnieć, że jeśli w macierzy ′A położymy ai, j = 0 dla komórki, która odpowiada krawędzi łączącej wierzchołki u i i v , j to  ′ |det(A) będzie liczbą tych doskonałych skojarzeń, które nie zawierają tej krawędzi. Odpowiadać to będzie takim układom kostek domina na szachownicy, w których żadna kostka nie przykrywa boku pomiędzy polami odpowiadającymi wierzchołkom |u i i v j (Rys. 5).

Łatwo zatem zaadaptować przedstawiony algorytm do liczenia przykryć "dziurawej" szachownicy (usunięcie pola z szachownicy symulujemy poprzez otoczenie go "murkiem" czterech zabronionych krawędzi) lub takich, w których część kostek ma już ustalone położenie.