অ্যালগরিদম

ডেটা স্ট্রাকচার: XOR লিংকড লিস্ট

XOR বাইনারি অপারেশনটা দিয়ে বেশ মজার মজার সব কাজ করা যায় যেগুলো প্রথম দেখায় ম্যাজিকের মত মনে হয়, কিন্তু একটু ভিতরের দিকে তাকালেই বোঝা যায় কি হচ্ছে। যেমন ধরা যাক গেম থিওরির কথা, তোমরা যারা নিম গেমের সাথে পরিচিত তারা জান যে কিভাবে শুধু XOR অপারেশন দিয়ে বের করে ফেলা যায় খেলায় কে জিতবে বা হারবে। প্রোগ্রামিং কনটেস্টে XOR রিলেটেড প্রবলেম খুবই কমন, আমি নিজেই বেশ কিছু কনটেস্টে এধরণের প্রবলেম সেট করেছি। আজকে দেখাবো কিভাবে XOR  ব্যবহার করে লিংকড লিস্টের মেমরি কমিয়ে ফেলা যায়। বাস্তবে তুমি কখনোই হয়তো এরকম লিংকড লিস্ট লিখবে না, কিন্তু এই লেখাটা পড়ার পর XOR  এর প্রোপার্টিগুলোর ব্যবহার নিয়ে তোমার ধা...
Read More

ব্যাকএন্ড ইঞ্জিনিয়ারিং: এল-আর-ইউ ক‍্যাশ

আজকে আমরা জানবো ক‍্যাশিং কি এবং এল-আর-ইউ ক‍্যাশ কিভাবে কাজ করে। তুমি যদি ক‍্যাশিং সম্পর্কে আগে থেকেই জানো তাহলে প্রথম অংশটা দ্রুত পড়ে পরের অংশে চলে যেতে পারো। ধরা যাক তুমি একটি অ‍্যান্ড্রয়েড অ‍্যাপ তৈরি করছো। অ‍্যাপের ইউজারদের তুমি ৩টা রকমের লেভেল অ‍্যাসাইন করেছো, প্লাটিনাম, গোল্ড আর সিলভার। যখনই কোনো ইউজার অ‍্যাপ চালু করে তখনই তোমার ডেটাবেসে ইউজারের লেভেল চেক করতে হয়। তোমার অ‍্যাপ এ ইউজার আছে এক লাখ এবং প্রতি ঘন্টায় কয়েক হাজার ইউজার অ‍্যাপটি ব‍্যবহার করে। একসময় তুমি দেখলে ডাটাবেজের রিকুয়েস্ট খুব বেশি বেড়ে যাচ্ছে এবং পেজ লোড স্লো হয়ে যাচ্ছে। এই সমস‍্যার সমাধান হলো কিছু ইউজারের ...
Read More

অয়লার ট্যুর (ফ্লিরি এবং হেয়ারহজলার অ্যালগরিদম)

আমরা অনেকেই জানি অয়লার সার্কিট/পাথ কী এবং গ্রাফে অয়লার সার্কিট/পাথ আছে নাকি সেটা কিভাবে বের করতে হয়, কিন্তু গ্রাফে যদি অয়লার সার্কিট/পাথ থেকে থাকে তাহলে সেটা কিভাবে খুজে বের করা যায় সেটা অনেকেই জানিনা। আজকে আমরা সেটাই শিখবো। অয়লার সার্কিট এবং পাথ কী সেটা একটু মনে করা নেয়া যাক। অয়লার সার্কিট হলো গ্রাফের এমন একটা পাথ যেটা যে নোডে শুরু হয়েছে সে নোডেই শেষ হয়েছে কিন্তু প্রতিটি এজ ঠিক একবার ব্যবহার করেছে। আর অয়লার পাথ হলো গ্রাফে এমন একটি পাথ যেটা যেকোনো একটি নোডে শুরু হয়ে অন্য একটি নোডে শেষ হয়েছে কিন্তু প্রতিটি এজ ঠিক একবার ব্যবহার করেছে। একটি ডিরেক্টেড গ্রাফে অয়লার সার্কিট থাকব...
Read More

অ্যালগরিদম গেম থিওরি – ১

আমরা বাস্তবে যে সব খেলাধুলা করি সেগুলোতে আমরা খেলার শুরুতেই বলে দিতে পারি না কে খেলাতে জিতবে, আমরা এটাও ধরে নিতে পারি না যে সব খেলোয়াড়ই সবসময় সেরা চাল দিবে। এছাড়া অনেক খেলায় ভাগ্যেরও সহায়তা দরকার হয়। যেমন তাস খেলায় আমরা জানি না প্রতিপক্ষের কাছে কি কি কার্ড আছে, বা লুডু খেলায় আমরা জানি না ছক্কা বা ডাইস এ কখন কোন সংখ্যাটা আসবে। এই সিরিজে সময় আমরা মূলত মাত্র এমন সব গেম নিয়ে কাজ করবো যার নিচের বৈশিষ্ট্যগুলো আছে: ১. গেমের বোর্ড, চাল ইত্যাদি সম্পর্কে পূর্নাঙ্গ তথ্য আমাদের কাছে আছে, প্রতিপক্ষ কি অবস্থায় আছে সেটাও আমরা জানি। ২. খেলায় কোনো ভাগ্যের সহায়তা দরকার হয় না। ৩. খেলা শেষে কেও একজন ...
Read More