আমরা ভূতে বিশ্বাসী নাহ ভূত বলতেও কিছু নাই । কিন্তু ডাটা স্ট্রাকচার ও অ্যালগরিদম নামটা শুনলেই কেমন জানি ভেতরে ভেতরে একটা ভয় কাজ করে । তখন হয়তো অনেকেরই মনে হয় যে ভূত বলতে কিছু একটা আছে ।
যাই হোক ডাটা স্ট্রাকচার ও অ্যালগরিদম নামের ভয়ংকর ভূতটা কম্পিউটার প্রোগ্রামিং এর একটি গুরুত্বপূর্ণ অংশ । যে প্রোগ্রামিং করে কিন্তু ডাটা স্ট্রাকচার ও অ্যালগরিদম জানে নাহ তাকে উদ্দেশ্য করেই বলা হয়েছে যে, Without the knowledge of data structures and algorithms, you will be only a monkey coder, nothing else.
ডাটা স্ট্রাকচার(Data Structure) -
এটি একটি পদ্ধতি যার সাহায্যে কম্পিউটার মেমোরিতে নির্দিষ্ট উপায়ে ডাটাকে সাজানো এবং সংরক্ষণ করা হয়। আমরা তো অ্যারে এবং অবজেক্ট ডাটা স্ট্রাকচারের ব্যাবহার জানি । যখনই আমাদের একটু বেশি ডাটা নিয়ে কাজ করার দরকার পরেছে তখনই আমরা অ্যারে এবং অবজেক্টের ব্যাবহার করেছি ।
কিন্তু যখন অনেক অনেক বেশি ডাটা নিয়ে কাজ করার দরকার পরবে তখন আমাদের আলাদাভাবে ডাটা সংরক্ষণ এবং সাজাতে হবে । এবং ডাটার মাঝে সম্পর্ক তৈরি করে বিভিন্ন অপারেশনের ব্যবস্থা করতে হবে আর এই জন্যই আমাদের ডাটা স্ট্রাকচারের ব্যাবহার ভালোভাবে জানতে হবে ।
তাছাড়াও কোনো একটা প্রোগ্রাম ডিজাইনের জন্যও ডাটা স্ট্রাকচার(Data Structure) প্রধান বিষয় তখন আমাদের জানতে হবে যে কোন ডাটা স্ট্রাকচার টি ব্যাবহার করতে হবে।
বিভিন্ন ধরনের ডাটা স্ট্রাকচার(Data Structure) -
বিভিন্ন ধরনের অ্যাপ্লিকেশনের উপর নির্ভর করে ডাটা স্ট্রাকচার(Data Structure) এর শ্রেনীবিভাগ করা হয়েছে । ডাটা স্ট্রাকচার(Data Structure) কে প্রধানত ২ ভাগে ভাগ করা হয়েছে ।
- প্রিমিটিভ ডাটা স্ট্রাকচার(Data Structure)
- নন-প্রিমিটিভ ডাটা স্ট্রাকচার(Data Structure)
প্রিমিটিভ ডাটা স্ট্রাকচার(Data Structure) গুলো হইলো -
- string
- boolean
- number (integer, float)
- null
- undefined
- symbol
ইত্যাদি ।
- নন-প্রিমিটিভ ডাটা স্ট্রাকচার(Data Structure) - আবার দুইভাবে বিভক্ত ,
১। লিনিয়ার ডাটা স্ট্রাকচার(Data Structure)
১। নন - লিনিয়ার ডাটা স্ট্রাকচার(Data Structure)
১। লিনিয়ার ডাটা স্ট্রাকচার(Data Structure) -
যেসব ডাটা-স্ট্রাকচারে ডাটা গুলো একটি নির্দিষ্ট সিকুয়েন্সিয়াল(sequential) অর্ডারে(order) থাকে অর্থাৎ ডাটা সমূহ নির্দিষ্ট ভাবে সাজানো গোছানো অবস্থায় রাখা হয় তাকেই লিনিয়ার ডাটা স্ট্রাকচার(Data Structure) বলে।
যেমন -
1. অ্যারে(array)
2. লিংকড লিস্ট(linked list)
3. স্ট্যাক(stack)
4. কিউ(queue)
২। নন-লিনিয়ার ডাটা স্ট্রাকচার(Data Structure) -
যেসব ডাটা-স্ট্রাকচারে ডাটা গুলো কোনো নির্দিষ্ট সিকুয়েন্সিয়াল(sequential) অর্ডারে(order) থাকে নাহ অর্থাৎ ডাটা সমূহ এলোমেলো ভাবে থাকে তাকেই নন-লিনিয়ার ডাটা স্ট্রাকচার(Data Structure) বলে।
যেমন -
1. ট্রি(tree)
2. গ্রাফ(graph)
ডাটা অপারেশন ইন ডাটা স্ট্রাকচার(Data Structure) -
কোনো ডাটা স্ট্রাকচার(Data Structure) ইমপ্লিমেন্ট বা ব্যাবহার করতে বিভিন্ন ধরনের অপারেশনের প্রয়োজন হতে পারে তার মধ্যে কিছু কমন অপারেশন গুলো হলো -
- ট্রাভার্সিং (traversing) - কোনো রের্কডকে একবার এক্সেস এবং প্রসেস করাকে ট্রাভারসিং (traversing) বলে ।
- সার্চিং (searching) - কোনো ডাটা স্ট্রাকচার থেকে নির্দিষ্ট আইটেমকে খুজে বের করাকে সার্চিং (searching) বলে।
- ইনসার্টিং (inserting) - কোনো ডাটা স্ট্রাকচারে নতুন আইটেম যুক্ত করাকে ইনসার্টিং (inserting) বলে ।
- ডিলিটিং (delteting) - কোনো ডাটা স্ট্রাকচার থেকে রিমুভ করাকে ডিলিটিং (delteting) বলে ।
- সর্টিং (sorting) - ডাটাসমূহকে মানের ক্রমানুসারে সাজানোকে সর্টিং বলে ।
অ্যালগরিদম (algorithm) -
অ্যালগরিদম হচ্ছে সমস্যা সমাধানের সুনির্দিষ্ট এবং ধারাবাহিক কিছু ধাপ । যে ধাপগুলো অনুসরণ করে একটি নির্দিষ্ট সমস্যা সমাধান করা হয় ।
যেমন ধরুন আজ দুপুরে আপনি খিচুরি রান্না করতে চাচ্ছেন কিন্তু খিচুরি কিভাবে রান্না করতে হয় আপনি জানেন নাহ তাই যে পারে তার থেকে আপনি একটি রেসিপি নিলেন নিচের মতো -
১। শুরু
২। প্রথমে মুগ ডাল সামান্য ভেজে নিয়ে পানিতে ধুয়ে ফেলুন এবং চাল ও মুশরী ডালের সাথে মিশিয়ে নিন।
৩। চাল ও ডাল গুলো মিশিয়ে ভাল করে ধুয়ে নিয়ে পানি ঝরিয়ে নিন এবং এর পর মুল রান্নায় নেমে পড়ুন।
৪। এখন তেল গরম করে তাতে এলাচি ও দারুচিনি দিন।
৫। এবার পেঁয়াজ কুঁচি ও কাঁচা মরিচ দিন। (কাঁচা মরিচ তেলে ফুটে উঠে তাই সাবধানে বা চিরে দিতে পারেন ।
৬। এবার আদা, রসুন, মরিচ গুড়া ও হলুদ গুড়া দিয়ে দিন। এই সময়ে এক চা চামচ লবন দিন। (রঙ বেশি কড়া চাইলে সামান্য হলুদ বেশি দিতে পারেন।
--------------
--------------
--------------
*। শেষ
উপরের রেসিপি অনুযায়ী আপনাকে খিচুরি রান্না করতে হবে । একটি স্টেপ যদি আপনি বাদ দেন অথবা উলটা পাল্ট করে করেন তাহলে কিন্তু আর খিচুরি হবে নাহ । অর্থাৎ একটা নিদিষ্ট সমস্যাকে সমাধান করার জন্য, নিদিষ্ট কিছু নিয়মকানুন বা ধাপ অনুসরণ করতে হয়।
তবে একটা কথা বলে রাখা ভালো যে, একটি সমস্যা অনেক ভাবেই সমাধান করা যায়। তাই কোনো সমস্যার অ্যালগরিদম অনেক ভাবেই থাকতে পারে কিন্তু সেই অ্যালগরিদমটি যেনো ঠিকঠাক ভাবে কাজ করে ।
আর্টিকেলটি শেষ করার পূর্বে চলুন দুটি সংখ্যার যোগফল নির্ণয়ের অ্যালগরিদম কিভাবে লিখতে হয় তা শিখি -
আজকে এই পর্যন্তই আশা করি বুঝতে পারছেন । অ্যালগরিদম নিয়ে ডেডিকেটেড একটা আর্টিকেল থাকবে সেখানে আরও অনেক কিছু শিখতে পারবেন ইনশাল্লাহ ।
--------------------------------
# Data structures and algorithms
# dsa tutorial
# data structures and algorithms in javascript(js)
awesome dude! keep it up.
ReplyDeleteThank you dude
DeleteShakil bro apni ki js diye data structures and algorithms implement kore dekhacchen?
ReplyDeletehae vai js diye DSA er temon resource nai banglai. tai vablam somoy er fake fake e bisoye ektu likha-likhi kora jak.
DeleteNice explanation
ReplyDeleteThank you vai @Ataur rahman
DeleteThank you so much for your nice tune...
ReplyDeleteWelcome vai
DeleteThanks a lot vai
ReplyDeleteWell written and very engaging.
ReplyDelete