कलन-विधि (Eng. “Algorithm”) को Computer Science में एक महत्वपूर्ण टॉपिक के रूप में देखा जाता है। क्योंकि इसके उपयोग से Developers को बेहद कुशल और Error free programs विकसित करने में मदद मिलती है।
शब्द, Algorithm का मतलब उन ‘Series of Steps‘ से है, जो किसी विशेष गणना (Computation) या कार्य (task) को पुरा करने या निष्पादित (execute) करने के लिये जिम्मेदार होते है। आगे हम एल्गोरिथ्म की परिभाषा को और विस्तार से समझेंगे।
मूल रूप से गणितीय समस्याओं (Mathematical problems) को हल करने के लिये इसको विकसित किया गया था। लेकिन वर्तमान में यह शब्द Computer Science के साथ दृढ़ता से जुड़ा है। आगे पोस्ट में आप एल्गोरिथ्म क्या है? (What is Algorithm in Hindi) उदाहरण के साथ समझेंगे।
Algorithm की परिभाषा
Algorithm, निर्देशों (Instructions) का एक सेट है, जो किसी समस्या (Problem) को हल करने की पूरी प्रकिया (Procedure) को परिभाषित करता है। इसका प्रमुख लक्ष्य अपेक्षित परिणाम (expected output) प्राप्त करना है। इसमें कई निरन्तर Steps होते है, जिनके समाप्त होने के बाद ही आउटपुट आता है।
इसे एक कप चाय (Tea) बनाने के उदाहरण से समझा जा सकता है:
स्टेप 1. केतली में पानी भरे
स्टेप 2. पानी को उबाल लें
स्टेप 3. केतली में चायपत्ती डालें
स्टेप 4. कूटकर अदरक डालें.
स्टेप 5. डेढ़ चम्मच चीनी डाले
स्टेप 6. चाय को पकने दे
स्टेप 7. चाय को छाने और कप में डाल दे।
जिस प्रकार एक कप चाय बनाने के लिये हमें उप्पर बताये गए Steps को बारी-बारी से निष्पादित (execute) करना होता है। ठीक उसी प्रकार Programming में किसी प्रकिया (Process) या कार्य (Task) को करने के लिये Algorithm लिखी जाती है, ताकि मनचाहा परिणाम (desired output) प्राप्त हो सके।
इसका उपयोग कई विभिन्न क्षेत्रों में होता है, जिनमे कंप्यूटर साइंस और गणित मुख्य है। उदाहरण के लिए Search Algorithm, ये एक Step By Step प्रकिया है जिसका उपयोग Data structure के भीतर स्टोर वेब-पेज को पुनःप्राप्त करने के लिये किया जाता है।
इसके अलावा Encryption Algorithm, एक गणितीय प्रकिया (Mathematical procedure) है, जिसके उपयोग से किसी डेटा या मैसेज को इनकोड किया जाता है जिससे उसे पढ़ना या समझना मुश्किल है। इस तरह की Algorithm का उपयोग करके डेटा को अनधिकृत उपयोगकर्ताओं की पहुँच से दूर रखा जाता है।
सम्बंधित पोस्ट – जावा प्रोग्रामिंग क्या है जाने
एल्गोरिथ्म के फाउंडर कौन है?
इसका एक लंबा इतिहास (History) है, परंतु वास्तविक शब्द “Algorithm” का परिचय पहली बार 9 वीं शताब्दी में हुआ। उस समय के फारसी गणितज्ञ, Abu Abdullah Muhammad ibn Musa Al-Khwarizmi को इसका फाउंडर माना जाता है। इन्हें बीजगणित के जनक (The Father of Algebra) के रूप में भी जाना जाता है।
वास्तव में, Brahmagupta के काम पर ही Al-Khwarizmi को बनाया गया था। ब्रह्मगुप्त एक महान भारतीय गणितज्ञ और खगोलशास्त्री थे। इन दोनों महान व्यक्ति को तब प्रख्याति मिली जब Hindi-Arabic numerals का उपयोग करके उनके अंकगणितीय नियमों के Latin अनुवादों को संदर्भित करने के लिये ‘Algorism’ शब्द का इस्तेमाल किया गया था।
इसके बाद 18 वीं शताब्दी के आसपास ‘Algorism’ शब्द आधुनिक “Algorithm” बन गया। अपने आधुनिक रूप में इसका उपयोग Calculation, Data Processing और Programming जैसे क्षेत्रों के अलावा दैनिक जीवन की समस्याओं को हल (Solve) करने के लिये भी बखूबी होता है। तो शब्द एल्गोरिथ्म, वो स्टेप बाइ स्टेप प्रोसेस है, जो किसी समस्या या कार्य को हल करने के लिये बनाई जाती है।
एल्गोरिथ्म के गुण – Properties of Algorithm
किसी भी प्रकिया को हम Algorithm नही कह सकते है। बल्कि एल्गोरिथ्म उपयोगी होनी चाहिए यानी उससे समस्या का समाधान निकलना चाहिये। ऐसा होने के लिये, एक एल्गोरिथ्म के कुछ गुण (Properties) होते है। अर्थात इसने नीचे बताये गए निन्म मानदंडों को पूरा करना चाहिए:
1) इनपुट (Input): एक Algorithm में अच्छी तरह से परिभाषित इनपुट (Well-defined Input) होने चाहिए। इनपुट वो डेटा या जानकारी है, जिसे हम आउटपुट प्रदान करने के लिये दर्ज करते है।
2) आउटपुट (Output): इसने आउटपुट का उत्पादन (Produced) करना चाहिए। अर्थात समस्या का सही समाधान (Solution) प्रदान करना चाहिये।
3) स्पष्टता (Unambiguous): लिखा गया प्रत्येक निर्देश (Instruction) या Step स्पष्ट (Clear) होना चाहिये। प्रत्येक Steps के इनपुट/आउटपुट भी स्पष्ट होने चाहिये।
4) सीमाबद्धता (Finiteness): इसका मतलब है, कि एल्गोरिथ्म में लिखे गए Steps एक सीमित संख्या (Finite number) के बाद समाप्त (terminate) होने चाहिये। समाप्त का मतलब है, आपको अपेक्षित आउटपुट मिलना चाहिये ना कि प्रोसेसिंग लूप में चलती रहे।
5) प्रभावशीलता (Effectiveness): Algorithm को व्यवहारिक (Practical) होना चाहिए, ताकि उपलब्ध संसाधनों के साथ निर्देशों को निष्पादित करना सम्भव हो। अर्थात इसमें कोई अनावश्यक निर्देश (Unnecessary Instructions) नही होना चाहिए जो उसे अप्रभावी (Ineffective) बना दे।
6) भाषा स्वतंत्र (Language Independent): निर्देश केवल सरल भाषा मे लिखे होने चाहिए। जिन्हें किसी भी Programming Language में लागू किया जा सके।
सम्बंधित पोस्ट – ऑपरेटिंग सिस्टम क्या है इसका कार्य
Algorithm के उदाहरण
Algorithm को लिखने के लिये विभिन्न विधियों का उपयोग किया जाता है। आइये सबसे आसान उदाहरण से इसे समझते है।
Example 1– Calculating the average for 3 numbers.
Algorithm:
Step 1. Start
Step 2. Read 3 numbers A, B, C
Step 3. Calculate the average by the equation
Average = (A+B+C)/3
Step 4. Display Average
Step 5. Stop
Example 2– Find the largest among three different numbers entered by user.
Algorithm:
Step 1. Start
Step 2. Declare variables a,b and c
Step 3. Read variables a,b and c.
Step 4. If a > b
If a > c
Display a is the largest number.
Else
Display c is the largest number.
Else
If b > c
Display b is the largest number.
Else
Display c is the greatest number.
Step 5. Stop
क्या यह एक एल्गोरिथ्म होने के मानदंड (Criteria) को पूरा करता है:
- एल्गोरिथ्म में इनपुट और आउटपुट को अच्छे से परिभाषित किया गया है।
- प्रत्येक Step को स्प्ष्ट (clear) और सटीक अर्थ में दर्शाया गया है।
- Steps की एक सीमित (finite) संख्या है। अर्थात Algorithm एक समय के बाद समाप्त (terminate) होती है।
- Algorithm एक अपेक्षित आउटपुट का उत्पादन करती है। हमे अंत मे सही परिणाम (correct result) प्राप्त होता है।
एल्गोरिथ्म के प्रकार – Types of Algorithm
हालांकि इसके कई सारे प्रकार है, परन्तु जो सबसे बुनियादी प्रकार है उन्हें नीचे बताया गया है।
- Simple Recursive Algorithms
- Backtracking
- Divide and Conquer
- Dynamic Programming Algorithm
- Greedy Algorithms
- Branch and bound Method
- Brute Force Algorithms
- Randomized Algorithms
सम्बंधित पोस्ट – C Language क्या है और कैसे सीखे
संक्षेप में
किसी समस्या को हल करने के लिये एक लॉजिकल Step-By-Step विधि लिखना Algorithm कहलाता है। बिल्कुल आसान भाषा मे, Algorithm किसी समस्या को हल करने के लिये एक योजना (Plan) की तरह है। आमतौर पर इस शब्द का उपयोग गणितीय और कम्प्यूटेशनल समस्याओं को हल करने के लिये किया जाता है।
इसमें गणना (Calculations), तर्क (Reasoning) और डेटा प्रोसेसिंग (Data Processing) शामिल है। एल्गोरिथ्म लिखने के कई तरीके है। एक बार जब हमारे पास किसी समस्या के लिये Algorithm होती है, तो फिर हम उसे निष्पादित कर सकते है। इसको सामान्य English language, Pseudocode और Flowcharts में प्रस्तुत किया जा सकता है।
तो उम्मीद है, इस पोस्ट एल्गोरिथ्म क्या है? (What is Algorithm in Hindi) को पढ़कर आपको इसके बारे में जानकारी हो गयी होगी। टॉपिक से सम्बंधित कोई सवाल या सुझाव हो तो कृपया नीचे कमेंट कर हमें जरूर बताये। जानकारी ज्ञानवर्धक लगी हो तो इसे शेयर करना बिल्कुल न भूले।
उत्पादन के विभिन्न तरीके क्या है ?फ्लोचार्ट का
उपयोग करके विवरण दें। धन्यवाद
Mujhe ye packer bahut achcha
laga
बहुत बढ़िया आपने बहुत अच्छी तरीके से सारी चीजें समझाइए.
धन्यवाद, सत्यम 😊
Bahut hi aasan tarike se smjhaya….
Types of algorithms detail
विजय, आपके सुझाव के लिए धन्यवाद। अल्गोरिथम के प्रकार को हम डिटेल में समझाने की कोशिश करेंगे।
Achha nhi hai usi usi word ko bar bar repeat kiya hai
Msahu, माफ़ी चाहेंगे, हम इसमें कैसे सुधार कर सकते है।
Nice guru ji😇
धन्यवाद, Sachin 😊 हमें ख़ुशी है, कि आपको जानकारी उपयोगी लगी।
Nice thanks bhaut achi hai so very much
Aman, आपका स्वागत है 😊
Me computer sikhan Aur banan chahta hu
Nandram, आप कंप्यूटर बेसिक से शुरू कीजिये।