बोगोसोर्ट: Difference between revisions
(Created page with "{{Short description|Sorting algorithm}} {{Use dmy dates|date=December 2021}} {{Infobox Algorithm |image = |class=Sorting |data=Array |time=Unbound...") |
|||
(11 intermediate revisions by 4 users not shown) | |||
Line 11: | Line 11: | ||
}} | }} | ||
[[कंप्यूटर विज्ञान]] में, बोगोसॉर्ट<ref name="Fun07"/><ref name="KSFS">{{citation | [[कंप्यूटर विज्ञान]] में, '''बोगोसॉर्ट'''<ref name="Fun07"/><ref name="KSFS">{{citation | ||
| last1 = Kiselyov | | last1 = Kiselyov | ||
| first1 = Oleg | | first1 = Oleg | ||
Line 32: | Line 32: | ||
| archive-date = 26 March 2012 | | archive-date = 26 March 2012 | ||
| url-status = dead | | url-status = dead | ||
}}</ref> (क्रमपरिवर्तन सॉर्ट, | }}</ref> (क्रमपरिवर्तन सॉर्ट, मंद सॉर्ट<ref>E. S. Raymond. "bogo-sort". ''The New Hacker’s Dictionary''. MIT Press, 1996.</ref>, स्लोसॉर्ट या बोज़ोसॉर्ट के रूप में भी जाना जाता है) [[उत्पन्न करें और परीक्षण करें|उत्पन्न और परीक्षण]] प्रतिमान पर आधारित एक [[छँटाई एल्गोरिथ्म|श्रेणीकरण कलन विधि]] है। फलन क्रमिक रूप से अपने निविष्ट के क्रम परिवर्तन उत्पन्न करता है जब तक कि उसे कोई क्रमपरिवर्तन जो क्रमबद्ध हो नहीं मिल जाता है। इसे श्रेणीकरण के लिए उपयोगी नहीं माना जाता है, लेकिन इसे अधिक कुशल कलन विधि के साथ तुलना करने, शैक्षिक उद्देश्यों के लिए उपयोग किया जा सकता है। | ||
इस | इस कलन विधि के दो संस्करण उपस्थित हैं जिसमे एक नियतात्मक संस्करण जो सभी क्रमपरिवर्तनों की गणना करता है जब तक कि यह एक क्रमबद्ध क्रम में न आ जाए,<ref name="KSFS"/><ref name="Naish86">{{citation |last=Naish |first=Lee |title=Proceedings of the Third International Conference on Logic Programming |volume=225 |pages=624–634 |year=1986 |series=[[Lecture Notes in Computer Science]] |contribution=Negation and quantifiers in NU-Prolog |publisher=Springer-Verlag |doi=10.1007/3-540-16492-8_111}}.</ref> और एक [[यादृच्छिक एल्गोरिदम|यादृच्छिक कलन विधि]] संस्करण जो यादृच्छिक रूप से अपने निविष्ट को क्रमपरिवर्तित करता है। बाद वाले संस्करण के व्यवसाय के लिए एक सादृश्य यह है कि डेक को हवा में फेंककर, यादृच्छिक रूप से पत्तों को उठाकर, और डेक के छंटने तक प्रक्रिया को पुनरावृत्ति हुए ताश के पत्तों को क्रमबद्ध किया जाए। इसका नाम बोगस और सॉर्ट शब्दों से मिलकर बना है।<ref>{{Cite web|title=बोगोसॉर्ट|url=https://xlinux.nist.gov/dads/HTML/बोगोसॉर्ट.html|access-date=2020-11-11|website=xlinux.nist.gov}}</ref> | ||
==कलन विधि का विवरण== | |||
छद्मकोड में यादृच्छिक कलन विधि का विवरण निम्नलिखित है: | |||
'''while not''' sorted(deck): | |||
shuffle(deck) | |||
यहां उपरोक्त [[छद्मकोड]] को [[पायथन (प्रोग्रामिंग भाषा)|पायथन 3]] में पुनः लिखा गया है: | |||
from random import shuffle | |||
def is_sorted(data) -> bool: | |||
"""Determine whether the data is sorted.""" | |||
return all(a <= b for a, b in zip(data, data[1:])) | |||
def bogosort(data) -> list: | |||
"""Shuffle data until sorted.""" | |||
while not is_sorted(data): | |||
shuffle(data) | |||
return data | |||
यह कोड मानता है {{code|डेटा}} एक सरल, परिवर्तनशील, सरणी-जैसी डेटा संरचना है - जैसे कि पायथन में अंतर्निहित {{code|सूची}}—जिनके तत्वों की तुलना बिना किसी समस्या के की जा सकती है। | |||
==कार्यकारी समय और समाप्ति== | |||
[[File:ExperimentalBogosort.png|thumb|बोगोसॉर्ट का प्रायोगिक रनटाइम]]यदि क्रमबद्ध किए जाने वाले सभी तत्व अलग-अलग हैं, तो यादृच्छिक बोगोसॉर्ट द्वारा औसत सन्दर्भ में की गई तुलनाओं की अपेक्षित संख्या स्पर्शोन्मुख रूप से {{math|(''e'' − 1)''n''!}}, के बराबर है और औसत सन्दर्भ में विनिमय की अपेक्षित संख्या {{math|(''n'' − 1)''n''!}} के बराबर होती है .<ref name="Fun07">{{citation | |||
= | |||
[[File:ExperimentalBogosort.png|thumb|बोगोसॉर्ट का प्रायोगिक रनटाइम]]यदि क्रमबद्ध किए जाने वाले सभी तत्व अलग-अलग हैं, तो यादृच्छिक बोगोसॉर्ट द्वारा औसत | |||
| last1 = Gruber | first1 = H. | | last1 = Gruber | first1 = H. | ||
| last2 = Holzer | first2 = M. | | last2 = Holzer | first2 = M. | ||
Line 73: | Line 69: | ||
| title = 4th International Conference on Fun with Algorithms, Castiglioncello, Italy, 2007 | | title = 4th International Conference on Fun with Algorithms, Castiglioncello, Italy, 2007 | ||
| url = http://www.hermann-gruber.com/pdf/fun07-final.pdf | | url = http://www.hermann-gruber.com/pdf/fun07-final.pdf | ||
| volume = 4475}}.</ref> | | volume = 4475}}.</ref> विनिमय की अपेक्षित संख्या तुलनाओं की अपेक्षित संख्या की तुलना में शीघ्रता से बढ़ती है, क्योंकि यदि तत्व क्रम में नहीं हैं, तो यह सामान्यतः केवल कुछ तुलनाओं के बाद ही अन्वेषण किया जाएगा, चाहे कितने भी तत्व हों लेकिन संग्रह में परिवर्तन का कार्य उसके आकार के समानुपाती होता है। सबसे निकृष्ट स्थिति में, तुलना और विनिमय दोनों की संख्या असीमित है, इसी कारण से कि एक उछाला गया सिक्का लगातार कितनी भी बार चित आ सकता है। | ||
सबसे अच्छी स्थिति तब होती है जब दी गई सूची पहले से ही क्रमबद्ध हो | सबसे अच्छी स्थिति तब होती है जब दी गई सूची पहले से ही क्रमबद्ध हो जिससे की इस सन्दर्भ में तुलनाओं की अपेक्षित संख्या है {{math|''n'' − 1}} है, और कोई भी विनिमय नहीं किया जाता है।<ref name="Fun07"/> | ||
निश्चित आकार के किसी भी संग्रह के लिए, | निश्चित आकार के किसी भी संग्रह के लिए, कलन विधि का अपेक्षित कार्यकारी समय उसी कारण से सीमित है जो [[अनंत बंदर प्रमेय|अनंत मंकी प्रमेय]] रखता है, सही क्रमपरिवर्तन प्राप्त करने की कुछ संभावना है, इसलिए असीमित संख्या में प्रयासों को देखते हुए यह [[लगभग निश्चित रूप से]] अंततः होगा चुना जाए। | ||
==संबंधित | ==संबंधित कलन विधि== | ||
;{{visible anchor| | ;{{visible anchor|गोरोसोर्ट}}: गूगल कोड जैम 2011 में एक श्रेणीकरण कलन विधि प्रस्तुत किया गया।<ref>[https://code.google.com/codejam/contest/dashboard?c=975485#s=p3 Google Code Jam 2011, Qualification Rounds, Problem D]</ref> जब तक सूची क्रम में नहीं होती, सभी तत्वों का एक उपसमूह यादृच्छिक रूप से क्रमबद्ध होता है। यदि इस उपसमुच्चय को प्रत्येक बार निष्पादित करते समय इष्टतम रूप से चुना जाता है, तो इस संचालन को करने की कुल संख्या का [[अपेक्षित मूल्य]] गलत रखे गए तत्वों की संख्या के बराबर है। | ||
;{{visible anchor| | ;{{visible anchor|बोजोबोगोसॉर्ट}}: एक कलन विधि जो सूची की प्रारम्भ की छोटी और छोटी प्रतियों के साथ पुनरावर्ती रूप से निमंत्रण करता है यह देखने के लिए कि क्या वे क्रमबद्ध हैं। आधारभूत स्थिति एक एकल तत्व है, जिसे प्रायः क्रमबद्ध किया जाता है। अन्य स्थितिके लिए, यह सूची में पिछले तत्वों के अंतिम तत्व की तुलना अधिकतम तत्व से करता है। यदि अंतिम तत्व बड़ा या बराबर है, तो यह जांचता है कि प्रतिलिपि का क्रम पिछले संस्करण से मेल खाता है या नहीं, और यदि हां तो वापस आ जाता है। अन्यथा, यह सूची की वर्तमान प्रतिलिपि में परिवर्तन करता है और इसकी पुनरावर्ती जांच को पुनरारंभ करता है।<ref>[http://www.dangermouse.net/esoteric/bogobogosort.html Bogobogosort]</ref> | ||
<!-- Bogobogosort needs to be implemented recursively, as in the iterative version it is too easy to optimize out the second bogo. --> | <!-- Bogobogosort needs to be implemented recursively, as in the iterative version it is too easy to optimize out the second bogo. --> | ||
;{{visible anchor| | ;{{visible anchor|बोगोसोर्ट}}: यादृच्छिक संख्याओं पर आधारित एक और श्रेणीकरण कलन विधि है। यदि सूची क्रम में नहीं है, तो यह यादृच्छिक रूप से दो वस्तु चुनता है और उन्हें विनिमय करता है, फिर यह देखने के लिए जांच करता है कि सूची क्रमबद्ध है या नहीं है। बोज़ोसॉर्ट का कार्यकारी समय विश्लेषण अधिक कठिन है, लेकिन कुछ अनुमान एच. ग्रुबर के "विकृत रूप से भयानक" यादृच्छिक श्रेणीकरण कलन विधि के विश्लेषण में पाए जाते हैं।<ref name="Fun07"/> {{math|''O''(''n''!)}}अपेक्षित औसत मामला पाया गया है। | ||
<!--It also faces the same pseudo-random problems as bogosort—it may never terminate in a real-world implementation.--> | <!--It also faces the same pseudo-random problems as bogosort—it may never terminate in a real-world implementation.--> | ||
;{{visible anchor| | ;{{visible anchor|वर्स्टसोर्ट}}: एक निराशाजनक{{efn|name=pessimal|The opposite of "optimal"}} श्रेणीकरण कलन विधि जिसे सीमित समय में पूरा करने की आश्वासन दी जाती है; यद्यपि, इसकी विन्यास के आधार पर इसकी दक्षता मनमाने ढंग से खराब हो सकती है। {{math|वर्स्टसोर्ट}} कलन विधि वर्स्टसोर्ट श्रेणीकरण कलन विधि '''बैडसॉर्ट''' परआधारित है। बैडसॉर्ट कलन विधि दो मापदंडों को स्वीकार करता है: {{mvar|L}}, जो क्रमबद्ध की जाने वाली सूची है, और {{mvar|k}}, जो एक प्रत्यावर्तन गहराई है। प्रत्यावर्तन स्तर {{math|1=''k'' = 0}} पर {{math|बैडसॉर्ट}} अपने निविष्ट को सॉर्ट करने और सॉर्ट की गई सूची को वापस करने के लिए केवल बबलसॉर्ट जैसे सामान्य श्रेणीकरण कलन विधि का उपयोग करता है। कहने का तात्पर्य यह है कि, {{math|1=badsort(''L'', 0) = bubblesort(''L'')}}. इसलिए, यदि k = 0 है तो बैडसॉर्ट की समय जटिलता O(n2) है। यद्यपि, किसी भी k > 0 के लिए, बैडसॉर्ट(L, k) पहले P उत्पन्न करता है, जो L के सभी क्रमपरिवर्तनों की सूची है।फिर, बैडसॉर्ट {{math|badsort(''P'', ''k'' − 1)}}, की गणना करता है, और क्रमबद्ध किए गए {{mvar|P}} का पहला तत्व लौटाता है। वर्स्टसॉर्ट को वास्तव में निराशाजनक बनाने के लिए, {{mvar|k}} को एक गणना योग्य बढ़ते फ़ंक्शन के मान को सौंपा जा सकता है जैसे कि <math>f\colon\N \to \N</math> (उदा {{math|1=''f''(''n'') = ''A''(''n'', ''n'')}},जहां {{mvar|A}} एकरमैन का कार्य है)। इसलिए, किसी सूची को मनमाने ढंग से बुरी तरह क्रमबद्ध करने के लिए, कोई निष्पादित करेगा {{math|1=worstsort(''L'', ''f'') = badsort(''L'', ''f''(length(''L'')))}}, जहां {{mvar|L}} {{math|लंबाई(''L'')}} में तत्वों की संख्या है। परिणामी कलन विधि में जटिलता है <math display="inline">\Omega\left(\left(n!^{(f(n))}\right)^2\right)</math>, कहाँ <math>n!^{(m)} = (\dotso((n!)!)!\dotso)!</math> = का भाज्य {{mvar|n}} पुनरावृत्त {{mvar|m}} बार. पर्याप्त तेजी से बढ़ने वाले कार्य {{mvar|f}} को चुनकर इस कलन विधि को जितना चाहें उतना अक्षम बनाया जा सकता है।<ref>{{Cite arXiv |eprint = 1406.1077|last1 = Lerma|first1 = Miguel A.|title = How inefficient can a sort algorithm be?|class = cs.DS|year = 2014}}</ref> | ||
;[[स्लोसॉर्ट]]: एक अलग विनोदी | ;[[स्लोसॉर्ट]]: एक अलग विनोदी श्रेणीकरण कलन विधि जो बड़े स्तर पर जटिलता प्राप्त करने के लिए एक पथभ्रष्ट विभाजन और जीत रणनीति को नियोजित करता है। | ||
;{{visible anchor| | ;{{visible anchor|परिमाण बोगोसॉर्ट}}: बोगोसॉर्ट पर आधारित एक काल्पनिक श्रेणीकरण कलन विधि, कंप्यूटर वैज्ञानिकों के बीच परिहास के रूप में बनाया गया। कलन विधि एन्ट्रापी के परिमाण स्रोत का उपयोग करके अपने निविष्ट का एक यादृच्छिक क्रमपरिवर्तन उत्पन्न करता है, जाँच करता है कि क्या सूची क्रमबद्ध है, और, यदि यह नहीं है, तो ब्रह्मांड को नष्ट कर देता है। यह मानते हुए कि कई-जगत की व्याख्या मान्य है, इस कलन विधि के उपयोग के परिणामस्वरूप कम से कम एक जीवित ब्रह्मांड होगा जहां निविष्ट को {{math|''O''(''n'')}} समय सफलतापूर्वक क्रमबद्ध किया गया था।<ref>{{cite journal |author=The Other Tree |date=23 October 2009 |title=क्वांटम बोगोसॉर्ट|url=https://mathnews.uwaterloo.ca/wp-content/uploads/2014/08/v111i3-compressed.pdf#page=13 |journal=mathNEWS |volume=111 |issue=3 |page=13 |access-date=20 March 2022}}</ref> | ||
;{{visible anchor| | ;{{visible anchor|कौतुक सॉर्ट}}: एक श्रेणीकरण कलन विधि जो जांच करता है कि कोई [[चमत्कार|कौतुक]] होने तक सरणी क्रमबद्ध की गई है या नहीं की गई है । यह क्रमबद्ध होने तक सरणी की लगातार जाँच करता रहता है, सरणी का क्रम कभी नहीं बदलता है।<ref>{{Cite web |title=मिरेकल सॉर्ट - द कंप्यूटर साइंस हैंडबुक|url=https://www.thecshandbook.com/Miracle_Sort |access-date=2022-09-09 |website=www.thecshandbook.com}}</ref> क्योंकि क्रम कभी नहीं बदला जाता है, कलन विधि में {{math|''O''(''∞'')}} एक काल्पनिक समय जटिलता होती है , लेकिन यह अभी भी चमत्कार या एकल-घटना उथल-पुथल जैसी घटनाओं को सुलझा सकता है। इस कलन विधि के कार्यान्वयन में विशेष सावधानी रखनी चाहिए क्योंकि अनुकूलन करने वाले संकलक इसे थोड़ी देर (सही) पाश में बदल सकते हैं। यद्यपि, सबसे अच्छी स्थिति {{math|''O''(''n'')}} है, जो क्रमबद्ध सूची पर होता है। | ||
==यह भी देखें== | ==यह भी देखें== | ||
* [[लास वेगास एल्गोरिथ्म]] | * [[लास वेगास एल्गोरिथ्म|लास वेगास कलन विधि]] | ||
* कठपुतली प्रकार | * कठपुतली प्रकार | ||
==टिप्पणियाँ== | ==टिप्पणियाँ== | ||
{{notelist}} | {{notelist}} | ||
==संदर्भ== | ==संदर्भ== | ||
Line 110: | Line 105: | ||
* [https://github.com/spugachev/random-sort Bogosort NPM package]: bogosort implementation for Node.js ecosystem. | * [https://github.com/spugachev/random-sort Bogosort NPM package]: bogosort implementation for Node.js ecosystem. | ||
* Max Sherman [https://sites.math.washington.edu/~morrow/336_13/papers/max.pdf Bogo-sort is Sort of Slow], June 2013 | * Max Sherman [https://sites.math.washington.edu/~morrow/336_13/papers/max.pdf Bogo-sort is Sort of Slow], June 2013 | ||
[[Category: | [[Category:All articles with dead external links]] | ||
[[Category:Articles with dead external links from July 2020]] | |||
[[Category:Articles with permanently dead external links]] | |||
[[Category:Collapse templates]] | |||
[[Category:Created On 27/06/2023]] | [[Category:Created On 27/06/2023]] | ||
[[Category:Lua-based templates]] | |||
[[Category:Machine Translated Page]] | |||
[[Category:Navigational boxes| ]] | |||
[[Category:Navigational boxes without horizontal lists]] | |||
[[Category:Pages with script errors]] | |||
[[Category:Short description with empty Wikidata description]] | |||
[[Category:Sidebars with styles needing conversion]] | |||
[[Category:Template documentation pages|Documentation/doc]] | |||
[[Category:Templates Vigyan Ready]] | |||
[[Category:Templates generating microformats]] | |||
[[Category:Templates that add a tracking category]] | |||
[[Category:Templates that are not mobile friendly]] | |||
[[Category:Templates that generate short descriptions]] | |||
[[Category:Templates using TemplateData]] | |||
[[Category:Use dmy dates from December 2021]] | |||
[[Category:Wikipedia metatemplates]] | |||
[[Category:उदाहरण के लिए पायथन (प्रोग्रामिंग भाषा) कोड वाले लेख]] | |||
[[Category:कंप्यूटर हास्य]] | |||
[[Category:छँटाई एल्गोरिदम]] | |||
[[Category:तुलना प्रकार]] |
Latest revision as of 12:58, 12 September 2023
Class | Sorting |
---|---|
Data structure | Array |
Worst-case performance | Unbounded (randomized version), (deterministic version) |
Best-case performance | [1] |
Average performance | [1] |
Worst-case space complexity |
कंप्यूटर विज्ञान में, बोगोसॉर्ट[1][2] (क्रमपरिवर्तन सॉर्ट, मंद सॉर्ट[3], स्लोसॉर्ट या बोज़ोसॉर्ट के रूप में भी जाना जाता है) उत्पन्न और परीक्षण प्रतिमान पर आधारित एक श्रेणीकरण कलन विधि है। फलन क्रमिक रूप से अपने निविष्ट के क्रम परिवर्तन उत्पन्न करता है जब तक कि उसे कोई क्रमपरिवर्तन जो क्रमबद्ध हो नहीं मिल जाता है। इसे श्रेणीकरण के लिए उपयोगी नहीं माना जाता है, लेकिन इसे अधिक कुशल कलन विधि के साथ तुलना करने, शैक्षिक उद्देश्यों के लिए उपयोग किया जा सकता है।
इस कलन विधि के दो संस्करण उपस्थित हैं जिसमे एक नियतात्मक संस्करण जो सभी क्रमपरिवर्तनों की गणना करता है जब तक कि यह एक क्रमबद्ध क्रम में न आ जाए,[2][4] और एक यादृच्छिक कलन विधि संस्करण जो यादृच्छिक रूप से अपने निविष्ट को क्रमपरिवर्तित करता है। बाद वाले संस्करण के व्यवसाय के लिए एक सादृश्य यह है कि डेक को हवा में फेंककर, यादृच्छिक रूप से पत्तों को उठाकर, और डेक के छंटने तक प्रक्रिया को पुनरावृत्ति हुए ताश के पत्तों को क्रमबद्ध किया जाए। इसका नाम बोगस और सॉर्ट शब्दों से मिलकर बना है।[5]
कलन विधि का विवरण
छद्मकोड में यादृच्छिक कलन विधि का विवरण निम्नलिखित है:
while not sorted(deck):
shuffle(deck)
यहां उपरोक्त छद्मकोड को पायथन 3 में पुनः लिखा गया है:
from random import shuffle def is_sorted(data) -> bool: """Determine whether the data is sorted.""" return all(a <= b for a, b in zip(data, data[1:])) def bogosort(data) -> list: """Shuffle data until sorted.""" while not is_sorted(data): shuffle(data)
return data
यह कोड मानता है डेटा
एक सरल, परिवर्तनशील, सरणी-जैसी डेटा संरचना है - जैसे कि पायथन में अंतर्निहित सूची
—जिनके तत्वों की तुलना बिना किसी समस्या के की जा सकती है।
कार्यकारी समय और समाप्ति
यदि क्रमबद्ध किए जाने वाले सभी तत्व अलग-अलग हैं, तो यादृच्छिक बोगोसॉर्ट द्वारा औसत सन्दर्भ में की गई तुलनाओं की अपेक्षित संख्या स्पर्शोन्मुख रूप से (e − 1)n!, के बराबर है और औसत सन्दर्भ में विनिमय की अपेक्षित संख्या (n − 1)n! के बराबर होती है .[1] विनिमय की अपेक्षित संख्या तुलनाओं की अपेक्षित संख्या की तुलना में शीघ्रता से बढ़ती है, क्योंकि यदि तत्व क्रम में नहीं हैं, तो यह सामान्यतः केवल कुछ तुलनाओं के बाद ही अन्वेषण किया जाएगा, चाहे कितने भी तत्व हों लेकिन संग्रह में परिवर्तन का कार्य उसके आकार के समानुपाती होता है। सबसे निकृष्ट स्थिति में, तुलना और विनिमय दोनों की संख्या असीमित है, इसी कारण से कि एक उछाला गया सिक्का लगातार कितनी भी बार चित आ सकता है।
सबसे अच्छी स्थिति तब होती है जब दी गई सूची पहले से ही क्रमबद्ध हो जिससे की इस सन्दर्भ में तुलनाओं की अपेक्षित संख्या है n − 1 है, और कोई भी विनिमय नहीं किया जाता है।[1]
निश्चित आकार के किसी भी संग्रह के लिए, कलन विधि का अपेक्षित कार्यकारी समय उसी कारण से सीमित है जो अनंत मंकी प्रमेय रखता है, सही क्रमपरिवर्तन प्राप्त करने की कुछ संभावना है, इसलिए असीमित संख्या में प्रयासों को देखते हुए यह लगभग निश्चित रूप से अंततः होगा चुना जाए।
संबंधित कलन विधि
- गोरोसोर्ट
- गूगल कोड जैम 2011 में एक श्रेणीकरण कलन विधि प्रस्तुत किया गया।[6] जब तक सूची क्रम में नहीं होती, सभी तत्वों का एक उपसमूह यादृच्छिक रूप से क्रमबद्ध होता है। यदि इस उपसमुच्चय को प्रत्येक बार निष्पादित करते समय इष्टतम रूप से चुना जाता है, तो इस संचालन को करने की कुल संख्या का अपेक्षित मूल्य गलत रखे गए तत्वों की संख्या के बराबर है।
- बोजोबोगोसॉर्ट
- एक कलन विधि जो सूची की प्रारम्भ की छोटी और छोटी प्रतियों के साथ पुनरावर्ती रूप से निमंत्रण करता है यह देखने के लिए कि क्या वे क्रमबद्ध हैं। आधारभूत स्थिति एक एकल तत्व है, जिसे प्रायः क्रमबद्ध किया जाता है। अन्य स्थितिके लिए, यह सूची में पिछले तत्वों के अंतिम तत्व की तुलना अधिकतम तत्व से करता है। यदि अंतिम तत्व बड़ा या बराबर है, तो यह जांचता है कि प्रतिलिपि का क्रम पिछले संस्करण से मेल खाता है या नहीं, और यदि हां तो वापस आ जाता है। अन्यथा, यह सूची की वर्तमान प्रतिलिपि में परिवर्तन करता है और इसकी पुनरावर्ती जांच को पुनरारंभ करता है।[7]
- बोगोसोर्ट
- यादृच्छिक संख्याओं पर आधारित एक और श्रेणीकरण कलन विधि है। यदि सूची क्रम में नहीं है, तो यह यादृच्छिक रूप से दो वस्तु चुनता है और उन्हें विनिमय करता है, फिर यह देखने के लिए जांच करता है कि सूची क्रमबद्ध है या नहीं है। बोज़ोसॉर्ट का कार्यकारी समय विश्लेषण अधिक कठिन है, लेकिन कुछ अनुमान एच. ग्रुबर के "विकृत रूप से भयानक" यादृच्छिक श्रेणीकरण कलन विधि के विश्लेषण में पाए जाते हैं।[1] O(n!)अपेक्षित औसत मामला पाया गया है।
- वर्स्टसोर्ट
- एक निराशाजनक[lower-alpha 1] श्रेणीकरण कलन विधि जिसे सीमित समय में पूरा करने की आश्वासन दी जाती है; यद्यपि, इसकी विन्यास के आधार पर इसकी दक्षता मनमाने ढंग से खराब हो सकती है। वर्स्टसोर्ट कलन विधि वर्स्टसोर्ट श्रेणीकरण कलन विधि बैडसॉर्ट परआधारित है। बैडसॉर्ट कलन विधि दो मापदंडों को स्वीकार करता है: L, जो क्रमबद्ध की जाने वाली सूची है, और k, जो एक प्रत्यावर्तन गहराई है। प्रत्यावर्तन स्तर k = 0 पर बैडसॉर्ट अपने निविष्ट को सॉर्ट करने और सॉर्ट की गई सूची को वापस करने के लिए केवल बबलसॉर्ट जैसे सामान्य श्रेणीकरण कलन विधि का उपयोग करता है। कहने का तात्पर्य यह है कि, badsort(L, 0) = bubblesort(L). इसलिए, यदि k = 0 है तो बैडसॉर्ट की समय जटिलता O(n2) है। यद्यपि, किसी भी k > 0 के लिए, बैडसॉर्ट(L, k) पहले P उत्पन्न करता है, जो L के सभी क्रमपरिवर्तनों की सूची है।फिर, बैडसॉर्ट badsort(P, k − 1), की गणना करता है, और क्रमबद्ध किए गए P का पहला तत्व लौटाता है। वर्स्टसॉर्ट को वास्तव में निराशाजनक बनाने के लिए, k को एक गणना योग्य बढ़ते फ़ंक्शन के मान को सौंपा जा सकता है जैसे कि (उदा f(n) = A(n, n),जहां A एकरमैन का कार्य है)। इसलिए, किसी सूची को मनमाने ढंग से बुरी तरह क्रमबद्ध करने के लिए, कोई निष्पादित करेगा worstsort(L, f) = badsort(L, f(length(L))), जहां L लंबाई(L) में तत्वों की संख्या है। परिणामी कलन विधि में जटिलता है , कहाँ = का भाज्य n पुनरावृत्त m बार. पर्याप्त तेजी से बढ़ने वाले कार्य f को चुनकर इस कलन विधि को जितना चाहें उतना अक्षम बनाया जा सकता है।[8]
- स्लोसॉर्ट
- एक अलग विनोदी श्रेणीकरण कलन विधि जो बड़े स्तर पर जटिलता प्राप्त करने के लिए एक पथभ्रष्ट विभाजन और जीत रणनीति को नियोजित करता है।
- परिमाण बोगोसॉर्ट
- बोगोसॉर्ट पर आधारित एक काल्पनिक श्रेणीकरण कलन विधि, कंप्यूटर वैज्ञानिकों के बीच परिहास के रूप में बनाया गया। कलन विधि एन्ट्रापी के परिमाण स्रोत का उपयोग करके अपने निविष्ट का एक यादृच्छिक क्रमपरिवर्तन उत्पन्न करता है, जाँच करता है कि क्या सूची क्रमबद्ध है, और, यदि यह नहीं है, तो ब्रह्मांड को नष्ट कर देता है। यह मानते हुए कि कई-जगत की व्याख्या मान्य है, इस कलन विधि के उपयोग के परिणामस्वरूप कम से कम एक जीवित ब्रह्मांड होगा जहां निविष्ट को O(n) समय सफलतापूर्वक क्रमबद्ध किया गया था।[9]
- कौतुक सॉर्ट
- एक श्रेणीकरण कलन विधि जो जांच करता है कि कोई कौतुक होने तक सरणी क्रमबद्ध की गई है या नहीं की गई है । यह क्रमबद्ध होने तक सरणी की लगातार जाँच करता रहता है, सरणी का क्रम कभी नहीं बदलता है।[10] क्योंकि क्रम कभी नहीं बदला जाता है, कलन विधि में O(∞) एक काल्पनिक समय जटिलता होती है , लेकिन यह अभी भी चमत्कार या एकल-घटना उथल-पुथल जैसी घटनाओं को सुलझा सकता है। इस कलन विधि के कार्यान्वयन में विशेष सावधानी रखनी चाहिए क्योंकि अनुकूलन करने वाले संकलक इसे थोड़ी देर (सही) पाश में बदल सकते हैं। यद्यपि, सबसे अच्छी स्थिति O(n) है, जो क्रमबद्ध सूची पर होता है।
यह भी देखें
- लास वेगास कलन विधि
- कठपुतली प्रकार
टिप्पणियाँ
- ↑ The opposite of "optimal"
संदर्भ
- ↑ 1.0 1.1 1.2 1.3 1.4 1.5 Gruber, H.; Holzer, M.; Ruepp, O., "Sorting the slow way: an analysis of perversely awful randomized sorting algorithms", 4th International Conference on Fun with Algorithms, Castiglioncello, Italy, 2007 (PDF), Lecture Notes in Computer Science, vol. 4475, Springer-Verlag, pp. 183–197, doi:10.1007/978-3-540-72914-3_17.
- ↑ 2.0 2.1 Kiselyov, Oleg; Shan, Chung-chieh; Friedman, Daniel P.; Sabry, Amr (2005), "Backtracking, interleaving, and terminating monad transformers: (functional pearl)", Proceedings of the Tenth ACM SIGPLAN International Conference on Functional Programming (ICFP '05) (PDF), SIGPLAN Notices, pp. 192–203, doi:10.1145/1086365.1086390, S2CID 1435535, archived from the original (PDF) on 26 March 2012, retrieved 22 June 2011
- ↑ E. S. Raymond. "bogo-sort". The New Hacker’s Dictionary. MIT Press, 1996.
- ↑ Naish, Lee (1986), "Negation and quantifiers in NU-Prolog", Proceedings of the Third International Conference on Logic Programming, Lecture Notes in Computer Science, vol. 225, Springer-Verlag, pp. 624–634, doi:10.1007/3-540-16492-8_111.
- ↑ "बोगोसॉर्ट". xlinux.nist.gov. Retrieved 11 November 2020.
- ↑ Google Code Jam 2011, Qualification Rounds, Problem D
- ↑ Bogobogosort
- ↑ Lerma, Miguel A. (2014). "How inefficient can a sort algorithm be?". arXiv:1406.1077 [cs.DS].
- ↑ The Other Tree (23 October 2009). "क्वांटम बोगोसॉर्ट" (PDF). mathNEWS. 111 (3): 13. Retrieved 20 March 2022.
- ↑ "मिरेकल सॉर्ट - द कंप्यूटर साइंस हैंडबुक". www.thecshandbook.com. Retrieved 9 September 2022.
बाहरी संबंध
- BogoSort on WikiWikiWeb
- Inefficient sort algorithms
- Bogosort: an implementation that runs on Unix-like systems, similar to the standard sort program.
- Bogosort and jmmcg::bogosort[permanent dead link]: Simple, yet perverse, C++ implementations of the bogosort algorithm.
- Bogosort NPM package: bogosort implementation for Node.js ecosystem.
- Max Sherman Bogo-sort is Sort of Slow, June 2013