Có phải những người theo quy luật và theo cách đệ quy có thể có ý nghĩa rất giống nhau không?


11

Do "quy nạp" và "đệ quy" có nghĩa là rất giống nhau?

Ví dụ: nếu có một thuật toán xác định vectơ n-dim bằng cách xác định các thành phần k + 1 đầu tiên dựa trên các thành phần k đầu tiên của nó đã được xác định và được khởi tạo với thành phần đầu tiên, bạn sẽ gọi nó hoạt động theo cách đệ quy hay quy nạp? Tôi đã sử dụng "đệ quy", nhưng hôm nay có người nói nó "theo quy nạp".


Bài viết này về Cảm ứng và Đệ quy tóm tắt nó độc đáo, nhưng ý chính là chúng liên quan chặt chẽ với nhau; một bằng chứng cảm ứng toán học có thể được viết như một thuật toán đệ quy.
Merbs

Tự cảm thường có nghĩa là đệ quy từ đến , vì vậy đệ quy là trạng từ tổng quát hơn. n + 1nn+1
Yuval Filmus

Loại đệ quy nào không theo quy nạp, @YuvalFilmus?
Tim

@YuvalFilmus: Đó là một khái niệm rất hạn chế về quy nạp.
Dave Clarke

Đối với tôi họ có nghĩa là điều tương tự ra khỏi bối cảnh. Trong một bối cảnh cụ thể, chúng có thể có nghĩa là những thứ khác nhau.
Gilles 'SO- ngừng trở nên xấu xa'

Câu trả lời:


6

Không , nhưng không phải vì những lý do mà người khác đưa ra. Sự khác biệt giữa đệ quy và cảm ứng không phải là đệ quy là "từ trên xuống" và cảm ứng là "từ dưới lên". Cảm ứng là đẳng cấu với một cái gì đó gọi là "đệ quy primitve", nhưng nói chung, đệ quy mạnh hơn nhiều so với cảm ứng .

Sự khác biệt giữa từ trên xuống và từ dưới lên là tầm thường - bất kỳ chương trình đệ quy nguyên thủy "từ trên xuống" nào cũng có thể được chuyển đổi một cách cơ học thành một cái gì đó "từ dưới lên". Trong thực tế, bất kỳ bằng chứng nào của quy nạp có thể được biến thành một chương trình đệ quy. Trong khuôn khổ tính toán của các công trình quy nạp, nếu bạn muốn chứng minh rằng mọi số tự nhiên đều là froopious, bạn sẽ viết nó như là một hàm xây dựng một bằng chứng rằng n là froopious bằng cách thực hiện một cuộc gọi đệ quy để xây dựng một bằng chứng rằng 1 là đông cứng.

Yếu tố chính của cảm ứng là mọi thứ được xác định theo nghĩa nhỏ hơn và chúng "chạm đáy" sau nhiều bước chính xác. Các số tự nhiên là quy nạp bởi vì mọi tự nhiên là 0 hoặc là sự kế thừa của một số tự nhiên nhỏ hơn. Danh sách là quy nạp vì mọi danh sách đều trống hoặc có thể được chia nhỏ ("mở ra") thành một yếu tố và danh sách nhỏ hơn.

Đôi khi các chương trình đệ quy không được viết theo những điều nhỏ hơn. Ví dụ: lấy chức năng Collatz này:

fun collatz(n) 
   if n <= 1
      return 0;
   else if n % 2 == 0
     return 1 + collatz(n / 2)
   else
     return 1 + collatz(3 * n + 1)
end

Hàm này không đi từ trên xuống hay từ dưới lên, và do đó không được quy nạp theo số tự nhiên.

Có thể có một mệnh lệnh để điều trị theo cách tự cảm, nhưng đối với hầu hết mọi thứ đơn giản là không có cách nào. Các hàm trên các luồng vô hạn là một ví dụ tuyệt vời. Trong thực tế, các luồng là ví dụ mẫu của loại "cưỡng chế".

"Cơ sở thực tiễn cho ngôn ngữ lập trình" của Bob Harper, có sẵn trực tuyến miễn phí, có phần giới thiệu hay về các loại quy nạp, cưỡng chế và đệ quy.


2

Đối với tôi nó chủ yếu là một câu hỏi về quan điểm. Nếu tôi xác định các đối tượng dựa trên một đối tượng nhỏ hơn, tôi sẽ thực hiện theo cách tự cảm, vì vậy đó là từ dưới lên. Nếu tôi giải quyết vấn đề bằng cách chia nhỏ nó thành các phần nhỏ hơn được giải quyết theo cách tương tự tôi gọi đó là đệ quy, đó là từ trên xuống.

(chỉnh sửa) PS. Xem một câu hỏi tương tự trong bộ phận chị em Toán học của chúng tôi, định nghĩa đệ quy so với quy nạp . Tôi trích dẫn từ câu trả lời của Carl Mummert:

Mô tả tốt nhất của tôi là "định nghĩa quy nạp" phổ biến hơn khi chúng ta định nghĩa một tập hợp các đối tượng "không có gì", trong khi "định nghĩa đệ quy" phổ biến hơn khi chúng ta định nghĩa một hàm trên bộ sưu tập các đối tượng đã tồn tại.

Nhưng quan trọng hơn:

không đáng để mất ngủ


vậy "recursion = chia và chinh phục", cái nào từ trên xuống rồi từ dưới lên?
Tim

1

Không, chúng không giống nhau. Và bạn nói đúng (tôi giả sử về thuật toán bạn mô tả): nó đệ quy.

Lý do là định nghĩa của cả hai từ mà bạn có thể đọc trong từ điển hoặc Wikipedia.

Cảm ứng (giả sử 'cảm ứng toán học') đặc biệt về việc chứng minh rằng tất cả các trường hợp của một đối số là đúng.

Đệ quy đặc biệt về một quy trình có thể được lặp lại theo một cách nào đó trong cùng một quy trình.

RE: câu trả lời của người khác:

Sau khi xem câu trả lời của người khác, tôi có thể hiểu tại sao có sự nhầm lẫn: khi xác định cơ sở dữ liệu, chức năng và ngôn ngữ, một số nhà lý thuyết dường như sử dụng 'quy nạp' và 'đệ quy' theo cách khó hiểu (xem bình luận cho câu hỏi này). Tôi không nghĩ câu trả lời của Koppel (ngay cả với số phiếu cao nhất hiện tại) thực sự phản ánh sự nhầm lẫn đó. Vì chúng ta đang nói về một thuật toán, tôi sẽ không nói có 'thuật toán quy nạp'; Tôi nghĩ đó là một phân loại không cần thiết.


Cảm ứng không chỉ là về bằng chứng. Bạn cũng sử dụng tất cả thời gian để xác định một cách tự nhiên các cấu trúc đệ quy (cấu trúc dữ liệu, ngôn ngữ, v.v.)
hugomg

@missingno Vui lòng cung cấp một nguồn cho định nghĩa đó.
Tom

Một ví dụ tôi có thể nghĩ đến là đây : "Ngôn ngữ của \ mathcal {L}, còn được gọi là bộ của formulæ, công thức hoặc wffs tốt được hình thành, được quy nạp được xác định bởi các quy tắc sau:"
hugomg

@missingno dẫn đến trang Wikipedia này, nơi tôi nghĩ rằng có một cách sử dụng dư thừa và khó hiểu của từ 'quy nạp', về cơ bản được sử dụng như 'đệ quy'
Tom

Xin đừng bắt tôi tìm thêm ví dụ. Mặc dù bạn có thể không đồng ý với nó, nó chắc chắn là một thành ngữ rất phổ biến và bạn cũng có thể tìm thấy nó trong nhiều cuốn sách nếu bạn tìm nó. Và nó không giống như ai đó đã chỉnh sửa bài viết trên wikipedia nhằm mục đích chứng minh quan điểm của tôi ...
hugomg
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.