অ্যালগরিদম
গণনার পদ্ধতি বিশেষ / From Wikipedia, the free encyclopedia
গণিত এবং কম্পিউটার বিজ্ঞানের আলোচনায় কলনবিধি বা ইংরেজি ভাষায় অ্যালগরিদম (Algorithm) বলতে একটি সুনির্দিষ্ট পদ্ধতিকে বোঝায়, যেটি কম্পিউটারে বাস্তবায়নযোগ্য ও সুনির্দিষ্ট ক্রমে বিন্যস্ত নির্দেশের সমষ্টি, যে নির্দেশগুলিকে ধাপগুলো অনুসরণ করে কোনও সুসংজ্ঞায়িত পরিগণনামূলক সমস্যার সমাধান করা হয়।[1][2] অন্যভাবে বললে, কলনবিধি বা অ্যালগোরিদম হচ্ছে ধাপে ধাপে সমস্যা সমাধানের পদ্ধতি বিশেষ। অর্থাৎ একটি সমস্যাকে সীমিত সংখ্যক কয়েকটি ধাপে ভেঙে প্রত্যেকটি ধাপ পরপর সমাধান করে সমগ্র সমস্যা সমাধান করা হয়। পরিগণক যন্ত্র (কম্পিউটার), রোবট, এমনকি মানুষও কলনবিধি বা অ্যালগোরিদমের ধাপগুলি ধারাবাহিকভাবে অনুসরণ করে একটি নির্দিষ্ট কাজ সম্পাদন করতে পারে। পরিগণক বিজ্ঞানের (কম্পিউটার বিজ্ঞান) বিভিন্ন সমস্যা সমাধানের জন্য সঠিক কলনবিধি বা অ্যালগোরিদমের ধারণাটি অত্যন্ত গুরুত্বপূর্ণ। কলনবিধি বা অ্যালগরিদমগুলি পরিগণনা (কম্পিউটেশন), উপাত্ত প্রক্রিয়াজাতকরণ (ডেটা প্রসেসিং), স্বয়ংক্রিয় যুক্তি, স্বয়ংক্রিয় সিদ্ধান্ত গ্রহণ এবং অন্যান্য কার্য সম্পাদনের জন্য বিনির্দেশ (স্পেসিফিকেশন specification) হিসেবে ব্যবহৃত হয়।
একটি কলনবিধি বা অ্যালগোরিদমকে যেকোনও ভাষায় বর্ণনা করা যেতে পারে, সে ভাষাটি হতে পারে বাংলা, ইংরেজির মত মানুষের মৌখিক ভাষা,অথবা সি++ বা জাভার মত প্রোগ্রাম (পূর্বলিখিত নির্দেশক্রম) রচনার ভাষা। এমনকি যন্ত্রাংশসামগ্রী (হার্ডওয়্যার) নকশাকরণের মাধ্যমেও এটি বর্ণনা করা যেতে পারে। তবে যে ভাষাতেই লেখা হোক না, সমস্যা সমাধানের প্রতিটি ধাপের বর্ণনা কলনবিধি বা অ্যালগোরিদমে থাকতে হবে।
পরিগণক বিজ্ঞান তথা কম্পিউটার বিজ্ঞানের সমস্ত ক্ষেত্রে যেমন উপাত্তাধার (ডেটাবেজ), চিত্রলিখন (গ্রাফিক্স), জালিকায়ন (কম্পিউটার নেটওয়ার্কিং), পরিচালক ব্যবস্থা (অপারেটিং সিস্টেম), কম্পিউটার নিরাপত্তা, কৃত্রিম বুদ্ধিমত্তা, ইত্যাদিতে কলনবিধি বা অ্যালগোরিদম নির্মাণ ও বিশ্লেষণ একটি মৌলিক কর্মকাণ্ড। অ্যালগোরিদম নির্মাণ এবং প্রোগ্রাম (পূর্বলিখিত নির্দেশক্রম) রচনার মধ্যে পার্থক্য আছে। কলনবিধি বা অ্যালগোরিদম নির্মাণের সময় কোনও পরিগণনামূলক সমস্যা সমাধানের উদ্দেশ্যে লভ্য সমস্ত বিকল্প ঠিকমতো বোঝা অত্যাবশ্যক। অর্থাৎ কোনও নির্দিষ্ট সমাধানের জন্য কী যন্ত্রাংশসামগ্রী (হার্ডওয়্যার) ব্যবহৃত হবে, নেটওয়ার্ক তথা জালিকাব্যবস্থাটি কী রকম, কোন্ ভাষায় প্রোগ্রাম রচিত হবে, কর্মদক্ষতার উপরে কী কী সীমাবদ্ধতা বিদ্যমান, এই সব কিছু বিবেচনায় রাখতে হয়। কোনও অ্যালগোরিদম যদি কোনও সমস্যাকে পূর্ণাঙ্গরূপে এবং দক্ষভাবে সমাধান করতে পারে, তাহলে সেটিকে "সঠিক" বিবেচনা করা হয়। অ্যালগোরিদমগুলি প্রবিষ্ট উপাত্ত (ইনপুট) ও বহির্গত উপাত্তের (আউটপুট) মাধ্যমে কাজ করে। প্রবিষ্ট উপাত্তের উপরে কলনবিধি বা অ্যালগোরিদমের প্রতিটি ধাপ ধারাবাহিকভাবে প্রয়োগ করা হয় এবং সবশেষে বহির্গত উপাত্ত ফলাফল হিসেবে প্রকাশিত হয়। একটি কলনবিধি বা অ্যালগোরিদমকে তখনই "সঠিক" বলা হয় যদি প্রতিটি প্রবিষ্ট উপাত্তের জন্য কলনবিধি বা অ্যালগোরিদমটি সঠিক বহির্গত উপাত্ত উৎপাদন করে। তবে পুরোপুরি নির্ভুল নয় এমন কলনবিধি বা অ্যালগোরিদমও গুরুত্বপূর্ণ হতে পারে, যদি ভুলের মাত্রা নিয়ন্ত্রণের মধ্যে রাখা যায়।
ইংরেজি "অ্যালগরিদম" শব্দটি ৯ম শতাব্দীর মুসলিম গণিতবিদ মুসা আল খোয়ারিজমি-র নাম থেকে এসেছে।[3][4][5]
কলনবিধি বা অ্যালগোরিদমের বিপরীত ধারণাটি হল আবিষ্করণী পদ্ধতি (Heuristic হিউরিস্টিক), যা হল অতীত অভিজ্ঞতার মূল্যায়নের নিরিখে প্রয়াস ও প্রমাদের (trial and error) মধ্য দিয়ে আরোহী যুক্তিবিন্যাসের মাধ্যমে সমস্যা সমাধানের একটি পদ্ধতি; এটি সম্পূর্ণরূপে নির্দিষ্ট না-ও হতে পারে কিংবা সঠিক বা সর্বোত্তম ফলাফলের নিশ্চয়তা না-ও দিতে পারে (বিশেষ করে সেইসব সমস্যাক্ষেত্রে যেখানে কোন সুনির্দিষ্ট সঠিক বা সর্বোত্তম ফলাফল নেই)।[6]