Wstęp do matematyki

Dziś wpis o trochę innej tematyce. Ale mam nadzieję, że to nie zniechęci Cię do lektury mojego bloga!

Mam wrażenie, że matematyka przez wielu informatyków jest traktowana jako zło konieczne, które trzeba zaliczyć na studiach. Moim zdaniem nie jest to prawda. Matematyka przydaje się, a jej znajomość naprawdę pomaga w pracy każdego programisty. W takich momentach przypomina się ten obrazek:

Oryginalny obrazek możesz znaleźć tutaj. Oczywiście maszyna Turinga jest konceptem z pogranicza matematyki i informatyki, ale moim zdaniem pokazuje jeden, bardzo ważny fakt. Wiele osób nie widzi sensu w nauce skomplikowanej teorii. Zadowalają się umiejętnością programowania. Moim zdaniem jest to krótkowzroczne – bo rzeczywiście szybko znajdziesz zatrudnienie, ale z dużym prawdopodobieństwem nie zrobisz wielkiej kariery. Może nawet będziesz pracował w działce AI (artificial intelligence – sztucznej inteligencji), ale bez dogłębnej znajomości matematyki będziesz odtwarzał znane schematy i będzie Ci bardzo trudno wymyślić coś nowego (potencjalnie wartego grube pieniądze).

Chciałbym, żeby ten wpis rozpoczął dłuższą serię artykułów matematycznych. Chciałbym dojść do tematyki związanej z teorią Galois i wprowadzić apart matematyczny, żebyś był w stanie zrozumieć zagadnienie krzywych eliptycznych.

Jednocześnie piszę ten wpis, aby pokazać licealistom, że matematyka w liceum jest bardzo fajna, ale na studiach jest jeszcze fajniejsza. Trzeba powiedzieć wprost, że nieco inna, ale mimo to jest dużo fajniejsza.

Jeszcze do niedawna, w ramach mojej pracy przekonywałem licealistów, że studiowanie informatyki i/lub matematyki jest naprawdę bardzo przyjemne. A przede wszystkim bardzo perspektywiczne (badania wskazują, że bardzo duża część absolwentów znajduje satysfakcjonującą pracę w zawodzie). I mimo, że już teraz nie pracuję na uczelni, to i tak chciałbym przekonać przynajmniej kilka osób, że warto zaznajomić się z wyższą matematyką.

Logika i rachunek zdań

Za moich czasów (rok 2005) w pierwszej klasie liceum matematyka zaczynała się od logiki. Bardzo słusznie, rachunek zdań bardzo ułatwia wyrażanie myśli. Bez logiki matematyka byłaby dużo trudniejsza. Z tego co pamiętam, na studiach wszyscy wykładowcy zakładali, że znamy logikę i nikt nam jej nie przypominał.

Zdanie

Wszystko powinniśmy zacząć od zdania. Oczywiście, wszystko można zdefiniować bardzo formalnie. Ale zacznijmy od wprowadzenia intuicji. Zdania będziemy oznaczali małymi literami alfabetu łacińskiego (p, q, r, …) lub greckiego (\alpha, \beta, \gamma, …). Zdania takie są proste (nie zawierają zbyt wielu informacji) i zasadniczo można obiektywnie przypisać im jedną z dwóch wartości: prawdę lub fałsz. Zdania w matematyce mogą składać się z wielu zdań, które są połączone ze sobą spójnikami. Czyli trochę jak w gramatyce – są zdania pojedyncze, które połączone spójnikami mogą tworzyć zdania złożone. Przykładem takiego prostego zdania w matematyce może być:

  • Liczba n jest liczbą parzystą
  • Zbiór A jest zbiorem pustym

Za zdanie (w kontekście rachunku zdań, logiki i matematyki) nie możemy uznać:

  • Jaś lubi liczby parzyste
  • Liczba m być może jest parzysta

Wartościowanie zdań

Przyjmijmy teraz, że \alpha jest zdaniem prostym. A w jest funkcją, która jako argument przyjmuje zdanie, a jej wartością jest 0 (gdy zdanie \alpha jest fałszywe) albo 1 (gdy zadanie \alpha jest prawdziwe). Możemy więc zapisać to matematycznie:

    \[w(\alpha) = \left\{ \begin{array}{ll} 0, & \textrm{gdy $\alpha$ jest fałszywe} \\ 1, & \textrm{gdy $\alpha$ jest prawdziwe} \end{array}\right.\]

Możemy teraz zdefiniować spójniki logiczne i zdefiniować wartościowanie zdań złożonych.

Koniunkcja

Koniunkcja to matematyczne określenie relacji dwóch zdań połączonych spójnikiem i (oraz). Matematycznie ten spójnik zapisuje się jako znak \wedge. Za pomocą tabelki logicznej, możemy wyznaczyć wartościowanie zdania \alpha \wedge \beta w zależności od wartościowania zdań \alpha i \beta:

w(\alpha) w(\beta) w(\alpha \wedge \beta)
1 1 1
1 0 0
0 1 0
0 0 0

Tak więc oba zdania połączone spójnikiem oraz muszą być prawdziwe, aby całe zdanie było prawdziwe.

Alternatywa

W alternatywie spójnikiem jest lub. Matematycznie oznacza się go znaczkiem \vee. Dla alternatywy tabelka będzie wyglądała trochę inaczej:

w(\alpha) w(\beta) w(\alpha \vee \beta)
1 1 1
1 0 1
0 1 1
0 0 0

Mówiąc inaczej, alternatywa dwóch zdań jest prawdziwa, gdy przynajmniej jedno zdanie połączone spójnikiem lub jest prawdziwe.

Negacja

Każde zdanie możemy zaprzeczyć używając partykuły nie. Matematycznie możemy to zapisać za pomocą znaczka \neg (w niektórych podręcznikach można spotkać zapis \sim). Operacja (trochę trudno mówić o spójniku) negacji też ma swoją tabelkę:

w(\alpha) w(\neg \alpha)
1 0
0 1

Implikacja

Implikacja określa wynikanie jednego zdania z jakiegoś innego zdania. Na przykład:

    \[\textrm{Jeżeli $n$ dzieli 6, to $n$ dzieli 12}\]

Matematycznie możemy to zapisać:

    \[n|6 ~\Rightarrow n|12\]

Implikacja jest bardzo często używana w trakcie przeprowadzaniu dowodów matematycznych. Niektóre twierdzenia matematyczne są wyrażone jako implikacje (z założenia wynika teza). Matematyczna implikacja ma jednak inne znaczenie od implikacji używanej w mowie potocznej.

w(\alpha) w(\beta) w(\alpha \Rightarrow \beta)
1 1 1
1 0 0
0 1 1
0 0 1

Tak naprawdę wystarczy zapamiętać, że implikacja jest fałszywa tylko w przypadku, gdy poprzednik implikacji (czyli zdanie stojące po lewej stronie znaku \Rightarrow) jest prawdziwy, a następnik (czyli zdanie stojące po prawej stronie znaku \Rightarrow) jest fałszywy. Ma to takie filozoficzne znaczenie, że z prawdy nie możemy wywnioskować fałszu. Zwróć uwagę na jeszcze jeden fakt: z fałszu możemy wywnioskować cokolwiek.

Równoważność

Jeszcze jeden spójnik, który określa równoważność zdań. Oznaczamy go za pomocą symbolu \Leftrightarrow i czytamy: wtedy i tylko wtedy, gdy. Tutaj intuicyjne rozumowanie nie powinno Cię zawieść.

w(\alpha) w(\beta) w(\alpha \Leftrightarrow \beta)
1 1 1
1 0 0
0 1 0
0 0 1

Zdanie są sobie równoważne, gdy oba mają takie samo wartościowanie logiczne. Równoważność można również zdefiniować w następujący sposób:

    \[\left( \alpha \Leftrightarrow \beta \right) ~\Leftrightarrow~ \left(\left( \alpha \Rightarrow \beta\right) \wedge \left(\beta \Rightarrow \alpha\right)\right)\]

Możemy to rozumieć następująco:

zdania \alpha i \beta są sobie równoważne wtedy i tylko wtedy, gdy ze zdania \alpha wynika zadanie \beta oraz ze zdania \beta wynika zdanie \alpha.

Tautologie

Zdanie \left( \alpha \Leftrightarrow \beta \right) ~\Leftrightarrow~ \left(\left( \alpha \Rightarrow \beta\right) \wedge \left(\beta \Rightarrow \alpha\right)\right) jest przykładem tautologii: czyli zdania, które jest prawdziwe niezależnie od wartościowania zdań \alpha i \beta. W szkole badanie, czy zadane zdanie złożone jest tautologią odbywa się przy użyciu tabelek. Na przykład:

w(\alpha) w(\beta) w(\alpha \Leftrightarrow \beta) w(\alpha \Rightarrow \beta) w(\beta \Rightarrow \alpha) w\left((\alpha \Rightarrow \beta) \wedge (\beta \Rightarrow \alpha) \right) w\left( \left( \alpha \Leftrightarrow \beta \right) ~\Leftrightarrow~ \left(\left( \alpha \Rightarrow \beta\right) \wedge \left(\beta \Rightarrow \alpha\right)\right) \righ)
0 0 1 1 1 1 1
0 1 0 1 0 0 1
1 0 0 0 1 0 1
1 1 1 1 1 1 1

Widzimy w tabelce, że całe zdanie jest prawdziwe zawsze – niezależnie od prawdziwości (bądź nieprawdziwości) zdań \alpha i \beta.

Innym przykładem tautologii jest zdanie

    \[\left( \alpha \Rightarrow \beta \right)~\Leftrightarrow~\left(\neg \alpha \vee \beta\right)\]

Jest jeszcze jedna tautologia, która bywa nazywana prawem de Morgana:

    \[\left( \neg \left( \alpha \wedge \beta \right) \right) ~\Leftrightarrow ~\left( \left( \neg \alpha\right)\vee\left(\neg \beta\right)\right)\]

Dowód, że te zdania są rzeczywiście tautologiami, pozostawiam Tobie, mój dzielny Czytelniku.

A teraz przez chwilę zadumajmy się nad tymi trzema tautologiami. Jeżeli głębiej się nad tym wszystkim zastanowimy, to każde zdanie logiczne można opisać tylko przy użyciu alternatywy i negacji. To znaczy, że całą logikę można wyrazić w zdaniach logicznych zawierających tylko spójnik lub oraz zaprzeczenie.

Możemy definiować jeszcze inne spójniki logiczne, które mają dużo sensu w informatyce. Przykładem może być XOR (exclusive or), NOR oraz NAND. Tutaj pozwoliłem sobie na lekkie uproszczenie, bo to są nazwy bramek logicznych. A bramki logiczne, to są najmniejsze części składowe dowolnego układu elektronicznego. Możemy sobie wyobrazić, że procesor w każdym komputerze składa się z ogromnej liczby bramek logicznych. Okazuje się, że układ cyfrowy może składać się tylko i wyłącznie z bramki NAND (operator logiczny odpowiadający tej bramce logicznej nazywa się dysjunkcją). Zaprzeczenie i alternatywę możemy wyrazić za pomocą dysjunkcji, której tabelka wartościowań wygląda następująco:

w(\alpha) w(\beta) w(\alpha / \beta)
1 1 0
1 0 1
0 1 1
0 0 1

Zwróć uwagę, że jest to negacja koniunkcji. Czy widzisz, w jaki sposób można zdefiniować negację i alternatywę, przy użyciu dysjunkcji?

Teoria zbiorów

Podstawą wszytkich działów matematycznych jest teoria zbiorów (w polskiej literaturze określa się ją też jako teoria mnogości). Wszystkie pojęcia możemy wyrazić w języku zbiorów. Myślę, że w następnym wpisie z serii matematycznej uda mi się zdefiniować funkcję w języku zbiorów. O zbiorach jako takich można mówić bardzo wiele. Zdaję sobie sprawę, że ten wpis zrobił się już strasznie długi, więc dziś skupię się tylko na podstawach.

Zbiór jest przykładem pojęcia pierwotnego. Czyli cytująć polską wikipedię:

Terminem pojęcia pierwotnego określa się pojęcia, które uznawane są za fundamentalne, a zarazem trudne do opisania językiem teorii

To trochę jak z definicją konia w staropolskiej encyklopedii: koń jaki jest, każdy widzi.

Zbiór może być skończony (mieć skończenie wiele elementów) lub nieskończony (mieć nieskończenie wiele elementów, przykład: zbiór liczb naturalnych).

Warto dodać, że jest tylko jeden zbiór, który nie zawiera żadnego elementu, taki zbiór nazywamy zbiorem pustym i oznaczamy symbolem \emptyset.

Fakt, że element x należy do zbioru X (zwyczajowo zbiory oznacza się wielkimi literami alfabetu łacińskiego) zapisujemy:

    \[x \in X\]

Oczywiście możemy również podkreślić, że element y nie należy do zbioru X:

    \[\neg \left( y \in X \right)~~~~\textrm{albo inaczej}~~~~y\not\in X.\]

Przejdźmy teraz do relacji pomiędzy zbiorami.

Zawieranie

Zbiór A jest podzbiorem zbioru B (albo inaczej B jest nadzbiorem zbioru A) wtedy i tylko wtedy, gdy każdy element zbioru A jest również elementem zbioru B. Taką relację pomiędzy zbiorami oznaczamy symbolem inkluzji: \subset:

    \[\underbrace{A \subset B}_{\textrm{zbiór $A$ zawiera się w zbiorze $B$}}~~~~\textrm{albo inaczej}~~~~\underbrace{B \supset A}_{\textrm{zbiór $B$ zawiera zbiór $A$}}\]

Możemy to również zapisać przy użyciu kwantyfikatora \forall dla każdego:

    \[\left( A \subset B \right) ~\Leftrightarrow~ \left[\forall~a  ~\left( a\in A \Rightarrow a \in B \right) \right]\]

Słownie możemy to przeczytać:

Zbiór A jest podzbiorem zbioru B wtedy i tylko wtedy, gdy dla każdego elementu a zachodzi implikacja, że jeżeli a należy do zbioru A, to a należy do zbioru B

O sytuacji odwrotnej – czyli o sytuacji, gdy A nie jest podzbiorem B – mówi się na tyle często, że istnieje osobny symbol na relację nie bycia podzbiorem:

    \[\neg (A \subset B) ~~\Leftrightarrow ~~ A \not\subset B\]

Czyli zbiór A nie jest podzbiorem B, wtedy i tylko wtedy gdy istnieje element w zbiorze A, który nie jest elementem zbioru B. Można to wyrazić używając języka logiki:

    \[(A \not \subset B)~~\Leftrightarrow~~(\exists~x  ~| ~ x \in A \wedge x \not\in B)\]

Zapis \exists ~ x ~ | ~ f(x) odczytujemy:

istnieje x taki, że zachodzi f(x)

Symbol \exists nazywamy kwantyfikatorem istnieje.

Równość

Definicja równości zbiorów mówi, że zbiory A i B są sobie równe wtedy i tylko wtedy, gdy mają takie same elementy. Możemy to zapisać używając kwantyfikatora dla każdego:

    \[(A=B) ~~\Leftrightarrow ~~ [\forall~x~(x \in A \Leftrightarrow x \in B)]\]

Korzystając z powyższej definicji można udowodnić następujące własności dla dowolnych zbiorów A, B i C

  1. \emptyset \subset A
  2. A \subset A
  3. (A \subset B \wedge B \subset C) \Rightarrow (A \subset C)
  4. (A \subset B \wedge B \subset A) \Rightarrow (A = B)
  5. (A \neq B) \Rightarrow (A \not \subset B \vee B \not \subset A)

Szczególne przypadki zawierania

Warto w tym momencie wspomnieć o jeszcze dwóch specjalnych symbolach:

  1. A \subseteq B – oznacza zawieranie, które dopuszcza równość dwóch zbiorów
  2. A \subsetneq B – oznacza zawieranie, ale wyklucza równość zbiorów. Możemy to przeczytać jako: A jest właściwym podzbiorem B – co oznacza, że istnieje przynajmniej jeden taki element zbioru B, który nie jest elementem zbioru A

Suma zbiorów

Sumę zbiorów oznacza się symbolem \cup i definiuje się następująco dla dowolnych zbiorów A i B:

    \[(x \in A \cup B) ~\Leftrightarrow~(x \in A \vee x \in B)\]

Najlepiej to obrazuje ilustracja:

 

Iloczyn zbiorów

Iloczyn zbiorów (inaczej przecięcie lub część wspólną) oznaczamy symbolem \cap i definiuje się dla dowolnych zbiorów A i B:

    \[(x \in A \cap B) ~ \Leftrightarrow~(x \in A \wedge x \in B)\]

Można to łatwo zdefiniować na ilustracji:

 

Różnica zbiorów

Kolejnym działaniem na zbiorach, o którym chciałbym napisać jest różnica zbiorów, którą oznacza kreską ukośną \setminus, albo po prostu zwyczajnie minusem -. Dla dowolnych zbiorów A i B definiujemy ją:

    \[(x \in A - B) ~ \Leftrightarrow~(x \in A \wedge x \not\in B)\]

Co również można łatwo zilustrować na diagramie:

 

Iloczyn kartezjański

Cały artykuł chciałbym zakończyć definicją iloczynu kartezjańskiego dowolnych zbiorów A i B:

    \[A \times B ~= ~\{(a,b)~:~a \in A \wedge b\in B\}\]

Możemy tę definicję odczytać:

Iloczyn kartezjański dwóch zbiorów A i B to jest zbiór par, z których pierwszy element należy do zbioru A a drugi do zbioru B.

Gdy mamy zbiory A = \{1,2,3\} oraz B = \{a,b,c,d\}. To wtedy:

    \[\begin{array}{lll} A \times B = & \{ & \\ && (1,a), (1,b), (1,c), (1,d), \\ & &(2,a),(2,b),(2,c),(2,d),\\ &&(3,a),(3,b),(3,c),(3,d)\\ & \}&\end{array}\]

Kolejny wpis, w którym będę wykorzystywał iloczyn kartezjański już wkrótce.

Literatura

Zainteresowanych odsyłam do strony internetowej Ważniak oraz do książki pani Heleny Rasiowej o tytule Wstęp do matematyki współczesnej.

Aspirujący twórca internetowy, który zna się na programowaniu i chce się dzielić wiedzą

Dodaj komentarz

Twój adres e-mail nie zostanie opublikowany. Wymagane pola są oznaczone *

Scroll to top