DAA - परिचय

एक एल्गोरिथ्म एक कदम है जो गणना, डेटा प्रोसेसिंग और स्वचालित रीज़निंग कार्यों को करने में समस्या को हल करने के लिए संचालन का एक सेट है। एक एल्गोरिथ्म एक कुशल विधि है जिसे समय और स्थान की परिमित मात्रा के भीतर व्यक्त किया जा सकता है।

एक एल्गोरिथ्म एक बहुत ही सरल और कुशल तरीके से किसी विशेष समस्या के समाधान का प्रतिनिधित्व करने का सबसे अच्छा तरीका है। यदि हमारे पास एक विशिष्ट समस्या के लिए एक एल्गोरिथ्म है, तो हम इसे किसी भी प्रोग्रामिंग भाषा में लागू कर सकते हैं, जिसका अर्थ है कि एalgorithm is independent from any programming languages

एल्गोरिदम डिजाइन

एल्गोरिथ्म डिज़ाइन के महत्वपूर्ण पहलुओं में न्यूनतम समय और स्थान का उपयोग करके किसी समस्या को हल करने के लिए एक कुशल एल्गोरिदम बनाना शामिल है।

किसी समस्या को हल करने के लिए, विभिन्न दृष्टिकोणों का पालन किया जा सकता है। उनमें से कुछ समय की खपत के संबंध में कुशल हो सकते हैं, जबकि अन्य दृष्टिकोण स्मृति कुशल हो सकते हैं। हालांकि, किसी को यह ध्यान रखना होगा कि समय की खपत और मेमोरी उपयोग दोनों को एक साथ अनुकूलित नहीं किया जा सकता है। यदि हमें कम समय में चलने के लिए एक एल्गोरिथ्म की आवश्यकता होती है, तो हमें अधिक मेमोरी में निवेश करना होगा और यदि हमें कम मेमोरी के साथ चलने के लिए एक एल्गोरिथम की आवश्यकता है, तो हमें अधिक समय की आवश्यकता है।

समस्या विकास कदम

निम्नलिखित कदम कम्प्यूटेशनल समस्याओं को हल करने में शामिल हैं।

  • समस्या की परिभाषा
  • एक मॉडल का विकास
  • एक एल्गोरिथ्म की विशिष्टता
  • एक एल्गोरिथ्म डिजाइनिंग
  • एक एल्गोरिथ्म की शुद्धता की जाँच
  • एक एल्गोरिथम का विश्लेषण
  • एक एल्गोरिथ्म का कार्यान्वयन
  • कार्यक्रम परीक्षण
  • Documentation

एल्गोरिदम के लक्षण

एल्गोरिदम की मुख्य विशेषताएं इस प्रकार हैं -

  • एल्गोरिदम में एक विशिष्ट नाम होना चाहिए

  • एल्गोरिदम में इनपुट और आउटपुट का स्पष्ट रूप से परिभाषित सेट होना चाहिए

  • एल्गोरिदम असंदिग्ध संचालन के साथ सुव्यवस्थित हैं

  • एल्गोरिदम समय की एक सीमित मात्रा में रुकते हैं। एल्गोरिदम को अनंत के लिए नहीं चलना चाहिए, अर्थात, एक एल्गोरिथ्म को किसी बिंदु पर समाप्त होना चाहिए

स्यूडोकोड

Pseudocode सादे पाठ के साथ जुड़े अस्पष्टता के बिना एक एल्गोरिथ्म का एक उच्च-स्तरीय विवरण देता है, लेकिन एक विशेष प्रोग्रामिंग भाषा के सिंटैक्स को जानने की आवश्यकता के बिना भी।

एल्गोरिथ्म को मौलिक कार्यों के एक सेट के रूप में दर्शाने के लिए स्यूडोकोड का उपयोग करके रनिंग टाइम को अधिक सामान्य तरीके से अनुमानित किया जा सकता है जिसे तब गिना जा सकता है।

एल्गोरिथ्म और स्यूडोकोड के बीच अंतर

एक एल्गोरिथ्म कुछ विशिष्ट विशेषताओं के साथ एक औपचारिक परिभाषा है जो एक प्रक्रिया का वर्णन करता है, जिसे एक विशिष्ट कार्य करने के लिए ट्यूरिंग-पूर्ण कंप्यूटर मशीन द्वारा निष्पादित किया जा सकता है। आम तौर पर, कंप्यूटर विज्ञान में किसी भी उच्च स्तरीय कार्य का वर्णन करने के लिए "एल्गोरिथ्म" शब्द का उपयोग किया जा सकता है।

दूसरी ओर, स्यूडोकोड एक अनौपचारिक और (अक्सर अल्पविकसित) मानव एल्गोरिदम का पठनीय विवरण होता है, जिससे इसके कई बारीक विवरण निकलते हैं। स्यूडोकोड लिखने में शैलियों का कोई प्रतिबंध नहीं है और इसका एकमात्र उद्देश्य एल्गोरिदम के उच्च स्तर के चरणों का प्राकृतिक भाषा में बहुत यथार्थवादी तरीके से वर्णन करना है।

उदाहरण के लिए, प्रविष्टि सॉर्ट के लिए एक एल्गोरिथ्म निम्नलिखित है।

Algorithm: Insertion-Sort 
Input: A list L of integers of length n  
Output: A sorted list L1 containing those integers present in L 
Step 1: Keep a sorted list L1 which starts off empty  
Step 2: Perform Step 3 for each element in the original list L  
Step 3: Insert it into the correct position in the sorted list L1.  
Step 4: Return the sorted list 
Step 5: Stop

यहाँ एक छद्म कोड है जो बताता है कि एल्गोरिथ्म सम्मिलन-क्रम में ऊपर वर्णित उच्च स्तरीय अमूर्त प्रक्रिया को और अधिक यथार्थवादी तरीके से कैसे वर्णित किया जा सकता है।

for i <- 1 to length(A) 
   x <- A[i] 
   j <- i 
   while j > 0 and A[j-1] > x 
      A[j] <- A[j-1] 
      j <- j - 1 
   A[j] <- x

इस ट्यूटोरियल में, एल्गोरिदम को pseudocode के रूप में प्रस्तुत किया जाएगा, जो कि C, C ++, Java, Python, और अन्य प्रोग्रामिंग भाषाओं के कई मामलों में समान है।