Xác định một số chức năng cơ bản:
pni:Nn→N:(x1,x2,…,xn)↦xi
Từ giờ tôi sẽ sử dụng để biểu thị ( x 1 , x 2 , Lỗi , x n )xn¯(x1,x2,…,xn)
Xác định một thành phần:
Hàm đã cho
- mỗi chữ ký N k → Ng1,g2,…,gmNk→N
- f:Nm→N
Xây dựng chức năng sau:
h:Nk→N:xk¯↦h(xk¯)=f(g1(xk¯),g2(xk¯),…,gm(xk¯))
Xác định đệ quy nguyên thủy:
Hàm đã cho
- f:Nk→N
- g:Nk+2→N
Xây dựng hàm (piecewise) sau:
h:Nk+1→N:(xk¯,y+1)↦{f(xk¯),g(xk¯,y,h(xk¯,y)),y+1=0y+1>0
Tất cả các hàm có thể được thực hiện bằng cách sử dụng các tác phẩm và đệ quy nguyên thủy trên các hàm cơ bản , được gọi là đệ quy nguyên thủy . Nó được gọi theo cách đó theo định nghĩa. Trong khi một liên kết với các chức năng tự gọi là tồn tại, không cần phải thử và liên kết chúng với nhau. Bạn có thể coi đệ quy là một từ đồng âm.
Định nghĩa và cấu trúc ở trên được xây dựng bởi Gôdel (một vài người khác cũng tham gia) trong nỗ lực nắm bắt tất cả các chức năng có thể tính toán được, tức là có Turing Machine cho chức năng đó. Lưu ý rằng khái niệm về Máy Turing chưa được mô tả hoặc ít nhất là rất mơ hồ.
(Un) may mắn thay, một người được gọi là Ackermann đã đến và định nghĩa chức năng sau:
- Ack:N2→N
- Ack(0,y)=y+1
- Ack(x+1,0)=Ack(x,1)
- Ack(x+1,y+1)=Ack(x,Ack(x+1,y))
Chức năng này có thể tính toán được, nhưng không có cách nào để xây dựng nó chỉ bằng cách sử dụng các công trình trên! (tức là không phải là đệ quy nguyên thủy) Điều này có nghĩa là Gôdel và tư thế của anh ta không thể nắm bắt được tất cả các chức năng tính toán trong quá trình xây dựng của họ!Ack
Gôdel đã phải mở rộng lớp chức năng của mình để có thể xây dựng . Ông đã làm điều này bằng cách định nghĩa như sau:Ack
Giảm thiểu không giới hạn
- g:Nk→N
- NẾU
THEN g ( ¯ x k ) = y
ELSE g ( ¯ x k ) không được định nghĩa.[f(xk¯,y)=0 AND f(xk¯,z) is defined ∀z<y AND f(xk¯,z)≠0]
g(xk¯)=y
g(xk¯)
Cái cuối cùng này có thể khó nắm bắt, nhưng về cơ bản, điều đó có nghĩa là là gốc nhỏ nhất của f (nếu một gốc tồn tại).g((x1,x2,…,xk))f
Tất cả các chức năng có thể được xây dựng với tất cả các công trình được xác định ở trên được gọi là đệ quy . Một lần nữa, tên đệ quy chỉ là theo định nghĩa và nó không nhất thiết phải có mối tương quan với các hàm tự gọi chúng. Thực sự, coi nó là một từ đồng âm.
Hàm đệ quy có thể là hàm đệ quy một phần hoặc tổng hàm đệ quy . Tất cả các hàm đệ quy một phần là các hàm đệ quy tổng. Tất cả các hàm đệ quy nguyên thủy là tổng số. Như một ví dụ về hàm đệ quy một phần không phải là toàn bộ, hãy xem xét việc tối thiểu hóa hàm kế. Hàm kế nhiệm không có gốc, do đó tối thiểu hóa của nó không được xác định. Một ví dụ về tổng hàm đệ quy (sử dụng tối thiểu hóa) là .Ack
Bây giờ, Gôdel đã có thể xây dựng hàm với lớp hàm mở rộng của mình. Thực tế, mọi chức năng có thể được tính toán bằng máy Turing, có thể được biểu diễn bằng cách sử dụng các cấu trúc ở trên và ngược lại, mọi cấu trúc có thể được biểu diễn bằng máy Turing.Ack
Nếu bạn tò mò, bạn có thể cố gắng làm cho lớp của Gôdel lớn hơn. Bạn có thể cố gắng xác định 'đối diện' của tối thiểu hóa không giới hạn. Đó là, tối đa hóa không giới hạn , tức là chức năng tìm ra gốc lớn nhất. Tuy nhiên, bạn có thể thấy rằng tính toán chức năng đó là khó (không thể). Bạn có thể đọc vào Bài toán bận rộn , cố gắng áp dụng tối đa hóa không giới hạn.