Trójkąt Sierpińskiego

Karol Gryszka

W geometrii klasycznej pojęcie figury jest dobrze ugruntowane. Każdy z Nas potrafi rozpoznać niektóre z podstawowych figur płaskich, takie jak: kwadraty, trójkąty, trapezy, okręgi i wiele innych. Figury takie są proste do opisania lub zdefiniowania przy pomocy języka geometrii lub algebry. Istnieją jednak figury o znacznie bardziej skomplikowanej strukturze, których klasyczna geometria nie obejmuje. Poniżej przedstawimy jedną z nich – Trójkąt Sierpińskiego.
Trójkąt Sierpińskiego jest przykładem fraktala. Czym jest fraktal? Okazuje się, że na takie pytanie jest niezwykle trudno odpowiedzieć, gdyż… nie ma jednej, ścisłej definicji takiego obiektu. Jest to rzecz niezwykła w świecie matematycznym, gdzie wszystkie definicje i wszystkie własności muszą zostać sformułowane w sposób ścisły. Skąd wiec bierze się taki ewenement? Problemem okazuje się sformułowanie pewnych warunków, które takie obiekty definiują. Różne źródła wymieniają różne zestawy takich warunków. My zaś na potrzeby niniejszego tekstu ograniczymy się do następujących. Fraktalem nazwiemy zbiór, który:

  • wykazuje cechy samopodobieństwa; gdy spojrzymy na mały fragment zbioru przez szkło powiększające, zobaczymy zbiór o tym samym kształcie (lub bardzo podobny) jak wyjściowy,
  • jest trudny do opisania w języku geometrii klasycznej; nie jesteśmy na przykład w stanie podać zestawu równań/nierówności, które w prosty sposób opisują wszystkie punkty należące do takiego zbioru,
  • ma niecałkowity „wymiar”.

Trzeci punkt rozwiniemy w późniejszej części, pozostałe zaś omówimy przy okazji Trójkąta Sierpińskiego. Wacław Sierpiński podał przepis na konstrukcje tego zbioru w roku 1915. Sam trójkąt jest jednym z najstarszych i najlepiej rozpoznawalnych fraktali. Jednocześnie jego bardzo elementarna konstrukcja sprawia, że każdy może go narysować. Zaczynamy mianowicie od trójkąta równobocznego wypełnionego (jego wnętrze pomalujemy na czarno – patrz rysunek poniżej, figura pierwsza z lewej strony). Następnie taki trójkąt dzielimy na cztery mniejsze trójkąty równoboczne przez połączenie środków boków tego trójkąta. Środkowy (mniejszy dwukrotnie od wyjściowego i obrócony w stosunku do niego) trójkąt następnie usuwamy (druga figura) i na każdym z trzech pozostałych trójkątów powtarzamy właśnie wykonaną procedurę (trzecia figura). Taką procedurę powtarzamy następnie w nieskończoność (figury czwarta i piąta przedstawiają dwa kolejne powtórzenia procedury) i „graniczna” forma takiej figury to właśnie Trójkąt Sierpińskiego.

Przyjrzyjmy się teraz uważniej narysowanej figurze. Zwróćmy uwagę na jej samopodobieństwo – piąta z narysowanych powyżej figur ma taką cechę, że jeden z trzech mniejszych trójkątów je budujący jest kopią czwartej figury. Podobną obserwację można również uczynić porównując odpowiedni fragment czwartego z trzecim, trzeciego z drugim i wreszcie drugiego z pierwszym. Nie dziwi więc fakt, że właściwy Trójkąt Sierpińskiego, ten „graniczny”, będzie miał taką samą cechę -można go podzielić na trzy mniejsze trójkąty i takie, które są podobne do wyjściowego.
Zastanówmy się teraz nad opisem takiej figury w ujęciu geometrycznym. Choć podaliśmy przepis na jego konstrukcję, to nie jest to typowa w geometrii klasycznej konstrukcja – wymaga wykonania nieskończenie wielu operacji „wycinania” coraz to mniejszych fragmentów. Nie da się tej figury otrzymać przez narysowanie kilku linii, łuków i innych podobnych figur. A co ze stroną algebraiczną? Tutaj problem jest podobnie skomplikowany – żaden zestaw nierówności (trzy nierówności opisują trójkąt na płaszczyźnie) czy równości (jedna równość opisuje na przykład okrąg) nie jest w stanie opisać takiej figury. Niemniej nie należy z tego wnioskować, że niezwykle trudną taką figurę jest badać.
Trójkąt Sierpińskiego jest obiektem posiadającym wiele ciekawych własności. Spójrzmy na jego pole. Jest to figura umieszczona na płaszczyźnie, wiec powinniśmy być w stanie obliczyć jej pole. Przystępując do obliczeń musimy jednak pamiętać o tym, że końcowa forma jest „graniczną” operacją. W celu wyznaczenia pola przyjrzyjmy się raz jeszcze pierwszemu etapowi konstrukcji. Załóżmy, że na tym etapie wypełniony trójkąt ma pole równe 1. Ponieważ w kolejnym etapie usuwamy 1/4 całości, pole części pozostałej jest równe 3/4. W następnym etapie usuwamy po 1/4 z tego, co zostało w poprzednim etapie; pozostanie nam wiec 3/4 pola poprzedniego, a więc 3/4 · 3/4 = (3/4)2 jednostek. Łatwo teraz przez analogie sprawdzić, że w kolejnych krokach otrzymamy kolejne potęgi liczby 3/4 – liczby postaci (3/4)n, które ponadto stają się coraz mniejsze i bliższe 0, a tym samym „granicznie” takie wyrażenie będzie równe 0. Stąd również wynika, że pole fraktala Sierpińskiego jest równe 0.
Gdy próbujemy obliczyć obwód takiej figury, napotykamy na zasadniczy problem – jak w ogóle się za to zabrać? Sama figura nie jest przecież złożona z jednego kawałka, ma sporo „dziur” i dodatkowo zerowe pole. Do tego zagadnienia możemy podejść następująco: obliczymy, jaki „graniczny” obwód wszystkich trójkątów w kolejnych etapach konstrukcji. Zakładając dla uproszczenia, że pierwszy trójkąt ma obwód równy 1, każdy kolejny etap powoduje zastąpienie wyjściowego trójkąta trzema przystającymi o obwodach dwukrotnie mniejszych. Obwód w drugim kroku wynosi wiec 3/2, w trzecim (3/2)2 i tak dalej. Tym razem łatwo się przekonać, że takie liczby rosną do nieskończoności, a więc Trójkąt Sierpińskiego w powyższym ujęciu ma… nieskończony obwód!
Wśród warunków które wymienialiśmy w definicji fraktala pojawiło się pojęcie wymiaru. Spróbujmy zatem obliczyć wymiar naszej figury. To łatwe, prawda? Przecież umieszczamy go na płaszczyźnie, więc jest ewidentnie obiektem dwuwymiarowym. Ma szerokość, wysokość, choć pole jego jest zerowe a obwód nieskończony. Ale… Zastanówmy się przez chwilę, co rozumiemy w ogóle przez pojęcie „wymiar”. Do tego celu posłużymy się analogią. Narysujmy obok siebie dwa kwadraty; niech jeden z nich ma bok długości 1 a drugi długości 3. Porównując pola tych figur przekonujemy się, że ten większy ma pole dziewięciokrotnie większe od tego mniejszego. Innymi słowy – figura trzykrotnie większa zbudowana jest z 9 kopii mniejszej. Ale 32 = 9, gdzie potęga odpowiada wymiarowi figury (płaska figura jest obiektem dwuwymiarowym). Analogiczne rożwazania dla sześcianu doprowadzają nas do następujacego wniosku:

(skala podobieństwa)wymiar = stosunek miarowy figur.

Istotnie, gdy znamy skalę A podobieństwa sześcianu, to znamy stosunek objętości A3.
Zastosujmy teraz powyższą regułę do Trójkąta Sierpińskiego. Jeżeli zmniejszymy jego bok dwukrotnie, to będziemy potrzebowali jeszcze dwóch dodatkowych kopii tak, aby zbudować z nich wyjściowa figurę. Oznacza to, że mamy do czynienia z trzema figurami o skali podobieństwa 2. Tym samym nasze równanie wygląda następująco:

2wymiar  = 3.

I tu pierwsza niespodzianka – wymiar nie może być liczbą całkowitą. Z powyższego można wywnioskować, że

wymiar = log2 3 = 1.58496250072115618145373894394781650875981440 . . . ,

przy czym ta liczba jest niewymierna (a więc nie daje się przedstawić w postaci ilorazu dwóch liczb całkowitych). Odkryliśmy tym samym, że istnieją figury, których wymiar nie musi być liczbą całkowitą. Można pokazać nawet znacznie więcej – istnieją figury, których wymiar obliczany powyższą metodą może być dowolnie wybraną liczbą rzeczywistą dodatnią, na przykład π.
Zaskakujący jest związek Trójkąta Sierpińskiego z Trójkątem Pascala. Ten drugi otrzymujemy następująco: zaczynamy od górnego wierzchołka tablicy liczb, która formujemy w kształt trójkąta (równobocznego), w który wpisujemy liczbę 1 (patrz rysunek poniżej). W kolejnym wierszu wpisujemy dwie jedynki. Każdy wyraz każdego kolejnego wiersza budujemy przez sumowanie dwóch sąsiadujących ze sobą wyrazów i wpisanie ich „pomiędzy” i „poniżej”. Taki trójkąt o 16 wierszach prezentujemy poniżej, ale oczywiście całą procedurę można kontynuować bez ograniczenia.

Na rysunku zacienione zostały wszystkie liczby nieparzyste występujące w Trójkącie Pascala. Przyglądając się uważnie stwierdzamy, że te liczby tworzą zarys Trójkąta Sierpińskiego (czwarty etap konstrukcji – porównaj z poprzednim rysunkiem). Jest to niezwykły związek faktu czysto liczbowego i występowania pewnej „struktury” liczb w tablicy liczb w Trójkącie Pascala – struktura ta objawia się w taki sposób, który pozwala przewidzieć liczby nieparzyste i liczby parzyste w Trójkącie Pascala bez ich wyznaczania. Wystarczy do tego celu wykorzystać fraktal.
Jeszcze większe zaskoczenie budzi rozważanie nie tylko liczb parzystych i nieparzystych. Możemy w Trójkącie Pascala na jeden kolor pomalować wszystkie liczby, które dają takie same reszty z dzielenia przez ustaloną liczbę naturalną, na przykład przez 5. Efekt będzie analogiczny jak powyżej – dostaniemy barwną tęczę pięciu figur podobnych do Trójkąta Sierpińskiego. Trójkąt Sierpińskiego można otrzymać na wiele innych sposób. Pierwszym z nich jest tak zwana Gra w Chaos. W tej grze rysujemy trzy wierzchołki trójkąta równobocznego oraz czwarty punkt, który wybieramy losowo (w przykładzie poniżej jest on wewnątrz trójkąta) i nazywamy punktem początkowym. Następnie losujemy jeden z trzech wierzchołków trójkąta (możemy do tego celu wykorzystać kość: 1 i 2 oznacza, że wylosowaliśmy górny wierzchołek, 3 i 4: lewy oraz 5 i 6: prawy) i wyznaczamy środek odcinka łączącego jeden z wierzchołków z punktem początkowym; środek ten nanosimy na kartce i nazywamy nowym punktem początkowym. W kolejnych krokach losujemy ponownie wierzchołki i wyznaczamy odpowiednie środki odcinków oraz za każdym razem na nowo definiujemy punkt początkowy.
Co otrzymamy teraz po kilkuset powtórzeniach powyższej zabawy? Wydaje się, że wszystko to prowadzi do bałaganu kropek, tymczasem zaś po zaledwie 500 powtórzeniach widzimy w niej zarys Trójkąta Sierpińskiego. Ponieważ metoda generowania jest bardzo łatwa do implementacji w różnych językach programowania, zachęcamy do wypróbowania jej dla 500, 1000 czy 10, 000 powtórzeń algorytmu. Wyniki otrzymywane dla dużych liczb są zdumiewające i dają efekty tak dobre, że wśród prostych metod generowania Trójkąta Sierpińskiego właśnie ta jest najczęściej wymieniana.
Gra w Chaos nie jest idealna – nie generuje ze 100% dokładnością fraktala. Część z punktów, które otrzymujemy w kolejnych powtórzeniach wydaje się w ogóle nie pasować do rysunku. Winę za ten fakt ponosi charakter losowy wybranego punktu początkowego – jeśli nie należy on do Trójkąta

Sierpińskiego, dużo punktów pośrednich będzie wyglądała tak, jakby „wisiały” w środku niektórych dziur w trójkącie. Na to jednak nic nie jesteśmy w stanie poradzić, ale również nie musimy się tym faktem przejmować – ma on marginalne znaczenie dla końcowego efektu.
Istnieje wiele innych sposobów stworzenia Trójkąta Sierpińskiego. Całą ich serię można otrzymać za pośrednictwem grafiki żółwiowej. Jest to sposób rysowania polegający na wprowadzeniu zestawu prostych poleceń, które żółw ma wykonać. Nasz gad ma kilka cech: położenie na płótnie, orientację oraz zdolność rysowania. Możemy mu teraz przekazać podstawowe polecenia: idź do przodu o jedną jednostkę, skręć o 30 stopni (lub inną, zadaną wartość), rysuj podczas ruchu, nie rysuj w trakcie ruchu. Grafika żółwiowa popularna jest wśród użytkowników języka LOGO, ma również swoje zastosowania w L-systemach.
L-system, zwany również systemem Lindenmayera, jest zestawem poleceń służących do generowania obiektów o fraktalnej strukturze. Jego fundamentem jest zadanie ciągu poleceń oraz początkowego układu znaków, które następnie zostają przetworzone rekurencyjnie przez zastąpienie danego ciągu znaków przez reguły zastępowania podane w ciągu poleceń. Niech dla przykładu dane są dwa znaki X oraz Y – oba oznaczają ruch żółwia o jedną jednostkę prosto. Dodatkowo przez − (znak „minus”) oznaczmy obrót w miejscu o 60° zgodnie z ruchem wskazówek zegara, a przez + (znak „plus”) obrót o taki sam kąt w kierunku przeciwnym. Deklaracja przykładowego L-systemu wygląda wtedy następująco:

  • symbole bazowe: X, Y oznaczają ruch do przodu oraz −, + to obroty o 60° w odpowiednim kierunku,
  • reguły zastępowania: X → YXY,   Y → X+Y+X,
  • ciąg początkowy: X.

Tym samym po jednokrotnym zastąpieniu ciąg poleceń wygląda tak:

YXY,

po dwukrotnym zaś tak:

X+Y+XYXYX+Y+X.

Gdy teraz dostosujemy się do reguł i narysujemy figurę powstałą z takiego ciągu poleceń po piątym zastąpieniu, otrzymamy krzywą przedstawioną na rysunku poniżej i po lewej stronie.

Wyłania nam się zarys Trójkąta Sierpińskiego. Pozostałe dwa rysunki, środkowy będący wierną reprezentacją trójkąta oraz prawy – nietypowa metoda prowadząca do figury łudząco podobnej do fraktala, również są efektami wykonania odpowiedniego L-systemu. Środkowy deklarujemy następująco:

  • symbole bazowe: A, B oznaczają ruch do przodu oraz −, + to obroty o 120°,
  • reguły zastępowania: A → A−B+A+B−A,   B → BB,
  • ciąg początkowy: A−B−B.

Prawy deklarujemy następująco:

  • symbole bazowe: A oznacza ruch do przodu oraz −, + to obroty o 120°, J – ruch do przodu bez rysowania,
  • reguły zastępowania: A → J[−A−A]J−J[−A−A]J−J[−A−A]J,    J → JJ,
  • ciąg początkowy: A.

W powyższym zapisie symbolem [ oznaczamy polecenie zapisu bieżącego stanu położenia żółwia i wykonania wszystkich poleceń do nawiasu zamykającego ]. Potem żółw wraca do ostatnio zapisanego miejsca.
Zwróćmy uwagę na swobodę w doborze symboli – nie ma znaczenia, czy ruch do przodu oznaczymy przez X czy przez B – ważna jest konsekwencja oznaczeń w obrębie pojedynczej deklaracji systemu oraz brak kolizji odpowiednich oznaczeń z innymi.
Bogactwo metod, którymi można wygenerować Trójkąt Sierpińskiego jest ogromne. Bardzo dużą bazą takich jest strona http://www.oftenpaper.net/sierpinski.htm.
Trójkąt Sierpińskiego to tylko jeden z wielu przykładów figur fraktalnych. Prosta modyfikacja Gry w Chaos może nas doprowadzić do wielu ciekawych figur – zachęcamy do zapoznania się z rysunkami figur na stronie http://shiftingmind.com/chaosgame/ (oraz do lektury artykułu dla osób znających język angielski). Wszystkim zainteresowanym powiększeniem swojej wiedzy o fraktalach polecamy zaś następujące:

  • Dywan Sierpińskiego – fraktal „bliźniak” Trójkąta Sierpińskiego,
  • Drzewo pitagorejskie – prosty fraktal zbudowany z dwóch różnych figur geometrycznych,
  • Krzywa Kocha – dobrze rozpoznawalna krzywa, której trzy kopie zestawione ze sobą tworzą Płatek Kocha – figurę podobną do płatka śniegu,
  • Fraktale z zer i jedynek – grafika żółwiowa i L-system na przykładzie Krzywej Kocha,
  • Wymiary fraktalne – intuicyjne pojęcie wymiaru fraktalnego oraz innych typów wymiaru (tekst dla bardziej ambitnych czytelników).