Obecnie czytam książkę o algorytmach i złożoności. W tej chwili czytam o funkcjach obliczalnych i niepoliczalnych, a moja książka stwierdza, że jest o wiele więcej funkcji, które nie są obliczalne niż obliczalne, w rzeczywistości większość jest niepoliczalna. W pewnym sensie intuicyjnie mogę to zaakceptować, ale książka nie daje formalnego dowodu ani nie rozwija zbyt wiele na ten temat.
Chciałem tylko zobaczyć dowód / pozwolić, żeby ktoś tutaj go rozwinął / bardziej szczegółowo zrozumieć, dlaczego jest tak wiele funkcji, które nie są obliczalne, niż funkcje obliczalne.
Odpowiedzi:
Istnieje niezliczona ilość funkcji obliczalnych:
Każda funkcja obliczalna ma co najmniej jeden algorytm. Każdy algorytm ma skończony opis przy użyciu symboli ze zbioru skończonego, np. Skończone ciągi binarne przy użyciu symboli . Liczba skończonych ciągów binarnych oznaczonych przez jest policzalna (tj. Taka sama jak liczba liczb naturalnych ).{ 0 , 1 } ∗ N{ 0 , 1 } { 0 , 1 }∗ N
Dlatego może być co najwyżej niezliczona liczba funkcji obliczalnych. Istnieje co najmniej policzalna wiele funkcji obliczalnych, ponieważ dla każdego można obliczyć funkcję stałą . f ( x ) = cc∈{0,1}∗ f(x)=c
Innymi słowy, istnieje zgodność między:
Z drugiej strony istnieje niepoliczalnie wiele funkcji nad łańcuchami (lub liczbami naturalnymi). Funkcja (lub ) przypisuje wartość dla każdego wejścia. Każdą z tych wartości można wybrać niezależnie od innych. Więc istnieje możliwa funkcja. Liczba funkcji nad liczbami naturalnymi jest równa liczbie liczb rzeczywistych. f : { 0 , 1 } ∗ → { 0 , 1 } ∗ N N = 2 Nf:N→N f:{0,1}∗→{0,1}∗ NN=2N
Ponieważ tylko policzalnie wiele funkcji jest obliczalnych, większość z nich nie. W rzeczywistości liczba funkcji nieobliczalnych również wynosi .2N
Jeśli chcesz to zobrazować intuicyjnie, pomyśl o liczbach naturalnych i liczbach rzeczywistych lub o skończonych ciągach binarnych i nieskończonych ciągach binarnych. Istnieje znacznie więcej liczb rzeczywistych i nieskończonych ciągów binarnych niż liczb naturalnych i ciągów skończonych. Innymi słowy (na dowód tego faktu patrz przekątny argument Cantora i arytmetyka kardynalna ).N<2N
źródło
Istnieje więc wiele funkcji, które nie są obliczalne, ponieważ mamy „nieskończenie wiele” stopni swobody - rzeczywistą nieskończoność zamiast „potencjalnej” nieskończoności, jak w przypadku obliczalnym.
źródło