Time Complexity என்றால் என்ன?
உள்ளீட்டின்(Input) நீளத்தின் செயல்பாடாக, ஒரு அல்காரிதம் இயக்க எடுக்கும் நேரத்தின் அளவு Time Complexity-ஆனது என வரையறுக்கப்படுகிறது. நிரல்களின் ஒவ்வொரு அறிக்கையையும் ஒரு அல்காரிதத்தில் செயல்படுத்த எடுக்கும் நேரத்தை இது அளவிடுகிறது. இது ஒரு அல்காரிதத்தின் மொத்த செயலாக்க நேரத்தை(Processing Time) ஆராயப் போவதில்லை. மாறாக, ஒரு அல்காரிதத்தில் செயல்பாடுகளின் எண்ணிக்கை (அதிகரிப்பு அல்லது குறைதல்) போது, செயலாக்க நேரத்தின் மாறுபாடு (அதிகரிப்பு அல்லது குறைப்பு) பற்றிய தகவலைத் தரப் போகிறது. வரையறை சொல்வது போல், எடுக்கப்பட்ட நேரத்தின் அளவு உள்ளீட்டின் நீளத்தின் செயல்பாடு மட்டுமே.
Space மற்றும் Time பிரபஞ்சத்தில் உள்ள எந்த ஒரு பௌதிகப்(objects) பொருளையும் வரையறுக்கின்றன. இதேபோல், Space மற்றும் Time சிக்கலானது ஒரு அல்காரிதத்தின் செயல்திறனை வரையறுக்கலாம். நிரலாக்கத்தில்(Programs) சிக்கலைத் தீர்க்க ஒன்றுக்கும் மேற்பட்ட வழிகள் உள்ளன என்பதை அறிந்திருந்தாலும், அல்காரிதம் எவ்வாறு திறம்பட செயல்படுகிறது என்பதை அறிந்துகொள்வது, நிரலாக்கத்தை செயல்படும் விதத்திற்கு மதிப்பை சேர்க்கலாம். நிரல்/அல்காரிதத்தின் செயல்திறனைக் கண்டறிய, Space மற்றும் Time சிக்கலைப்(complexity) பயன்படுத்தி அவற்றை எவ்வாறு மதிப்பிடுவது என்பதைத் தெரிந்துகொள்வது, நிரலை தேவையான உகந்த நிலைகளில் செயல்படச் செய்யலாம், மேலும் அவ்வாறு செய்வதன் மூலம், அது சிறப்பாக செயல்படும் நிரலாக்கத்தை அளிக்கிறது.
Space மற்றும் Time complexity-யின் முக்கியத்துவம் என்ன?
முதலில் நாம் ஒரு அல்காரிதம் என்றால் என்ன என்பதை புரிந்துகொள்வோம்.
ஒரு அல்காரிதம், கணினி நிரலாக்கத்தில்(Computer Program), ஒரு குறிப்பிட்ட வகை சிக்கல்களைத்(complexity) தீர்க்க அல்லது பொதுவான பணியைச் செய்ய, பொதுவாக கணினியில் செயல்படுத்தப்படும் நன்கு வரையறுக்கப்பட்ட வழிமுறைகளின் வரையறுக்கப்பட்ட வரிசையாகும். வரையறையின் அடிப்படையில், ஒரு அல்காரிதத்தை இயக்க/ ஒரு குறிப்பிட்ட பணியைச் செய்ய கணினிக்கு வழங்கப்பட வேண்டிய வரையறுக்கப்பட்ட வழிமுறைகளின் வரிசை இருக்க வேண்டும். இந்த சூழலில், அறிவுறுத்தல்கள்(instructions) எவ்வாறு வரையறுக்கப்படுகின்றன என்பதில் மாறுபாடு ஏற்படலாம். பல வழிகள் இருக்கலாம், அதே பணியைச் செய்ய ஒரு குறிப்பிட்ட வழிமுறைகளை வரையறுக்கலாம். மேலும், கிடைக்கக்கூடிய நிரலாக்க மொழிகளில்(Programming Language) ஏதேனும் ஒன்றைத் தேர்ந்தெடுப்பதற்கான விருப்பங்களுடன், தேர்ந்தெடுக்கப்பட்ட நிரலாக்க மொழியின் செயல்திறன் எல்லைகளுடன் எந்த வகையான தொடரியல் வடிவத்தையும் அறிவுறுத்தல்கள் எடுக்கலாம். ஒரு கணினியில் செயல்படுத்தப்பட வேண்டிய அல்காரிதத்தையும் நாங்கள் குறிப்பிட்டுள்ளோம், இது அடுத்த மாறுபாட்டிற்கு வழிவகுக்கிறது, இது பயன்படுத்தப்படும் இயக்க முறைமை, செயலி, வன்பொருள் போன்றவற்றின் அடிப்படையில், இது அல்காரிதம் செயல்படும் விதத்தையும் பாதிக்கலாம்.
ஒரு அல்காரிதம் செயல்பாட்டின் விளைவை வெவ்வேறு காரணிகள் பாதிக்கலாம் என்பதை இப்போது நாம் அறிவோம், ஒரு பணியைச் செய்ய இதுபோன்ற திட்டங்கள் எவ்வளவு திறமையாகப் பயன்படுத்தப்படுகின்றன என்பதைப் புரிந்துகொள்வது புத்திசாலித்தனமானது. இதை அளவிட, ஒரு அல்காரிதத்தின் Space மற்றும் Time சிக்கலான இரண்டையும் மதிப்பீடு செய்ய வேண்டும்.
வரையறையின்படி, ஒரு அல்காரிதத்தின் ஸ்பேஸ் சிக்கலானது, உள்ளீட்டின்(Input) நீளத்தின் செயல்பாடாக இயக்க அல்காரிதம் எடுக்கும் இடம் அல்லது நினைவகத்தின்(Memory) அளவைக் கணக்கிடுகிறது. ஒரு அல்காரிதத்தின் Time சிக்கலானது, உள்ளீட்டின் நீளத்தின் செயல்பாடாக இயங்குவதற்கு ஒரு அல்காரிதம் எடுக்கும் நேரத்தின் அளவைக் கணக்கிடுகிறது. Time Complexity-ஆனது ஏன் மிகவும் முக்கியமானது என்பதை இப்போது நாம் அறிவோம், Time Complexity-ஆனது மற்றும் அதை எவ்வாறு மதிப்பிடுவது என்பதைப் புரிந்துகொள்வதற்கான நேரம் இது.Time Complexity-ஆனது ஒரு Statement-யை எத்தனை முறை செயல்படுத்தப்படுகிறது என்பதைக் குறிக்கிறது. ஒரு அல்காரிதத்தின் நேர சிக்கலானது ஒரு குறிப்பிட்ட குறியீட்டை இயக்குவதற்குத் தேவைப்படும் உண்மையான நேரம் அல்ல, ஏனெனில் அது நிரலாக்க மொழி, இயக்க மென்பொருள், செயலாக்க சக்தி போன்ற பிற காரணிகளைப் பொறுத்தது.