किसी समस्या का समाधान Computer द्वारा प्राप्त करने के लिए हमें एक विशेष क्रम में विभिन्न Steps Use करने होते हैं। Steps की एक Well Defined List जिसके आधार पर किसी भी Computer Language में Program Create करके किसी Problem को अच्छी तरीके से Solve किया जा सके, Algorithm कहलाता है।
दूसरे शब्दों में कहें तो हम कह सकते हैं कि किसी समस्या के समाधान के लिए जिन Steps को Use किया जाता है, उन Steps को यदि एक निश्चित क्रम में सरल भाषा में लिख लिया जाए, तो इन Steps की List को Algorithm कहा जा सकता है।
Algorithm का हर Step ये बताता है कि कब और किस काम के बाद क्या काम हो रहा है। यानी Algorithm किसी Problem के Solution का एक Specification होता है जिसके आधार पर किसी समस्या को Solve किया जाता है। किसी Algorithm को सीमित Instructions की एक Sequence के रूप में देखा जा सकता है जिसमें निम्न गुण होते हैं-
- Algorithm शुरू होने से पहले उसे कुछ Initial मान प्रदान किए जाते हैं। इन मानों को Input कहा जाता है और इन्हीं Input पर कोई Algorithm Processing करता है।
- Algorithm के विभिन्न Steps इतने सरल व समझने योग्य होते हैं कि उस Algorithm का प्रयोग करके हम किसी भी Computer Language में उस Algorithm के आधार पर Program Create करके किसी समस्या का समाधान प्राप्त कर सकते हैं।
- Algorithm का हर Step इतना Clear होना चाहिए कि कोई भी व्यक्ति उस Algorithm के आधार पर एक सीमित समय में उस समस्या का समाधान प्राप्त कर ले जिसके लिए Algorithm को लिखा गया है।
- किसी Algorithm द्वारा किसी समस्या के समाधान के लिए लिखे गए सभी Steps एक सीमित समय में पूरे होने चाहिए। कई बार किसी समस्या के समाधान के लिए Repetitive Steps Use किए जाते हैं। ये Steps ऐसे होने चाहिएं कि सीमित समय में समस्या का समाधान प्रदान कर सकें यानी Loop Infinite नहीं होना चाहिए।
- एक Algorithm का कम से कम एक या एक से अधिक Output होना चाहिए। Steps का कोई भी ऐसा समूह जो किसी प्रकार का कोई Result Provide ना करता हो, उसे Algorithm नहीं कहा जा सकता।
Analysis of Algorithm
जब भी हम कोई Algorithm लिखते हैं तो ये जरूरी हो जाता है कि हम ये Analyze करें कि हमारे द्वारा लिखा गया Algorithm कितना Efficient है। Algorithm के Analysis का पहला तरीका ये है कि हम ये Check करें कि Algorithm सही लिखा गया है या नहीं। इसके लिए हमें निम्न काम करने होते हैं-
- Algorithm की Tracing करना। यानी Algorithm के हर Step को Check करना कि जो काम जहां होना चाहिए वह वहीं हो रहा है या नहीं।
- Algorithm की Reading करना। यानी ये पता लगाना कि Algorithm Logically Correct है या नहीं।
- Algorithm की Implementing व Testing करना। यानी Algorithm के आधार पर किसी भी Programming Language में Program बनाना तथा Check करना कि Program सही Output प्रदान कर रहा है या नहीं। या फिर Mathematical Techniques द्वारा Algorithm की Correctness को Prove करना।
Algorithm के Analysis का दूसरा तरीका ये है हम Algorithm को Simplest Form में Create करें। यदि Algorithm को Simplest Form में लिखा गया हो, तो उसे Implement करना यानी उसके आधार पर Program Create करना व उस Algorithm पर अन्य प्रकार के Analysis करना सरल होता है।
फिर भी किसी समस्या को Solve करने के लिए Use किया जाने वाला सरल व साफ-सुथरा तरीका कई बार कुछ ज्यादा अच्छा तरीका नहीं होता है। ऐसा तब होता है जब Use किया जाने वाला सरल व साफ-सुथरा तरीका या तो काफी अधिक Memory का उपयोग करता हो या Solution प्रदान करने में काफी ज्यादा समय लगाता हो। इस स्थिति में ये जरूरी होता है कि ये Analyze किया जाए कि जो Algorithm किसी समस्या के समाधान के लिए लिखा गया है वह कम से कम कितना Time व Space Use करता है।
उदाहरण के लिए, यदि किसी Company में 120 Employees हैं और हर Employee के Record को Memory में Load होने में 3 मिनट लगते हैं तो इस Algorithm को Use नहीं किया जा सकता क्योंकि यदि किसी दिन Company के सभी Employees को Access करना हुआ, तो सभी Employees के Records को Memory में Load होने में ही 4 घण्टे लग जाएंगे, फिर हर Record की Processing में तो और भी अधिक समय लगेगा। इसलिए कोई Algorithm कितना अच्छा है इसे Time व Space के आधार पर ही नापा जा सकता है। (Algorithm Performance Analysis)
ये Article इस वेबसाईट पर Selling हेतु उपलब्ध EBook Data Structure and Algorithms in Hindi से लिया गया है। इसलिए यदि ये Article आपके लिए उपयोगी रहा, तो निश्चित रूप से ये पुस्तक भी आपके लिए काफी उपयोगी साबित होगी।
Data Structure and Algorithms in Hindi | Page: 433 | Format: PDF