பிக்-ஓ குறிப்பு என்றால் என்ன?

பிக்-ஓ குறிப்பு என்றால் என்ன?

நீங்கள் எழுதிய ஒரு புரோகிராம் ஏன் இயங்க இவ்வளவு நேரம் ஆனது என்று எப்போதாவது யோசித்திருக்கிறீர்களா? உங்கள் குறியீட்டை இன்னும் திறம்பட செய்ய முடியுமா என்பதை நீங்கள் அறிய விரும்பலாம். குறியீடு எவ்வாறு இயங்குகிறது என்பதைப் புரிந்துகொள்வது உங்கள் குறியீட்டை அடுத்த நிலைக்கு கொண்டு வரலாம். உங்கள் குறியீடு உண்மையில் எவ்வளவு திறமையானது என்பதைக் கணக்கிட பிக்-ஓ குறிப்பு ஒரு எளிமையான கருவியாகும்.





பிக்-ஓ குறிப்பு என்றால் என்ன?

உங்கள் குறியீட்டை இயக்க எவ்வளவு நேரம் ஆகும் என்பதைக் கணக்கிட பிக்-ஓ குறிப்பு உங்களுக்கு ஒரு வழியை வழங்குகிறது. உங்கள் குறியீடு இயங்குவதற்கு எவ்வளவு நேரம் ஆகும் என்பதை நீங்கள் உடல் ரீதியாகப் பார்க்கலாம், ஆனால் அந்த முறையால், சிறிய நேர வேறுபாடுகளைப் பிடிப்பது கடினம். உதாரணமாக, 20 மற்றும் 50 வரிகளின் குறியீட்டை இயக்குவதற்கு இடையில் எடுக்கும் நேரம் மிகவும் சிறியது. இருப்பினும், ஒரு பெரிய திட்டத்தில், அந்த திறமையின்மைகள் சேர்க்கப்படலாம்.





உங்கள் பின்னணியாக ஒரு gif ஐ அமைப்பது எப்படி

ஒரு வழிமுறையானது அதன் செயல்திறனை அளவிடுவதற்கு எத்தனை படிகளைச் செய்ய வேண்டும் என்பதை பிக்-ஓ குறியீடானது கணக்கிடுகிறது. செயல்திறனை அதிகரிக்க உங்கள் குறியீட்டை டியூன் செய்ய வேண்டும் என்றால் இந்த முறையில் உங்கள் குறியீட்டை அணுகுவது மிகவும் பயனுள்ளதாக இருக்கும். பிக்-ஓ குறியீடானது பல்வேறு வழிமுறைகளை அளவிடுவதற்கு உங்களுக்கு தேவையான படிகளின் எண்ணிக்கையை அளவிடுவதற்கும் வழிமுறைகளின் செயல்திறனை புறநிலையாக ஒப்பிடுவதற்கும் உதவும்.





பிக்-ஓ குறியீட்டை நீங்கள் எவ்வாறு கணக்கிடுகிறீர்கள்

ஒரு டிராயரில் எத்தனை தனிப்பட்ட சாக்ஸ் உள்ளன என்பதைக் கணக்கிடும் இரண்டு செயல்பாடுகளைக் கருத்தில் கொள்வோம். ஒவ்வொரு செயல்பாடும் ஜோடி சாக்ஸின் எண்ணிக்கையை எடுத்து தனிப்பட்ட சாக்ஸின் எண்ணிக்கையை அளிக்கிறது. குறியீடு பைத்தானில் எழுதப்பட்டுள்ளது, ஆனால் அது படிகளின் எண்ணிக்கையை நாம் எப்படி எண்ணுவோம் என்பதை பாதிக்காது.

அல்காரிதம் 1:



def sockCounter(numberOfPairs):
individualSocks = 0
for x in range(numberOfPairs):
individualSocks = individualSocks + 2
return individualSocks

அல்காரிதம் 2:

def sockCounter(numberOfPairs):
return numberOfPairs * 2

இது ஒரு வேடிக்கையான உதாரணம், மேலும் எந்த அல்காரிதம் மிகவும் திறமையானது என்பதை நீங்கள் எளிதாக சொல்ல முடியும். ஆனால் பயிற்சிக்கு, ஒவ்வொன்றாக ஓடுவோம்.





தொடர்புடையது: நிரலாக்கத்தில் ஒரு செயல்பாடு என்ன?

அல்காரிதம் 1 பல படிகளைக் கொண்டுள்ளது:





  1. இது மாறி தனிநபர் சாக்ஸுக்கு பூஜ்ஜியத்தின் மதிப்பை அளிக்கிறது.
  2. இது மாறி i க்கு ஒன்றின் மதிப்பை அளிக்கிறது.
  3. இது i இன் மதிப்பை நம்பர்ஃபேர்ஸுடன் ஒப்பிடுகிறது.
  4. இது தனிநபர் சாக்ஸில் இரண்டைச் சேர்க்கிறது.
  5. இது தனிநபர் சாக்ஸின் அதிகரித்த மதிப்பை தனக்கே ஒதுக்குகிறது.
  6. இது ஒன்றுக்கு ஒன்று அதிகரிக்கிறது.
  7. இது 3 முதல் 6 படிகள் வரை அதே எண்ணிக்கையிலான முறை (indiviualSocks - 1).

அல்காரிதம் ஒன்றுக்கு நாம் முடிக்க வேண்டிய படிகளின் எண்ணிக்கையை இவ்வாறு வெளிப்படுத்தலாம்:

4n + 2

நாம் நான்கு முறை முடிக்க வேண்டிய நான்கு படிகள் உள்ளன. இந்த வழக்கில், n, எண் ஜோடிகளின் மதிப்புக்கு சமமாக இருக்கும். ஒரு முறை முடிக்கப்படும் 2 படிகளும் உள்ளன.

ஒப்பிடுகையில், அல்காரிதம் 2 ஒரு படி மட்டுமே உள்ளது. நம்பர் ஆஃப் ஜோடிகளின் மதிப்பு இரண்டால் பெருக்கப்படுகிறது. நாங்கள் அதை இவ்வாறு வெளிப்படுத்துவோம்:

1

இது ஏற்கனவே வெளிப்படையாக இல்லை என்றால், அல்காரிதம் 2 இன்னும் கொஞ்சம் திறமையானது என்பதை நாம் இப்போது எளிதாகக் காணலாம்.

பெரிய-ஓ பகுப்பாய்வு

பொதுவாக, நீங்கள் ஒரு வழிமுறையின் பிக்-ஓ குறியீட்டில் ஆர்வம் காட்டும்போது, ​​ஒட்டுமொத்த செயல்திறனில் அதிக ஆர்வம் காட்டுகிறீர்கள், மேலும் படிகளின் எண்ணிக்கையின் நுண்ணிய தானிய பகுப்பாய்வில் குறைவாக இருக்கிறீர்கள். குறியீட்டை எளிமையாக்க, செயல்திறனின் அளவை நாம் குறிப்பிடலாம்.

மேலே உள்ள எடுத்துக்காட்டுகளில், அல்காரிதம் 2 ஒன்றாக வெளிப்படுத்தப்படும்:

O(1)

ஆனால் அல்காரிதம் 1 எளிமைப்படுத்தப்படும்:

O(n)

இந்த விரைவான ஸ்னாப்ஷாட், அல்காரிதம் ஒன்றின் செயல்திறன் எவ்வாறு n இன் மதிப்புடன் பிணைக்கப்பட்டுள்ளது என்பதை நமக்குக் கூறுகிறது. அல்காரிதம் அதிக எண்ணிக்கையிலான படிகளை முடிக்க வேண்டும்.

நேரியல் குறியீடு

படக் கடன்: நிக் ஃப்ளடெரஸ்/ பெயர்ச்சொல் திட்டம்

N இன் மதிப்பு நமக்குத் தெரியாததால், n இன் மதிப்பு இயங்க வேண்டிய குறியீட்டின் அளவை எவ்வாறு பாதிக்கிறது என்பதைப் பற்றி சிந்திப்பது மிகவும் உதவியாக இருக்கும். அல்காரிதம் 1 இல் உறவு நேரியல் என்று நாம் கூறலாம். படிகளின் எண்ணிக்கையை எதிர்த்து n இன் மதிப்பை நீங்கள் திட்டமிட்டால், மேலே செல்லும் ஒரு நேர் கோட்டைப் பெறுவீர்கள்.

இருபடி குறியீடு

அனைத்து உறவுகளும் நேரியல் உதாரணம் போல எளிமையானவை அல்ல. உங்களிடம் 2 டி வரிசை இருப்பதாக கற்பனை செய்து பாருங்கள், வரிசையில் ஒரு மதிப்பைத் தேட விரும்புகிறீர்கள். இது போன்ற ஒரு வழிமுறையை நீங்கள் உருவாக்கலாம்:

def searchForValue(targetValue, arraySearched):
foundTarget = False
for x in arraySearched:
for y in x:
if(y == targetValue):
foundTarget = True
return foundTarget

இந்த எடுத்துக்காட்டில், படிகளின் எண்ணிக்கை வரிசையில் தேடப்பட்ட வரிசைகளின் எண்ணிக்கை மற்றும் ஒவ்வொரு வரிசையில் உள்ள மதிப்புகளின் எண்ணிக்கையைப் பொறுத்தது. எனவே, எளிமைப்படுத்தப்பட்ட படிகளின் எண்ணிக்கை n * n அல்லது n².

முகநூல் வணிகப் பக்கத்தை எப்படி நீக்குவது

படக் கடன்: நிக் ஃப்ளடெரஸ்/ பெயர்ச்சொல் திட்டம்

இந்த உறவு ஒரு இருபடி உறவாகும், அதாவது நமது வழிமுறையில் உள்ள படிகளின் எண்ணிக்கை n உடன் அதிவேகமாக வளர்கிறது. பிக்-ஓ குறியீட்டில், நீங்கள் இதை இவ்வாறு எழுதுவீர்கள்:

O(n²)

தொடர்புடையது: CSS கோப்புகளை சரிபார்க்கவும், சுத்தம் செய்யவும் மற்றும் மேம்படுத்தவும் பயனுள்ள கருவிகள்

லோகரிதமிக் குறியீடு

வேறு பல உறவுகள் இருந்தாலும், நாம் கடைசியாகப் பார்க்கும் உறவு மடக்கை உறவுகள்தான். உங்கள் நினைவகத்தைப் புதுப்பிக்க, ஒரு எண்ணின் பதிவு என்பது அடித்தளத்தில் கொடுக்கப்பட்ட எண்ணை அடைய வேண்டிய அதிவேக மதிப்பு. உதாரணத்திற்கு:

log 2 (8) = 3

பதிவு 3 க்கு சமம், ஏனென்றால் நமது அடிப்படை 2 ஆக இருந்தால், 8 என்ற எண்ணை பெற நமக்கு 3 என்ற அதிவேக மதிப்பு தேவை.

படக் கடன்: நிக் ஃப்ளடெரஸ்/ பெயர்ச்சொல் திட்டம்

எனவே, ஒரு மடக்கை செயல்பாட்டின் உறவு ஒரு அதிவேக உறவுக்கு எதிரானது. N அதிகரிக்கும்போது, ​​வழிமுறையை இயக்க குறைவான புதிய படிகள் தேவைப்படுகின்றன.

முதல் பார்வையில், இது எதிர்-உள்ளுணர்வு போல் தெரிகிறது. ஒரு வழிமுறையின் படிகள் எப்படி n ஐ விட மெதுவாக வளரும்? இதற்கு ஒரு நல்ல உதாரணம் பைனரி தேடல்கள். தனித்துவமான மதிப்புகளின் வரிசையில் ஒரு எண்ணைத் தேட ஒரு வழிமுறையை கருத்தில் கொள்வோம்.

  • நாங்கள் சிறிய மற்றும் பெரிய வரிசையில் தேடுவதற்கான ஒரு வரிசையில் தொடங்குவோம்.
  • அடுத்து, வரிசையின் நடுவில் உள்ள மதிப்பைச் சரிபார்க்கிறோம்.
  • உங்கள் எண்ணிக்கை அதிகமாக இருந்தால், எங்கள் தேடலில் குறைந்த எண்களை நாங்கள் விலக்குவோம், அந்த எண் குறைவாக இருந்தால், அதிக எண்களை நாங்கள் விலக்குவோம்.
  • இப்போது, ​​மீதமுள்ள எண்களின் நடுத்தர எண்ணைப் பார்ப்போம்.
  • மீண்டும், எங்கள் இலக்கு மதிப்பு நடுத்தர மதிப்பை விட அதிகமாகவோ அல்லது குறைவாகவோ இருக்கிறதா என்பதை அடிப்படையாகக் கொண்டு பாதி எண்களை விலக்குவோம்.
  • எங்கள் இலக்கை கண்டுபிடிக்கும் வரை அல்லது இந்த பட்டியலில் இல்லை என்பதை தீர்மானிக்கும் வரை இந்த செயல்முறையைத் தொடருவோம்.

நீங்கள் பார்க்கிறபடி, பைனரி தேடல்கள் சாத்தியமான மதிப்புகளில் பாதியை ஒவ்வொரு பாஸிலும் நீக்குவதால், n பெரிதாகும்போது, ​​நாம் வரிசையை சரிபார்க்கும் எண்ணிக்கையின் விளைவு அரிதாகவே பாதிக்கப்படுகிறது. இதை பெரிய-ஓ குறியீட்டில் வெளிப்படுத்த, நாங்கள் எழுதுவோம்:

O(log(n))

பிக்-ஓ குறியீட்டின் முக்கியத்துவம்

ஒரு வழிமுறை எவ்வளவு திறமையானது என்பதைத் தொடர்புகொள்வதற்கான விரைவான மற்றும் எளிதான வழியை Big-O தேசம் உங்களுக்கு வழங்குகிறது. இது பல்வேறு வழிமுறைகளுக்கு இடையில் முடிவு செய்வதை எளிதாக்குகிறது. நீங்கள் நூலகத்திலிருந்து ஒரு வழிமுறையைப் பயன்படுத்துகிறீர்கள் மற்றும் குறியீடு எப்படி இருக்கும் என்று தெரியாவிட்டால் இது மிகவும் உதவியாக இருக்கும்.

நிண்டெண்டோ சுவிட்சை டிவியுடன் இணைப்பது எப்படி

நீங்கள் முதலில் குறியீட்டைக் கற்றுக்கொள்ளும்போது, ​​நீங்கள் நேரியல் செயல்பாடுகளுடன் தொடங்குகிறீர்கள். மேலே உள்ள வரைபடத்திலிருந்து நீங்கள் பார்க்க முடியும் என, அது உங்களை மிகவும் தூரத்திற்கு கொண்டு செல்லும். ஆனால் நீங்கள் மிகவும் அனுபவம் வாய்ந்தவராகவும், மிகவும் சிக்கலான குறியீட்டை உருவாக்கத் தொடங்கும் போதும், செயல்திறன் ஒரு பிரச்சனையாக மாறத் தொடங்குகிறது. உங்கள் குறியீட்டின் செயல்திறனை எவ்வாறு அளவிடுவது என்பதைப் புரிந்துகொள்வது, செயல்திறனுக்காகவும், வழிமுறைகளின் நன்மை தீமைகளை எடைபோடவும் உங்களுக்குத் தேவையான கருவிகளைக் கொடுக்கும்.

பகிர் பகிர் ட்வீட் மின்னஞ்சல் 10 மிகவும் பொதுவான நிரலாக்க மற்றும் குறியீட்டு தவறுகள்

குறியீட்டு தவறுகள் பல பிரச்சனைகளுக்கு வழிவகுக்கும். இந்த குறிப்புகள் நிரலாக்க தவறுகளைத் தவிர்க்கவும், உங்கள் குறியீட்டை அர்த்தமுள்ளதாக வைத்திருக்கவும் உதவும்.

அடுத்து படிக்கவும்
தொடர்புடைய தலைப்புகள்
  • நிரலாக்க
  • நிரலாக்க
எழுத்தாளர் பற்றி ஜெனிபர் சீடன்(21 கட்டுரைகள் வெளியிடப்பட்டன)

ஜே. சீடன் ஒரு அறிவியல் எழுத்தாளர், சிக்கலான தலைப்புகளை உடைப்பதில் நிபுணத்துவம் பெற்றவர். அவர் சஸ்காட்செவான் பல்கலைக்கழகத்தில் முனைவர் பட்டம் பெற்றார்; அவரது ஆராய்ச்சி ஆன்லைனில் மாணவர்களின் ஈடுபாட்டை அதிகரிக்க விளையாட்டு அடிப்படையிலான கற்றலைப் பயன்படுத்துவதில் கவனம் செலுத்தியது. அவள் வேலை செய்யாதபோது, ​​அவளுடைய வாசிப்பு, வீடியோ கேம்ஸ் அல்லது தோட்டக்கலை ஆகியவற்றைக் காணலாம்.

ஜெனிபர் சீட்டனிடமிருந்து மேலும்

எங்கள் செய்திமடலுக்கு குழுசேரவும்

தொழில்நுட்ப குறிப்புகள், மதிப்புரைகள், இலவச மின் புத்தகங்கள் மற்றும் பிரத்யேக ஒப்பந்தங்களுக்கு எங்கள் செய்திமடலில் சேரவும்!

குழுசேர இங்கே சொடுக்கவும்