Site icon

What are algorithms हिन्दी में

What are algorithms हिन्दी में , की पुरी और संक्षिप्त विवरण

ALGORITHM IN HINDI



What are algorithms used for?
What is the simplest algorithm?
What are the steps in writing algorithm?

इस post में जानेंगे कि algorithms क्या होते है और प्रोग्रामिंग मे इन्हे इतनी अहमियत क्यूँ दी जाती है। विषय को और अच्छे से समझने के लिए देखेंगे कुछ examples भी।

किसी problem को solve करने के लिए दिए गए अच्छी तरह से परिभाषित निर्देश को ही algorithm कहते है ।

अच्छे algorithm के गुण

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 प्रोग्राम के दो सबसे कीमती संसाधन है

एक कोड को रन करने मे समय कुछ इस प्रकार 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 के बारे मे पहले से ही जानते हों और जहां जरूरत पड़े वह उनका इस्तेमाल भी किया जाए ।

Exit mobile version