ডেটা স্ট্রাকচার এবং অ্যালগরিদম হলো সফটওয়্যার ডেভেলপমেন্টের ফান্ডামেন্টাল বিষয়। ডেটা স্ট্রাকচার এবং অ্যালগরিদমগুলো অধ্যয়নের জন্য অনেক চিন্তা করার ক্ষমতা এবং মস্তিষ্কের ব্যায়াম প্রয়োজন। Google, Amazon, Microsoft, ইত্যাদির মতো অনেক বড় টেক জায়ান্টস প্রতিষ্ঠান থেকে শুরু করে নতুন উদীয়মান স্টার্টআপ যেমন Zomato, Swiggy, ইত্যাদি, সকলেরই ডেটা স্ট্রাকচার এবং অ্যালগরিদমের উপর ভিত্তি করে ইন্টারভিউ রাউন্ড রয়েছে ৷ যেহেতু ডেটা স্ট্রাকচার এবং অ্যালগরিদম এত গুরুত্বপূর্ণ, শুধুমাত্র নিয়োগের প্রক্রিয়ার জন্য নয় বরং একজন ডেভেলপারের সমস্যা সমাধানের দক্ষতার বিকাশের জন্যও, তাই সেগুলো অধ্যয়নের জন্য সেরা রিসোর্সগুলো সম্পর্কে জানা খুবই গুরুত্বপূর্ণ। এই ডিসকাশনটি ডেটা স্ট্রাকচার এবং অ্যালগরিদমের সেরা কিছু বইয়ের উপর আলোকপাত করে।
ডেটা স্ট্রাকচার এবং অ্যালগরিদমের জন্য সেরা বই
এখানে আমাদের কাছে কিছু সেরা বইয়ের একটি তালিকা রয়েছে যা আপনি ডেটা স্ট্রাকচার এবং অ্যালগরিদম স্টাডি করতে এবং কন্সেপ্টগুলোর গভীরে যেতে এবং সেগুলো নিজে অনুভব করতে ব্যবহার করতে পারেন। বইগুলো কোনো নির্দিষ্ট ক্রমে সাজানো হয় নি (সর্বোত্তম থেকে সর্বনিম্ন বা তদ্বিপরীত)। শুধুমাত্র বিভিন্ন প্রয়োজনের জন্য, এটিকে ১০টি সমান লেভেলের ভালো বই হিসাবে ভাবুন।
1. Introduction to Algorithms
Writers: Thomas H. Cormen, Charles E. Leiserson, Ronald L. Rivest and Clifford Stein.
এবাউট দ্যা বুক: এই বইটিকে প্রায়ই অ্যালগরিদমের বাইবেল বলা হয়। বইটিতে ডায়নামিক প্রোগ্রামিং, গ্রিডি মেথডস, বিভিন্ন উন্নত গ্রাফ অ্যালগরিদম এবং এমনকি মাল্টিথ্রেড অ্যালগরিদম, নাম্বার থিওরির সাথে সম্পর্কিত অ্যালগরিদম এমন আরও অনেকগুলো বিখ্যাত অ্যালগরিদম রয়েছে।
বইটি CLRS Book on Algorithms নামে বিখ্যাত।
যাইহোক, এই বইটি বিগিনার-ফ্রেন্ডলি নয়। সুতরাং, আপনি যদি ডেটা স্ট্রাকচার এবং অ্যালগরিদমের জগতে একজন সম্পূর্ণ বিগিনার হন, তবে এই বইটি আপনার জন্য সঠিক নাও হতে পারে তবে এটি আপনার ভবিষ্যতে পড়ার জন্য সত্যিই একটি ভালো বই। এমনকি কলেজ এবং বিশ্ববিদ্যালয়েও বইটি রেকমেন্ড করা হয়। এটি অবশ্যই অ্যালগরিদমের জন্য সেরা বইগুলোর মধ্যে একটি।
রেকমেন্ডেশন : অ্যারে, স্ট্রিংস, লিঙ্কড লিস্ট, স্ট্যাক এবং কিউ এর মতো বেসিক ডেটা স্ট্রাকচারের উপর ভালো দখল থাকার পরে এবং অ্যালগরিদম সম্পর্কে সঠিক ধারণা (শুধুমাত্র বেসিক লেভেল) থাকলে এই বইটি পড়া উচিত।
2. Data Structures and Algorithms Made Easy
Writer: Narsimha Karumanchi
এবাউট দ্যা বুক: Data structures and Algorithms Made Easy, by Narsimha Karumanchi, ডেটা স্ট্রাকচার এবং অ্যালগরিদমগুলির উপর একটি খুবই বিখ্যাত বই। এই বইটি একটি বিগিনার-ফ্রেন্ডলি বই। যদি কেউ ডেটা স্ট্রাকচার এবং অ্যালগরিদমগুলো বেসিক লেভেল থেকে একটি ডিসেন্ট লেভেলে সহজ উপায়ে এবং ভাষায় শিখতে চান, তবে এই বইটি আপনার জন্য। এই বইটিতে বিগিনার লেভেল টপিক যেমন ইন্ট্রোডাকশন টু ডাটা স্ট্রাকচারস এবং বিভিন্ন ডাটা স্ট্রাকচার যেমন লিঙ্কড লিস্ট, স্ট্যাক এবং কিউসহ কিছু অ্যাডভান্সড এবং ইন-ডেপ্থ টপিক যেমন গ্রাফ অ্যালগরিদম, ডায়নামিক প্রোগ্রামিং অ্যালগরিদম, গ্রিডি অ্যালগরিদম এবং আরও অনেক বিষয় কভার করা হয়েছে। এই বইয়ের প্রোগ্রামগুলো, সি প্রোগ্রামিং ল্যাঙ্গুয়েজে দেওয়া আছে।
রেকমেন্ডেশন: এই বইটি এমন যা যেকোনো ব্যক্তির জন্য রেকমেন্ড করা হয়, যারা প্রোগ্রামিং কনসেপ্টগুলো জানার জন্য বেসিক লেভেল বা ইন্টারমিডিয়েট লেভেলে রয়েছেন কারণ এটি যেকোনো বিষয়ের স্ক্র্যাচ থেকে শুরু করে ডিপ এবং অ্যাডভান্সড কনসেপ্টগুলোর ওপর আপনার আন্ডারস্ট্যান্ডিং তৈরি করবে।
3. Algorithms
Writers: Robert Sedgewick and Kevin Wayne
এবাউট দ্যা বুক: এই বইটি জাভা প্রোগ্রামারদের জন্য টপ রেকমেন্ডেশনগুলোর মধ্যে একটি। এটি জাভাতে ডেটা স্ট্রাকচার এবং অ্যালগরিদমের বেসিক বিষয়গুলো কভার করে একটি ডিসেন্ট লেভেল পর্যন্ত। বইটিতে বিভিন্ন ফান্ডামেন্টাল টপিক এবং ইন্ট্রোডাকশন টু ডাটা স্ট্রাকচার্স এবং জাভা ব্যবহার করে কিছু অ্যাডভান্সড গ্রাফ অ্যালগরিদম, স্ট্রিং ম্যাচিং অ্যালগরিদম, নেটওয়ার্ক ফ্লো, রিডাকশন ইত্যাদির মতো বিভিন্ন অ্যালগরিদম কভার করা হয়েছে। এটি বিশেষ করে জাভা প্রোগ্রামারদের জন্য হাইয়েস্ট-রেটেড বইগুলোর মধ্যে একটি কারণ কিছু লিমিটেড হাই-কোয়ালিটি বই রয়েছে যা ডেটা স্ট্রাকচার এবং অ্যালগরিদম সম্পর্কে গভীর জ্ঞান প্রদান করে এবং এর জন্য জাভা ব্যবহার করে।
রেকমেন্ডেশন: কনসেপ্টগুলো গভীরভাবে অধ্যয়ন করার জন্য এই বইটিকে একটি রিসোর্স হিসাবে ব্যবহার করার জন্য রেকমেন্ড করা হয়; তবে এটি প্র্যাকটিসের জন্য যথেষ্ট নয়। জাভা প্রোগ্রামারদের অবশ্যই এই বইটি ব্যবহার করা উচিত কারণ এটি জাভাতে ডিএসএ শেখার জন্য একটি ভালো রিসোর্স।
4. Grokking Algorithms
Writer: Aditya Bhargava
এবাউট দ্যা বুক: আপনি যদি একজন পাইথন প্রোগ্রামার হন এবং চিন্তিত হন যে পাইথনে ডেটা স্ট্রাকচার এবং অ্যালগরিদম শেখায় এমন কোনও বই নেই কেন, তাহলে এখন আর চিন্তার কারণ নেই। এই বইটি পাইথন প্রোগ্রামিং ল্যাঙ্গুয়েজ ব্যবহার করে ডেটা স্ট্রাকচার এবং অ্যালগরিদমের ফান্ডামেন্টাল বিষয়গুলো শেখায়। এই বইটি গ্রিডি অ্যালগরিদম, ডাইনামিক প্রোগ্রামিং, ইত্যাদি বিষয়গুলোর মতো বেসিক টপিকগুলো কভার করে৷ এই বইটির পার্থক্যকারী ফ্যাক্টর যা এটিকে অনেক আকর্ষণীয় করে তোলে তা হলো ডায়াগ্রাম এবং সমস্ত বিষয়ের প্রতি বইটির ইন্টারেক্টিভ এপ্রোচ। চিত্রগুলো হ্যান্ডমেড কার্টুন অঙ্কনের মতো দেখায় যা একে অপরের সাথে যোগাযোগ করে এবং সম্পূর্ণ কনসেপ্টটি সহজেই ব্যাখ্যা করে।
রেকমেন্ডেশন: এটি একটি সম্পূর্ণ কোর্সবুক নয়। এর মানে হলো, যে বিষয়গুলো কভার করা হয়েছে সেগুলো সম্পূর্ণরূপে ইন্টারেক্টিভ ব্যাখ্যা দিয়ে কভার করা হয়েছে তবে কভার করা বিষয়গুলোর সংখ্যা কম। এটি CLRS বইয়ের মতো সম্পূর্ণ নির্দেশিত পথ হিসাবে ব্যবহার করা যাবে না তবে এটি একটি রেফারেন্স বই হিসাবে ব্যবহার করা যেতে পারে। এই বইটি, ইন্টারেক্টিভ উপায়ে অধ্যয়ন করার জন্য রেকমেন্ড করা হয়।
5. The Algorithm Design Manual
Writer: Steven S. Skiena
এবাউট দ্যা বুক: আপনি বিভিন্ন অনলাইন প্ল্যাটফর্মে বিভিন্ন অ্যালগরিদম ডিজাইন কোর্স দেখেছেন। এই বইটি প্রায় সমস্ত কোর্সের রেফারেন্স হিসাবে কাজ করে। এই বইটিতে বেসিক ডেটা স্ট্রাকচার থেকে শুরু করে অ্যাডভান্সড টপিক যেমন ইন্টারঅ্যাক্টেবল প্রব্লেম, হার্ড গ্রাফ প্রব্লেম, কম্বিনেটরিক্সের উপর ভিত্তি করে প্রব্লেম ইত্যাদির মতো বিভিন্ন বিষয় রয়েছে। বেশিরভাগ প্রব্লেমের জন্য সিউডো-কোড রয়েছে যার সাথে সি প্রোগ্রামিং ল্যাঙ্গুয়েজের মিল রয়েছে। বইটি বিভিন্ন ধরণের বিষয় কভার করে এবং এটি খুব প্রাথমিক স্তরের (বিগিনার-ফ্রেন্ডলি) বই নয়।
রেকমেন্ডেশন: এই বইটি অতো বিগিনার -ফ্রেন্ডলি বা বেসিক বই নয়। এটি অ্যাডভান্সড টপিকগুলো কভার করে এবং সেগুলো যেভাবে তুলে ধরা হয় তা একজন বিগিনারের জন্য বোঝা সহজ নয়। যাইহোক, এটি যেকোনো ইন্টারমিডিয়েট লেভেলের প্রোগ্রামারের জন্য একটি খুব ভালো রিসোর্স এবং এমনকি আপনার কোর্সবুক হিসাবেও ব্যবহার করা যেতে পারে এই বইটি। কম্পিউটেশনাল জিওমেট্রির মতো ম্যাথেমেটিক্যালি অ্যাডভান্সড টপিকগুলোর জন্য আলাদা অধ্যায় সহ প্রচুর হাই-লেভেলের কনসেপ্টগুলো বইটিতে কভার করা হয়েছে। তাই, এটি সেই প্রোগ্রামারদের জন্য একটি অ্যাডভান্সড লেভেলের বই যারা কনসেপ্টগুলর গভীরে যেতে এবং কিছু অ্যাডভান্সড সমস্যা সমাধানের কৌশলও শিখতে আগ্রহী।
6. Algorithms in a Nutshell
Writers: George T. Heineman, Gary Pollice and Stanley Selkow
এবাউট দ্যা বুক: জাভা, সি, সি++ এবং পাইথন প্রোগ্রামারদের জন্য ডেটা স্ট্রাকচার এবং অ্যালগরিদম শেখার জন্য এটি সেরা বইগুলোর মধ্যে একটি। বইটিতে উপরে বর্ণিত সমস্ত প্রোগ্রামিং ভাষার জন্য ইমপ্লিমেন্টেশন টিপস (শুধুমাত্র টিপস পুরো কোড নয়) রয়েছে। প্রধানত, প্রোগ্রামগুলো সি প্রোগ্রামিং ল্যাঙ্গুয়েজে লেখা। ডায়াগ্রাম ব্যবহার করে অ্যালগরিদমগুলোর সঠিক ড্রাই-রানের সাথে ব্যাখ্যাগুলো খুব ভালো, কনসেপ্টগুলো স্পষ্টভাবে ব্যাখ্যা করার জন্য অনেক জায়গায় ইউএমএল ডায়াগ্রামও ব্যবহার করা হয়। এই বইটি নতুন এবং ইন্টারমিডিয়েট প্রোগ্রামার উভয়েই অধ্যয়ন করতে পারে। বইটি ৪টি অংশে বিভক্ত যা খুব বেসিক বিষয়গুলোকে কভার করে যেমন সার্চিং এবং সর্টিং বেসিক অ্যালগরিদম থেকে অ্যাডভান্সড টপিক যেমন নেটওয়ার্ক ফ্লো অ্যালগরিদম, কম্পিউটেশনাল জিওমেট্রি ইত্যাদি।
রেকমেন্ডেশন: এই বইটি বিগিনারদের পাশাপাশি ইন্টারমিডিয়েট প্রোগ্রামারদের জন্যও রেকমেন্ড করা হয় যাদের প্রোগ্রামিংয়ে ভালো দখল আছে। নিট এবং অর্গানাইজড ডায়াগ্রামের সাহায্যে অ্যালগরিদমের অনেকগুলো ড্রাই রান সহ কনসেপ্টগুলো একটি ক্রিস্টাল-ক্লিয়ার উপায়ে ব্যাখ্যা করা হয়েছে। সামগ্রিকভাবে, এই বইটি রেফার করা প্রোগ্রামারদের জন্য একটি ভালো এক্সপেরিয়েন্স।
7. Introduction to Algorithms: A Creative Approach
Writer: Udi Manber
এবাউট দ্যা বুক: এটি এমন প্রোগ্রামারদের জন্য একটি অ্যাডভান্সড লেভেলের বই যারা ইতিমধ্যেই ডেটা স্ট্রাকচার এবং অ্যালগরিদম জানেন এবং অ্যালগরিদম ডিজাইনের গাণিতিক দিকটি গভীরভাবে দেখতে চান৷
রেকমেন্ডেশন: বইটি তার লেভেলে বেশ অ্যাডভান্সড। নতুন বা ইন্টারমিডিয়েট প্রোগ্রামারদের এই বইটি রেফার করা উচিত না কারণ এতে অ্যালগরিদমগুলো সম্পর্কে প্রচুর গাণিতিক দিক রয়েছে। এই বইটি যে বেশ অ্যাডভান্সড তা একটি সাধারণ উদাহরণ দিয়ে বুঝানো যেতে পারে যে শুধুমাত্র ১টি অধ্যায় রয়েছে যেখানে সমস্ত ডেটা স্ট্রাকচার কভার করা হয়েছে। এটি ব্যবহারকারীর আগ্রহের উপর ভিত্তি করে রেকমেন্ড করা হয়। যদি কেউ অ্যালগরিদমগুলো কীভাবে ডিজাইন করা হয় তার গভীর গাণিতিক বিশ্লেষণ করতে চান, এই বইটি আপনার জন্য। যাইহোক, যদি আপনি শুধুমাত্র একটি কোডিং ইন্টারভিউয়ের জন্য প্রস্তুতি নিচ্ছেন তবে এই বইটি রেকমেন্ডেড না।
~ এখন, আসুন কিছু বই দেখি যা জাভা, সি++ এবং পাইথন প্রোগ্রামিং ল্যাঙ্গুয়েজের জন্য নির্দিষ্ট।
8. Data Structures and Algorithms in Java
Writer: Robert Lafore
এবাউট দ্যা বুক: এটি জাভাতে ডেটা স্ট্রাকচার অধ্যয়নের জন্য একটি বই। হ্যাঁ, নামটি ডেটা স্ট্রাকচার এবং অ্যালগরিদম কিন্তু বইটি প্রাথমিকভাবে শুধুমাত্র ডেটা স্ট্রাকচারগুলোতে ফোকাস করে৷ এটি বেসিক অ্যারে, স্ট্রিংস, এমনকি C++ প্রোগ্রামারদের জন্য জাভা থেকে শুরু করে গ্রাফ, হ্যাশ-টেবিল, রেড-ব্ল্যাক ট্রিস, 2-3-4 ট্রি ইত্যাদির মতো কিছু অ্যাডভান্সড ডেটা স্ট্রাকচার পর্যন্ত; বিভিন্ন বিষয় কভার করে।
রেকমেন্ডেশন: এটি নতুনদের জন্য একটি হাইলি রেকমেন্ডেড বই যারা জাভা প্রোগ্রামিং ল্যাঙ্গুয়েজের বেসিকগুলো শেখার পরে ডাটা স্ট্রাকচার এবং অ্যালগরিদম দিয়ে শুরু করছেন। বইটি আপনাকে জাভাতে প্রচুর ডেটা স্ট্রাকচার এবং তাদের ইমপ্লিমেন্টেশনের ব্যাপারে গাইড করবে তার সাথে দেখাবে জাভাতে ইন্টার্নালি কীভাবে তাদের ইমপ্লিমেন্টে করা হয়।
দ্রষ্টব্য: এই বইটিতে জাভা অ্যাপলেট প্রোগ্রামিং ব্যবহার করে ডেটা স্ট্রাকচারের গ্রাফিকাল উপস্থাপনা (GUI) এর জন্য অনেকগুলো কোডও থাকবে। এই অ্যাপলেট প্রোগ্রামিং পুরানো এবং পাঠকদের অবশ্যই এর সাথে সম্পর্কিত সমস্ত প্রোগ্রাম এবং কনসেপ্ট উপেক্ষা করতে হবে।
9. Problem-Solving with Algorithms and Data Structures using Python
Writers: Bradley N. Miller and David L. Ranum
এবাউট দ্যা বুক: “Problem-Solving with Algorithms and Data Structures using Python” বইটি ডেটা স্ট্রাকচার এবং অ্যালগরিদমে নতুনদের জন্য একটি খুব বেসিক লেভেলের বই। এই বইটিতে কভার করা বিষয়গুলোর পরিসর খুব বিস্তৃত নয়, তবুও তারা পাইথন প্রোগ্রামারদের ডিএসএ এবং সমস্যা সমাধানের একটি ভালো ভূমিকা দেয়। রিকার্শন, ট্রি এবং তাদের অ্যালগরিদম এবং লিঙ্কড লিস্ট, স্ট্যাক এবং কিউ এর মতো বেসিক ডেটা স্ট্রাকচারের বিষয়গুলো এই বইটিতে কভার করা হয়েছে।
রেকমেন্ডেশন: এটি ডেটা স্ট্রাকচার এবং অ্যালগরিদমগুলো আয়ত্ত করার জন্য কোনো বই নয়, এটি পাইথন প্রোগ্রামিং এবং পাইথনের ডেটা স্ট্রাকচারগুলোকে সুনির্দিষ্ট হওয়ার জন্য আরও বেশি ফোকাস করে৷ বিগিনাররা এটি ব্যবহার করতে পারে তাদের ভিত্তি মজবুত করতে, যারা বর্তমানে পাইথন প্রোগ্রামিং শিখছে এবং ইতিমধ্যেই ল্যাঙ্গুয়েজ ছাড়াও পাইথনের কিছু বেসিক ডেটা স্ট্রাকচার শিখেছে।
10. Data Structures and Algorithms in C++
Writer: Adam Drozdek
এবাউট দ্যা বুক: এই বইটি ডেটা স্ট্রাকচার এবং এমনকি কিছু পরিমাণে C++ প্রোগ্রামিং ল্যাঙ্গুয়েজে অ্যালগরিদমের উপর ফোকাস করে। এটি C++-এ স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরির (STL) কনসেপ্ট দিয়ে শুরু করে এবং অনেকগুলো মৌলিক ডেটা স্ট্রাকচার যেমন লিঙ্কড লিস্ট, স্ট্যাক এবং কিউ, ট্রি ইত্যাদির সাথে কিছু অ্যাডভান্সড ডেটা স্ট্রাকচার যেমন মাল্টিওয়ে ট্রি (M-way trees) গ্রাফ, ইত্যাদি ব্যাখ্যা করে। বইটিতে কিছু মৌলিক ডেটা কম্প্রেশন অ্যালগরিদম থেকে কিছু অ্যাডভান্সড স্ট্রিং ম্যাচিং অ্যালগরিদমও রয়েছে।
রেকমেন্ডেশন: এই বইটি C++-এ নতুন এবং ইন্টারমিডিয়েট প্রোগ্রামার উভয়েই ব্যবহার করতে পারে। স্ট্যান্ডার্ড টেমপ্লেট লাইব্রেরি (STL) কনসেপ্টগুলো শিখতে এটি একটি ভালো রিসোর্স। আবার, এটি সবকিছু (অ্যালগরিদমের দৃষ্টিকোণ থেকে) কভার করে না যেমন ডায়নামিক প্রোগ্রামিং, ডিভাইড অ্যান্ড কনক্যুয়ার, গ্রিডি স্ট্রাটেজি ইত্যাদি। তাই, এই বইটি একটি ভালো রিসোর্স এবং রেফারেন্স বই কিন্তু কোর্সবুক হিসেবে এটির উপর সম্পূর্ণরূপে নির্ভর না করার পরামর্শ দেওয়া হয়।
সুতরাং, এগুলো ছিল ডেটা স্ট্রাকচার এবং অ্যালগরিদমের উপরে কিছু টপ-রেইটেড এবং রেকমেন্ডেড বই। এখন আপনার কোন বই পড়া উচিত? এটি সম্পূর্ণরূপে আপনার বর্তমান লেভেল এবং প্রোগ্রামিংয়ের জ্ঞান এবং আপনার আগ্রহের উপর নির্ভর করে।
কনক্লুশন
একটি জিনিস যা আমরা পরামর্শ দিতে পারি তা হলো একবারে একটি বইয়ের সাথে লেগে থাকুন এবং প্রচুর বই কেনা এবং পড়ার জন্য আপনার অর্থ ও সময় নষ্ট করবেন না কারণ এটি কেবল বিভ্রান্তি এবং বিশৃঙ্খলা বাড়ায়।