Processing math: 100%

Funkcje tworzące

strict warning: Only variables should be passed by reference in /usr/share/drupal6/modules/book/book.module on line 559.

Przykład

Słynny matematyk Georg Pólya rozważał problem polegający na policzeniu wszystkich możliwych sposobów, na które można rozmienić 50 centów używając jednocentówek (1), pięciocentówek (5), dziesięciocentówek (10), ćwierćdolarówek (25), oraz półdolarówki (50). Rozważania te doprowadziły go do użycia analitycznych metod funkcji tworzących w zaproponowanym przez niego rozwiązaniu. W tym i następnym wykładzie poznamy te metody i zobaczymy jak mogą być pomocne w zliczaniu rożnych obiektów kombinatorycznych.

Wracając do problemu rozmieniania monet, wygodnie nam będzie posiadać jeszcze monetę [0], którą możemy interpretować jako brak monet. Wypiszmy teraz (nadużywając trochę notacji) nieskończoną sumę wszystkich możliwości rozmiany dowolnej kwoty za pomocą jednocentówek

A1=[0]+(1)+(1)(1)+(1)(1)(1)+(1)(1)(1)(1)+

i analogicznie przeanalizujmy sumę dla pieciocentówek

A5=[0]+(5)+(5)(5)+(5)(5)(5)+(5)(5)(5)(5)+

Wtedy zbiór par A1×A5 jest zbiorem wszystkich możliwości rozmiany kwoty mając do dyspozycji dowolnie wiele jednocentówek oraz pięciocentówek.

B=A1×A5=([0]+(1)+(1)(1)+(1)(1)(1)+(1)(1)(1)(1)+)×([0]+(5)+(5)(5)+(5)(5)(5)+(5)(5)(5)(5)+)=[0]+(1)+(5)+(1)(1)+(1)(5)+(5)(5)+(1)(1)(1)+

Sumy wszystkich możliwości rozmiany za pomocą dziesięciocentówek (10), ćwierćdolarówek (25), oraz półdolarówek (50) wyglądają następująco:

A10=[0]+(10)+(10)(10)+(10)(10)(10)+(10)(10)(10)(10)+A25=[0]+(25)+(25)(25)+(25)(25)(25)+(25)(25)(25)(25)+A50=[0]+(50)+(50)(50)+(50)(50)(50)+(50)(50)(50)(50)+.

Dodając kolejno monety (10), (25), i na końcu (50) do możliwych rozmian uzyskujemy odpowiednio:

C=B×([0]+(10)+(10)(10)+(10)(10)(10)+(10)(10)(10)(10)+)D=C×([0]+(25)+(25)(25)+(25)(25)(25)+(25)(25)(25)(25)+)E=D×([0]+(50)+(50)(50)+(50)(50)(50)+(50)(50)(50)(50)+)=[0]+(1)+(5)+(10)+(25)+(50)+(1)(1)+(1)(5)+(1)(10)+

Grupując teraz składniki sumy E w podsumy o tych samych wartościach dostajemy wyrażenie:

E=((1))+((1)(1))+((1)(1)(1))+((1)(1)(1)(1))+((1)(1)(1)(1)(1)+(5))+((1)(1)(1)(1)(1)(1)+(5)(1))+      (1)

Zliczając zaś tylko składniki w podsumie odpowiadającej wartości n centów, otrzymujemy liczbę sposobów, na które można rozmienić n centów przy użyciu monet (1), (5), (10), (25), oraz (50). Pomysłem pochodzącym od Pólya, było zastąpienie monety (1) przez zmienną x, monety (5) przez xxxxx=x5 i analogicznie (10) przez x10, (25) przez x25, oraz (50) przez x50. Uzyskujemy w ten sposób nieskończony szereg zmiennej x:

E(x)=(1+x+x2+x3)(1+x5+x10+x15)(1+x10+x20+x30)(1+x25+x50+x75)(1+x50+x100+x150)=1+x+x2+x3+x4+2x5+2x6+2x7+2x8+2x9+4x10+

Godne zauważenia jest, że liczba różnych możliwych sposobów rozmiany n centów (równa liczbie grup monet w odpowiednim nawiasie we wzorze (1)) jest równa współczynnikowi stojącemu przy jednomianie xn.

Funkcja tworząca G(x) dla ciągu liczb rzeczywistych (lub zespolonych) (g0,g1,g2,g3,) to szereg funkcyjny zmiennej rzeczywistej (lub zespolonej) x postaci

G(x)=n=0gnxn=g0+g1x+g2x2+g3x3+g4x4+.

Na oznaczenie współczynnika n-tego wyrazu szeregu G(x) używać będziemy oznaczenia xnG(x)=gn.

Uwaga Jak traktowac funkcje tworzące

Na funkcje tworzące można spojrzeć dwoiście. Pierwszym sposobem jest potraktowanie G(x) jako szeregu liczb rzeczywistych (lub ogólniej zespolonych). Oczywistym pytaniem jest tu kwestia zbieżności szeregu G(x)=n=0gnxn. Z wykładu Analiza Matematyczna wiemy, że szereg G(x) jest zbieżny, jeśli istnieje stała M0 ograniczająca wszystkie skończone początkowe sumy, tzn.

|g0|+|g1x|+|g2x2|++|gnxn|M

zachodzi dla dowolnego n0. Ponadto jeśli dla pewnej liczby x0R szereg G(x0)=g0+g1x0+g2x20+ jest zbieżny, to i także szereg G(x1)=g0+g1x1+g2x21+ jest zbieżny dla dowolnego x1R spełniającego |x1||x0|. Możemy więc określić promień zbieżności szeregu jako taką liczbę rR{} =0,+, że jeśli |x|<r, to G(x) jest zbieżny.

Szereg G(x)=g0+g1x+g2x2+ można więc potraktować jako funkcję

G:(r,r)R,

o wartościach G(x)=limn(g0+g1x+g2x2++gnxn). Oczywiście G(0)=g0, więc dla x=0 szereg G(x) jest zbieżny.

Drugim podejściem, bardziej użytecznym w praktycznych obliczeniach i przekształceniach jest spojrzenie na szereg G(x)=g0+g1x+g2x2+ jako formę zapisu ciągu (g0,g1,g2,), czyli jedynie jako ciąg symboli. Równości pomiędzy odpowiednimi wzorami służą rozwiązaniu problemów kombinatorycznych, tak więc traktujemy je jako równości dwu wyrażeń, a nie jako równość dwu funkcji rzeczywistych, pomimo że mają one uzasadnienia w języku analizy matematycznej.

Jak zobaczymy na wielu przykładach, funkcje tworzące są bardzo użytecznym narzędziem przy wyznaczaniu wartości elementów ciągu. Jeśli bowiem G(x)=g0+g1x+g2x2+ jest funkcją tworzącą ciągu (g0,g1,g2,g3,), oraz w jakiś sposób będziemy w stanie poznać postać zwartą funkcji G(x), to rozwijając tę postać zwartą w szereg Taylora, poznamy kolejne współczynniki tego rozwinięcia. A współczynniki te, to właśnie kolejne wyrazy naszego ciągu.

Będziemy się zajmowali jedynie tymi funkcjami, dla których promień zbieżności r>0. Ponadto będziemy pomijać problem zbieżności oraz wartość r promienia zbieżności, skupiając się jedynie na przekształceniach wzorów. Poniżej zebrane zostały te własności, które często wykorzystywane są w takich przekształceniach.

Obserwacja 7.1

Dla dwu funkcji tworzących F(x)=f0+f1x+f2x2+ oraz G(x)=g0+g1x+g2x2+ mamy:

F(x)=Gxf0=g0, f1=g1, f2=g2, αF(x)+βGx=n=0(αfn+βgn)xn=(αf0+βg0)+(αf1+βg1)x+(αf2+βg2)x2+F(x)G(x)=n=0(nk=0fkgnk)xn=f0g0+(f0g1+f1g0)x+(f0g2+f1g1+f2g0)x2+(f0g3+f1g2+f2g1+f3g0)x3+

Wyrażenie F(x)G(x) nazywać będziemy splotem szeregów F(x) oraz G(x).

Twierdzenie 7.2

Funkcja tworząca postaci

G(x)=g0+g1x+g2x2+g3x3+

ma odwrotną względem mnożenia (splotu), tzn. istnieje funkcja tworząca U(x) taka, że U(x)G(x)=1, wtedy i tylko wtedy, gdy g00.

Następne własności są bardzo pomocne w dokonywanych przekształceniach funkcji tworzących.

Obserwacja 7.3

Dla dwu funkcji tworzących F(x)=f0+f1x+f2x2+ oraz G(x)=g0+g1x+g2x2+ mamy:

xmG(x)=0++0xm1+g0xm+g1xm+1+g2xm+2+      (2)

G(x)m1i=0gixixm=gm+gm+1x+gm+2x2+gm+3x3+gm+4x4+      (3)

G(αx)=g0+g1αx+g2α2x2+g3α3x3+g4α4x4+      (4)

G(x)=g1+2g2x+3g3x2+4g4x3+5g5x4+      (5)

G(x)dx=0+g0x+12g1x2+13g2x3+14g3x4+      (6)

G(x)1x=g0+(g0+g1)x+(g0+g1+g2)x2+      (7)