O LICZBACH NIEOBLICZALNYCH I ICH ZWIĄZKACH Z INFORMATYKĄ Jakie obiekty matematyczne nazywa się nieobliczalnymi? Jakie obiekty matematyczne nazywa się nieobliczalnymi? Najczęściej: a) liczby b) funkcje c) problemy (nierozwiązywalne za pomocą algorytmów: zasadniczo lub praktycznie) ► nieobliczalne = algorytmicznie niedostępne Problemy nieobliczalne Typowe przykłady? Problemy nieobliczalne Typowe przykłady? Problem spełnialności (nieobliczalny praktycznie) Czy istnieje takie wartościowanie zmiennych zdaniowych, przy którym formuła zawierająca n zmiennych jest prawdziwa ? Problem równań diofantycznych (nieobliczalny zasadniczo) Czy dane równanie diofantyczne, z dowolną liczbą niewiadomych i całkowitymi współczynnikami, ma choć jedno rozwiązanie w zbiorze liczb całkowitych ? (¬b ∧ ( a → b)) → (¬a )) 1 0 1 x2 + 2 y3 − 4 y 2 + z 4 = 0 0 Turingowski problem stopu Problem stopu (maszyny Turinga) Dla dowolnej maszyny MTi i jej dowolnych danych wejściowych Dj odpowiedz jednoznacznie, czy MTi zatrzyma się dla danych Dj tj. zakończy przetwarzanie danych Dj? Mniej technicznie: Czy istnieje taki uniwersalny algorytm, który analizując zapis każdego innego algorytmu oraz dowolnych jego danych, rozstrzygnie jednoznacznie czy analizowany algorytm zakończy przetwarzanie swoich danych, czy też będzie je przetwarzał w nieskończoność? Co problemy (nieobliczalne) mogą mieć wspólnego z liczbami ? Co problemy (nieobliczalne) mogą mieć wspólnego z liczbami ? Dwa spostrzeżenia 1) Jeśli pewien problem ma algorytmiczne rozwiązanie, to istnieje rozwiązujący go program komputerowy, a ponieważ komputerowa realizacja programu jest ciągiem obliczeń, to sam problem ma pewne rozwiązanie liczbowe (które człowiek tak lub inaczej interpretuje). Krótko: rozwiązanie problemu jest liczbą. 2) Rozwiązujący dany problem program komputerowy, można przedstawić jako pewną liczbę (przyjmując określoną metodę kodowania). Krótko: metoda rozwiązania (program) jest liczbą. (!) Co problemy (nieobliczalne) mogą mieć wspólnego z liczbami ? Wstępna konkluzja ► Jeśli pewien problem nie ma żadnych algorytmicznych rozwiązań (w dziedzinie algorytmów dla maszyn cyfrowych), a chcemy utrzymać pojęcie „liczby kodującej rozwiązanie”, to musimy przyjąć, że: Hipotetyczne rozwiązanie problemu cyfrowo nieobliczalnego jest pewną specjalną liczbą: liczbą nieobliczalną. Jakiego typu liczbami są liczby nieobliczalne? Jakiego typu liczbami są liczby nieobliczalne? Czy liczby nieobliczalne są po prostu liczbami niewymiernymi ? Czy liczby nieobliczalne są po prostu liczbami niewymiernymi? NIE. Liczba nieobliczalna jest to taka specyficzna liczba niewymierna, której nie można obliczyć (algorytmicznie wyznaczyć) z dowolną zadaną dokładnością. Można ją obliczyć tylko z pewną skończoną dokładnością. Należy odróżnić zatem niewymierne liczby obliczalne i niewymierne liczby nieobliczalne. Czy liczba π jest nieobliczalna? Czy liczba π jest nieobliczalna? NIE. Liczbę π można przedstawić w postaci szeregu liczbowego, który to szereg można zinterpretować jako algorytm jej obliczania z dowolną zadaną dokładnością. ∞ 4 4 4 (−1) n π = 4 − + − + ... = 4 ⋅ ∑ 3 5 7 n = 0 2n + 1 1 1 1 e = 1 + + + + ... = 1! 2! 3! ∞ 1 n! n =0 ∑ Co liczby nieobliczalne mają wspólnego z maszynami Turinga? Co liczby nieobliczalne mają wspólnego z maszynami Turinga? Za pomocą maszyn Turinga definiuje się pojęcie obliczania. Obliczać -- to znaczy wykonywać program dla maszyny Turinga. A ZATEM… Co liczby nieobliczalne mają wspólnego z maszynami Turinga? Za pomocą maszyn Turinga definiuje się pojęcie obliczania. Obliczać to znaczy wykonywać program dla maszyny Turinga. A ZATEM… Liczba obliczalna jest to taka liczba rzeczywista, dla której istnieje maszyna Turinga (inaczej: program dla maszyny cyfrowej) pozwalająca obliczyć ją z dowolną zadaną dokładnością. Liczba nieobliczalna nie ma powyższej własności: jest niewyznaczalna za pomocą maszyn Turinga. Liczby (nie)obliczalne – kilka określeń Liczby obliczalne… Liczby nieobliczalne… (wg. Turinga) (wg. Turinga) Istnieje dla nich algorytm obliczania. Nie istnieje dla nich algorytm obliczania. Istnieje maszyna Turinga obliczająca je z dowolną zadaną dokładnością. Żadna maszyna Turinga nie potrafi obliczyć ich z dowolną zadaną dokładnością. Istnieje algorytm obliczania ich kolejnych cyfr. Nie istnieje algorytm obliczania ich kolejnych cyfr. Różne klasy liczb liczby obliczalne i nieobliczalne Na osi CZASU liczby naturalne liczby wymierne liczby niewymierne zero liczby ujemne liczby rzeczywiste Na osiach LICZBOWYCH liczby nieobliczalne Im i … ? -1 0 3 4 1 2 Re liczby zespolone Definiowanie liczb nieobliczalnych Niektóre liczby nieobliczalne można zdefiniować, nie podając jednak efektywnego schematu wyznaczania ich kolejnych cyfr. Poglądowy przykład: a) Tworzymy uporządkowaną listę wszelkich możliwych maszyn Turinga MTi (z danymi wejściowymi na taśmach). b) Definiujemy liczbę zapisaną binarnie L = 0,b1b2b3b4… przy czym bi = 1, gdy MTi kończy pracę bi = 0, gdy MTi działa w nieskończoność Od niewymierności do nieobliczalności 1. Istnieją liczby niewymierne. (Pitagorejczycy, VI w p.n.e) 2. Liczby naturalne i wymierne są równoliczne. (G. Cantor, koniec wieku XIX) 5. Istnieją różne podklasy liczb niewymiernych. (XIX i XX wiek) 6. Istnieją niewymierne liczby nieobliczalne. (Turing 1936) 3. Liczby naturalne i rzeczywiste nie są równoliczne. (G. Cantor, koniec wieku XIX) 7. Zbiór liczb nieobliczalnych ma moc continuum. 4. Zbiór liczb niewymiernych ma moc continuum. (G. Cantor, koniec wieku XIX) 8. Liczby nieobliczalne są czysto losowe. (G. Chaitin 1987)