بازگشت زمانی اتفاق می افتد که تعریف یک مفهوم یا فرآیند به نسخه ساده تر یا قبلی خود بستگی داشته باشد. [1] بازگشت در رشته های مختلفی از زبان شناسی گرفته تا منطق استفاده می شود . رایج ترین کاربرد بازگشت در ریاضیات و علوم کامپیوتر است که در آن تابعی که تعریف می شود در تعریف خودش اعمال می شود. در حالی که این ظاهرا تعداد بی نهایت نمونه (مقادیر تابع) را تعریف می کند، اغلب به گونه ای انجام می شود که هیچ حلقه نامتناهی یا زنجیره نامتناهی از مراجع رخ نمی دهد.
فرآیندی که بازگشتی را نشان می دهد بازگشتی است . بازخورد ویدیویی تصاویر بازگشتی را نمایش میدهد، مانند آینه بینهایت .
در ریاضیات و علوم کامپیوتر، کلاسی از اشیا یا روشها رفتار بازگشتی از خود نشان میدهند که بتوان آن را با دو ویژگی تعریف کرد:
به عنوان مثال، تعریف زیر یک تعریف بازگشتی از اجداد یک شخص است . جد شخص یا این است:
دنباله فیبوناچی نمونه کلاسیک دیگری از بازگشت است:
بسیاری از بدیهیات ریاضی بر اساس قوانین بازگشتی هستند. به عنوان مثال، تعریف رسمی اعداد طبیعی توسط بدیهیات Peano را می توان چنین توصیف کرد: "صفر یک عدد طبیعی است و هر عدد طبیعی یک جانشین دارد که آن هم یک عدد طبیعی است." [2] با این حالت پایه و قانون بازگشتی، می توان مجموعه ای از تمام اعداد طبیعی را تولید کرد.
دیگر اشیاء ریاضی تعریف شده بازگشتی عبارتند از فاکتوریل ها ، توابع (مثلاً روابط عود )، مجموعه ها (مثلاً مجموعه سه تایی کانتور )، و فراکتال ها .
تعاریف مختلف بیشتری از بازگشت وجود دارد. طنز بازگشتی را ببینید.
بازگشت فرآیندی است که یک رویه زمانی که یکی از مراحل رویه شامل فراخوانی خود رویه است طی می کند. رویهای که از طریق بازگشت (Recursion) میگذرد، «بازگردانی» است. [3]
برای درک بازگشت، باید تمایز بین یک رویه و اجرای یک رویه را تشخیص داد. یک رویه مجموعه ای از مراحل بر اساس مجموعه ای از قوانین است، در حالی که اجرای یک رویه شامل پیروی از قوانین و انجام مراحل است.
بازگشت به یک ارجاع در مشخصات یک رویه به اجرای یک رویه دیگر مربوط است، اما نه مشابه.
هنگامی که یک رویه به این ترتیب تعریف می شود، این بلافاصله امکان یک حلقه بی پایان را ایجاد می کند. تنها زمانی میتوان از بازگشت به درستی در تعریف استفاده کرد که مرحله مورد نظر در موارد خاصی نادیده گرفته شود تا این رویه کامل شود.
حتی اگر به درستی تعریف شده باشد، انجام یک رویه بازگشتی برای انسان آسان نیست، زیرا مستلزم تمایز رویه جدید از قدیمی و جزئی اجرا شده است. این امر مستلزم برخی مدیریت است که موارد مختلف همزمان روندها تا چه اندازه پیشرفت کرده اند. به همین دلیل، تعاریف بازگشتی در موقعیت های روزمره بسیار نادر است.
زبان شناس نوام چامسکی ، در میان بسیاری دیگر، استدلال کرده است که فقدان کران بالایی در تعداد جملات دستوری در یک زبان، و فقدان کران بالایی در طول جمله دستوری (فراتر از محدودیت های عملی مانند زمان در دسترس برای بیان یک جمله). ) را می توان به عنوان پیامد بازگشت در زبان طبیعی توضیح داد. [4] [5]
این را می توان در قالب یک تعریف بازگشتی از یک مقوله نحوی، مانند یک جمله، درک کرد. یک جمله میتواند ساختاری داشته باشد که در آن چیزی که بعد از فعل میآید، جمله دیگری باشد: دوروتی فکر میکند که جادوگران خطرناک هستند ، که در آن جمله جادوگران خطرناک هستند در بزرگتر اتفاق میافتد. بنابراین یک جمله را می توان به صورت بازگشتی (بسیار تقریباً) به عنوان چیزی با ساختاری که شامل یک عبارت اسمی، یک فعل و در صورت اختیاری جمله دیگری است تعریف کرد. این در واقع فقط یک مورد خاص از تعریف ریاضی بازگشت است.
این روشی برای درک خلاقیت زبان - تعداد نامحدود جملات دستوری - فراهم میکند، زیرا بلافاصله پیشبینی میکند که جملات میتوانند دلخواه باشند: دوروتی فکر میکند که توتو مشکوک است که Tin Man گفته است... . ساختارهای زیادی جدا از جملات وجود دارد که میتوان آنها را به صورت بازگشتی تعریف کرد و بنابراین راههای بسیاری وجود دارد که یک جمله میتواند نمونههایی از یک دسته را در دستههای دیگر جاسازی کند. [6] در طول سالها، زبانها بهطور کلی نشان دادهاند که این نوع تحلیل را پذیرفتهاند.
این ایده عمومی پذیرفته شده که بازگشت یک ویژگی اساسی زبان انسان است، توسط دانیل اورت بر اساس ادعاهایش در مورد زبان پیراها به چالش کشیده شده است . اندرو نوینز، دیوید پستسکی و سیلین رودریگز از جمله بسیاری از کسانی هستند که مخالف این موضوع هستند. [7] در هر صورت می توان استدلال کرد که خود ارجاع ادبی از نظر نوع با بازگشت ریاضی یا منطقی متفاوت است. [8]
بازگشت نه تنها در نحو، بلکه در معناشناسی زبان طبیعی نیز نقش مهمی دارد . به عنوان مثال، کلمه و را می توان به عنوان تابعی تعبیر کرد که می تواند به معانی جمله برای ایجاد جملات جدید و به همین ترتیب برای معانی عبارت اسمی، معانی عبارت فعل و موارد دیگر اعمال شود. همچنین می تواند در مورد افعال ناگذر، افعال متعدی یا افعال متعدی نیز اعمال شود. به منظور ارائه یک دلالت واحد برای آن که به طور مناسب انعطاف پذیر باشد، و معمولاً به گونه ای تعریف می شود که بتواند هر یک از این انواع مختلف معانی را به عنوان استدلال در نظر بگیرد. این را می توان با تعریف آن برای یک حالت ساده که در آن جملات را ترکیب می کند و سپس موارد دیگر را به صورت بازگشتی بر حسب حالت ساده تعریف کرد. [9]
گرامر بازگشتی یک دستور زبان رسمی است که حاوی قوانین تولید بازگشتی است . [10]
در کتابهای علوم کامپیوتر، برنامهنویسی، فلسفه یا ریاضیات، از بازگشت به طنز استفاده میشود، معمولاً با ارائه یک تعریف دایرهای یا ارجاع به خود ، که در آن گام بازگشتی فرضی به حالت پایه نزدیکتر نمیشود، بلکه در عوض منجر به یک پسرفت بینهایت میشود. . برای چنین کتاب هایی غیرعادی نیست که یک مدخل جوک در فرهنگ لغت خود در امتداد خطوط زیر قرار دهند:
یک تغییر در صفحه 269 در فهرست برخی از نسخه های کتاب زبان برنامه نویسی C نوشته برایان کرنیگان و دنیس ریچی یافت می شود . ورودی فهرست به صورت بازگشتی به خود ارجاع می دهد ("بازگشت 86، 139، 141، 182، 202، 269"). نسخه های اولیه این جوک را می توان در Let's Talk Lisp اثر Laurent Siklóssy (منتشر شده توسط Prentice Hall PTR در 1 دسامبر 1975، با تاریخ حق چاپ 1976) و در Software Tools توسط Kernighan و Plauger (منتشر شده توسط Addison-Wesley Professional در تاریخ) یافت. 11 ژانویه 1976). این جوک همچنین در The UNIX Programming Environment توسط Kernighan و Pike ظاهر می شود. در اولین ویرایش زبان برنامه نویسی C ظاهر نشد . این شوخی بخشی از فولکلور برنامه نویسی کاربردی است و پیش از انتشار کتاب های فوق الذکر در جامعه برنامه نویسی عملکردی رایج بود. [12] [13]
شوخی دیگر این است که "برای درک بازگشت، باید بازگشت را درک کنید." [11] در نسخه انگلیسی زبان موتور جستجوی وب گوگل، هنگامی که جستجو برای "recursion" انجام می شود، سایت پیشنهاد می کند "آیا منظور شما: بازگشت است ." [14] یک شکل جایگزین از اندرو پلوتکین به شرح زیر است : "اگر قبلاً می دانید بازگشت چیست، فقط پاسخ را به خاطر بسپارید. در غیر این صورت، فردی را پیدا کنید که از شما نزدیکتر به داگلاس هافستادتر ایستاده است ؛ سپس از او بپرسید که بازگشت چیست؟ است."
مخفف های بازگشتی نمونه های دیگری از طنز بازگشتی هستند. برای مثال PHP مخفف "PHP Hypertext Preprocessor"، WINE مخفف "WINE Is Not an Emulator"، GNU مخفف "GNU's Not Unix" و SPARQL به معنای "پروتکل SPARQL و زبان پرس و جو RDF" است.
مثال متعارف یک مجموعه بازگشتی تعریف شده توسط اعداد طبیعی داده می شود :
در منطق ریاضی، بدیهیات Peano (یا اصول Peano یا بدیهیات Dedekind-Peano)، بدیهیاتی برای اعداد طبیعی هستند که در قرن نوزدهم توسط ریاضیدان آلمانی ریچارد ددکیند و ریاضیدان ایتالیایی جوزپه پیانو ارائه شدند . بدیهیات Peano اعداد طبیعی را با اشاره به یک تابع جانشین بازگشتی و جمع و ضرب به عنوان توابع بازگشتی تعریف می کنند.
مثال جالب دیگر مجموعه ای از تمام گزاره های "قابل اثبات" در یک سیستم بدیهی است که بر اساس روش اثباتی تعریف می شوند که به صورت استقرایی (یا بازگشتی) به صورت زیر تعریف می شود:
قوانین تقسیم محدود شکل هندسی بازگشتی هستند که می توانند برای ایجاد تصاویر فراکتال مانند استفاده شوند. یک قانون تقسیم فرعی با مجموعهای از چند ضلعیها شروع میشود که با تعداد محدودی برچسبها برچسبگذاری شدهاند، و سپس هر چند ضلعی به چند ضلعیهای برچسبدار کوچکتر تقسیم میشود، به نحوی که فقط به برچسبهای چند ضلعی اصلی بستگی دارد. این فرآیند قابل تکرار است. تکنیک استاندارد «ثلثهای میانی» برای ایجاد مجموعه کانتور، یک قانون تقسیم فرعی است، همانطور که تقسیمبندی باریسنتریک است .
یک تابع ممکن است به صورت بازگشتی بر حسب خودش تعریف شود. یک مثال آشنا، دنباله عددی فیبوناچی است : F ( n ) = F ( n -1) + F ( n -2). برای اینکه چنین تعریفی مفید باشد، باید به مقادیر غیر بازگشتی قابل تقلیل باشد: در این مورد F (0) = 0 و F (1) = 1.
استفاده از تکنیک استاندارد اثبات با موارد برای مجموعهها یا توابع تعریفشده بازگشتی، مانند بخشهای قبل، استقرای ساختاری به دست میدهد - یک تعمیم قدرتمند از استقرای ریاضی که به طور گسترده برای استخراج اثباتها در منطق ریاضی و علوم رایانه استفاده میشود.
برنامه نویسی پویا رویکردی برای بهینه سازی است که یک مسئله بهینه سازی چند دوره ای یا چند مرحله ای را به صورت بازگشتی دوباره بیان می کند. نتیجه کلیدی در برنامه نویسی پویا معادله بلمن است که مقدار مسئله بهینه سازی را در زمان قبلی (یا مرحله قبل) بر حسب مقدار آن در زمان بعدی (یا مرحله بعدی) می نویسد.
در تئوری مجموعه ها ، این یک قضیه است که تضمین می کند که توابع تعریف شده بازگشتی وجود دارند. با توجه به یک مجموعه X ، یک عنصر a از X و یک تابع f : X → X ، قضیه بیان می کند که یک تابع منحصر به فرد وجود دارد (که در آن مجموعه اعداد طبیعی شامل صفر را نشان می دهد) به طوری که
برای هر عدد طبیعی n
ددکیند اولین کسی بود که مسئله تعریف منحصر به فرد توابع نظری مجموعه ها را با استفاده از بازگشت مطرح کرد و طرحی از یک استدلال را در مقاله 1888 ارائه کرد "Was sind und was sollen die Zahlen؟" [15]
دو تابع و به این صورت که:
که در آن a عنصری از X است .
می توان با استقراء ریاضی ثابت کرد که F ( n ) = G ( n ) برای همه اعداد طبیعی n :
با القاء، F ( n ) = G ( n ) برای همه .
یک روش رایج ساده سازی، تقسیم یک مسئله به زیرمسائل از همان نوع است. به عنوان یک تکنیک برنامه نویسی کامپیوتری ، به این روش تقسیم و پیروز می گویند و کلید طراحی بسیاری از الگوریتم های مهم است. تفرقه بینداز و حکومت کن به عنوان یک رویکرد از بالا به پایین برای حل مسئله عمل می کند، جایی که مشکلات با حل نمونه های کوچکتر و کوچکتر حل می شوند. یک رویکرد مخالف برنامه نویسی پویا است . این رویکرد به عنوان یک رویکرد از پایین به بالا عمل می کند، که در آن مشکلات با حل نمونه های بزرگتر و بزرگتر تا رسیدن به اندازه مورد نظر حل می شوند.
یک مثال کلاسیک از بازگشت، تعریف تابع فاکتوریل است که در کد پایتون در اینجا آورده شده است:
دف فاکتوریل ( n ): اگر n > 0 : بازگشت n * فاکتوریل ( n - 1 ) دیگری : بازگشت 1
تابع خود را به صورت بازگشتی بر روی یک نسخه کوچکتر از ورودی فراخوانی می کند (n - 1)
و نتیجه فراخوانی بازگشتی را در ضرب می کند n
تا به حالت پایه برسد ، مشابه تعریف ریاضی فاکتوریل.
بازگشت در برنامه نویسی کامپیوتر زمانی مثال زده می شود که یک تابع بر اساس نسخه های ساده تر و اغلب کوچکتر خود تعریف شود. سپس راه حل مسئله با ترکیب راه حل های به دست آمده از نسخه های ساده تر مسئله ابداع می شود. یک مثال از کاربردهای بازگشتی در تجزیه کننده های زبان های برنامه نویسی است. مزیت بزرگ بازگشت این است که مجموعه ای نامتناهی از جملات، طرح ها یا سایر داده های ممکن را می توان توسط یک برنامه کامپیوتری محدود تعریف، تجزیه یا تولید کرد.
روابط بازگشتی معادلاتی هستند که یک یا چند دنباله را به صورت بازگشتی تعریف می کنند. برخی از انواع خاص رابطه عود را می توان برای به دست آوردن یک تعریف غیر بازگشتی (به عنوان مثال، یک عبارت بسته ) "حل" کرد.
استفاده از بازگشت در یک الگوریتم هم مزایا و هم معایبی دارد. مزیت اصلی معمولاً سادگی دستورالعمل ها است. عیب اصلی این است که استفاده از حافظه الگوریتم های بازگشتی ممکن است بسیار سریع رشد کند و آنها را برای نمونه های بزرگتر غیرعملی کند.
اشکالی که به نظر می رسد توسط فرآیندهای بازگشتی ایجاد شده اند، گاهی اوقات در گیاهان و جانوران ظاهر می شوند، مانند ساختارهای انشعاب که در آن یک قسمت بزرگ به دو یا چند قسمت کوچکتر مشابه منشعب می شود. یک نمونه کلم بروکلی Romanesco است . [16]
نویسندگان از مفهوم بازگشتی برای پیشزمینه موقعیتی استفاده میکنند که بهویژه دانشمندان علوم اجتماعی در هنگام تولید دانش درباره جهانی که همیشه بخشی از آن هستند، قرار میگیرند. [17] [18] به گفته آدری آلخاندرو، «به عنوان دانشمندان علوم اجتماعی، بازگشت وضعیت ما با این واقعیت سروکار دارد که ما هم سوژه هستیم (زیرا گفتمانها رسانهای هستند که از طریق آن تجزیه و تحلیل میکنیم) و هم ابژههای گفتمانهای دانشگاهی که تولید میکنیم. از آنجایی که ما کارگزاران اجتماعی متعلق به دنیایی هستیم که تحلیل می کنیم.) [19] بر این اساس، او در بازگشت یک چالش اساسی در تولید دانش رهایی بخش که نیازمند اعمال تلاش های بازتابی است، شناسایی می کند :
ما در گفتمانها و گرایشهایی اجتماعی شدهایم که توسط نظم اجتماعی-سیاسی که قصد داریم آن را به چالش بکشیم، یک نظم اجتماعی-سیاسی که ممکن است به طور ناخودآگاه بازتولید کنیم و در عین حال برعکس آن را انجام دهیم. بازگشتی بودن وضعیت ما به عنوان محقق - و به طور دقیق تر، این واقعیت که ابزارهای ساختاری که ما برای تولید دانش در مورد جهان استفاده می کنیم، خود توسط این جهان تولید می شوند - هم ضرورت حیاتی اجرای بازتاب را در عمل نشان می دهد و هم چالش اصلی را در انجام این کار
- آدری آلخاندرو، الخاندرو (2021)
گاهی اوقات در علم مدیریت از بازگشت به عنوان فرآیند تکرار از طریق سطوح انتزاع در واحدهای تجاری بزرگ یاد می شود . [20] یک مثال رایج، ماهیت بازگشتی سلسله مراتب مدیریت است که از مدیریت خطی تا مدیریت ارشد از طریق مدیریت میانی را شامل می شود . همچنین موضوع بزرگتر ساختار سرمایه در حاکمیت شرکتی را در بر می گیرد . [21]
عروسک ماتریوشکا یک نمونه هنری فیزیکی از مفهوم بازگشتی است. [22]
Recursion از زمان سهگانه استفانسکی جوتو ، ساخته شده در سال 1320، در نقاشیها استفاده شده است. پانل مرکزی آن شامل شکل زانو زده کاردینال استفانسکی است که خود سهگانه را به عنوان یک پیشکش بالا نگه داشته است. [23] [24] این عمل به طور کلی به عنوان اثر Droste شناخته می شود ، نمونه ای از تکنیک Mise en abyme .
MC Escher 's Print Gallery (1956) چاپی است که شهری تحریف شده حاوی گالری را به تصویر میکشد که به صورت بازگشتی حاوی تصویر است، و به همین ترتیب تا بی نهایت . [25]
فیلم Inception الحاق پسوند -ception را به اسم به شوخی نشان می دهد که بازگشت چیزی را نشان می دهد. [26]
نمونههای بیشتر بازگشت: عروسکهای روسی ماتریوشکا. هر عروسک از چوب جامد ساخته شده یا توخالی است و یک عروسک ماتریوشکای دیگر در داخل آن قرار دارد.