Algorytm Cantora = połowa przepisu na liczbę?
Adam, zaprzyjaźniony matematyk, miał za zadanie znaleźć słabe strony mego rozumowania (podważającego poprawność algorytmu Cantora). Przedstawiam jego zastrzeżenia:
– Algorytm Cantora sam, jako taki, nie generuje liczby rzeczywistej – na to by mogła ona powstać potrzeba drugiego, nie mniej ważnego członu, jakim jest gotowy ciąg liczb rzeczywistych. Czyli sam tekst algorytmu jest tylko częścią przepisu i aby zadziałał, tworząc liczbę rzeczywistą, musi najpierw być skonstruowany ciąg liczb rzeczywistych, z którego algorytm Cantora pobierając kolejne cyfry i je zmieniając, utworzy nową liczbę, różną od wypisanych w tym ciągu. Na to, by w tworzonym ciągu znalazła się liczba wygenerowana przez algorytm Cantora należałoby połączyć tą jedną część przepisu (algorytm Cantora) z uzupełniającą częścią w postaci przepisu tworzącego ciąg. Dopiero to połączenie generuje liczbę rzeczywistą i może być umieszczone w ciągu.
– Stworzenie przepisu na kolejne wyławianie z tekstów (OT) tylko takich, które generują liczby rzeczywiste wydaje się być bardzo, bardzo trudne (i Adam, nawet wspomagany zespołem biegłych programistów nie podjąłby się takiego zadania). Sam zaś przepis na stworzenie ciągu wszystkich liczb rzeczywistych będzie prawdopodobnie tekstem nieskończonym, co w oczywisty sposób wyklucza możliwość umieszczenia tekstu w ciągu – bo na jakiej pozycji?
– Pokazana wcześniej konstrukcja ciągu (dość nieformalna i ograniczona do początkowych 60 liczb), może się załamać na dalszym etapie z powodu trudności interpretacyjnych tekstów, głównie z powodu braku formalnego rozstrzygnięcia czy dany tekst będzie reprezentować liczbę rzeczywistą. Wiele tekstów w ogóle nie będzie możliwych do rozstrzygnięcia z rozmaitych powodów, jak np ograniczoności czasowej, ich złożoności, wielkości lub innych…
Moja odpowiedź:
Zauważmy najpierw, że Algorytm Cantora AC ma działać dla dowolnego ciągu. Czyli Cantor twierdzi, że dla każdego ciągu liczbowego z przedziału (0;1) jego algorytm stworzy nową liczbę, też z tego przedziału i niezawartą w tymże ciągu.
Korzystając z tabeli podstawień dla BT (odwzorowania Tysięcznego):
możemy łatwo uporządkować wszystkie teksty, jakie mogłyby zostać stworzone przez kogokolwiek (człowieka, komputer, czy przysłowiową małpę stukającą w klawiaturę). Niektóre z nich już istnieją, inne czekają na swoich odkrywców, zaś proces wyławiania tekstów sensownych może być dosyć trudny, choć przy dobrym programie konstrukcyjnym, co pokażę dalej, jest to całkiem realne.
Postaram się wykazać wadliwość Algorytmu Cantora AC dla wielu ciągów (także tworzących pewien ciąg ciągów):
Zacznijmy zatem od ciągu Q1 o bardzo prostej Konstrukcji Ciągu =KC1, nie siląc się na umieszczenie w nim wszystkich liczb rzeczywistych – bo to faktycznie może być trudne, (jak na początek).
KC1: Na kolejne miejsca w ciągu wybieramy liczby zdefiniowane przez teksty utworzone w odwzorowaniu TB(n) dla kolejnych liczb naturalnych i będące albo postaci “l/m”, gdzie “l”, “m” to cyfrowe łańcuchy zapisu liczb naturalnych, “/” oznacza znak dzielenia i gdzie liczbowo l<m, oraz teksty przedstawiające liczby rzeczywiste powstałe w wyniku zastosowania Algorytmu Cantora do ciągu wygenerowanego według podanego przepisu tekstowego. – bo tu, mam nadzieję, wszyscy się zgadzają, że Algorytm Cantora jest poprawnie skonstruowany, a jego zastosowanie do ciągu utworzonego przepisem konstrukcyjnym w sposób logiczny i sensowny tworzyć powinien nową liczbę rzeczywistą -(w przeciwnym razie nie musimy się nimi zajmować, bo są wadliwe i cała dyskusja jest bezprzedmiotowa). Czyli C1=KC1(ℕ). Dla takiej konstrukcji ciągu KC1 widać, że przepis konstrukcyjny będzie tekstem skończonym, a ponieważ AC też jest tekstem skończonym, to ich złożenie w postaci AC(KC1(ℕ)) też będzie tekstem skończonym będącym w bijekcji z pewną dużą liczbą naturalną N:
AC(KC1(ℕ))= TB(N) , ℕ- zbiór liczb naturalnych
W celu zobrazowania ciągu C1, (powstałego w wyniku zastosowania Konstrukcji Ciągu KC1), poprzez wybieranie tekstów definiujących liczby rzeczywiste spośród tekstów TB(n), ((OT(n) dla kolejnych liczb naturalnych n), posłużę się ciągiem trójwartościowym (w tabeli 4-kolumnowej):
Na trzecim miejscu w tabeli umieszczam liczbę porządkową kolejnych wyrazów, na początkowych zaś powiązane ze sobą przy pomocy TB (OT) różne sposoby zapisu liczb rzeczywistych, a więc: do pierwszej kolumny pobieramy kolejne liczby naturalne będące w bijekcji z tekstem umieszczanym w drugiej kolumnie, zaś w czwartej – rozwinięcie dziesiętne liczby, którą prezentuje tekst z kolumny drugiej – pod warunkiem jednak, że tekst ów generuje liczbę rzeczywistą z przedziału (0;1), wybieraną według klucza KC1.
Rozwinięcia dziesiętne liczb mogą być nieskończenie długie, ale dla celu utworzenia nowej liczby Cantora wg zaproponowanego przez niego algorytmu, wystarczy, jeśli ilość cyfr rozwinięcia dziesiętnego po przecinku każdej liczby znajdującej się w ciągu była co najmniej równa jego liczbie porządkowej.
Oczywiście, skończone rozwinięcia w czwartej kolumnie, (o ile są zbyt krótkie), uzupełniamy zerami do żądanej ilości cyfr rozwinięcia dziesiętnego. Oto kilka pierwszych wyrazów tego ciągu liczb rzeczywistych:
W czwartej kolumnie niebieskim kolorem zaznaczono cyfry będące na tej samej pozycji po przecinku, co numer wiersza.
W wierszu k zastanawiamy się, czy tekst odpowiadający liczbie naturalnej N w postaci TB(N)=AC(KC1(ℕ))=AC(C1) definiuje liczbę rzeczywistą z przedziału (0;1) – gdyby tak było, to pozostawiamy całą linijkę i przechodzimy do następnej, czyli (k+1) w kolumnie trzeciej oraz (N+1) w kolumnie pierwszej; gdyby jednak powyższy zapis nie generował liczby rzeczywistej, to w tym samym wierszu k będziemy analizowali następne teksty dla (N+1) itd, aż do uzyskania pozytywnego wyniku. Zwróćmy uwagę, że w linijce k nie muszę się odwoływać do tworzonego ciągu w poprzednich linijkach, bo przepis konstrukcyjny jest zawarty w niej samej i pozwala tworzyć cyfry AC zupełnie niezależnie od wyników powyżej – choć są one identyczne.
Jeśli AC byłby algorytmem polegającym na zamianie cyfr odpowiadających numerom wiersza przez ich cyfrowe następniki {odpowiadające dodawaniu jedynki (mod10)}, to w wierszu k na różowo zaznaczono początkowe cyfry powstające z jego zastosowania. Pojawia się tu jednak problem na k-tym miejscu po przecinku: po pierwsze nie ma tam żadnej cyfry, bo nie wynika to z konstrukcji AC, a po drugie nawet gdyby była, to należałoby ją zmienić na inną, w dodatku różną od istniejącej. Co jest niewykonalne. Niewykonalne z powodu autoreferencji.
Stwierdzamy zatem, że tekst ACoKC1 nie generuje liczby rzeczywistej.
W ciągu C1 na k-tym miejscu pojawi się zatem inna liczba i konstrukcję możemy kontynuować aż do nieskończoności, bo tyle jest ułamków wymiernych. Czy teraz możemy do takiego gotowego ciągu zastosować Algorytm Cantora AC i uzyskać nową liczbę rzeczywistą, której wcześniej w ciągu nie było? Wydaje się to możliwe i nawet można by wypisywać kolejno jej cyfry, a po dojściu do pozycji k zmienić tą k-tą cyfrę liczby tego ciągu na inną w tworzonej liczbie.
W takim razie tekst AC(KC1(ℕ)) pozwalałby wygenerować liczbę rzeczywistą,
co jest w sprzeczności z wnioskiem zakreślonym powyżej na żółto, bo wtedy to on powinien znaleźć się na pozycji k w ciagu C1. Ale to już rozważaliśmy – nie można go tam wstawić z powodu autoreferencyjności. I z tego samego powodu nie można także zastosować Algorytmu Cantora AC do ciągów tego typu, czyli stwierdzamy, że mogą istnieć ciągi liczb rzeczywistych, dla których AC nie generuje liczb rzeczywistych.
Warto zwrócić uwagę na fakt, że Algorytmów Cantora może być nieskończenie wiele i każdy w złożeniu z jednym ciągiem liczbowym powinien generować inną liczbę niezawartą w tym ciągu. Co więcej – jeżeli zastosujemy konstrukcję ciągu, która z tekstów TB(n) wyłania tylko teksty definiujące same liczby wymierne, to każdy zastosowany Algorytm Cantora do takiego ciągu wygeneruje inną nową liczbę rzeczywistą. Ale to nie powinno nas dziwić – wszak w ciągu liczb wymiernych nie zakładaliśmy obecności liczb niewymiernych, ale te wszystkie liczby rzeczywiste znajdą się w ciągu C1.
Oczywiście, zdaję sobie sprawę, że ciąg C1 nie zawiera wszystkich liczb rzeczywistych – brakuje w nim chociażby pierwiastków kwadratowych, π, e.
Możemy jednak rozszerzyć konstrukcję ciągu do KC2 tworząc ciąg C2, w którym dodatkowo analizowane będą zapisy tekstowe w postaci formuł matematycznych ( takich, jak w dobrym kalkulatorze), pozwalające generować dowolną ilość cyfr rozwinięcia dziesiętnego prezentowanych liczb, jak np ćwiartka pi (π/4):
4arctan(1/5)-arctan(1/239)
Każde takie rozszerzenie zakresu zawartych liczb rzeczywistych w tworzonym ciągu, poprzez dołożenie dodatkowych zadań pozwalających wyławiać z tekstów TB(n) coraz większą ilość tekstów je definiujących, powoduje powiększenie formuły konstrukcyjnej o wiele znaków, ale nadal tekst tych formuł będzie skończony i nawet wtedy, gdybyśmy niektóre liczby rzeczywiste dodawali w sposób pojedynczy, to aby dodać liczbę rzeczywistą o nieskończonym łańcuchu cyfr należy najpierw podać sposób generowania jej cyfr, bo nie jesteśmy na tyle boscy, by móc je ciągnąć w nieskończoność. I dla każdego nowo tworzonego ciągu, dla Algorytmu Cantora AC, można powtórzyć powyższe rozumowanie wykazujące autoreferencyjność i wadliwość tego przepisu.
Następnym logicznym rozszerzeniem ciągu liczb rzeczywistych C3 byłoby dołożenie sposobu konstruowania liczb poprzez analizę składu cyfrowego liczb istniejących i ich zmiany – jedną z możliwości stanowi właśnie algorytm Cantora, który jest co prawda wadliwy, ale tak być nie musi w przypadku innych konstrukcji, jak np:
-liczba składająca się z zera, przecinka i na nieparzyste miejsca po przecinku pobieramy kolejne cyfry rozwinięcia dziesiętnego pierwiastka z dwóch, a na parzyste cyfrę 5.
-liczba zrównoważona cyfrowo (wszystkie cyfry występują z jednakową częstotliwością ogólną): po zerze i przecinku wypisujemy wszystkie cyfry rosnąco, następne wpisy zwielokratniamy – podwójnie, potrójnie i tak w nieskończoność.
Powyższe 2 przepisy pozbawione są wady autoreferencyjności.
Poprzez stopniowe rozbudowywanie przepisu konstrukcyjnego, możemy w tworzonych ciągach Cn zawrzeć wszystkie dotąd poznane grupy liczb rzeczywistych, je rozbudowywać oraz dołączać nowo poznane grupy liczb rzeczywistych w przyszłości.
Jeśli chcemy nadal uważać, że liczby rzeczywiste są nieprzeliczalne, to musimy znaleźć inne dowody niż błędny algorytm diagonalny Cantora.
Czy, po zrewidowaniu poglądów dotyczących prawidłowości algorytmu Cantora i wynikającym z tego odejściu od uznania liczb rzeczywistych za nieprzeliczalne, trzeba będzie powtórzyć obliczenia dla mostów, by się przedwcześnie nie zawaliły? Lub skorygować trajektorie lotu pojazdów galaktycznych, by trafiły do celu? Albo czegokolwiek innego? Odpowiadam:
NIE. Odrzucenie algorytmu Cantora, jako dowodu nieprzeliczalności liczb rzeczywistych, nie będzie miało żadnych skutków praktycznych. Może poza tym, że pewien dział pseudomatematyki utraci autorytet (wskutek autoreferencji).
To o co kopie kruszyć?
Prawdę?
Zrozumienie?
Ciekawość, jak w przypowieści?:
– baco, tak pace na tom pikno ziemie, gdzie owiecki pasiem i dumom: na cym ta ziemia stoi?
– na śterech obrzymich żołwiach, co to pancyrze majo twarde, kaj ta skała, hej.
– baco, a na cym te żołwie stojom?
– a, one to stojom na gzbiecie obrzymiego weloryba.
– a weloryb na cym?
– no, weloryb to po takim obrzymim oceanie pływo.
– baco, a co cymie ten ocean, ze on nie spłynie wartko w dół, kaj ten nas potok?
– ocean to na ziemii stoi i ziemia go w doł nie pusca
– no, a ta ziemia, to na cym stoi?
– Jondrek, a ty kcesz prowde znać, cy w kufe dostać?!
Przeca ci juzek to godał na samym pocontku!