কম্পিউটার প্রোগ্রামিং আর এলগরিদম, একটা আরেকটার পরিপূরক। একটি ছাড়া আরেকটি কল্পনাকরা যায় না। প্রোগ্রামিং এ ভালো দক্ষতার জন্য দরকার এলগরিদম আয়ত্তে আনা। একটি প্রোগ্রাম কত ফাস্ট হবে কত নির্ভুল হবে তার পূরোটাই নির্বর করে একগরিদমের উপর। এ এলগরিদম কে অনেকে আদর করে বলে এলগো.।
এলগরিদম হচ্ছে কোনো একটি কাজ সম্পন্ন করার জন্য কতগুলি সুনির্দিষ্ট ও ধারাবাহিক ধাপের সমষ্টি। অ্যালগোরিদমের একটি শুরু ও শেষ আছে এবং এর ধাপ সংখ্যা অবশ্যই সীমিত হতে হবে। কম্পিউটার,মানুষ, রোবট ইত্যাদি এলগরিদমের ধাপগুলো ধারাবাহিভাবে অনুসরণ করে একটি নির্দিষ্ট কাজ সম্পাদন করতে পারে। মূলত আমরা নিয়মিত যে সকল কাজ করি সব গুলোই এক একটা এলগরিদম। গণিতের এক একটি সমস্যা সমাধানের জন্য আশ্রয় নিতে হয় এক একটি এলগরিদমের। যার এলগরিদম যত সুন্দর হবে তার সমাধান তত ভালো ও নির্ভুল হবে। একটা অংক করার প্রত্যেকটি ধাপ হচ্ছে এলগরিদমের এক একটি ধাপ।
ছোট বেলায় আমরা সবাই গসাগু (গরিষ্ঠ সাধারণ গুণনীয়ক) করা শিখছি। মনে পড়ে? তার জন্য যে আমরা ইউক্লিডীয় পদ্ধতি ব্যবহার করে মান গসাগু নির্নয় করেছি। তার জন্য রয়েছে ইউক্লিডীয় এলগরিদম। গরিষ্ঠ সাধারণ উৎপাদক নির্ণয় করার জন্যে একটি কার্যকর পদ্ধতি হচ্ছে ইউক্লিডীয় এলগরিদম। একে গ্রিক গণিতবিদ ইউক্লিডের নামানুসারে নামকরণ করা হয়েছে। এ এলগরিদম তো সবাই পারেন, তাই না?
কম্পিউটার বিজ্ঞানে বিভিন্ন সমস্যা সমাধানের জন্য সঠিক অ্যালগোরিদম অত্যন্ত গুরুত্বপূর্ণ। একটি এলগরিদমকে সঠিক বলা হয় যদি প্রতিটি ইনপুটের জন্য অ্যালগোরিদমটি সঠিক আউটপুট প্রদর্শন করে। তবে পুরোপুরি নির্ভূল নয় এমন অ্যালগোরিদমও গুরুত্বপূর্ণ হতে পারে যদি ভূলের মাত্রা নিয়ন্ত্রণের মধ্যে রাখা যায়। একটি অ্যালগোরিদমকে যেকোনো ভাষায় বর্ণনা করা যেতে পারে,সে ভাষাটি হতে পারে বাংলা,ইংরেজির মত মানুষের মৌখিক ভাষা,অথবা সি++,জাভার মত প্রোগ্রামিং ভাষা এমনকি হার্ডওয়্যার ডিজাইনের মাধ্যমেও। তবে যে ভাষাতেও লেখা হোক সমস্যা সমাধানের প্রতিটি ধাপের বর্ণনা অ্যালগোরিদমে থাকতে হবে। তবে সাধারনত এলগরিদম গুলো Pseudocode (সুডো-কোড) বা Pidgin code বলে।
প্রত্যেকটি এলগরিদমের একটা শুরু থাকবে এবং একটা শেষ থাকবে। আর এ শুরু থেকে যাওয়ার জন্য এক বা একাদিক পথ থাকতে পারে। আবার একই পথ একাদিক বার ব্যবহার করা যেতে পারে। আর একে বলে লুপিং।
এলগরিদম ছাড়া প্রোগ্রামিং কল্পনা করা যায় না। প্রোগ্রামিং করার জন্য বিভিন্ন এলগরিদমের উপর আপনার ভালো দক্ষতা থাকতে হবে। আর এলগরিদম শিখার জন্য আপানাকে বাছাই করতে হবে ভালো একটা বই। যদি ও আমি ভার্সিটি থেকে এখন ও এলগরিদম কোর্সটা করতে পারি নি। তারপর ও আমাদের ভার্সিটির প্রোগ্রামার ও প্রোগ্রামিং কোচ মুহাম্মদ হেদায়েত ভাইয়ের কল্যানে আমি এলগরিদমের একটি সেরা বইয়ের সাথে পরিচিত হতে পেরেছি। সাথে পরিচিত হতে পেরেছি কিছু এলগরিদমের সাথে।
বইটি হচ্ছে Thomas Cormen এর Introduction to Algorithms, উনার কাছ থেকে শুনার পর নীলক্ষেত থেকে বইটি কিনে আনলাম। নাহ! আপনাদের কিনতে হবে না। আমাদের আরেক স্যারের কল্যানে এর সর্বশেষ এডিশন শেয়ার করতে পারব। স্যার আমাদেরকে বইটির একটি পিডিএফ কপি দিয়েছে।
Download link: Introduction to Algorithms 3rd Edition. Size: 5.36MB
যারা প্রোগামিং করেন বা করতে চান তাদের কাজে আসবে আশা করি। আর এর পাশা পাশি পড়ার জন্য আরেকটি শেরা বই হচ্ছে সেরা কম্পিউটার বিজ্ঞানী Donald Knuth এর
The Art of Computer Programming। লিঙ্কে ক্লিক করে ডাউনলোড করে নিতে পারবেন। আর আমি এখন ও ভালোভাবে কিছুই জানি না এলগরিদম সম্পর্কে। বইটি কিনছি একবছর আগে জানার চেষ্টা করছি। দোয়া করবেন যেন কিছু শিকতে পারি।
YouTube এ এলগরিদমের উপর অনেক ভিডিও আছে আপনারা প্রয়জনীয় এলগরিদমের টা সার্চ করে দেখতে পারেন। আর আগে আমি কিছু ভিডিও শেয়ার করছিলাম, তা পাবেন নিচের টুইটেঃ
- শিখতে চান নাকি এলগরিদম?তাহলে এখুনি চলে আসুন
- http://en.wikipedia.org/wiki/Algorithm এলগরিদমকে জানার জন্য উইকিপিডিয়ার এ লিঙ্কটি যঠেষ্ট পরিপূর্ন মনে হয়েছে।
No comments:
Post a Comment