What are algorithms हिन्दी में , की पुरी और संक्षिप्त विवरण
किसी problem को solve करने के लिए दिए गए अच्छी तरह से परिभाषित निर्देश को ही algorithm कहते है ।
अच्छे algorithm के गुण
- Output और input को अच्छी तरह define करना ।
- हर एक निर्देश का सरल , सीधा और सटीक होना ।
- Algorithm एक प्रॉब्लेम को solve करने वाला बेस्ट तरीका होना चाहिए।
- Algorithm मे code न हो ताकि उनके logic को सभी programming language मे प्रयोग किया जा सके ।
Algorithm के कुछ examples
Algo 1:- Algorithm to add two numbers
Step 1: Start
Step 2: Declare variables num1, num2 and sum.
Step 3: Read values num1 and num2.
Step 4: Add num1 and num2 and assign the result to sum.
sum←num1+num2
Step 5: Display sum
Step 6: Stop
Algo 2:- Algorithm to find the largest among three numbers
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
Algo 3:- Algorithm to find all the roots of quadratic equation
Step 1: Start
Step 2: Declare variables a, b, c, D, x1, x2, rp and ip;
Step 3: Calculate discriminant
D ← b2-4ac
Step 4: If D ≥ 0
r1 ← (-b+√D)/2a
r2 ← (-b-√D)/2a
Display r1 and r2 as roots.
Else
Calculate real part and imaginary part
rp ← -b/2a
ip ← √(-D)/2a
Display rp+j(ip) and rp-j(ip) as roots
Step 5: Stop
Algo 4:- Algorithm to find the factorial of a number
Step 1: Start
Step 2: Declare variables n, factorial and i.
Step 3: Initialize variables
factorial ← 1
i ← 1
Step 4: Read value of n
Step 5: Repeat the steps until i = n
5.1: factorial ← factorial*i
5.2: i ← i+1
Step 6: Display factorial
Step 7: Stop
Algo 5:- Algorithm to check prime number
Step 1: Start
Step 2: Declare variables n, i, flag.
Step 3: Initialize variables
flag ← 1
i ← 2
Step 4: Read n from the user.
Step 5: Repeat the steps until i=(n/2)
5.1 If remainder of n÷i equals 0
flag ← 0
Go to step 6
5.2 i ← i+1
Step 6: If flag = 0
Display n is not prime
else
Display n is prime
Step 7: Stop
Algo 6:- Algorithm to Fibonacci series
Step 1: Start
Step 2: Declare variables first_term,second_term and temp.
Step 3: Initialize variables first_term ← 0 second_term ← 1
Step 4: Display first_term and second_term
Step 5: Repeat the steps until second_term ≤ 1000
5.1: temp ← second_term
5.2: second_term ← second_term + first_term
5.3: first_term ← temp
5.4: Display second_term
Step 6: Stop
Data structure और algorithm के प्रयोग ।
समय कीमती है ।
मान लीजिए राम और श्याम एक आसान प्रश्न बना रहे है जिसमे पहले प्रकीर्त संख्या (natural नम्बर) के जोड़ का उत्तर पूछा गया है ।
जब राम इस प्रश्न के लिए एक algorithm तैयार कर रहा था , श्याम ने सीधा code implement करते हुए कहा कि ये तो पप्पू जी कि सोने वाली मशीन बनाने जितनी आसान है ।
राम का Algorithm:-
Initialize sum = 0
for every natural number n in range 1 to 1011 (inclusive):
add n to sum
sum is your answer
श्याम का code:-
int findSum() {
int sum = 0;
for (int v = 1; v <= 100000000000; v++) {
sum += v;
}
return sum;
}
जब हमने आँकलन किया तो पाया कि श्याम का code जिसे काफी पहले run किया था , उसने अभी तक output नहीं दिया।
आइए देखते है कि गलती कहा हुई-
एक computer प्रोग्राम के दो सबसे कीमती संसाधन है
- समय
- memory
एक कोड को रन करने मे समय कुछ इस प्रकार calculate होता है-
Time to run code = number of instructions * time to execute each instruction
निर्देशों कि संख्या आपके कोड पर निर्भर करती है , वही समय का हिसाब आपके मशीन ओर compiler पे आधारित होता है ।
इस case में , निर्देशों कि संख्या(मान लीजिए x) x = 1 + ( + 1 ) + 1 ,
जो है – क्ष = 2 * + 3
मान लेते है कि एक कंप्युटर y = निर्देश एक सेकंड में compute करता है।
code रन होने मे लगा समय = x/y (जोकि 16 मिनट से ज्यादा है)
क्या कोई ऐसा तरीका भी है जिससे ये equation जल्दी solve हो जाए ।
हाँ आपने सही समझा :- sum = n * ( n + 1 ) / 2
code मे बदलने के बाद कुछ ऐसा दिखेगा :-
int sum(int N) {
return N * (N + 1) / 2;
}
ये code सिर्फ एक निर्देश पे कम्प्यूट हो जाएगा और हमे अपना उत्तर मिल जाएगा चाहे value कितनी ही बड़ी क्यू न हो ।
इस case मे लगने वाला समय ( 1 / y ) जोकि 10 nanosecond है ।
Note:-
Multiplication और division मे computers 1 से ज्यादा निर्देश लेते है। समझने के लिए 1 कहा गया है।
मापनीयता (scalability)
Scale + ability , यानि एक algorithm/system कि गुणवत्ता किसी बड़े problem को solve करने के लिए ।
मान लीजिए कि एक कक्षा मे 50 विद्यार्थियों के लिए व्यवस्था करनी है। इसका solution काफी आसान है , बस एक room ,कुछ furniture ,एक blackboard , कुछ chalk, और आपका problem solve ।
लेकिन क्या हो जब 50 कि जगह 200 विद्यार्थी दिए जाए । Solution वही रहेगा बस कुछ सामान ज्यादा लाना पड़ेगा। और projector स्क्रीन , स्पीकर भी अलग से लगाने होंगे।
याचा अब क्या हो जब 200 कि जगह 1000 विद्यार्थी दिए जाए । इस बार ये solution fail हो जाता है । इसका मतलब ये है कि हमारा solution (scalable) मापनीय नहीं था।
What is a scalable solution.
किसी भी बड़े साइट का उदाहरण लें , जैसे programiz.com , जहां काफी लोग एक साथ online पढ़ाई करते है , अपने प्रश्नों के उत्तर ढूंढते है । इससे एकसाथ काफी problems solve हो रही है जिनका input size काफी बड़ा है।
अगर आप हमारा पहला solution देखें , जोकि scalable नहीं था क्यूंकि समय के linear ग्रोथ के साथ problem का size भी बढ़त जा रहा था । इन algorithms को Linearly scalable algorithms कहते है ।
हमारा दूसरा solution काफी scalable था और उसे ज्यादा समय कि जरूरत नहीं पड़ी problem का size बड़ा होने के बावजूद । ऐसे algorithms को Constant-time algorithms कहते हैं।
Memory कीमती है
हर कंप्युटर या सिस्टम मे एक निर्धारित memory होती है। जब हम code करते हैं, तो हमे बोहोत data को store करना होता है , इसीलिए एक algorithm के लिए memory बचाना भी बोहोत जरूरी है । जैसे लोगों के बारे मे data store करते वक्त हम date of birth न स्टोर करवाते हुए उनकी ages को store करवा सकते है। इस data से हम date of birth मॅप सकते है और यह data जगह भी कम लेता है।
सारांश
असल मे ऐसा है कि, software development कि क्षेत्र मे हमे अक्सर ही नई technologies के बारे मे जानना पड़ता है । ज्यादातर लोग इन्हे किसी प्रोजेक्ट पे इस्तेमाल करते समय सीख लेते है, लेकिन algorithms के साथ ऐसा नहीं है ।
अगर आपको algorithms के बारे मे अच्छे से नहीं पता होगा तो आप किसी भी code को पहचान के उसे सुधारने के सक्षम नहीं रहेंगे । आपसे ऐसी अपेक्षा कि जाती है कि आप algorithms के बारे मे पहले से ही जानते हों और जहां जरूरत पड़े वह उनका इस्तेमाल भी किया जाए ।
Created Blog and articles about specific subject matter.
collected pictures or content and attached it to the article.
Discussed about a certain subject in the form of writing.
Shared experiences or comments regarding a subject.
Compiled written articles for futures references.
EDUCATION
Bachelor’s tech in CSE, 2019-23
Aaryabhatta Knowledge University, Patna.
Professional Area
Search Engine optimization & analyze data, About Stock market analysist.
Raghav Suryavanshi, (Sachin Singh)
myself Raghav Suryavanshi ,In honor of being blogging sites, I own this blogging site. We and our team feel very sincerely sharing new knowledge with you.
राघव सूर्यवंशी fb link – https://m.facebook.com/Fbsachinsingh