Liczenie podziaªów liczby: algorytm Eulera Wojciech Rytter Podziaªy liczb s bardzo skomplikowanymi obiektami kombinatorycznymi, przedstawimy dwa algorytmy liczenia takich oblektów. Pierwszy prosty algorytm b dzie dziaªaª w czasie O(n 2 ) i pami ci O(n 2 ), natomiast drugi, pochodz cy od Eulera i oparty na tzw. liczbach pentagonalnych, w czasie O(n n) i pami ci O(n). Podziaª π = (λ 1, λ 2,... λ r ) to przedstawienie liczby n = λ 1 + λ 2 +... λ r w postaci n = λ 1 + λ 2 +... λ r, gdzie λ 1 λ 2... λ r > 0 Wszystkie podziaªy liczby n, w porz dku antyleksykogracznym, mo»na wygenerowa iteracyjnie nast puj co: szukamy pierwszego λ i 2 od prawej strony, zast pujemy λ i przez λ i 1, a pozostaªe cz ±ci na prawo dajemy tak, aby suks na prawo od λ i byª jak najwi kszy. Na przykªad podziaªy n = 5 w porz dku antyleksykogracznym to: 5, 4 + 1, 3 + 2, 3 + 1 + 1, 2 + 2 + 1, 2 + 1 + 1 + 1, 1 + 1 + 1 + 1 + 1. Oznaczmy przez p(n) liczb podziaªów liczby n, mamy: n : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 p(n) : 1 1 2 3 5 7 11 15 22 30 42 56 77 101 135 176 231 Dla n < 0 przyjmijmy, czysto formalnie,»e p(n) = 0, natomiast p(0) = 1. Oznaczmy przez p(n, k) liczb podziaªów liczby n na k cz sci (niezerowych). Algorytm o czasie kwadratowym liczenia p(n) polega na policzeniu ( kwadratowej liczby ) warto±ci p(n, k) na podstawie rekurencji: Rekurencja wynika st d,»e mamy dwa przypadki: p(n, k) = 0 dla k < n lub k 0. p(n, k) = p(n 1, k 1) + p(n k, k) (λ k = 1) Wtedy mamy p(n 1, k 1) podziaªów pomijaj c λ k ; (λ k > 1) Wtedy mo»emy odj jeden od ka»dego λ i otrzymuj c podziaª liczby n k na k cz ±ci. W celu szybszego policzenia p(n) rozwa»ymy podziaªy na ró»ne cz ±ci, tzn. λ 1 > λ 2 >... λ 1. Niech p(n) b dzie liczb takich podziaªów. Przez p even, p even, p odd, p odd oznaczmy liczb podziaªów na parzyst /nieparzyst liczb cz ±ci (o ró»nych rozmiarach w przypadku p). Na przykªad p(15) = 27, p odd (15) = 14, p even (15) = 13, patrz Rysunek??. Zauwa»my,»e liczby p(n) s przewa»nie znacznie mniejsze od liczb p(n) (chocia» na pocz tku niewiele si ró»ni ). Mo»emy rónie» zdeniowa p(n, k) - liczb podziaªów n na ró»ne cz ±ci. Na przykªad p(50, 7) = 522, co Euler policzyª prawie 300 lat temu bez komputera (ani kalkulatora) t konkretn warto± odpwiadaj c na pytanie matematyka Ph. Naude. 1
2 Dygresja. p odd (n) = p(n). Kluczow warto±ci jest zdeniowana poni»ej funkcja: (k) = p odd (k) p even (k) Funkcje p(n), p(n) s bardzo skomplikowane, natomiast jest zadziwiaj ce,»e jest bardzo prosta. Pocz tkowe warto±ci to: k : 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 (k) : 1 1 0 0-1 0-1 0 0 0 0 1 0 0 1 0 0 0 0 0 0-1 Leonard Euler odkryª dwie istotne (dla liczenia p(n)) wªasno±ci funkcji : Wªasno± 1: p(n) speªnia rekurencj : p(n) = n (k) p(n k) (1) Wªasno± 2: jak wida z pocz tkowych warto±ci (k) jest ci giem bardzo rzadkim (prawie same zera). Jest on obliczalalny ªatwo za pomoc tzw. liczb pentagonalnch, warto±ci ci gu to zera, +1 lub -1. Z tego,»e ci g (n) jest bardzo rzadki wynika,»e dla policzenia p(n) tylko O( n) warto±ci k jest niezerowych. Zatem p(n) liczymy w czasie O( n) znaj c p(n 1), p(n 2),... p(0). W sumie mamy algorytm dziaªaj cy w czasie O(n n) i pami ci O(n), o ile potramy ª two wylistowa niezerowe warto±ci (k). Leonard Euler najpierw odkryª wªasno±ci heurystycznie, a dopiero po 10 latach znalazª dowód (by mo»e wcze±niej nie miaª czasu). Zdeniujmy liczby pentagonalne (pi ciok tne) pent(i) = (3i 1)i/2 Nazwa pochodzi od interpretacji geometrycznej, podobnie jak dla liczb trójk tnych. Mamy: pent(i) = pent(i 1) + 3i + 1 Liczby pentagonalne b dziemy rónie» nazywa liczbami trapezowymi pierwszego typu, a liczby pent(i) + i nazywamy liczbami trapezowymi drugiego typu, patrz lewy/prawy trapez na Rysunku 1. Ponadto zdenujmy wspóªczynniki pentagonalne: i : 1 2 3 4 5 6 7 pent(i) : 1 5 12 22 35 51 70 Lemat Kluczowy. e(k) = { ( 1) i+1 if k = pent(i) lub k = pent(i) + i 0 w przeciwnym przypadku. (k) = e(k). (3) (2) Mo»emy teraz zapisa algorytm (jedn iteracj ) liczenia p(n) nast puj co: p(n) = i 1 ( 1) i+1 ( p(n pent(i)) + p(n pent(i) i) ) (4) W równaniu tym korzystamy jedynie z warto±ci i takich,»e pent(i) n, mamy jedynie O( n) takich warto±ci. Liczby pent(i) mo»emy ªatwo policzy. Twierdzenie. Liczby p(1), p(2),..p(n) mo»emy policzy w czasie O(n n) i pami ci O(n).
3 Dowód równania 1 Uzasadnienie jest sprytn manipulacj algebraiczn, korzystaj c z tego»e dwa wielomiany b d ce t sam funkcj maj takie same wspóªczynniki przy tych samych pot gach zmiennej. Sztuczka polega na tym,»eby te same wielomiany przedstawi na dwa ró»ne sposoby, z jednego wymno»enia otrzymujemy wynik, który przyrównujemy do wymno»enia w innej formie. Zdeniujmy: φ(x) = (1 + x + x 2 +... x n ), ψ(x) = 1 x. W 1 (x) = n i=1 φ(x i ), W 2 (x) = n i=1 ψ(x i ). Wprowad»mu notacj n = dla równo±ci wielomianów z dokªadno±ci do pot g wy»szych ni» n, inaczej mówi c bierzemy reszt z dzielenia przez x n+1. Zauwa»my,»e zachodzi dosy ªatwe równanie: W 1 (x) W 2 (x) n = 1. (5) Powy»sza równo± troch przypomina sytuacj w równo±ci (1 + x)(1 x) = 1 x 2. Przedstawimy teraz te same wielomiany w innej formie. W 1 (x) n = p(0)x 0 + p(1)x 1 + p(2)x 2 +..p(n)x n, W 2 (x) n = 1 (1)x 2 (2)x 2... (n)x n. (6) Z równania 5 dla n 1 wynika,»e wspóªczynnik przy x n w iloczynie W 1 (x) W 2 (x) wynosi zero, korzystaj c z równania 6 mo»emy ten wspóªczynnik przedstawi jako kombinacje iloczynów p(i), (j), gdzie i + j = n, w rezultacie otrzymujemy: p(n) 1 p(n 1) (1) p(n 2) (2) p(n 3) (3)... (n) p(0) = 0 St d wynika bezpo±rednio równanie 1. Dowód kluczowego lematu (równania 3) W sekcji tej rozwa»amy tylko podziaªy o ró»nych cz ±ciach. Dwód kluczowego lematu wymaga rozwa»enia interpretacji geometrycznej podziaªów. Podziaª liczby mo»e by przedstawiony w postaci diagramu zwanego diagramem Ferrersa, w kolejnym wierszu liczba elementów odpowiada liczbie λ j. Diagramy Ferrersa dla przykªadowych podziaªów liczb 22 i 26 s przedstawione na rysunku 1. S to bardzo szczególne podziaªy, które b dziemy nazywa trapezowymi. Podziaª trapezowy rz du k pierwszego typu jest postaci (k + k 1, k + k 2, k + k 3,..., k) a drugiego typu postaci (k + k, k + k 1, k + k 1,..., k + 1). Obserwacja. Podziaª trapezowy maj cy pen(k) lub pen(k) + k elementów skªada si z k cz ±ci. Rysunek 1: Trapezy rz du k, gdzie k = 4, pierwszego typu ma pen(k) elementów, a drugiego typu ma pen(k) + k elementów. Podziaªy odpowiadaj ce tego typu trapezom nazywamy podziaªami trapezowymi. Liczb n nazywamy liczb trapezow gdy istnieje podziaª n b d cy trapezowym, zawsze jest co najwy»ej jeden taki podziaª dla danego n.
4 Obserwacja. Liczby trapezowe s postaci pen(j) lub pen(j) + j. Dla trapezu π przez k(π) oznaczmy liczb elementów na prawej diagonali poczynaj c od górnej prawej strony, je±ªi odpowiadaj cym podziaªem jest (a 1, a 2,... a r ) to k(π) jest najwi ksz liczb naturaln tak,»e a i 1 = a i+1 dla i = 1, 2,... k(π) 1. Przez h(π) = a r oznaczmy liczb elementów w najmniejszej cz ±ci. Je±li podziaª nie jest trapezowy oraz h(π) k(π) to F (π) jest podziaªem powstaj cym z π przez dodanie do ka»dej z pierwszych k(π) cz ±ci po jednym elemencie i usuni cie najmniejszej (dolnej) cz ±ci, patrz Rysunek 2. Rysunek 2: Dziaªanie funkcji F. Podziaªy o parzystej/nieparzystej liczbie cz sci nazywamy parzystymi/nieparzystymi. Zauwa»my,»e funkcja F zmienia parzysto± podziaªu. Zachodzi nast puj cy dosy oczywisty fakt. Wªasno± funkcji F. F jest bijekcj mi dzy nietrapezowymi podziaª mi n z h(p) k(π) i nietrapezowymi podziaªami n z h(p) > k(π). 1 gdy n jest nieparzyst liczb trapezow p odd (k) p even (k) = 1 gdy n jest parzyst liczb trapezow (7) 0 w przeciwnym przypadku. Z powy»szej wªasno±ci wynika: p odd (k) p even (k) = e(k) dla kazdegok. Rysunek 3: Zgrupowanie podziaªów nietrapezowych liczby n = 15 korzystaj c z funkcji F. Nieoczekiwana relacja mi dzy funkcjami p(n) i σ(n) Jako ciekawostk podamy, bez uzasadnienia, pewien zwi zek dwóch pozornie odlegªych funkcji p(n), σ(n), gdzie σ(n) oznacza sum dzielników liczby n (wª cznie z n). Mamy n : 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 σ(n) : 0 1 3 4 7 6 12 8 15 13 18 12 28 14 24 24 31
5 Dla funkcji σ zachodzi prawie taka sama rekurencja jak dla p(n), jedyna ró»nica to zast pienie p(0) przez n we wzorze 1. Funkcja σ(n) speªnia rekurencj : σ(n) = n 1 (k) σ(n k) + (n) n. (8) Przykªad. Dla n = 15 mamy: σ(15) = σ(15 1) + σ(15 2) σ(15 5) σ(15 7) + σ(15 12) + 15 = 24 + 14 18 15 + 4 + 15 = 24. p(15) = p(15 1)+p(15 2) p(15 5) p(15 7)+p(15 12)+p(0) = 135+101 42 22+3+1 = 176. Poniewa» warto±ci (k) s zwi zane z liczbami pentagonalnymi tak jak poprzednio, to wszystkie warto±ci σ(n), σ(n 1),... σ(1) mo»na policzy w czasie O(n n) i pami ci O(n) tak jak poprzednio zrobili±my to dla warto±ci p(n). Zachodzi równie» inny zadziwiaj cy zwi zek: σ(n) = Jesli n = p m i i, gdzie p i liczby pierwsze to n k (k) p(n k). (9) σ(n) = (p m i+1 i 1) / (p i 1) Wydaje sie ze liczenie σ dla wszystkich liczb 1, 2,... n jednak jest szybsze korzystajac ze wzoru 8 i liczb pentagonalnych ni» korzystaj c z ostatnego wzoru. Dygresja. Liczby σ(n) s zwi zane z tzw. liczbami doskonaªymi, tzn. takimi»e σ(n) = 2n. Wiadomo, ze n parzyste jest doskonaªe wtw. gdy n = 2 p 1 (2 p 1), gdzie p, 2 p 1 s pierwsze, np. dla p = 11213, p = 30402456 (43-cia liczba doskonaªa). Pierwsze 7 liczb doskonaªych to: 6, 28, 496, 8128, 33550336, 8 589 869 056, 137 438 691 328. Pierwsze 4 liczby doskonaªe policzyª ju» Euklides. Kilka nast pnych Euler. Potem ju» byª potrzebny komputer. Nie wiadomo czy liczb parzystych doskonaªych jest nieskonczenie wiele ani te» czy istnieje cho by jedna nieparzysta liczba doskonaªa. Wi cej informacji na temat liczenia podziaªów mo»na znale» w: http://www.math.psu.edu/vstein/alg/antheory/preprint/andrews/chapter.pdf http://www.rowan.edu/colleges/csm/departments/math/facultysta/osler/ 89%20Surprising%20Connection%20Between%20Partitions%20and%20Divisors.pdf.pdf http://hkumath.hku.hk/ mks/eulerheuristicreasoning.pdf