Lexicographically minimal string rotation
கணினி அறிவியலில், அகரவரிசையில் குறைந்தபட்ச சரம் சுழற்சி அல்லது அகரவரிசையில் குறைந்தபட்ச வட்ட அடி மூலக்கூறு என்பது அத்தகைய சுழற்சிகளில் மிகக் குறைந்த அகரவரிசை வரிசையைக் கொண்ட ஒரு சரத்தின் சுழற்சியைக் கண்டுபிடிப்பதில் உள்ள சிக்கலாகும். எடுத்துக்காட்டாக, அகராதியியல் ரீதியாக "bbaaccaad" இன் குறைந்தபட்ச சுழற்சி "aaccaaddbb" ஆக இருக்கும். ஒரு சரம் பல அகராதியியல் ரீதியாக குறைந்தபட்ச சுழற்சிகளைக் கொண்டிருக்க முடியும், ஆனால் சுழற்சிகள் சமமாக இருக்க வேண்டும் என்பதால் பெரும்பாலான பயன்பாடுகளுக்கு இது ஒரு பொருட்டல்ல. அகராதியியல் ரீதியாக குறைந்தபட்ச சுழற்சியைக் கண்டறிவது சரங்களை இயல்பாக்குவதற்கான ஒரு வழியாக பயனுள்ளதாக இருக்கும். சரங்கள் வரைபடங்கள் போன்ற ஐசோமார்பிக் கட்டமைப்புகளைக் குறிக்கின்றன என்றால், இந்த வழியில் இயல்பாக்குவது எளிய சமத்துவச் சரிபார்ப்பை அனுமதிக்கிறது. வட்ட சரங்களைக் கையாளும் போது ஒரு பொதுவான செயல்படுத்தும் தந்திரம் சரம் குறியீடுகளில் மட்டு எண்கணிதத்தைச் செய்வதற்குப் பதிலாக சரத்தை அதனுடன் இணைப்பதாகும். வழிமுறைகள் நைவ் அல்காரிதம் ஒரு சரத்தின் அகரவரிசை ரீதியாக குறைந்தபட்ச சுழற்சியைக் கண்டுபிடிப்பதற்கான அப்பாவித்தனமான வழிமுறை, அகரவரிசை ரீதியாக மிகக் குறைந்த சுழற்சியைக் கண்காணிக்கும் அதே வேளையில் தொடர்ச்சியான சுழற்சிகள் மூலம் மீண்டும் மீண்டும் செய்வதாகும். சரம் நீளமாக இருந்தால், இந்த வழிமுறை மோசமான நிலையில் சரியான நேரத்தில் இயங்குகிறது. பூத்தின் வழிமுறை ஒரு திறமையான வழிமுறை பூத் (1980) என்பவரால் முன்மொழியப்பட்டது. இந்த வழிமுறை க்னுத்-மோரிஸ்-பிராட் சரம் தேடல் வழிமுறையிலிருந்து மாற்றியமைக்கப்பட்ட முன் செயலாக்க செயல்பாட்டைப் பயன்படுத்துகிறது. சரத்திற்கான தோல்வி செயல்பாடு இயல்பானதாக கணக்கிடப்படுகிறது, ஆனால் சரம் கணக்கீட்டின் போது சுழற்றப்படுகிறது, எனவே சில குறியீடுகள் அவை மூடும்போது ஒன்றுக்கு மேற்பட்ட முறை கணக்கிடப்பட வேண்டும். செயலிழப்பு செயல்பாட்டின் அனைத்து குறியீடுகளும் சரம் மீண்டும் சுழலாமல் வெற்றிகரமாக கணக்கிடப்பட்டவுடன், குறைந்தபட்ச அகராதியியல் சுழற்சி கண்டறியப்பட்டு அதன் தொடக்க குறியீடு திரும்பப் பெறப்படுகிறது. வழிமுறையின் சரியான தன்மையைப் புரிந்துகொள்வது சற்றே கடினம், ஆனால் அதைச் செயல்படுத்துவது எளிது. டிஃப் லீஸ்ட் _ ரோட்டேஷன் (s: str)-> int: "பூத்தின் லெக்ஸிகோகிராஃபிக்கல் குறைந்தபட்ச சரம் சுழற்சி வழிமுறை". n = லென் (கள்) f = [-1] * (2 * n) k = 0 வரம்பில் j க்கு (1,2 * n): i = f [j-k-1] அதே நேரத்தில் i! =-1 மற்றும் s [j% n]! = s [(k + i + 1)% n]: s [j% n] <s [(k + i + 1)% n]: k = j-i = f [i] என்றால் i = = மற்றும் s [j% n] = s [(k + i + 1)% n]: s [j% n] <s [(k + i + 1)% n]: k = பூத்தின் வழிமுறை காலப்போக்கில் இயங்குகிறது, சரத்தின் நீளம் எங்கே. வழிமுறை மிகவும் மோசமான நிலையில் பெரும்பாலான ஒப்பீடுகளில் செயல்படுகிறது, மேலும் தோல்வி செயல்பாட்டு அட்டவணையை வைத்திருக்க நீளத்தின் துணை நினைவகம் தேவைப்படுகிறது. ஷிலோச்சின் ஃபாஸ்ட் கேனோனைசேஷன் அல்காரிதம் ஷிலோச் (1981) செயல்திறனைப் பொறுத்தவரை பூத்தின் முடிவை மேம்படுத்தும் ஒரு வழிமுறையை முன்மொழிந்தார். நீளத்தின் சரத்தின் சமமான அகராதியியல் ரீதியாக குறைந்தபட்ச சுழற்சிகள் இருந்தால், சரம் நீளத்தின் சமமான அடி மூலக்கூறுகளைக் கொண்டிருக்க வேண்டும் என்பது கவனிக்கப்பட்டது. வழிமுறைக்கு மோசமான நிலையில் ஒப்பீடுகள் மற்றும் நிலையான இடம் மட்டுமே தேவைப்படுகிறது. இந்த வழிமுறை இரண்டு கட்டங்களாக பிரிக்கப்பட்டுள்ளது. முதல் கட்டம் ஒரு விரைவான சல்லடை ஆகும், இது அகராதியியல் ரீதியாக குறைந்தபட்ச சுழற்சிக்கான தொடக்க இடங்களாக இல்லாத குறியீடுகளை நிராகரிக்கிறது. இரண்டாவது கட்டம் பின்னர் மீதமுள்ள குறியீடுகளிலிருந்து அகராதியியல் ரீதியாக குறைந்தபட்ச சுழற்சி தொடக்க குறியீட்டைக் கண்டறிகிறது. டுவாலின் லிண்டன் காரணிமயமாக்கல் வழிமுறை டுவால் (1983) சரத்தை அதன் கூறு லிண்டன் சொற்களில் காரணிமயமாக்குவதை உள்ளடக்கிய ஒரு திறமையான வழிமுறையை முன்மொழிந்தது, இது ஒரு நிலையான நினைவகத் தேவையுடன் நேரியல் நேரத்தில் இயங்குகிறது. மாறுபாடுகள் ஷிலோச் (1979) ஒரு இயல்பாக்குதல் தேவை இல்லாமல் சமத்துவத்திற்கான இரண்டு வட்ட சரங்களை திறம்பட ஒப்பிட ஒரு வழிமுறையை முன்மொழிந்தார். வழிமுறையிலிருந்து எழும் ஒரு கூடுதல் பயன்பாடு, சில இரசாயன கட்டமைப்புகளை மீண்டும் மீண்டும் செய்யாமல் விரைவாக உருவாக்குவது ஆகும். லிண்டன் சொல் க்னுத்-மோரிஸ்-பிராட் வழிமுறை குறிப்புகள் சரங்களில் உள்ள சிக்கல்கள் அகராதியியல் எடுத்துக்காட்டு குறியீட்டுடன் கட்டுரைகள்