অ্যালগরিদম

গণনার পদ্ধতি বিশেষ

গণিত এবং কম্পিউটার বিজ্ঞানের আলোচনায় নির্দেশক্রম বা ইংরেজি ভাষায় অ্যালগরিদম (Algorithm) বলতে একটি সুনির্দিষ্ট পদ্ধতিকে বোঝায়, যেটি কতগুলি সসীমসংখ্যক, সুসংজ্ঞায়িত, পরিগণক যন্ত্রে (কম্পিউটারে) বাস্তবায়নযোগ্য ও সুনির্দিষ্ট ক্রমে বিন্যস্ত নির্দেশের সমষ্টি, যে নির্দেশগুলিকে ধাপে ধাপে অনুসরণ করে কোনও সুসংজ্ঞায়িত পরিগণনামূলক সমস্যা বা সমস্যার শ্রেণীকে সমাধান করা হয়।[১][২] পরিগণক বিজ্ঞান তথা কম্পিউটার বিজ্ঞানের সমস্ত ক্ষেত্রে যেমন উপাত্তাধার, চিত্রলিখন, জালিকায়ন, পরিচালক ব্যবস্থা, নিরাপত্তা, কৃত্রিম বুদ্ধিমত্তা, ইত্যাদিতে নির্দেশক্রম বা অ্যালগোরিদম নির্মাণ ও বিশ্লেষণ একটি মৌলিক কর্মকাণ্ড। নির্দেশক্রম বা অ্যালগোরিদম নির্মাণ এবং পূর্বলিখিত নির্দেশক্রম (প্রোগ্রাম) রচনার মধ্যে পার্থক্য আছে। নির্দেশক্রম নির্মাণের সময় কোনও পরিগণনামূলক সমস্যা সমাধানের উদ্দেশ্যে লভ্য সমস্ত বিকল্প ঠিকমতো বোঝা অত্যাবশ্যক। অর্থাৎ কোনও নির্দিষ্ট সমাধানের জন্য কী যন্ত্রাংশসামগ্রী ব্যবহৃত হবে, জালিকাব্যবস্থাটি কী রকম, কোন্‌ ভাষায় প্রোগ্রাম রচিত হবে, কর্মদক্ষতার উপরে কী কী সীমাবদ্ধতা বিদ্যমান, এই সব কিছু বিবেচনায় রাখতে হয়। কোনও নির্দেশক্রম যদি কোনও সমস্যাকে পূর্ণাঙ্গরূপে এবং দক্ষভাবে সমাধান করতে পারে, তাহলে সেটিকে "সঠিক" বিবেচনা করা হয়। নির্দেশক্রমগুলি প্রবিষ্ট উপাত্ত ও বহির্গত উপাত্তের মাধ্যমে কাজ করে। প্রবিষ্ট উপাত্তের (ইনপুট) উপরে নির্দেশক্রমের প্রতিটি ধাপ ধারাবাহিকভাবে প্রয়োগ করা হয় এবং সবশেষে বহির্গত উপাত্ত (আউটপুট) ফলাফল হিসেবে প্রকাশিত হয়। একটি নির্দেশক্রমকে তখনই "সঠিক" বলা হয় যদি প্রতিটি প্রবিষ্ট উপাত্তের জন্য নির্দেশক্রমটি সঠিক বহির্গত উপাত্ত উৎপাদন করে। তবে পুরোপুরি নির্ভুল নয় এমন নির্দেশক্রম বা অ্যালগোরিদমও গুরুত্বপূর্ণ হতে পারে, যদি ভুলের মাত্রা নিয়ন্ত্রণের মধ্যে রাখা যায়।

এটা একটি অ্যালগরিদম যা একটি বন্ধ বাতি কিভাবে কাজ করবে তা দেখাচ্ছে
১৫৯৯ এবং ৬৫০ এর গরিষ্ঠ সাধারণ গুণ্নীয়ক (গসাগু) খুঁজে পেতে ইউক্লিড অ্যালগরিদমের একটি গ্রাফিক্যাল বিবরণ

ইংরেজি "অ্যালগরিদম" শব্দটি এসেছে ৯ম শতাব্দীর মুসলিম গণিতবিদমুসা আল খারিজমী’-এর নাম থেকে।[৩][৪][৫] অন্য ভাষায় নির্দেশক্রম বা অ্যালগোরিদম হচ্ছে ধাপে ধাপে সমস্যা সমাধানের পদ্ধতি বিশেষ। অর্থাৎ একটি সমস্যাকে সীমিত সংখ্যক কয়েকটি ধাপে ভেঙ্গে প্রত্যেকটি ধাপ পরপর সমাধান করে সমগ্র সমস্যা সমাধান করা হয়। পরিগণক যন্ত্র (কম্পিউটার), রোবট, এমনকি মানুষও নির্দেশক্রম বা অ্যালগোরিদমের ধাপগুলি ধারাবাহিকভাবে অনুসরণ করে একটি নির্দিষ্ট কাজ সম্পাদন করতে পারে। কম্পিউটার বিজ্ঞানে বিভিন্ন সমস্যা সমাধানের জন্য সঠিক নির্দেশক্রম বা অ্যালগোরিদমের ধারণাটি অত্যন্ত গুরুত্বপূর্ণ।

একটি নির্দেশক্রম বা অ্যালগোরিদমকে যেকোনও ভাষায় বর্ণনা করা যেতে পারে, সে ভাষাটি হতে পারে বাংলা, ইংরেজির মত মানুষের মৌখিক ভাষা,অথবা সি++ বা জাভার মত প্রোগ্রাম (পূর্বলিখিত নির্দেশক্রম) রচনার ভাষা। এমনকি যন্ত্রাংশসামগ্রী (হার্ডওয়্যার) নকশাকরণের মাধ্যমেও এটি বর্ণনা করা যেতে পারে। তবে যে ভাষাতেই লেখা হোক না, সমস্যা সমাধানের প্রতিটি ধাপের বর্ণনা নির্দেশক্রম বা অ্যালগোরিদমে থাকতে হবে।


নির্দেশক্রম রচনার শর্তসম্পাদনা

নির্দেশক্রম বা অ্যালগরিদম রচনার জন্য ৪টি উপযুক্ত শর্ত রয়েছে। এগুলো হল:

  1. নির্দেশক্রম বা অ্যালগরিদম সহজবোধ্য হবে।
  2. প্রত্যেকটি ধাপ স্পষ্ট হবে, যাতে সহজে বোঝা যায়; কোন ধাপই দ্ব্যর্থবোধক হবে না।
  3. সসীমসংখ্যক ধাপে সমস্যার সমাধান করতে হবে। কম্পিউটারের ক্ষেত্রে সীমাবদ্ধ সময়েই সমাধান পাওয়া যাবে।
  4. ব্যাপকভাবে প্রয়োগ করা সম্ভব হবে।

[৬]

শ্রেণীকরণসম্পাদনা

উদাহরণসম্পাদনা

নির্দেশক্রম বা অ্যালগরিদমের উদাহরণসম্পাদনা

অন্যতম সহজ একটি নির্দেশক্রম বা অ্যালগরিদম হলো, অনির্দিষ্ট ক্রমে থাকা একগুচ্ছ সংখ্যা থেকে সবচেয়ে বড় সংখ্যাটি খুঁজে বের করা। এর সমাধানের জন্য সংখ্যার তালিকায় থাকা সকল সংখ্যাকে দেখতে হয়। এ থেকে সহজ একটি নির্দেশক্রম বা অ্যালগরিদম তৈরি হয়, যাকে ভাষায় বললে কিছুটা এরকমঃ

  1. যদি তালিকায় কোনো সংখ্যা না থাকে তবে এতে কোনো সবচেয়ে বড় সংখ্যা নেই।
  2. ধরে নেয়া যাক, তালিকার প্রথম সংখ্যাটিই সবচেয়ে বড় সংখ্যা।
  3. বাকি অন্যান্য সংখ্যার জন্যঃ যদি সংখ্যাটি এখন পর্যন্ত পাওয়া সবচেয়ে বড় সংখ্যার চেয়ে বড় হয়, তবে এই সংখ্যাটিকেই সবচেয়ে বড় সংখ্যা হিসেবে বিবেচনা করি।
  4. যদি তালিকায় যাওয়ার মতো আর কোনো সংখ্যা না থাকে, তবে এখন পর্যন্ত পাওয়া সবচেয়ে বড় সংখ্যাটিই তালিকার সবচেয়ে বড় সংখ্যা।

নিচে উপর্যুক্ত নির্দেশক্রম বা অ্যালগরিদমের ছদ্মসংকেত (সিউডোকোড) দেয়া হলো, এটি যেকোনো উচ্চতর প্রোগ্রামিং ভাষার কাছাকাছি তবে কোনো প্রোগ্রামিং ভাষা নয়।

  Input: A list of numbers L.
  Output: The largest number in the list L.
  if L.size = 0 return null
  largestL[0]
  for each item in L, do
    if item > largest, then
      largestitem
  return largest

তথ্যসূত্রসম্পাদনা

  1. "The Definitive Glossary of Higher Mathematical Jargon — Algorithm"Math Vault (ইংরেজি ভাষায়)। ২০১৯-০৮-০১। ফেব্রুয়ারি ২৮, ২০২০ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০১৯-১১-১৪ 
  2. "Definition of ALGORITHM"Merriam-Webster Online Dictionary (ইংরেজি ভাষায়)। ফেব্রুয়ারি ১৪, ২০২০ তারিখে মূল থেকে আর্কাইভ করা। সংগ্রহের তারিখ ২০১৯-১১-১৪ 
  3. "Al-Khwarizmi biography"www-history.mcs.st-andrews.ac.uk 
  4. "Etymology of algorithm"Chambers Dictionary। সংগ্রহের তারিখ ডিসেম্বর ১৩, ২০১৬ 
  5. Brezina, Corona (২০০৬)। Al-Khwarizmi: The Inventor Of Algebra। The Rosen Publishing Group। আইএসবিএন 978-1-4042-0513-0 
  6. Introduction To Algorithms: Thomas H. Cormen, Charles E. Leiserson, Ronald Rivest, and Clifford Stein.(Third Edition)

বহিঃসংযোগসম্পাদনা