ডেটা স্ট্রাকচার ও অ্যালগরিদম শব্দকোষ — ১১২৮টি শব্দের সহজ বাংলা মানে
Data Structures & Algorithms Glossary in Bangla — every technical term from the course, with pronunciation and a plain Bangla explanation.
কোর্সের প্রতিটি পর্বে যে ইংরেজি শব্দগুলো এসেছে — pointer, stack — সবগুলো এখানে এক জায়গায়। প্রতিটির পাশে বাংলা উচ্চারণ, সহজ মানে আর কোন পর্বে বিস্তারিত শিখবেন, তার লিংক।
মোট ১১২৮টি শব্দ
#
- 0-1 BFSজিরো-ওয়ান বিএফএস
- edge-এর ওজন শুধু 0 বা 1 হলে deque দিয়ে সবচেয়ে ছোট পথ খোঁজা: ওজন 0-এর প্রতিবেশী সামনে, ওজন 1-এর প্রতিবেশী পেছনে রাখা হয়। সময় O(V + E), Dijkstra-র চেয়ে দ্রুত।যেখানে শিখবেন: পর্ব ৪০পর্ব ৪৩পর্ব ৪৪
- 1-based indexingওয়ান-বেসড ইনডেক্সিং
- অ্যারের প্রথম ঘরকে 0 নয়, 1 নম্বর ধরা; Fenwick tree-তে বাধ্যতামূলক, কারণ lowbit(0) = 0 হওয়ায় index 0 থেকে লুপ এগোয় নাযেখানে শিখবেন: পর্ব ৩৬পর্ব ৩৯
- 1-treeওয়ান-ট্রি
- একটি বিশেষ শহর (ধরুন 1) বাদে বাকি শহরগুলোর minimum spanning tree, আর তার সাথে শহর 1-এর দুটি সবচেয়ে সস্তা edge; প্রতিটি tour একটি 1-tree, তাই সবচেয়ে হালকা 1-tree-র ওজনের চেয়ে কোনো tour ছোট নয়।যেখানে শিখবেন: পর্ব ৫৭
- 2-3 treeটু-থ্রি ট্রি
- যে search tree-র প্রতিটি node-এ ১ বা ২টি key (২ বা ৩টি সন্তান) থাকে আর সব leaf একই গভীরতায়; left-leaning red-black tree-র সাথে এক-এক সম্পর্কে মেলে।যেখানে শিখবেন: পর্ব ২৯পর্ব ৩০
- 2-3-4 treeটু-থ্রি-ফোর ট্রি
- যে search tree-র প্রতিটি node-এ ১, ২ বা ৩টি key (তাই ২, ৩ বা ৪টি সন্তান) থাকে আর সব leaf একই গভীরতায় থাকে; চতুর্থ ক্রমের B-tree. প্রতিটি red-black tree আসলে একটি 2-3-4 tree-র binary রূপ।যেখানে শিখবেন: পর্ব ২৯পর্ব ৩০
- 2-edge-connected componentটু-এজ-কানেক্টেড কম্পোনেন্ট
- সব bridge মুছে ফেলার পর যে connected component-গুলো থাকে; এদের ভেতরে যেকোনো একটি edge ভাঙলেও সবাই যুক্ত থাকে। vertex-গুলো এই দলে ভাগ হয়।যেখানে শিখবেন: পর্ব ৪৬
- 2-optটু-অপ্ট
- TSP-এর local search move: tour-এর দুটি edge সরিয়ে মাঝের অংশটি উল্টে দিয়ে অন্যভাবে জোড়া লাগানো, যদি তাতে মোট দৈর্ঘ্য কমে। সমতলে (Euclidean দূরত্বে) দুটি edge পরস্পর কাটলে (crossing) এই move সবসময় দৈর্ঘ্য কমায়যেখানে শিখবেন: পর্ব ৬৫
- 2-SATটু-স্যাট
- এমন boolean সূত্রের সমাধান খোঁজা, যার প্রতিটি শর্তে (clause) বড়জোর দুটি literal-এর OR; implication graph-এর SCC দিয়ে O(n + m) সময়ে সমাধান হয়।যেখানে শিখবেন: পর্ব ৪৬পর্ব ৬৫
- 2D array (matrix)টু-ডি অ্যারে
- সারি আর কলামে সাজানো array, যেমন m[i][j]; মেমরিতে কিন্তু এটিও একটি লম্বা একমাত্রিক সারি হিসেবেই থাকে।যেখানে শিখবেন: পর্ব ১০পর্ব ৩৯
- 2D Fenwick treeটু-ডি ফেনউইক ট্রি
- Fenwick tree-র ভেতরে Fenwick tree: গ্রিডের ঘর আপডেট আর বাঁ-ওপরের কোণ থেকে আয়তক্ষেত্রের যোগফল দুটিই O(log n · log m)-এ, জায়গা Θ(nm)যেখানে শিখবেন: পর্ব ৩৬
- 2D prefix sum (summed-area table)টু-ডি প্রিফিক্স সাম, সামড-এরিয়া টেবিল
- গ্রিডের প্রতিটি অবস্থানে বাঁ-ওপরের পুরো আয়তক্ষেত্রের যোগফল রাখা টেবিল; চারটি কোণার মান থেকে যেকোনো আয়তক্ষেত্রের যোগফল O(1)-এ মেলে। কম্পিউটার ভিশনে একে integral image বলে।যেখানে শিখবেন: পর্ব ১৭পর্ব ৩৬
- 3-SATথ্রি-স্যাট
- এমন CNF সূত্রের satisfiability, যার প্রতিটি clause-এ ঠিক তিনটি literal. এটি NP-complete, আর অনেক reduction-এর শুরুর বিন্দু; ২টি literal-এর 2-SAT কিন্তু polynomial.যেখানে শিখবেন: পর্ব ৬৪পর্ব ৭০
- 3-sumথ্রি-সাম
- এমন তিনটি উপাদান খোঁজার সমস্যা, যাদের যোগফল 0 (বা একটি লক্ষ্য). sort করে প্রতিটি প্রথম উপাদানের জন্য two pointer চালালে O(n²); সত্যিকারের দ্রুততর (O(n^(2−ε))) অ্যালগরিদম জানা নেই।যেখানে শিখবেন: পর্ব ১৬
- 3-way partitionথ্রি-ওয়ে পার্টিশন
- অংশকে pivot-এর চেয়ে ছোট, সমান আর বড় — এই তিন ভাগে এক পাসে সাজানো; সমান অংশ তখনই চূড়ান্ত, তাই অনেক ডুপ্লিকেট থাকলে quick sort অনেক দ্রুত হয়।যেখানে শিখবেন: পর্ব ২২
A
- A* searchএ-স্টার সার্চ
- Dijkstra-র রূপ, যেখানে priority হলো dist[v] + h(v) — এ পর্যন্ত খরচ আর লক্ষ্য পর্যন্ত বাকি পথের অনুমান; Hart, Nilsson ও Raphael, ১৯৬৮.যেখানে শিখবেন: পর্ব ৪৩পর্ব ৫৭
- Abstract data type (ADT)অ্যাবস্ট্র্যাক্ট ডেটা টাইপ
- একটি data structure কোন কাজগুলো করতে পারে তার বর্ণনা, ভেতরে কীভাবে বানানো তা না বলে — যেন রেস্তোরাঁর মেনু, রান্নার রেসিপি নয়।যেখানে শিখবেন: পর্ব ০১পর্ব ১৩পর্ব ১৪
- Abstract syntax tree (AST)অ্যাবস্ট্র্যাক্ট সিনট্যাক্স ট্রি
- কম্পাইলার বা interpreter সোর্স কোড পড়ে যে tree বানায় — প্রতিটি node একটি রাশি, নির্দেশ বা operator; পরের সব ধাপ এই tree-র ওপর traversal করে চলে।যেখানে শিখবেন: পর্ব ২৬
- Accounting method (banker's method)অ্যাকাউন্টিং মেথড
- প্রতিটি কাজের একটি amortized দাম ঠিক করা হয়; আসল খরচের চেয়ে বেশি নিলে বাড়তিটা কয়েন হিসেবে ডেটা স্ট্রাকচারের অংশের গায়ে জমা থাকে, আর পরে দামি কাজ সেই জমা থেকে মেটে। শর্ত: জমা কখনো ঋণাত্মক নয়।যেখানে শিখবেন: পর্ব ৬০পর্ব ৭০
- Ackermann functionঅ্যাকারম্যান ফাংশন
- Wilhelm Ackermann-এর (১৯২৮) দেওয়া একটি গণনাযোগ্য ফাংশন, যা exponential বা tower-এর চেয়েও অকল্পনীয় দ্রুত বাড়ে; সাধারণ নির্দিষ্ট-গভীরতার লুপ দিয়ে একে লেখা যায় না।যেখানে শিখবেন: পর্ব ৩৩
- Activity selection problemঅ্যাক্টিভিটি সিলেকশন
- একটিমাত্র রিসোর্সে (যেমন একটি রুম) পরস্পর না-মেলা সবচেয়ে বেশি সংখ্যক কাজ বা interval বেছে নেওয়ার সমস্যা; একে interval scheduling-ও বলে।যেখানে শিখবেন: পর্ব ৫০পর্ব ৬৯
- Ad hoc problemঅ্যাড হক প্রবলেম
- যে সমস্যা কোনো পরিচিত অ্যালগরিদমের ছাঁচে পড়ে না; সমাধান আসে সমস্যাটির নিজস্ব পর্যবেক্ষণ, ছোট গণিত বা চতুর যুক্তি থেকে।
- Adaptive Huffman codingঅ্যাডাপটিভ হাফম্যান কোডিং
- যে Huffman পদ্ধতিতে encoder আর decoder দুজনেই চলতে চলতে অক্ষর গুনে tree হালনাগাদ করে, তাই আগে frequency জানা বা code table পাঠানো লাগে না — যেমন FGK আর Vitter-এর পদ্ধতি।যেখানে শিখবেন: পর্ব ৫১
- Adaptive sortঅ্যাডাপটিভ সর্ট
- যে সর্টিং ইনপুট আগে থেকে যত বেশি সাজানো, তত কম কাজ করে; যেমন insertion sort-এর সময় Θ(n + I), যেখানে I হলো inversion-এর সংখ্যা।যেখানে শিখবেন: পর্ব ২০পর্ব ২৫
- Adjacency listঅ্যাডজেসেন্সি লিস্ট
- প্রতিটি vertex-এর জন্য তার প্রতিবেশীদের একটি তালিকা; জায়গা Θ(n + m), একটি vertex-এর সব প্রতিবেশী ঘোরা Θ(deg) — বেশিরভাগ গ্রাফ অ্যালগরিদমের ডিফল্ট উপস্থাপন।যেখানে শিখবেন: পর্ব ৩৯পর্ব ৪০পর্ব ৪১
- Adjacency matrixঅ্যাডজেসেন্সি ম্যাট্রিক্স
- n × n অ্যারে, যার ঘর [u][v]-তে লেখা থাকে u থেকে v-তে edge আছে কি না (বা তার ওজন বা সংখ্যা); জায়গা Θ(n²), edge-যাচাই O(1).যেখানে শিখবেন: পর্ব ৩৯পর্ব ৪০পর্ব ৪১
- Adjacent verticesঅ্যাডজেসেন্ট ভার্টিসেস
- যে দুটি vertex-এর মধ্যে সরাসরি একটি edge আছে, তারা পরস্পরের adjacent বা পাশাপাশি; directed গ্রাফে u → v থাকলে v হলো u-এর adjacent.যেখানে শিখবেন: পর্ব ৩৯
- Admissible heuristicঅ্যাডমিসিবল হিউরিস্টিক
- যে heuristic কখনো আসল বাকি দূরত্বের বেশি অনুমান করে না (h(v) ≤ δ(v, t)); এমন h দিলে A* সঠিক সবচেয়ে ছোট পথ দেয়।যেখানে শিখবেন: পর্ব ৪৩পর্ব ৫৭
- Adversarial inputঅ্যাডভারসারিয়াল ইনপুট
- কেউ ইচ্ছা করে অ্যালগরিদমকে সবচেয়ে ধীর বা ভুল করাতে যে ইনপুট বানায়। খোলা সার্ভারে এমন ইনপুটের ঝুঁকি থাকে বলেই worst case গুরুত্বপূর্ণ।যেখানে শিখবেন: পর্ব ০৫পর্ব ২২পর্ব ২৪
- Aggregate methodঅ্যাগ্রিগেট মেথড
- Amortized analysis-এর সরলতম পদ্ধতি: n টি কাজের যেকোনো ক্রমের মোট খরচ T(n)-এর সীমা প্রমাণ করে n দিয়ে ভাগ করা; সব কাজ একই amortized খরচ T(n)/n পায়।যেখানে শিখবেন: পর্ব ৬০পর্ব ৭০
- Aho-Corasick algorithmআহো-করাসিক
- অনেকগুলো pattern একসাথে একটি লেখায় খোঁজার অ্যালগরিদম (Alfred Aho ও Margaret Corasick, ১৯৭৫): pattern-গুলোর trie বানিয়ে তাতে failure link যোগ করে লেখাটি একবার পড়ে।যেখানে শিখবেন: পর্ব ৩১পর্ব ৫৮পর্ব ৫৯
- Akra–Bazzi methodআকরা-বাজ্জি মেথড
- Master theorem-এর সাধারণ রূপ, যা অসমান ভাগের recurrence (যেমন T(n/3) + T(2n/3) + n) সরাসরি সমাধান করে; Mohamad Akra আর Louay Bazzi ১৯৯৮ সালে প্রকাশ করেন।যেখানে শিখবেন: পর্ব ০৮পর্ব ০৯
- Algorithmঅ্যালগরিদম
- একটি সমস্যা সমাধানের সুনির্দিষ্ট, ধাপে ধাপে পদ্ধতি, যা নির্দিষ্ট ইনপুট থেকে সীমিত সংখ্যক ধাপে সঠিক আউটপুট দেয়।যেখানে শিখবেন: পর্ব ০১পর্ব ০২পর্ব ৭০
- All-pairs shortest path (APSP)অল-পেয়ার্স শর্টেস্ট পাথ
- গ্রাফের প্রতিটি জোড়া vertex (i, j)-এর মধ্যে সবচেয়ে কম খরচ বের করার সমস্যা; উত্তর একটি V × V টেবিল। Floyd-Warshall আর Johnson এর প্রচলিত সমাধান।যেখানে শিখবেন: পর্ব ৪৪
- Alphabet size (σ)অ্যালফাবেট সাইজ, সিগমা
- key-তে কতগুলো আলাদা প্রতীক থাকতে পারে: ছোট হাতের ইংরেজিতে ২৬, byte-এ ২৫৬, DNA-তে ৪, bit-এ ২। trie-র প্রতিটি node-এর সর্বোচ্চ σ টি সন্তান।যেখানে শিখবেন: পর্ব ৩১পর্ব ৫৯
- Amortized analysisঅ্যামর্টাইজড অ্যানালাইসিস
- অনেক অপারেশনের একটি পুরো ক্রমের worst-case মোট খরচকে অপারেশনের সংখ্যা দিয়ে ভাগ করে প্রতি অপারেশনের খরচ বের করা। এতে কোনো সম্ভাবনা লাগে না।যেখানে শিখবেন: পর্ব ০৫পর্ব ০৬পর্ব ১০
- Amortized costঅ্যামর্টাইজড কস্ট
- একটি কাজের জন্য হিসাবে ধরা খরচ, যাতে যেকোনো ক্রমে সব কাজের আসল খরচের যোগফল amortized খরচের যোগফলের বেশি না হয়। একটি কাজের আসল খরচ এর চেয়ে বড় হতে পারে, কিন্তু মোট নয়।যেখানে শিখবেন: পর্ব ৬০
- Amplification (by repetition)অ্যামপ্লিফিকেশন
- একটি randomized অ্যালগরিদম স্বাধীনভাবে বারবার চালিয়ে ভুলের সম্ভাবনা কমানো; one-sided ভুল প্রতিবার ≤ 1/2 হলে k বারে ≤ 2^−k.যেখানে শিখবেন: পর্ব ৬১
- Anagramঅ্যানাগ্রাম
- একই অক্ষরগুলো একই সংখ্যায় নিয়ে শুধু ক্রম বদলে বানানো শব্দ, যেমন listen আর silent. পরীক্ষা: দুটির অক্ষর-গণনা হুবহু এক কি না।যেখানে শিখবেন: পর্ব ১১পর্ব ৩২পর্ব ৭১
- Ancestorঅ্যানসেস্টর বা পূর্বপুরুষ
- কোনো node থেকে root-এর দিকে ওঠার পথে যত node পড়ে — parent, parent-এর parent, এভাবে root পর্যন্ত।যেখানে শিখবেন: পর্ব ২৬পর্ব ৩৮পর্ব ৪১
- Andrew's monotone chainমনোটোন চেইন
- A. M. Andrew-এর ১৯৭৯ সালের convex hull অ্যালগরিদম: বিন্দুগুলো (x, y) অনুযায়ী সাজিয়ে বাঁ থেকে ডানে lower hull আর ফিরে upper hull, প্রতিটি একটি stack-এ; Θ(n log n).যেখানে শিখবেন: পর্ব ৬৩
- Anti-hash testঅ্যান্টি-হ্যাশ টেস্ট
- ইচ্ছা করে বানানো এমন ইনপুট, যার key-গুলো একটি নির্দিষ্ট hash table-এর একই bucket-এ পড়ে, ফলে প্রতিটি কাজ O(n) হয়ে সমাধান সময়সীমা পার হয়ে যায়।যেখানে শিখবেন: পর্ব ১৫পর্ব ৩২
- Approximation algorithmঅ্যাপ্রক্সিমেশন অ্যালগরিদম
- কঠিন অপ্টিমাইজেশন সমস্যায় দ্রুত এমন উত্তর দেওয়া অ্যালগরিদম, যা সর্বোত্তমের একটি নির্দিষ্ট গুণের মধ্যে থাকার প্রমাণ আছে — যেমন সর্বোচ্চ ২ গুণ।যেখানে শিখবেন: পর্ব ৪৫পর্ব ৬৫পর্ব ৬৬
- Approximation ratioঅ্যাপ্রক্সিমেশন রেশিও
- একটি সংখ্যা ρ ≥ 1, যা বলে অ্যালগরিদমের উত্তর প্রতিটি ইনপুটে সর্বোত্তম থেকে কত দূরে থাকতে পারে: minimization-এ ALG ≤ ρ · OPT, maximization-এ ALG ≥ OPT / ρ.যেখানে শিখবেন: পর্ব ৬৬পর্ব ৬৯
- APX-hardএপিএক্স-হার্ড
- যে সমস্যায় কোনো একটি ধ্রুবক ratio-র চেয়ে ভালো approximation NP-hard; ফলে P ≠ NP হলে এর কোনো PTAS নেই। যেমন vertex cover, metric TSP, MAX-3SAT.যেখানে শিখবেন: পর্ব ৬৬
- Arbitrageআরবিট্রাজ
- বিনিময় হারের অসঙ্গতি কাজে লাগিয়ে শুধু হাতবদল করে লাভ — যেমন কয়েকটি মুদ্রা ঘুরে আগের চেয়ে বেশি টাকা ফেরত পাওয়া। ওজন −log(হার) নিলে এটি একটি negative cycle.যেখানে শিখবেন: পর্ব ৪৪
- Argsortআর্গসর্ট
- মানগুলো না সরিয়ে তাদের index-গুলো এমনভাবে সাজানো, যাতে সেই index ধরে পড়লে মানগুলো সাজানো ক্রমে আসে; নামটি NumPy-র argsort ফাংশন থেকেযেখানে শিখবেন: পর্ব ২৫পর্ব ৪৫
- Arithmetic codingঅ্যারিথমেটিক কোডিং
- ডেটা সংকোচনের একটি পদ্ধতি, যা পুরো বার্তাকে 0 আর 1-এর মধ্যের একটি ভগ্নাংশে রূপ দেয়; প্রতিটি অক্ষরের জন্য cumulative frequency লাগেযেখানে শিখবেন: পর্ব ৩৬পর্ব ৫১
- Arithmetic seriesঅ্যারিথমেটিক সিরিজ
- সমান্তর ধারা: পরপর পদের পার্থক্য একই। যোগফল = (প্রথম পদ + শেষ পদ) × পদসংখ্যা ÷ ২; যেমন 1 + 2 + … + n = n(n+1)/2যেখানে শিখবেন: পর্ব ০৬পর্ব ১১পর্ব ৬৮
- Arrayঅ্যারে
- একই ধরনের উপাদানের সারি, যা মেমরিতে পাশাপাশি ঘরে রাখা থাকে; index দিয়ে যেকোনো ঘর সরাসরি O(1) সময়ে পড়া বা লেখা যায়।যেখানে শিখবেন: পর্ব ১০পর্ব ১১পর্ব ৭০
- Array rotationঅ্যারে রোটেশন
- array-এর উপাদানগুলোকে চক্রাকারে k ঘর ডানে বা বাঁয়ে সরানো; শেষ প্রান্ত থেকে বেরিয়ে যাওয়া উপাদান অন্য প্রান্তে ফিরে আসে।যেখানে শিখবেন: পর্ব ১০
- Articulation point (cut vertex)আর্টিকুলেশন পয়েন্ট
- undirected গ্রাফের এমন vertex, যেটি (তার সব edge-সহ) সরিয়ে দিলে connected component-এর সংখ্যা বাড়ে। একে cut vertex-ও বলে।যেখানে শিখবেন: পর্ব ৪৬
- ASCIIঅ্যাস্কি
- ১৯৬৩ সালে প্রকাশিত ৭-bit অক্ষর-কোড: ১২৮টি অক্ষর, ইংরেজি বর্ণ, অঙ্ক আর কিছু চিহ্ন। যেমন 'A' = 65, 'a' = 97, '0' = 48.যেখানে শিখবেন: পর্ব ১১পর্ব ২৫পর্ব ৩১
- Assertionঅ্যাসারশন
- কোডের ভেতরে লেখা একটি শর্ত যা ওই জায়গায় সত্য থাকার কথা; মিথ্যা হলে প্রোগ্রাম সঙ্গে সঙ্গে থেমে জানায়; যেমন C++ ও Python-এর assert.যেখানে শিখবেন: পর্ব ০৩
- Assignment problemঅ্যাসাইনমেন্ট প্রবলেম
- n জন কর্মী আর n টি কাজ, প্রত্যেকে ঠিক একটি কাজ পাবেন — মোট খরচ সবচেয়ে কম করার সমস্যা; bitmask DP-তে O(2ⁿ·n), Hungarian algorithm-এ O(n³).যেখানে শিখবেন: পর্ব ৫৫পর্ব ৫৭
- Associative containerঅ্যাসোসিয়েটিভ কনটেইনার
- যে container-এ উপাদান খোঁজা হয় অবস্থান দিয়ে নয়, key দিয়ে — যেমন set, map, unordered_map.যেখানে শিখবেন: পর্ব ১৫পর্ব ২৮পর্ব ২৯
- Associative operationঅ্যাসোসিয়েটিভ অপারেশন
- যে কাজে (x ∘ y) ∘ z = x ∘ (y ∘ z), অর্থাৎ বন্ধনী যেখানেই বসান ফল একই, শুধু বাঁ-ডান ক্রম ঠিক রাখতে হয়; যোগ, গুণ, min, max, gcd আর XOR এর উদাহরণ, বিয়োগ নয়।যেখানে শিখবেন: পর্ব ৩৪পর্ব ৩৭পর্ব ৪৮
- Associativityঅ্যাসোসিয়েটিভিটি
- একই precedence-এর operator পাশাপাশি থাকলে কোন দিক থেকে হিসাব হবে তার নিয়ম: − বাঁ থেকে (8 − 2 − 3 = 3), আর ঘাত (^) সাধারণত ডান থেকে (2^3^2 = 2^9).যেখানে শিখবেন: পর্ব ১৩
- Asymmetric numeral systems (ANS)অ্যাসিমেট্রিক নিউমেরাল সিস্টেমস
- Jarek Duda-র প্রস্তাবিত entropy coding: arithmetic coding-এর মতো ভগ্নাংশ বিটের সংকোচন দেয়, কিন্তু টেবিল দিয়ে প্রায় Huffman-এর গতিতে চলে; Zstandard এটি ব্যবহার করে।যেখানে শিখবেন: পর্ব ৫১
- Asymptotic analysisঅ্যাসিম্পটোটিক অ্যানালাইসিস
- ইনপুটের আকার n খুব বড় হলে অ্যালগরিদমের সময় বা মেমরি কীভাবে বাড়ে, ধ্রুবক গুণক আর ছোট n বাদ দিয়ে সেটি বিশ্লেষণ করার পদ্ধতিযেখানে শিখবেন: পর্ব ০৪
- Augmented data structureঅগমেন্টেড ডেটা স্ট্রাকচার
- পরিচিত কোনো ডেটা স্ট্রাকচারে বাড়তি তথ্য (যেমন subtree-র আকার বা যোগফল) রেখে নতুন প্রশ্নের উত্তর দ্রুত দেওয়ার কৌশল, শর্ত একটাই: প্রতিটি পরিবর্তনে সেই তথ্য সস্তায় হালনাগাদ করা যায়।যেখানে শিখবেন: পর্ব ২৭পর্ব ৩৪পর্ব ৩৮
- Augmenting pathঅগমেন্টিং পাথ
- residual graph-এ source থেকে sink-এর এমন একটি পথ, যার প্রতিটি edge-এ ধনাত্মক residual capacity আছে; এটি দিয়ে মোট প্রবাহ বাড়ানো যায়।যেখানে শিখবেন: পর্ব ৪৭পর্ব ৭০
- Autocompleteঅটোকমপ্লিট
- ব্যবহারকারী পুরো শব্দ লেখার আগেই টাইপ করা prefix দেখে সম্ভাব্য শব্দগুলো দেখানোর সুবিধা — যেমন ফোনের কিবোর্ড বা সার্চ বক্সের পরামর্শ।যেখানে শিখবেন: পর্ব ৩১
- Auxiliary spaceঅক্সিলিয়ারি স্পেস
- ইনপুট নিজে যে জায়গা নেয় তা বাদ দিয়ে অ্যালগরিদমের বাড়তি জায়গা — অস্থায়ী array, ভ্যারিয়েবল আর recursion-এর stack মিলিয়ে।যেখানে শিখবেন: পর্ব ০৫পর্ব ১৩পর্ব ২০
- Avalanche effectঅ্যাভালাঞ্চ এফেক্ট
- ভালো hash-এর গুণ: ইনপুটের একটি মাত্র bit বদলালে আউটপুটের প্রায় অর্ধেক bit বদলে যায়, তাই কাছাকাছি key-রাও দূরে দূরে ছড়ায়।যেখানে শিখবেন: পর্ব ৩২
B
- B* treeবি-স্টার ট্রি
- B-tree-এর রূপ, যেখানে ভরা node ভাগ করার আগে পাশের ভাইয়ের সাথে key ভাগাভাগি করা হয় আর দুটি ভরা node মিলে তিনটি হয়; ফলে প্রতিটি node অন্তত প্রায় দুই-তৃতীয়াংশ ভরা থাকেযেখানে শিখবেন: পর্ব ৩০
- B+ treeবি-প্লাস ট্রি
- B-tree-এর রূপ, যেখানে সব record বা মান শুধু leaf-এ থাকে, internal node-এ থাকে শুধু পথ দেখানোর key, আর leaf-গুলো পাশাপাশি pointer দিয়ে জোড়া — তাই রেঞ্জ খোঁজা খুব দ্রুত; ডেটাবেসের index-এর প্রধান কাঠামোযেখানে শিখবেন: পর্ব ৩০
- B-link treeবি-লিংক ট্রি
- Lehman ও Yao-র (১৯৮১) B+ tree-র রূপ, যেখানে প্রতিটি node-এর ডান ভাইয়ের দিকে একটি বাড়তি pointer থাকে, ফলে অনেক ব্যবহারকারী একসাথে খোঁজা আর ঢোকানো নিরাপদে করতে পারেনযেখানে শিখবেন: পর্ব ৩০
- B-treeবি-ট্রি
- Bayer ও McCreight-এর ভারসাম্যপূর্ণ search tree, যার প্রতিটি node-এ অনেকগুলো key আর সন্তান থাকে আর সব leaf একই গভীরতায়; উচ্চতা খুব কম বলে ডিস্ক-ভিত্তিক ডেটাবেস আর ফাইল সিস্টেমে ব্যবহৃত।যেখানে শিখবেন: পর্ব ২৯পর্ব ৩০পর্ব ৩৮
- Back edgeব্যাক এজ
- DFS-এ এমন edge, যা একটি vertex থেকে তার পূর্বপুরুষে (তখনো ধূসর vertex-এ) যায়, self-loop সহ; directed গ্রাফে back edge থাকা মানেই cycle.যেখানে শিখবেন: পর্ব ৪১পর্ব ৪২পর্ব ৪৬
- Backtrackingব্যাকট্র্যাকিং
- সব সম্ভাবনা রিকার্শন দিয়ে একে একে চেষ্টা করা, কোনো পথ অচল হলে শেষ সিদ্ধান্ত ফিরিয়ে নিয়ে (পিছিয়ে এসে) পরের বিকল্প চেষ্টা করা।যেখানে শিখবেন: পর্ব ০৭পর্ব ৪১পর্ব ৫৬
- Backward analysisব্যাকওয়ার্ড অ্যানালাইসিস
- একটি random প্রক্রিয়ার খরচ শেষ অবস্থা থেকে উল্টো দিকে হেঁটে হিসাব করার কৌশল; skip list-এ খোঁজার পথ উল্টো দিক থেকে দেখলে প্রতিটি ধাপে ওপরে ওঠার সম্ভাবনা p, তাই হিসাব সহজ হয়।যেখানে শিখবেন: পর্ব ৩৮
- Bad character ruleব্যাড ক্যারেক্টার রুল
- Boyer-Moore-এর একটি নিয়ম: অমিল হওয়া text-এর অক্ষরটি pattern-এ সবচেয়ে ডানে কোথায় আছে দেখে pattern-কে সেই পর্যন্ত সরানো; অক্ষরটি pattern-এ না থাকলে পুরো pattern-টাই পার করে লাফ।যেখানে শিখবেন: পর্ব ৫৮
- Balance factorব্যালান্স ফ্যাক্টর
- কোনো node-এর বাঁ subtree-র উচ্চতা থেকে ডান subtree-র উচ্চতা বিয়োগ করে পাওয়া সংখ্যা (কিছু বইয়ে উল্টো চিহ্নে). AVL tree-তে এটি সবসময় −1, 0 বা +1; ±2 হলে rotation দিয়ে সারাতে হয়।যেখানে শিখবেন: পর্ব ২৮পর্ব ৭০
- Balanced parenthesesব্যালান্সড প্যারেনথেসিস
- যে লেখায় প্রতিটি খোলা বন্ধনীর ঠিক একটি করে একই ধরনের বন্ধ বন্ধনী আছে, আর সেগুলো সঠিকভাবে একটির ভেতরে আরেকটি বসানো — যেমন [()] ঠিক, কিন্তু ([)] ভুল।যেখানে শিখবেন: পর্ব ১৩
- Base addressবেস অ্যাড্রেস
- array-এর প্রথম উপাদানের (index 0) মেমরি ঠিকানা; বাকি সব ঘরের ঠিকানা এখান থেকে হিসাব করা হয়: base + i × size.যেখানে শিখবেন: পর্ব ১০
- Base caseবেস কেস
- সবচেয়ে ছোট ইনপুট যেখানে রিকার্শন নিজেকে আর না ডেকে সরাসরি উত্তর দেয়; induction প্রমাণের প্রথম ধাপও এটি।যেখানে শিখবেন: পর্ব ০৩পর্ব ০৭পর্ব ০৮
- Bellman-Ford algorithmবেলম্যান-ফোর্ড অ্যালগরিদম
- সব edge-কে V − 1 বার relax করে একটি উৎস থেকে সবচেয়ে ছোট পথ বের করার অ্যালগরিদম; ঋণাত্মক ওজনেও কাজ করে আর ঋণাত্মক cycle ধরতে পারে, সময় O(VE).যেখানে শিখবেন: পর্ব ৪৩পর্ব ৪৪পর্ব ৬৯
- Benchmarkingবেঞ্চমার্কিং
- প্রোগ্রাম বা অ্যালগরিদম বাস্তবে চালিয়ে সময় বা মেমরি মাপা। নির্ভরযোগ্য ফলের জন্য বারবার চালানো, optimized build আর নানা রকম ইনপুট দরকার।যেখানে শিখবেন: পর্ব ০৫পর্ব ২০
- Bentley–Ottmann algorithmবেন্টলি–অটম্যান অ্যালগরিদম
- Jon Bentley ও Thomas Ottmann-এর ১৯৭৯ সালের sweep line অ্যালগরিদম, যা n টি রেখাংশের সব k টি ছেদবিন্দু O((n + k) log n) সময়ে খুঁজে দেয়।যেখানে শিখবেন: পর্ব ৬৩
- Best caseবেস্ট কেস
- একই আকারের সব ইনপুটের মধ্যে যেটিতে অ্যালগরিদম সবচেয়ে কম সময় নেয়, সেই সময়যেখানে শিখবেন: পর্ব ০৪পর্ব ০৫পর্ব ২০
- Best-first (least-cost, LC) searchবেস্ট-ফার্স্ট সার্চ
- Live node-গুলোকে priority queue-তে রেখে প্রতিবার সবচেয়ে আশাব্যঞ্জক bound-এর node আগে খোলা; Branch and bound-এ একে LC (least cost) search-ও বলে।যেখানে শিখবেন: পর্ব ৫৭
- BFS (breadth-first search)বিএফএস
- গ্রাফ বা গ্রিডে শুরুর node থেকে স্তরে স্তরে খোঁজার পদ্ধতি — আগে সব প্রতিবেশী, তারপর তাদের প্রতিবেশী। কোন node পরে দেখা হবে, তা একটি queue-তে রাখা হয়।যেখানে শিখবেন: পর্ব ১৪পর্ব ২৬পর্ব ৩৯
- BFS treeবিএফএস ট্রি
- BFS শেষে প্রতিটি আবিষ্কৃত vertex থেকে তার parent-এর দিকের edge নিয়ে গড়া tree, যার root উৎস। tree-তে root থেকে প্রতিটি vertex-এর পথই একটি সবচেয়ে ছোট পথ।যেখানে শিখবেন: পর্ব ৪০
- Biconnected component (block)বাইকানেক্টেড কম্পোনেন্ট
- এমন সবচেয়ে বড় উপগ্রাফ, যাতে কোনো articulation point নেই — যেকোনো একটি vertex সরালেও বাকিরা যুক্ত থাকে। edge-গুলো এই block-এ ভাগ হয়; একটি articulation point একাধিক block-এ থাকতে পারে।যেখানে শিখবেন: পর্ব ৪৬
- Bidirectional searchবাইডিরেকশনাল সার্চ
- উৎস থেকে সামনের দিকে আর লক্ষ্য থেকে উল্টো দিকে একসাথে খোঁজা, দুই খোঁজা মিললে থামা; একমুখী খোঁজার চেয়ে অনেক কম vertex দেখতে হয়।যেখানে শিখবেন: পর্ব ৪০পর্ব ৪৩
- Big-O notationবিগ-ও নোটেশন
- ফাংশনের ওপরের সীমা বলার চিহ্ন। f(n) = O(g(n)) মানে কোনো ধ্রুবক c আর n₀-এর পর থেকে সবসময় f(n) ≤ c·g(n), অর্থাৎ f, g-এর চেয়ে দ্রুত বাড়ে নাযেখানে শিখবেন: পর্ব ০১পর্ব ০২পর্ব ০৪
- Big-Omega (Ω)বিগ-ওমেগা
- ফাংশনের নিচের সীমা বলার চিহ্ন। f(n) = Ω(g(n)) মানে কোনো ধ্রুবক c আর n₀-এর পর থেকে সবসময় f(n) ≥ c·g(n)যেখানে শিখবেন: পর্ব ০৪পর্ব ৭০
- Big-Theta (Θ)বিগ-থিটা
- আঁটসাঁট সীমা। f(n) = Θ(g(n)) মানে f একসাথে O(g) আর Ω(g), অর্থাৎ বড় n-এ f আর g একই হারে বাড়ে, শুধু ধ্রুবক গুণকে পার্থক্যযেখানে শিখবেন: পর্ব ০৪পর্ব ০৬পর্ব ০৮
- Bin packingবিন প্যাকিং
- বিভিন্ন আকারের জিনিস সমান ধারণক্ষমতার সবচেয়ে কম সংখ্যক বাক্সে (বা ট্রাকে) ভরার সমস্যা। এটি NP-hard; First Fit Decreasing-এর মতো greedy নিয়ম বাস্তবে খুব কাছাকাছি উত্তর দেয়যেখানে শিখবেন: পর্ব ৬৫
- Binary counterবাইনারি কাউন্টার
- k বিটের একটি অ্যারে, যাকে প্রতিবার INCREMENT করলে নিচের দিকের সব 1 উল্টে 0 হয় আর প্রথম 0-টি 1 হয়। একটি increment-এ k টি flip হতে পারে, কিন্তু n increment-এ মোট flip 2n-এর কম।যেখানে শিখবেন: পর্ব ৬০পর্ব ৬৯পর্ব ৭০
- Binary exponentiation (fast power)বাইনারি এক্সপোনেনশিয়েশন
- x-এর e-তম ঘাত বের করার কৌশল যেখানে x^e = (x^(e/2))^2 ব্যবহার করে ঘাতকে প্রতিবার অর্ধেক করা হয় (e বিজোড় হলে আরেকবার x দিয়ে গুণ); গুণ লাগে মাত্র O(log e) বার।যেখানে শিখবেন: পর্ব ০৭পর্ব ৪৮পর্ব ৪৯
- Binary insertion sortবাইনারি ইনসারশন সর্ট
- insertion sort-এর রূপ যেখানে key-এর জায়গা binary search দিয়ে খোঁজা হয়; তুলনা O(n log n), কিন্তু সরানো এখনো worst case Θ(n²).যেখানে শিখবেন: পর্ব ২০
- Binary liftingবাইনারি লিফটিং
- প্রতিটি node-এর জন্য 2^k ধাপ ওপরের ancestor আগে থেকে হিসাব করে রাখার কৌশল; O(n log n) প্রস্তুতির পর LCA বা k-তম ancestor-এর প্রশ্ন O(log n)-এ উত্তর দেয়।যেখানে শিখবেন: পর্ব ২৬পর্ব ৩৬পর্ব ৪৫
- Binary searchবাইনারি সার্চ
- সাজানো তালিকার মাঝের উপাদানের সাথে তুলনা করে প্রতিবার বাকি অংশের অর্ধেক বাদ দিয়ে খোঁজা; সবচেয়ে খারাপে ⌊log₂ n⌋ + ১ টি তুলনা — O(log n).যেখানে শিখবেন: পর্ব ০১পর্ব ০৩পর্ব ০৬
- Binary search on the answerবাইনারি সার্চ অন দ্য অ্যানসার
- অ্যারের বদলে সম্ভাব্য উত্তরগুলোর পরিসরের ওপর binary search চালানোর কৌশল: প্রতিটি মধ্যক x-এ “x দিয়ে কি কাজটি হয়?” যাচাই করে অর্ধেক পরিসর বাদ দেওয়া; যাচাইয়ের ফল একমুখী (monotone) হলে মোট খরচ O(log(range) × যাচাইয়ের খরচ).যেখানে শিখবেন: পর্ব ১৯পর্ব ৬৭পর্ব ৬৯
- Binary search tree (BST)বাইনারি সার্চ ট্রি
- এমন binary tree যেখানে প্রতিটি node-এর বাঁ দিকের সব key তার চেয়ে ছোট আর ডান দিকের সব key বড়; খোঁজা, যোগ, মুছে ফেলায় সময় লাগে গাছের উচ্চতার সমানুপাতিক।যেখানে শিখবেন: পর্ব ১৫পর্ব ২৭পর্ব ২৮
- Binary splittingবাইনারি স্প্লিটিং
- c টি একই জিনিসকে 1, 2, 4, … আকারের বান্ডিলে (শেষটি বাকি অংশ) ভাগ করা, যাতে 0 থেকে c পর্যন্ত যেকোনো সংখ্যা কিছু বান্ডিলের যোগফল হয়; বান্ডিল মাত্র প্রায় log₂ c টি।যেখানে শিখবেন: পর্ব ৫৩
- Binary treeবাইনারি ট্রি
- যে tree-তে প্রতিটি node-এর সর্বোচ্চ দুটি সন্তান থাকে — বাঁ সন্তান আর ডান সন্তান।যেখানে শিখবেন: পর্ব ২৩পর্ব ২৬পর্ব ২৭
- Binary trieবাইনারি ট্রাই
- σ = ২-এর trie: সংখ্যাকে সবচেয়ে বড় bit থেকে bit-এর সারি হিসেবে রাখে, প্রতিটি node-এর সর্বোচ্চ দুটি সন্তান (0 আর 1). XOR-এর প্রশ্ন আর IP routing-এ ব্যবহৃত।যেখানে শিখবেন: পর্ব ৩১
- Binomial heapবাইনোমিয়াল হিপ
- কয়েকটি binomial tree-র সংগ্রহ হিসেবে রাখা priority queue, যাতে দুটি heap O(log n)-এ জোড়া (meld) যায়; Jean Vuillemin ১৯৭৮ সালে প্রকাশ করেন।যেখানে শিখবেন: পর্ব ২৩
- Bipartite graphবাইপারটাইট গ্রাফ
- যে গ্রাফের vertex-গুলোকে দুই দলে ভাগ করা যায়, যাতে প্রতিটি edge দুই আলাদা দলের vertex জোড়ে; সমতুল্যভাবে, এতে কোনো বিজোড় দৈর্ঘ্যের cycle নেই।যেখানে শিখবেন: পর্ব ৩৩পর্ব ৩৯পর্ব ৪০
- Birthday paradoxবার্থডে প্যারাডক্স
- মাত্র ২৩ জনের মধ্যেই দুজনের একই জন্মদিনের সম্ভাবনা ৫০% ছাড়ায়; সাধারণভাবে m টি ঘরে প্রায় 1.18√m টি এলোমেলো key-তেই collision-এর সম্ভাবনা ৫০%.যেখানে শিখবেন: পর্ব ৩২পর্ব ৫৮পর্ব ৬১
- bisect (Python module)বাইসেক্ট
- সাজানো list-এ binary search করার Python-এর standard মডিউল; bisect_left হলো lower bound, bisect_right হলো upper bound, আর insort ক্রম না ভেঙে মান ঢোকায় (খোঁজা O(log n), ঢোকানো O(n)).যেখানে শিখবেন: পর্ব ১৮
- Bisection methodবাইসেকশন মেথড
- বাস্তব সংখ্যার পরিসর বারবার অর্ধেক করে একটি সমীকরণের মূল খোঁজার পদ্ধতি; f অবিচ্ছিন্ন আর দুই প্রান্তে চিহ্ন আলাদা হলে মূল মাঝেই থাকে। প্রতিটি ধাপে উত্তরের প্রায় এক bit নির্ভুলতা বাড়ে।যেখানে শিখবেন: পর্ব ১৮
- Bitবিট
- তথ্যের সবচেয়ে ছোট একক, যার মান শুধু 0 অথবা 1; ৮টি বিট মিলে এক byte.যেখানে শিখবেন: পর্ব ৫১
- Bit shift (left shift)বিট শিফট, লেফট শিফট
- একটি সংখ্যার সব bit এক বা একাধিক ঘর বাঁয়ে (<<) বা ডানে (>>) সরানো; 1 << j মানে শুধু bit j চালু থাকা সংখ্যা, অর্থাৎ 2 এর j-তম ঘাত।যেখানে শিখবেন: পর্ব ৫৫
- Bitmaskবিটমাস্ক
- একটি পূর্ণসংখ্যা, যার প্রতিটি bit একটি জিনিস সেটে আছে কি না বোঝায়; n টি জিনিসের 2ⁿ টি সেট ঠিক 0 থেকে 2ⁿ − 1 পর্যন্ত সংখ্যা।যেখানে শিখবেন: পর্ব ৫৫পর্ব ৫৬পর্ব ৬৫
- Bitsetবিটসেট
- অনেকগুলো সত্য/মিথ্যা মানকে একটি করে bit-এ গুঁজে রাখা কাঠামো (C++-এ std::bitset); shift আর OR-এর মতো কাজ একসাথে ৬৪টি bit-এ হয়, তাই boolean DP প্রায় ৬৪ গুণ দ্রুত চলে।যেখানে শিখবেন: পর্ব ৫৩পর্ব ৬২
- Bitwise ANDবিটওয়াইজ অ্যান্ড
- দুটি সংখ্যার প্রতিটি bit-অবস্থানে আলাদাভাবে AND: দুটিতেই 1 হলে ফল 1, নইলে 0; C++ ও Python-এ & চিহ্নযেখানে শিখবেন: পর্ব ৩৬পর্ব ৫৫
- Black-heightব্ল্যাক-হাইট
- Red-black tree-তে কোনো node x থেকে নিচের যেকোনো NIL leaf পর্যন্ত পথে কালো node-এর সংখ্যা (CLRS-এর সংজ্ঞায় x বাদে, NIL-সহ); লেখা হয় bh(x). কালো নিয়মের কারণে সব পথে এটি সমান।যেখানে শিখবেন: পর্ব ২৯
- Block-cut treeব্লক-কাট ট্রি
- প্রতিটি biconnected component আর প্রতিটি articulation point-কে একটি করে node বানিয়ে, articulation point-কে তার block-গুলোর সাথে জুড়ে পাওয়া tree; গ্রাফের “দুর্বল জায়গা” পরিষ্কার দেখায়।যেখানে শিখবেন: পর্ব ৪৬
- Blocking flowব্লকিং ফ্লো
- level graph-এ এমন একটি flow, যার পর s থেকে t-এর প্রতিটি পথে অন্তত একটি edge ভরা; Dinic-এর প্রতিটি phase একটি blocking flow পাঠায়।যেখানে শিখবেন: পর্ব ৪৭
- Bloom filterব্লুম ফিল্টার
- m টি bit আর k টি hash দিয়ে বানানো ছোট কাঠামো, যা বলে একটি key “হয়তো আছে” না “নিশ্চিত নেই”; false positive হতে পারে, false negative কখনো নয়। Burton Bloom, ১৯৭০ সালে।যেখানে শিখবেন: পর্ব ৩২
- Boolean satisfiability (SAT)বুলিয়ান স্যাটিসফায়াবিলিটি
- কয়েকটি true/false চলকের একটি যুক্তি-সূত্র দেওয়া আছে; চলকগুলোর এমন মান আছে কি, যাতে পুরো সূত্র true হয়? সাধারণ SAT প্রথম প্রমাণিত NP-complete সমস্যা।যেখানে শিখবেন: পর্ব ৪৬পর্ব ৬৪পর্ব ৬৫
- Border (of a string)বর্ডার
- একটি string-এর এমন অংশ যা একই সাথে তার proper prefix আর proper suffix — যেমন "ababa"-র border "a" আর "aba". পুরো string নিজে border গণ্য হয় না।যেখানে শিখবেন: পর্ব ৫৮পর্ব ৭০
- Borrowing (key rotation)বরোয়িং
- B-tree থেকে মোছার সময় যে node-এ key খুব কম, তাকে পাশের ভাইয়ের কাছ থেকে parent-এর মধ্য দিয়ে একটি key ধার দেওয়া: parent-এর key নিচে নামে, ভাইয়ের একটি key ওপরে ওঠেযেখানে শিখবেন: পর্ব ৩০
- Borůvka's algorithmবোরুভকার অ্যালগরিদম
- প্রথম MST অ্যালগরিদম (Otakar Borůvka, ১৯২৬): প্রতি রাউন্ডে প্রতিটি component একসাথে নিজের সবচেয়ে সস্তা বাইরের edge নেয়; সর্বোচ্চ log₂ V রাউন্ড, মোট O(E log V), সহজে parallel করা যায়।যেখানে শিখবেন: পর্ব ৪৫
- Bottleneck (of a path)বটলনেক
- একটি augmenting path-এর edge-গুলোর মধ্যে সবচেয়ে কম residual capacity — ওই পথ দিয়ে ঠিক এতটুকুই বাড়তি প্রবাহ পাঠানো যায়।যেখানে শিখবেন: পর্ব ৪৭
- Bottom-up DPবটম-আপ ডিপি
- ছোট উপসমস্যা থেকে বড়র দিকে, রিকার্শন ছাড়া লুপে টেবিল ভরে DP করা; tabulation-এর অন্য নাম।যেখানে শিখবেন: পর্ব ৫২
- Bottom-up merge sortবটম-আপ মার্জ সর্ট
- রিকার্শন ছাড়া লুপ দিয়ে লেখা merge sort: প্রথমে পাশাপাশি ১টির অংশ জোড়া, তারপর ২টির, তারপর ৪টির — অংশের মাপ n ছাড়ানো পর্যন্ত। সময় Θ(n log n), stack-এর গভীরতা লাগে না।যেখানে শিখবেন: পর্ব ২১
- Bound / bounding functionবাউন্ডিং ফাংশন
- একটি node-এর নিচের সব সমাধান কতটা ভালো হতে পারে তার আশাবাদী হিসাব — minimisation-এ lower bound (এর চেয়ে কম খরচ অসম্ভব), maximisation-এ upper bound (এর চেয়ে বেশি লাভ অসম্ভব)।যেখানে শিখবেন: পর্ব ৫৭
- Bounded knapsackবাউন্ডেড ন্যাপস্যাক
- knapsack-এর যে রূপে জিনিস i সর্বোচ্চ cᵢ বার নেওয়া যায়; binary splitting দিয়ে 0/1 knapsack-এ নামিয়ে O(W · Σ log cᵢ) সময়ে সমাধান হয়।যেখানে শিখবেন: পর্ব ৫৩
- Bounded search treeবাউন্ডেড সার্চ ট্রি
- FPT-এর একটি কৌশল: প্রতিটি ধাপে অল্প কয়েকটি শাখা, আর প্রতিটি শাখায় প্যারামিটার k অন্তত এক কমে — তাই খোঁজের গাছের আকার শুধু k দিয়ে সীমিত, যেমন vertex cover-এ বড়জোর 2^k টি leafযেখানে শিখবেন: পর্ব ৬৫
- Boyer-Moore algorithmবয়ার-মুর অ্যালগরিদম
- pattern-কে ডান দিক থেকে মেলায় আর অমিলের অক্ষর দেখে বড় লাফ দেয়, ফলে বাস্তব লেখায় প্রায়ই text-এর অনেক অক্ষর না দেখেই এগিয়ে যায়। Robert Boyer ও J Strother Moore, ১৯৭৭।যেখানে শিখবেন: পর্ব ৫৮
- BPP (bounded-error probabilistic polynomial time)বিপিপি
- polynomial সময়ের randomized অ্যালগরিদমে সমাধানযোগ্য সমস্যার শ্রেণি, যেখানে দুই দিকেই ভুল সম্ভব কিন্তু প্রতিবার সর্বোচ্চ 1/3; পুনরাবৃত্তি আর সংখ্যাগরিষ্ঠ ভোটে ভুল যত খুশি কমে।যেখানে শিখবেন: পর্ব ৬১
- Branch and boundব্রাঞ্চ অ্যান্ড বাউন্ড
- optimization সমস্যার জন্য backtracking: প্রতিটি আংশিক সমাধানে সেরা সম্ভাব্য ফলের একটি সীমা (bound) হিসাব করা, আর সেটি এ পর্যন্ত পাওয়া সেরা উত্তরের চেয়ে খারাপ হলে শাখাটি বাদ দেওয়া।যেখানে শিখবেন: পর্ব ৫৬পর্ব ৫৭পর্ব ৬৫
- Branch and cutব্রাঞ্চ অ্যান্ড কাট
- Branch and bound-এর প্রতিটি node-এ LP relaxation-এ নতুন বৈধ শর্ত (cutting plane) যোগ করে bound আরও শক্ত করা; Concorde আর আধুনিক integer programming solver-এর মূল কৌশল।যেখানে শিখবেন: পর্ব ৫৭পর্ব ৬৫
- Bridge (cut edge)ব্রিজ
- undirected গ্রাফের এমন edge, যেটি সরিয়ে দিলে connected component-এর সংখ্যা বাড়ে — অর্থাৎ কোনো দুটি vertex-এর মধ্যে আর পথ থাকে না। একে cut edge-ও বলে।যেখানে শিখবেন: পর্ব ৪৬পর্ব ৬৯
- Bridge treeব্রিজ ট্রি
- প্রতিটি 2-edge-connected component-কে একটি বিন্দুতে সংকুচিত করলে bridge-গুলোই edge হয়ে একটি tree (বা forest) তৈরি করে।যেখানে শিখবেন: পর্ব ৪৬
- Brute forceব্রুট ফোর্স
- সব সম্ভাবনা একে একে যাচাই করার সরল সমাধান — সাধারণত ধীর, কিন্তু ঠিক হওয়া প্রায় নিশ্চিত; দ্রুত সমাধানের উত্তর মিলিয়ে দেখতে খুব কাজের।যেখানে শিখবেন: পর্ব ০১পর্ব ০২পর্ব ০৩
- BST propertyবিএসটি প্রপার্টি
- binary search tree-র মূল নিয়ম: প্রতিটি node-এর বাঁ subtree-র সব key তার চেয়ে ছোট আর ডান subtree-র সব key তার চেয়ে বড় — শুধু সরাসরি সন্তান নয়, পুরো subtree.যেখানে শিখবেন: পর্ব ২৭পর্ব ৩৮পর্ব ৭০
- Bubble sortবাবল সর্ট
- পাশাপাশি প্রতিটি জোড়া তুলনা করে উল্টো হলে জায়গা বদলানোর সর্টিং; প্রতি পাসে সবচেয়ে বড়টি শেষে যায়। early exit থাকলে best case Θ(n), worst case Θ(n²), stable.যেখানে শিখবেন: পর্ব ২০পর্ব ৬৮
- Bucket (slot)বাকেট
- hash table-এর অ্যারের একটি ঘর; hash function যে সংখ্যা দেয়, key সেই নম্বরের bucket-এ যায়। Chaining-এ এক bucket-এ একটি তালিকা থাকে, open addressing-এ একটি key.যেখানে শিখবেন: পর্ব ৩২
- Bucket sortবাকেট সর্ট
- পরিসরকে n টি সমান বালতিতে ভাগ করে প্রতিটি উপাদানকে তার বালতিতে ফেলা, প্রতিটি বালতি আলাদা সাজিয়ে ক্রমে জুড়ে দেওয়া। সমবণ্টনে প্রত্যাশিত Θ(n), সব এক বালতিতে পড়লে Θ(n²).যেখানে শিখবেন: পর্ব ২৪
- Build systemবিল্ড সিস্টেম
- যে টুল ফাইলগুলোর নির্ভরতা দেখে কোনটি আগে compile করতে হবে আর কোনটি আবার বানাতে হবে তা ঠিক করে — যেমন make (১৯৭৬), Ninja, Bazel. ভেতরে একটি DAG আর topological order.যেখানে শিখবেন: পর্ব ৪২
- Build-heap (bottom-up heapify)বিল্ড-হিপ
- একটি অ্যারেকে জায়গায় বসেই heap বানানোর Floyd-এর পদ্ধতি: শেষ internal node থেকে root পর্যন্ত প্রতিটি node-এ sift-down. মোট খরচ node-গুলোর উচ্চতার যোগফল, তাই O(n).যেখানে শিখবেন: পর্ব ২৩পর্ব ৬৮পর্ব ৬৯
- Burrows-Wheeler transform (BWT)বারোজ-হুইলার ট্রান্সফর্ম
- একটি লেখার সব ঘূর্ণন (rotation) সাজিয়ে প্রতিটির শেষ অক্ষর পড়ে বানানো নতুন লেখা (Burrows ও Wheeler, ১৯৯৪); একই অক্ষর পাশাপাশি জড়ো হয় বলে ভালোভাবে সংকোচন করা যায়, আর মূল লেখাও ফেরত পাওয়া যায়।যেখানে শিখবেন: পর্ব ৫৯
- Bézout's identityবেজুর আইডেন্টিটি
- যেকোনো পূর্ণসংখ্যা a, b-এর জন্য এমন পূর্ণসংখ্যা x, y আছে যাতে a·x + b·y = gcd(a, b); আর a·x + b·y = c-এর পূর্ণসংখ্যা সমাধান থাকে ঠিক তখনই, যখন gcd(a, b) | c.যেখানে শিখবেন: পর্ব ৬২
C
- Cacheক্যাশ
- CPU-র কাছে রাখা ছোট কিন্তু খুব দ্রুত মেমরি; কাছাকাছি ঘরের ডেটা একসাথে আনে, তাই পাশাপাশি থাকা ডেটা পড়া অনেক দ্রুত হয়।যেখানে শিখবেন: পর্ব ০২পর্ব ১০পর্ব ১২
- Cache lineক্যাশ লাইন
- মেমরি থেকে cache-এ একবারে আনা ডেটার টুকরো — আধুনিক x86 প্রসেসরে সাধারণত 64 বাইট. একটি ঘর পড়লে তার আশেপাশের ঘরগুলোও একসাথে চলে আসে।যেখানে শিখবেন: পর্ব ১০পর্ব ২৪পর্ব ৩০
- Cache localityক্যাশ লোকালিটি
- পরপর যে ডেটা লাগবে তা মেমরিতে কাছাকাছি থাকার গুণ; তখন CPU একবারে অনেকটা ডেটা cache-এ আনতে পারে, তাই প্রোগ্রাম অনেক দ্রুত চলে।যেখানে শিখবেন: পর্ব ১২পর্ব ২১পর্ব ৩১
- Call stackকল স্ট্যাক
- চলমান ফাংশন-ডাকগুলোর তথ্য (প্যারামিটার, লোকাল ভ্যারিয়েবল, ফেরার ঠিকানা) রাখার মেমরি-অংশ। প্রতিটি ডাকে একটি frame ওপরে যোগ হয়, ফেরার সময় সরে যায়।যেখানে শিখবেন: পর্ব ০৫পর্ব ০৭পর্ব ১৩
- Canonical coin systemক্যানোনিক্যাল কয়েন সিস্টেম
- যে কয়েন-ব্যবস্থায় 'সবচেয়ে বড় যে কয়েন ধরে, সেটি নাও' greedy প্রতিটি অঙ্কে সবচেয়ে কম কয়েন দেয় — যেমন বাংলাদেশের টাকার নোট; {1, 3, 4} এমন নয়।যেখানে শিখবেন: পর্ব ৫০পর্ব ৫৩
- Canonical decomposition (of a range)ক্যানোনিকাল ডিকম্পোজিশন
- segment tree-তে একটি রেঞ্জকে যে পরস্পর-বিচ্ছিন্ন, পুরো-ভেতরের node-গুলোতে ভাঙা হয়, সেই সেট; এতে O(log n) টি node থাকে, আর তাদের মান জুড়লেই রেঞ্জের উত্তর।যেখানে শিখবেন: পর্ব ৩৪
- Canonical Huffman codeক্যানোনিকাল হাফম্যান কোড
- শুধু code-এর দৈর্ঘ্য থেকে একটি নির্দিষ্ট নিয়মে বানানো Huffman code: (দৈর্ঘ্য, অক্ষর) ক্রমে সাজিয়ে প্রতিবার +1, দৈর্ঘ্য বাড়লে বাঁয়ে shift; তাই decoder-কে শুধু দৈর্ঘ্য পাঠালেই চলে।যেখানে শিখবেন: পর্ব ৫১
- Capacityক্যাপাসিটি
- dynamic array-এর জন্য আগে থেকে নেওয়া মোট ঘরের সংখ্যা; size হলো তার মধ্যে কতগুলো আসলে ভরা। size ≤ capacity সবসময়।যেখানে শিখবেন: পর্ব ১০পর্ব ৬০
- Capacity (of an edge)ক্যাপাসিটি
- flow network-এ একটি edge দিয়ে সর্বোচ্চ কতটা প্রবাহ যেতে পারে, c(u, v) — যেমন একটি রাস্তায় ঘণ্টায় সর্বোচ্চ কত ট্রাক।যেখানে শিখবেন: পর্ব ৪৭
- Capacity constraintক্যাপাসিটি কনস্ট্রেইন্ট
- flow-এর প্রথম শর্ত: প্রতিটি edge-এ 0 ≤ f(u, v) ≤ c(u, v), অর্থাৎ কোনো edge তার সীমার বেশি বহন করে না।যেখানে শিখবেন: পর্ব ৪৭
- Carmichael numberকারমাইকেল নাম্বার
- এমন যৌগিক সংখ্যা n, যার সাথে সহমৌলিক প্রতিটি a-তে a^(n−1) ≡ 1 (mod n) হয়; সবচেয়ে ছোটটি 561, আর এমন সংখ্যা অসীম।যেখানে শিখবেন: পর্ব ৬১পর্ব ৬২
- Cartesian treeকার্টেসিয়ান ট্রি
- (key, মান) জোড়ার এমন binary tree, যা key অনুযায়ী BST আর মান অনুযায়ী heap; Jean Vuillemin ১৯৮০ সালে এর বর্ণনা দেন। এলোমেলো মান দিলে এটিই treap.যেখানে শিখবেন: পর্ব ৩৮
- Case-insensitive comparisonকেস-ইনসেনসিটিভ কম্প্যারিজন
- বড় হাতের আর ছোট হাতের অক্ষরকে একই ধরে string তুলনা করা, যেমন Python-এ key=str.casefold; সাধারণ তুলনায় সব বড় হাতের অক্ষর ছোট হাতের আগে বসেযেখানে শিখবেন: পর্ব ২৫
- Catalan numberকাতালান নাম্বার
- 1, 1, 2, 5, 14, 42, … ধারার সংখ্যা, C(2n, n)/(n + 1); n টি node দিয়ে কয়টি ভিন্ন আকারের binary tree বানানো যায়, তা এই সংখ্যা।যেখানে শিখবেন: পর্ব ২৬পর্ব ২৭পর্ব ৫৪
- Cayley's formulaকেলির সূত্র
- n টি লেবেলযুক্ত vertex-এর সম্পূর্ণ গ্রাফে ঠিক n^(n−2) টি আলাদা spanning tree থাকে — Arthur Cayley-র নামে (১৮৮৯)। তাই সব spanning tree গুনে MST খোঁজা অচল।যেখানে শিখবেন: পর্ব ৪৫
- CDCL (conflict-driven clause learning)সিডিসিএল
- আধুনিক SAT solver-এর মূল কৌশল: backtracking খোঁজে যখনই বিরোধ (conflict) হয়, তার কারণ বিশ্লেষণ করে একটি নতুন clause শিখে নেওয়া, আর অনেক ধাপ পিছনে লাফিয়ে যাওয়া — যাতে একই ভুল আর না হয়যেখানে শিখবেন: পর্ব ৬৫
- Ceiling (⌈x⌉)সিলিং
- x-এর সমান বা তার চেয়ে বড় সবচেয়ে ছোট পূর্ণসংখ্যা, অর্থাৎ ওপরের দিকে গোল করা। যেমন ⌈3.2⌉ = 4যেখানে শিখবেন: পর্ব ০৬পর্ব ১৯
- Centroid decompositionসেন্ট্রয়েড ডিকম্পোজিশন
- Tree-কে বারবার তার centroid-এ (যে node সরালে কোনো টুকরো অর্ধেকের বড় থাকে না) ভেঙে O(log n) গভীরতার একটি কাঠামো বানানো; পথ-গোনার প্রশ্নে কাজে লাগে।যেখানে শিখবেন: পর্ব ৪৮
- Certificate (witness)সার্টিফিকেট
- একটি “হ্যাঁ” উত্তরের ছোট প্রমাণ, যা দেখে দ্রুত মিলিয়ে নেওয়া যায় — যেমন vertex cover-এর vertex-তালিকা, SAT-এর চলকের মান, sudoku-র ভরা বোর্ড।যেখানে শিখবেন: পর্ব ৬৪পর্ব ৭০
- Change of baseচেঞ্জ অব বেস
- এক ভিত্তির log-কে অন্য ভিত্তিতে নেওয়ার সূত্র: log_a x = log_b x / log_b a. এজন্য Big-O-তে log-এর ভিত্তি লেখার দরকার হয় না, পার্থক্য শুধু একটি ধ্রুবক গুণকযেখানে শিখবেন: পর্ব ০৬
- Change of variablesচেঞ্জ অব ভ্যারিয়েবলস
- Recurrence-এ নতুন চলক বসিয়ে (যেমন n = 2^m) তাকে আগে থেকে চেনা কোনো সহজ রূপে আনার কৌশল।যেখানে শিখবেন: পর্ব ০৮পর্ব ০৯পর্ব ৬৮
- Character (char)ক্যারেক্টার
- লেখার একটি একক — একটি বর্ণ, অঙ্ক, চিহ্ন বা ফাঁকা জায়গা। C++-এ char হলো ১ বাইট, তাই একটি বাংলা বর্ণ সেখানে একাধিক char জুড়ে থাকে।যেখানে শিখবেন: পর্ব ১১
- Characteristic equationক্যারেক্টারিস্টিক ইকুয়েশন
- T(n) = a·T(n−1) + b·T(n−2) ধরনের linear recurrence-এ T(n) = rⁿ বসালে যে বহুপদী সমীকরণ (r² = a·r + b) পাওয়া যায়; এর মূলগুলোই সমাধানের রূপ ঠিক করে।যেখানে শিখবেন: পর্ব ০৮
- Chernoff boundচারনফ বাউন্ড
- অনেকগুলো স্বাধীন 0/1 random variable-এর যোগফল তার গড় থেকে দূরে যাওয়ার সম্ভাবনা সূচকীয় হারে কমে — এমন একগুচ্ছ অসমতা; Herman Chernoff-এর ১৯৫২ সালের কাজ থেকে নাম।যেখানে শিখবেন: পর্ব ৬১
- Child (node)চাইল্ড বা সন্তান
- tree-তে কোনো node-এর ঠিক নিচের node, যা একটি edge দিয়ে তার সাথে যুক্ত। binary tree-তে সন্তান সর্বোচ্চ দুটি — বাঁ আর ডান।যেখানে শিখবেন: পর্ব ২৬
- Chinese remainder theorem (CRT)চাইনিজ রিমেইন্ডার থিওরেম
- জোড়ায় জোড়ায় সহমৌলিক m₁, m₂, …, mₖ দিয়ে ভাগশেষ জানা থাকলে, M = m₁·m₂·…·mₖ-এর ভেতরে সংখ্যাটি ঠিক একটি। প্রাচীন চীনা গ্রন্থ Sunzi Suanjing-এর ধাঁধা থেকে নাম।যেখানে শিখবেন: পর্ব ৬২
- Christofides algorithmক্রিস্টোফাইডিস অ্যালগরিদম
- Metric TSP-এর ১.৫-approximation (১৯৭৬; Serdyukov স্বাধীনভাবে): MST, তার বিজোড় degree-র vertex-গুলোর minimum-weight perfect matching, Euler circuit আর শর্টকাট।যেখানে শিখবেন: পর্ব ৬৬
- Circular buffer (ring buffer)সার্কুলার বাফার / রিং বাফার
- নির্দিষ্ট মাপের একটি অ্যারে, যার শেষ ঘরের পরে আবার প্রথম ঘর আসে (index % capacity) — head আর tail ঘুরে ঘুরে এগোয়, তাই কোনো ঘর নষ্ট হয় না আর কিছু সরাতেও হয় না।যেখানে শিখবেন: পর্ব ১৪
- Circular dependencyসার্কুলার ডিপেনডেন্সি
- নির্ভরতার গ্রাফে একটি cycle: A-র জন্য B লাগে, B-র জন্য আবার A (সরাসরি বা ঘুরে)। Python-এর circular import, spreadsheet-এর circular reference বা প্যাকেজের চক্র এর উদাহরণ।যেখানে শিখবেন: পর্ব ৪২
- Circular linked listসার্কুলার লিংকড লিস্ট
- যে linked list-এ শেষ node-এর next null না হয়ে আবার প্রথম node-কে দেখায়, ফলে list-টি একটি বৃত্ত তৈরি করে।যেখানে শিখবেন: পর্ব ১২
- Clarifying questionক্ল্যারিফাইং কোয়েশ্চেন
- সমাধান শুরুর আগে সমস্যার অস্পষ্ট অংশ পরিষ্কার করতে করা প্রশ্ন — ইনপুটের আকার, ঋণাত্মক মান, ডুপ্লিকেট, উত্তর না থাকলে কী ফেরত দিতে হবে ইত্যাদি।যেখানে শিখবেন: পর্ব ৭১
- Clauseক্লজ
- CNF সূত্রের একটি অংশ: কয়েকটি literal-এর OR, যেমন (x₁ ∨ ¬x₂ ∨ x₃). পুরো সূত্র সত্য হতে প্রতিটি clause-এ অন্তত একটি literal সত্য হতে হয়।যেখানে শিখবেন: পর্ব ৬৪পর্ব ৭০
- Cliqueক্লিক
- গ্রাফের এমন vertex-সেট, যার প্রতিটি জোড়া edge দিয়ে যুক্ত। k আকারের clique খোঁজা NP-complete; complement graph-এ এটি independent set হয়ে যায়।যেখানে শিখবেন: পর্ব ৬৪
- Closed formক্লোজড ফর্ম
- একটি যোগফল বা ধারার মান এমন সূত্রে লেখা, যাতে আর লুপ বা “…” লাগে না। যেমন 1 + 2 + … + n-এর closed form হলো n(n+1)/2যেখানে শিখবেন: পর্ব ০৬
- Closest pair of pointsক্লোজেস্ট পেয়ার অব পয়েন্টস
- সমতলের n টি বিন্দুর মধ্যে সবচেয়ে কম দূরত্বের জোড়াটি খোঁজার সমস্যা; brute force-এ Θ(n²), divide and conquer-এ Θ(n log n).যেখানে শিখবেন: পর্ব ৪৯পর্ব ৬৩
- Clustered indexক্লাস্টার্ড ইনডেক্স
- যে index-এর leaf-এ পুরো row-ই রাখা থাকে, ফলে টেবিলটি নিজেই সেই key-এর ক্রমে সাজানো একটি B+ tree; যেমন MySQL InnoDB-তে primary keyযেখানে শিখবেন: পর্ব ৩০
- CNF (conjunctive normal form)সিএনএফ
- যুক্তি-সূত্রের এমন রূপ, যেখানে কয়েকটি clause AND দিয়ে জোড়া, আর প্রতিটি clause কয়েকটি literal-এর OR — যেমন (a ∨ b) ∧ (¬a ∨ c).যেখানে শিখবেন: পর্ব ৪৬পর্ব ৬৪
- co-NPকো-এনপি
- যেসব decision problem-এর “না” উত্তরের ছোট, polynomial সময়ে যাচাইযোগ্য প্রমাণ আছে — অর্থাৎ যাদের হ্যাঁ/না উল্টে দিলে NP-তে পড়ে, যেমন UNSAT. NP = co-NP কি না অজানা।যেখানে শিখবেন: পর্ব ৬৪
- Cobham–Edmonds thesisকোবাম-এডমন্ডস থিসিস
- ১৯৬৫ সালে Alan Cobham আর Jack Edmonds-এর আলাদা প্রস্তাব: “দক্ষভাবে সমাধানযোগ্য” মানে polynomial সময়ে সমাধানযোগ্য। এটি প্রমাণিত সত্য নয়, একটি কাজের সংজ্ঞা।যেখানে শিখবেন: পর্ব ৬৪
- Cocktail shaker sortককটেল শেকার সর্ট
- bubble sort-এর দুই-দিকের রূপ: পালা করে একবার বাঁ থেকে ডানে, একবার ডান থেকে বাঁয়ে পাস দেয়, তাই শেষের দিকের ছোট উপাদান দ্রুত সামনে আসে; worst case তবু Θ(n²).যেখানে শিখবেন: পর্ব ২০
- Code pointকোড পয়েন্ট
- Unicode-এ একটি অক্ষরের নির্দিষ্ট নম্বর, লেখা হয় U+ দিয়ে — যেমন ক = U+0995. Python-এর len() এই code point গোনে।যেখানে শিখবেন: পর্ব ১১পর্ব ৩১পর্ব ৫৮
- Code treeকোড ট্রি
- prefix-free code-এর binary tree রূপ: অক্ষর থাকে leaf-এ, বাঁয়ের edge 0 আর ডানের edge 1, আর root থেকে leaf-এর পথই সেই অক্ষরের code.যেখানে শিখবেন: পর্ব ৫১
- Coding interviewকোডিং ইন্টারভিউ
- চাকরির নিয়োগে প্রার্থীকে একটি অচেনা সমস্যা দিয়ে নির্দিষ্ট সময়ে সমাধান বের করা, কোড লেখা, পরীক্ষা করা আর জটিলতা ব্যাখ্যা করতে বলার ধাপ; সঠিক কোডের পাশাপাশি ভাবনার পথ আর যোগাযোগও মূল্যায়ন হয়।যেখানে শিখবেন: পর্ব ৭১
- Coin change (change-making)কয়েন চেঞ্জ
- দেওয়া কয়েন বা নোটের মান দিয়ে একটি নির্দিষ্ট টাকার অঙ্ক সবচেয়ে কম সংখ্যক কয়েনে বানানোর সমস্যা, আর কত উপায়ে অঙ্কটি বানানো যায় তা গোনার প্রশ্ন।যেখানে শিখবেন: পর্ব ৫০পর্ব ৫৩পর্ব ৭১
- Collationকোলেশন
- কোনো ভাষার নিয়ম অনুযায়ী string সাজানোর ক্রম; অক্ষরের কোড নম্বরের সরল ক্রম অনেক ভাষার অভিধানের ক্রমের সাথে মেলে না, তাই ICU-র মতো লাইব্রেরি Unicode Collation Algorithm মেনে এটি হিসাব করেযেখানে শিখবেন: পর্ব ২৫
- Collinearকোলিনিয়ার
- তিন বা ততোধিক বিন্দু একই সরলরেখায় থাকা; orientation test-এর মান তখন শূন্য।যেখানে শিখবেন: পর্ব ৬৩
- Collisionকলিশন
- দুটি ভিন্ন key বা string-এর hash মান মিলে যাওয়া — hash table-এ একই তাকে (bucket) পড়া, string hashing-এ ভুল মিল; chaining বা probing দিয়ে, কিংবা অক্ষর ধরে যাচাই করে সামলাতে হয়।যেখানে শিখবেন: পর্ব ০১পর্ব ১১পর্ব ১৫
- Column-major orderকলাম-মেজর অর্ডার
- 2D array রাখার উল্টো নিয়ম: প্রথম কলামের সব উপাদান, তারপর দ্বিতীয় কলাম; m[i][j]-এর অবস্থান j × R + i. Fortran, MATLAB আর R এটি মানে।যেখানে শিখবেন: পর্ব ১০
- Combination (C(n,k))কম্বিনেশন
- সমাবেশ: ক্রম গুরুত্বপূর্ণ নয়, শুধু কোনগুলো বাছা হলো। n টি থেকে k টি বাছার উপায় C(n,k) = n!/(k!(n−k)!); জোড়ার সংখ্যা C(n,2) = n(n−1)/2যেখানে শিখবেন: পর্ব ০৬পর্ব ৫৬পর্ব ৬২
- Commutative operationকমিউটেটিভ অপারেশন
- যে কাজে x ∘ y = y ∘ x, অর্থাৎ দুই পাশ অদলবদল করলে ফল বদলায় না; যোগ আর min বিনিময়যোগ্য, কিন্তু matrix গুণ বা string জোড়া নয়।যেখানে শিখবেন: পর্ব ৩৪
- Comparatorকম্প্যারেটর
- দুটি উপাদান নিয়ে প্রথমটি দ্বিতীয়টির আগে বসবে কি না বলে দেয় এমন ফাংশন; sort-এ নিজের ক্রম দিতে লাগে, আর সমান উপাদানের জন্য অবশ্যই false দিতে হয় (<= নয়, <).যেখানে শিখবেন: পর্ব ১৫পর্ব ২০পর্ব ২১
- Comparison sortকম্প্যারিজন সর্ট
- যে সর্টিং পদ্ধতি উপাদান সম্পর্কে শুধু দুটির তুলনা করে জানতে পারে — কোনটি বড়; bubble, insertion, merge, quick sort সবাই এই দলে।যেখানে শিখবেন: পর্ব ২০পর্ব ২৩পর্ব ২৪
- Comparison-based algorithmকম্পারিজন-বেসড অ্যালগরিদম
- যে অ্যালগরিদম ইনপুটের উপাদান সম্পর্কে তথ্য পায় শুধু দুটি উপাদানের তুলনা (<, ≤, =) করে, মানের ওপর অন্য কোনো গণিত চালিয়ে নয়; এমন খোঁজা Ω(log n) আর এমন সর্টিং Ω(n log n)-এর নিচে যেতে পারে না।যেখানে শিখবেন: পর্ব ১৮
- Competitive programmingকম্পিটিটিভ প্রোগ্রামিং
- নির্দিষ্ট সময়ের মধ্যে অ্যালগরিদম-নির্ভর সমস্যা সঠিক ও দ্রুত সমাধান করার প্রতিযোগিতা, যেখানে কোড স্বয়ংক্রিয়ভাবে যাচাই হয়।যেখানে শিখবেন: পর্ব ০১পর্ব ৭২
- Complement graph (Ḡ)কমপ্লিমেন্ট গ্রাফ
- একই vertex নিয়ে এমন গ্রাফ, যেখানে ঠিক সেই জোড়াগুলো যুক্ত যারা মূল গ্রাফে যুক্ত নয়। n টি vertex-এ মোট edge = n(n−1)/2 − মূল গ্রাফের edge.যেখানে শিখবেন: পর্ব ৬৪
- Complete binary treeকমপ্লিট বাইনারি ট্রি
- যে binary tree-র শেষ স্তর ছাড়া সব স্তর পুরো ভরা, আর শেষ স্তরটি বাঁ থেকে ডানে ফাঁক ছাড়া ভরা। তাই একে কোনো pointer ছাড়াই অ্যারেতে রাখা যায়।যেখানে শিখবেন: পর্ব ২৩পর্ব ২৬
- Complete graph (Kₙ)কমপ্লিট গ্রাফ
- যে simple graph-এ প্রতিটি জোড়া vertex-এর মধ্যে edge আছে; n টি vertex-এ edge n(n − 1)/2 টি, প্রত্যেকের degree n − 1.যেখানে শিখবেন: পর্ব ৩৯পর্ব ৫৬
- Completely Fair Scheduler (CFS)কমপ্লিটলি ফেয়ার শিডিউলার
- Linux kernel-এর CPU scheduler (২০০৭ থেকে, 2.6.23), যা চলার অপেক্ষায় থাকা task-গুলোকে এ পর্যন্ত পাওয়া CPU সময় অনুযায়ী একটি red-black tree-তে রাখত আর সবচেয়ে কম সময় পাওয়াটিকে চালাত; Linux 6.6-এ এর জায়গা নেয় EEVDF.যেখানে শিখবেন: পর্ব ২৯
- Computational geometryকম্পিউটেশনাল জিওমেট্রি
- বিন্দু, রেখা, বহুভুজের মতো জ্যামিতিক বস্তু নিয়ে দক্ষ অ্যালগরিদম আর তাদের সময়ের নিম্নসীমা খোঁজার শাখা; যেমন convex hull, রেখাংশের ছেদ, point in polygon.যেখানে শিখবেন: পর্ব ৬৩
- Computational problemকম্পিউটেশনাল প্রবলেম
- কী ধরনের input দেওয়া হবে আর তার সাথে output-এর কী সম্পর্ক থাকতে হবে — এই সাধারণ বর্ণনা; যেমন “n টি সংখ্যার মধ্যে সবচেয়ে বড়টি বের করো”।যেখানে শিখবেন: পর্ব ০২
- Concurrent data structureকনকারেন্ট ডেটা স্ট্রাকচার
- যে ডেটা স্ট্রাকচারে একাধিক thread একই সময়ে পড়তে ও লিখতে পারে, অথচ ফল ভুল হয় না; lock বা atomic নির্দেশ দিয়ে এর নিরাপত্তা রাখা হয়।যেখানে শিখবেন: পর্ব ৩৮
- Condensation graph (component graph)কনডেনসেশন গ্রাফ
- প্রতিটি SCC-কে একটি বিন্দুতে সংকুচিত করে পাওয়া গ্রাফ; দুই SCC-র মধ্যে edge থাকে, যদি মূল গ্রাফে একটি থেকে অন্যটিতে কোনো edge থাকে। এটি সবসময় একটি DAG.যেখানে শিখবেন: পর্ব ৪৬
- Congruence (a ≡ b mod m)কনগ্রুয়েন্স
- a ≡ b (mod m) মানে m দিয়ে ভাগ করলে a আর b-এর ভাগশেষ সমান, অর্থাৎ m | (a − b). যেমন 17 ≡ 2 (mod 5). চিহ্নটি Gauss ১৮০১ সালে চালু করেন।যেখানে শিখবেন: পর্ব ৬২
- Connected componentকানেক্টেড কম্পোনেন্ট
- undirected গ্রাফের এমন সবচেয়ে বড় vertex-এর দল, যার যেকোনো দুটির মধ্যে কোনো না কোনো পথ আছে। DSU-তে প্রতিটি দল একটি component.যেখানে শিখবেন: পর্ব ৩৩পর্ব ৩৯পর্ব ৪০
- Connected component labelingকানেক্টেড কম্পোনেন্ট লেবেলিং
- ছবির পাশাপাশি থাকা একই ধরনের pixel-গুলোকে একটি করে লেবেল দিয়ে আলাদা বস্তু চিহ্নিত করা; প্রচলিত দুই-পাস পদ্ধতিতে লেবেলের সমতা union-find দিয়ে মেলানো হয়।যেখানে শিখবেন: পর্ব ৩৩
- Connected graphকানেক্টেড গ্রাফ
- যে undirected গ্রাফে যেকোনো দুটি vertex-এর মধ্যে অন্তত একটি path আছে — অর্থাৎ মাত্র একটি connected component.যেখানে শিখবেন: পর্ব ৩৯পর্ব ৪৫
- Consistent hashingকনসিস্টেন্ট হ্যাশিং
- সার্ভার আর key দুটোকেই একটি বৃত্তে hash করে প্রতিটি key-কে পরের সার্ভারে রাখার কৌশল; একটি সার্ভার যোগ বা বাদ দিলে মোট key-এর মাত্র ছোট একটি অংশ সরে। Karger ও সহকর্মীরা, ১৯৯৭ সালে।যেখানে শিখবেন: পর্ব ৩২
- Consistent heuristicকনসিস্টেন্ট হিউরিস্টিক
- প্রতিটি edge-এ h(u) ≤ w(u, v) + h(v) আর লক্ষ্যে h = 0; এমন h admissible-ও, আর A* তখন প্রতিটি vertex একবারই settle করে।যেখানে শিখবেন: পর্ব ৪৩
- Constant time — O(1)কনস্ট্যান্ট টাইম
- যে কাজের ধাপের সংখ্যা ইনপুটের আকারের ওপর নির্ভর করে না, যেমন array-র নির্দিষ্ট একটি ঘর পড়াযেখানে শিখবেন: পর্ব ০৪পর্ব ১০
- Constraint programming (CP)কনস্ট্রেইন্ট প্রোগ্রামিং
- চলক, তাদের সম্ভাব্য মান আর শর্ত (যেমন ‘সব আলাদা’) লিখে দিলে solver নিজে propagation আর খোঁজ দিয়ে সমাধান বের করে। সময়সূচি আর রোস্টারিংয়ে খুব চলেযেখানে শিখবেন: পর্ব ৬৫
- Constraint satisfaction problem (CSP)কনস্ট্রেইন্ট স্যাটিসফ্যাকশন
- কিছু ভেরিয়েবলে মান বসাতে হবে এমনভাবে যাতে সব শর্ত মানা হয় — যেমন sudoku-র ঘর বা গ্রাফের রং; backtracking এর সবচেয়ে প্রচলিত সাধারণ সমাধান।যেখানে শিখবেন: পর্ব ৫৬
- Constraints (input limits)কনস্ট্রেইন্টস
- সমস্যার বিবরণে দেওয়া ইনপুটের সীমা, যেমন n ≤ 10^5 বা w ≤ 10^9; এগুলো দেখেই বোঝা যায় কোন complexity-র অ্যালগরিদম সময়সীমার ভেতরে চলবে আর কোন টাইপে সংখ্যা রাখতে হবে।যেখানে শিখবেন: পর্ব ৬৭পর্ব ৭২
- Containerকনটেইনার
- যে তৈরি data structure অনেকগুলো উপাদান একসাথে রাখে আর সেগুলোর ওপর যোগ, খোঁজা, মুছে ফেলার কাজ দেয় — যেমন C++-এর vector, map বা Python-এর list, dict.যেখানে শিখবেন: পর্ব ১৫
- Container adapterকন্টেইনার অ্যাডাপ্টার
- C++ STL-এর এমন class (যেমন std::queue, std::stack, std::priority_queue), যা নিজে ডেটা রাখে না — ভেতরের একটি container (ডিফল্টে std::deque বা std::vector) ব্যবহার করে শুধু কয়েকটি অপারেশন খোলা রাখে।যেখানে শিখবেন: পর্ব ১৪পর্ব ১৫
- Contest ratingকনটেস্ট রেটিং
- অনলাইন প্ল্যাটফর্মে প্রতিটি রেটেড কনটেস্টের ফলের ভিত্তিতে বাড়া-কমা একটি সংখ্যা, যা প্রতিযোগীর আনুমানিক দক্ষতা বোঝায়; প্রত্যাশার চেয়ে ভালো করলে বাড়ে, খারাপ করলে কমে।যেখানে শিখবেন: পর্ব ৭২
- Contiguous memoryকন্টিগুয়াস মেমরি
- মেমরির একটানা, ফাঁকহীন অংশ — যেখানে একটি উপাদান শেষ হলেই ঠিক পরের ঠিকানা থেকে পরের উপাদান শুরু হয়।যেখানে শিখবেন: পর্ব ১০
- Contraction hierarchiesকন্ট্র্যাকশন হায়ারার্কি
- রাস্তার গ্রাফ আগে থেকে প্রক্রিয়া করে কম গুরুত্বের vertex সরিয়ে shortcut edge বসানোর কৌশল (২০০৮); এতে প্রতিটি পথ-প্রশ্নে খুব অল্প vertex দেখতে হয়।যেখানে শিখবেন: পর্ব ৪৩
- Convex hullকনভেক্স হাল
- একগুচ্ছ বিন্দুকে ধারণ করে এমন সবচেয়ে ছোট convex বহুভুজ — পেরেকগুলোর চারপাশে টানা রাবার ব্যান্ডের আকার; দুই মাত্রায় Θ(n log n)-এ বের করা যায়।যেখানে শিখবেন: পর্ব ৬৩পর্ব ৬৯
- Convex hull trickকনভেক্স হাল ট্রিক
- dp[i] = min(dp[j] + b[j]·a[i]) ধরনের transition-এ প্রতিটি j-কে একটি সরলরেখা ধরে, রেখাগুলোর নিচের খাম রেখে প্রতিটি প্রশ্ন দ্রুত করার কৌশল।যেখানে শিখবেন: পর্ব ৫৫
- Convex polygonকনভেক্স পলিগন
- যে বহুভুজের ভেতরের যেকোনো দুটি বিন্দু জোড়া রেখাংশ পুরোটাই ভেতরে থাকে; সীমানা ধরে হাঁটলে প্রতিটি কোণে একই দিকে ঘুরতে হয়।যেখানে শিখবেন: পর্ব ৬৩
- Cook–Levin theoremকুক-লেভিন থিওরেম
- SAT NP-complete — NP-এর প্রতিটি সমস্যা polynomial সময়ে SAT-এ reduce হয়। Stephen Cook ১৯৭১ সালে আর Leonid Levin স্বাধীনভাবে ১৯৭৩ সালে প্রকাশ করেন।যেখানে শিখবেন: পর্ব ৬৪
- Cooling scheduleকুলিং শিডিউল
- Simulated annealing-এ তাপমাত্রা T কীভাবে কমবে তার নিয়ম — যেমন প্রতি ধাপে T ← 0.95 · T (geometric cooling). খুব দ্রুত ঠান্ডা করলে local optimum-এ আটকায়, খুব ধীরে করলে সময় নষ্টযেখানে শিখবেন: পর্ব ৬৫
- Coordinate compressionকোঅর্ডিনেট কমপ্রেশন
- বড় বা ছড়ানো মানগুলোকে তাদের ক্রম ঠিক রেখে 0 থেকে k−1-এর ছোট পূর্ণসংখ্যায় বদলে দেওয়া (sort, ডুপ্লিকেট বাদ, binary search); তখন মানগুলোকে array-এর index হিসেবে ব্যবহার করা যায়যেখানে শিখবেন: পর্ব ২৫পর্ব ৩৪পর্ব ৩৬
- Coprime (relatively prime)কোপ্রাইম
- দুটি পূর্ণসংখ্যার gcd 1 হলে তারা সহমৌলিক — কোনো সাধারণ উৎপাদক (১ ছাড়া) নেই, যেমন 8 আর 15. নিজেরা মৌলিক হওয়ার দরকার নেই।যেখানে শিখবেন: পর্ব ৬২
- Copy-on-writeকপি-অন-রাইট
- ভাগ করা ডেটা সাথে সাথে কপি না করে কেউ সেটি বদলাতে গেলে তখনই কপি করার কৌশল; অপারেটিং সিস্টেমে fork-এর পর মেমরির পাতা এভাবে ভাগ হয়।যেখানে শিখবেন: পর্ব ৩৫
- Correct algorithmকারেক্ট অ্যালগরিদম
- যে অ্যালগরিদম সমস্যার প্রতিটি instance-এ থামে এবং ঠিক output দেয়; একটি instance-এও ভুল হলে অ্যালগরিদমটি ভুল।যেখানে শিখবেন: পর্ব ০২
- Correctnessকারেক্টনেস
- অ্যালগরিদম ঠিক হওয়া — নিয়ম মেনে দেওয়া প্রতিটি বৈধ ইনপুটের জন্য সে specification অনুযায়ী সঠিক আউটপুট দেয়।যেখানে শিখবেন: পর্ব ০৩
- Cost modelকস্ট মডেল
- অ্যালগরিদমের খরচ মাপতে কোন অপারেশন গোনা হবে আর প্রতিটির দাম কত ধরা হবে, তার নিয়ম। যেমন সর্টিংয়ে শুধু দুটি উপাদানের তুলনা গোনা।যেখানে শিখবেন: পর্ব ০৫
- Count-to-infinity problemকাউন্ট-টু-ইনফিনিটি
- Distance-vector routing-এ কোনো লিংক ভাঙার পর router-রা একে অপরের পুরোনো খবর বিশ্বাস করে দূরত্ব ধাপে ধাপে বাড়াতে থাকে, অনেকক্ষণ ধরে — কারণ Bellman-Ford মান কমাতে দ্রুত, বাড়াতে ধীর।যেখানে শিখবেন: পর্ব ৪৪
- Counterexampleকাউন্টার-এক্সাম্পল
- এমন একটি নির্দিষ্ট ইনপুট যেখানে অ্যালগরিদম ভুল উত্তর দেয়; একটিমাত্র counterexample-ই একটি অ্যালগরিদমকে ভুল প্রমাণের জন্য যথেষ্ট।যেখানে শিখবেন: পর্ব ০৩পর্ব ১৯পর্ব ৪৩
- Counting sortকাউন্টিং সর্ট
- 0..k পরিসরের পূর্ণসংখ্যা key গুনে, prefix sum দিয়ে প্রতিটি key-এর জায়গা বের করে, ডান থেকে বাঁয়ে বসিয়ে সাজানোর পদ্ধতি। সময় ও জায়গা Θ(n + k), stable, কোনো তুলনা নেই।যেখানে শিখবেন: পর্ব ২৪পর্ব ২৫পর্ব ৫৯
- Credit (in amortized analysis)ক্রেডিট
- Accounting method-এ আগাম নেওয়া বাড়তি খরচ, যা কোনো উপাদান বা অবস্থার গায়ে কয়েনের মতো জমা থাকে আর পরের দামি কাজের খরচ মেটায়। এটি শুধু প্রমাণের হিসাব, প্রোগ্রামে রাখা হয় না।যেখানে শিখবেন: পর্ব ৬০
- Critical path method (CPM) / PERTক্রিটিক্যাল পাথ মেথড
- প্রজেক্টের কাজগুলোকে DAG ধরে প্রতিটির সবচেয়ে আগে শুরুর সময় বের করা; DAG-এর দীর্ঘতম পথটিই critical path, যার মোট সময় = পুরো প্রজেক্টের সর্বনিম্ন সময়। ১৯৫০-এর দশকের শেষে CPM আর PERT চালু হয়।যেখানে শিখবেন: পর্ব ৪২
- Cross edgeক্রস এজ
- Directed গ্রাফের DFS-এ এমন edge, যার দুই প্রান্তের কেউ কারও পূর্বপুরুষ নয় — পরে আবিষ্কৃত vertex থেকে আগেই শেষ হওয়া অন্য শাখা বা অন্য tree-র vertex-এ যায়।যেখানে শিখবেন: পর্ব ৪১পর্ব ৪৬
- Cross product (2D)ক্রস প্রোডাক্ট
- দুই মাত্রায় a.x·b.y − a.y·b.x = |a|·|b|·sin θ; a আর b দিয়ে তৈরি সামান্তরিকের চিহ্নসহ ক্ষেত্রফল — ধনাত্মক হলে b আছে a-এর বাঁয়ে, ঋণাত্মক হলে ডানে।যেখানে শিখবেন: পর্ব ৬৩পর্ব ৬৯
- Crossing edgeক্রসিং এজ
- যে edge-এর এক প্রান্ত cut-এর এক ভাগে আর অন্য প্রান্ত অন্য ভাগে — অর্থাৎ যে edge cut পার হয়।যেখানে শিখবেন: পর্ব ৪৫পর্ব ৭০
- Crossover point (cutoff)ক্রসওভার পয়েন্ট
- ইনপুটের যে আকারের নিচে সরল অ্যালগরিদম বেশি দ্রুত আর ওপরে উন্নত অ্যালগরিদম; hybrid বাস্তবায়ন এই সীমার নিচে সরল পদ্ধতিতে চলে যায়, আর সীমাটি সাধারণত মেপে ঠিক করা হয়।যেখানে শিখবেন: পর্ব ৪৯
- Cryptographic hash functionক্রিপ্টোগ্রাফিক হ্যাশ ফাংশন
- SHA-256-এর মতো hash, যার আউটপুট থেকে ইনপুট বা একই hash-এর দুটি ইনপুট খুঁজে বের করা কার্যত অসম্ভব; নিরাপত্তার কাজে লাগে, কিন্তু hash table-এর জন্য সাধারণত অনেক ধীর।যেখানে শিখবেন: পর্ব ৩২
- CSPRNG (cryptographically secure PRNG)সিএসপিআরএনজি
- এমন random জেনারেটর, যার আগের আউটপুট দেখেও পরেরটি অনুমান করা কার্যত অসম্ভব; token, OTP আর চাবির জন্য অপারেটিং সিস্টেমের এই উৎস (যেমন Python-এর secrets) ব্যবহার করতে হয়।যেখানে শিখবেন: পর্ব ৬১
- CSR (compressed sparse row)সিএসআর
- গ্রাফ বা sparse matrix রাখার একটি জমাট রূপ: দৈর্ঘ্য n + 1-এর একটি start অ্যারে আর সব প্রতিবেশী পরপর রাখা একটি to অ্যারে; দ্রুত আর cache-বান্ধব, কিন্তু বানানোর পর বদলানো ব্যয়বহুল।যেখানে শিখবেন: পর্ব ৩৯
- Cuckoo hashingকাক্কু হ্যাশিং
- প্রতিটি key-এর দুটি সম্ভাব্য ঘর রাখার কৌশল; দুটিই ভরা থাকলে পুরোনো key-কে সরিয়ে তার অন্য ঘরে পাঠানো হয়। find worst case-এও মাত্র দুটি ঘর দেখে।যেখানে শিখবেন: পর্ব ৩২
- Cumulative frequencyকিউমুলেটিভ ফ্রিকোয়েন্সি
- একটি মান পর্যন্ত সব মানের গণনার যোগফল — অর্থাৎ frequency array-এর prefix sumযেখানে শিখবেন: পর্ব ৩৬
- Current-arc pointerকারেন্ট আর্ক
- Dinic-এ প্রতিটি vertex-এর একটি pointer, যা মনে রাখে কোন edge পর্যন্ত দেখা শেষ; ভরা বা কানাগলির edge আর দেখা হয় না, তাই একটি phase O(VE)-এ শেষ হয়।যেখানে শিখবেন: পর্ব ৪৭
- Custom hashকাস্টম হ্যাশ
- standard লাইব্রেরির hash-এর বদলে নিজের দেওয়া hash function — যেমন এলোমেলো seed-সহ splitmix64; key ছড়িয়ে দিতে বা pair-এর মতো type-কে key বানাতে লাগে।যেখানে শিখবেন: পর্ব ১৫পর্ব ৩২
- Cut (S, V − S)কাট
- গ্রাফের vertex-গুলোকে দুটি অশূন্য, পরস্পর-বিচ্ছিন্ন ভাগে ভাগ করা। যে edge-এর দুই প্রান্ত দুই ভাগে, সে cut-কে পার হয়।যেখানে শিখবেন: পর্ব ৪৫পর্ব ৭০
- Cut propertyকাট প্রপার্টি
- MST-এর মৌলিক উপপাদ্য: যেকোনো cut-এর light edge কোনো না কোনো MST-তে থাকে; সব ওজন আলাদা হলে প্রতিটি MST-তে। প্রমাণ exchange argument দিয়ে।যেখানে শিখবেন: পর্ব ৪৫পর্ব ৬৭পর্ব ৬৯
- Cutting planeকাটিং প্লেন
- এমন একটি নতুন linear শর্ত যা প্রতিটি বৈধ পূর্ণসংখ্যা সমাধান মানে, কিন্তু LP relaxation-এর বর্তমান ভগ্নাংশ সমাধানটিকে বাদ দেয়; এতে relaxation আসল সমস্যার কাছাকাছি আসে।যেখানে শিখবেন: পর্ব ৫৭
- Cycleসাইকেল
- যে path শুরুর vertex-এই শেষ হয় আর মাঝে কোনো vertex বা edge পুনরাবৃত্ত হয় না; simple undirected গ্রাফে দৈর্ঘ্য অন্তত ৩.যেখানে শিখবেন: পর্ব ৩৯পর্ব ৪৫
- Cycle detectionসাইকেল ডিটেকশন
- গ্রাফে বা কোনো ক্রমে ঘুরে একই জায়গায় ফেরার পথ (cycle) আছে কি না বের করা। undirected গ্রাফে DSU দিয়ে (কোনো edge-এর দুই প্রান্ত আগেই একই দলে থাকলে cycle), বা DFS-এ parent নয় এমন আগে দেখা প্রতিবেশী পেলে; directed গ্রাফে DFS-এ ধূসর vertex-এ যাওয়া edge (back edge) পেলে; আর linked list-এ Floyd-এর tortoise-hare পদ্ধতিতে।যেখানে শিখবেন: পর্ব ৩৩পর্ব ৪১
D
- d-ary heapডি-এরি হিপ
- binary heap-এর সাধারণ রূপ, যেখানে প্রতিটি node-এর d টি সন্তান; উচ্চতা log_d n, তাই insert দ্রুত হয় কিন্তু extract-এ প্রতি স্তরে d টি সন্তান দেখতে হয়। Donald B. Johnson ১৯৭৫ সালে প্রস্তাব করেন।যেখানে শিখবেন: পর্ব ২৩
- DAG (directed acyclic graph)ড্যাগ
- কোনো directed cycle নেই এমন directed গ্রাফ — যেমন কোর্সের prerequisite বা কাজের ক্রম; একে topological ক্রমে সাজানো যায়।যেখানে শিখবেন: পর্ব ৩৯পর্ব ৪১পর্ব ৪২
- Damerau-Levenshtein distanceডামেরাউ-লেভেনশ্টাইন ডিসট্যান্স
- Levenshtein distance-এর সাথে চতুর্থ একটি অপারেশন — পাশাপাশি দুটি অক্ষরের অদলবদল (transposition), যেমন “teh” থেকে “the” — যোগ করে মাপা দূরত্ব; টাইপের ভুলের জন্য বেশি স্বাভাবিক।যেখানে শিখবেন: পর্ব ৫৪
- Dangling pointerড্যাংলিং পয়েন্টার
- এমন pointer, যা একটি ইতিমধ্যে মুছে ফেলা (free বা delete করা) বস্তুকে দেখাচ্ছে; এর ভেতরে পড়া বা লেখা undefined behavior.যেখানে শিখবেন: পর্ব ১২পর্ব ২৭
- Dangling pointer / referenceড্যাংলিং পয়েন্টার
- এমন pointer বা reference, যা এমন মেমরির দিকে তাকিয়ে আছে যেটি আর বৈধ নেই (ছেড়ে দেওয়া হয়েছে বা সরানো হয়েছে).যেখানে শিখবেন: পর্ব ১০
- Data compressionডেটা কমপ্রেশন
- ডেটাকে কম বিটে লেখার কৌশল, যাতে কম জায়গা লাগে আর দ্রুত পাঠানো যায়; lossless আর lossy — দুই ধরনের হয়।যেখানে শিখবেন: পর্ব ৫১
- Data streamডেটা স্ট্রিম
- একটার পর একটা আসা ডেটা, যার মোট দৈর্ঘ্য আগে জানা নেই আর সব মেমরিতে রাখা যায় না; প্রতিটি উপাদান সাধারণত একবারই দেখা যায়।যেখানে শিখবেন: পর্ব ৬১
- Data structureডেটা স্ট্রাকচার
- ডেটা মেমরিতে কীভাবে সাজানো থাকবে আর তার ওপর কোন কাজ (যোগ, খোঁজা, মুছে ফেলা) কত দ্রুত করা যাবে — তার নিয়ম; যেমন array, stack, tree, hash table.যেখানে শিখবেন: পর্ব ০১পর্ব ১৫
- Database indexডেটাবেস ইনডেক্স
- টেবিলের কোনো কলামের মান থেকে সংশ্লিষ্ট row দ্রুত খুঁজে পাওয়ার জন্য রাখা আলাদা ডেটা স্ট্রাকচার, সাধারণত B+ tree; বইয়ের শেষের নির্ঘণ্টের মতোযেখানে শিখবেন: পর্ব ৩০
- Deadlineডেডলাইন
- যে সময়ের মধ্যে একটি কাজ শেষ হওয়ার কথা; এর পরে শেষ হলে কাজটি দেরিতে (late) হয়।যেখানে শিখবেন: পর্ব ৫০
- Deadlockডেডলক
- কয়েকটি process একে অন্যের হাতে থাকা resource-এর জন্য চক্রাকারে অপেক্ষা করছে, তাই কেউই আর এগোতে পারে না; wait-for গ্রাফে এটি একটি cycle.যেখানে শিখবেন: পর্ব ৪৬
- Deamortizationডি-অ্যামর্টাইজেশন
- একটি amortized ডেটা স্ট্রাকচারের দামি কাজটিকে ছোট টুকরো করে পরের কাজগুলোর মধ্যে ছড়িয়ে দেওয়া, যাতে প্রতিটি কাজ worst case-এও দ্রুত হয়, যেমন ধাপে ধাপে rehash বা কপি।যেখানে শিখবেন: পর্ব ৬০
- Decision problemডিসিশন প্রবলেম
- যে প্রশ্নের উত্তর শুধু হ্যাঁ বা না — যেমন “৮ ঘণ্টায় কি শেষ করা যায়?” প্রায়ই একটি optimization problem-কে এমন প্রশ্নে বদলে সহজে সমাধান করা হয়।যেখানে শিখবেন: পর্ব ১৯পর্ব ৬৪পর্ব ৭০
- Decision tree (comparison tree)ডিসিশন ট্রি
- তুলনা-ভিত্তিক অ্যালগরিদমের একটি মডেল: প্রতিটি ভেতরের node একটি তুলনা, শাখা তার উত্তর, আর প্রতিটি পাতা একটি চূড়ান্ত ফল। worst-case তুলনার সংখ্যা = গাছের উচ্চতা; পাতার সংখ্যা থেকে নিম্নসীমা প্রমাণ করা যায়।যেখানে শিখবেন: পর্ব ১৮পর্ব ২৪পর্ব ৭০
- Decrease-keyডিক্রিজ-কি
- priority queue-এর ভেতরে থাকা একটি উপাদানের key কমানোর অপারেশন; binary heap-এ উপাদানটির অবস্থান জানা থাকলে sift-up দিয়ে O(log n). Dijkstra আর Prim-এ লাগে।যেখানে শিখবেন: পর্ব ২৩পর্ব ৪৩পর্ব ৪৫
- Deduplicationডিডুপ্লিকেশন
- একই মানের একাধিক কপি থেকে একটি রেখে বাকিগুলো বাদ দেওয়া; সাজানো ডেটায় একই মান পাশাপাশি থাকে বলে এক যাত্রায় O(n) সময়ে করা যায়, আর hash set দিয়ে না সাজিয়েও গড়ে O(n).যেখানে শিখবেন: পর্ব ২০পর্ব ৩২
- Definitenessডেফিনিটনেস
- প্রতিটি ধাপ এত স্পষ্ট হতে হবে যে দুজন আলাদা মানুষ বা যন্ত্র একই ধাপকে একইভাবে বুঝবে — “পরিমাণমতো” জাতীয় অস্পষ্টতা চলবে না।যেখানে শিখবেন: পর্ব ০২পর্ব ৭০
- DEFLATEডিফ্লেট
- zip, gzip আর PNG-এর সংকোচন পদ্ধতি: প্রথমে LZ77 দিয়ে পুনরাবৃত্তি বদলানো, তারপর canonical Huffman code দিয়ে লেখা।যেখানে শিখবেন: পর্ব ৫১
- Degenerate (skewed) treeডিজেনারেট ট্রি
- যে tree-র প্রায় প্রতিটি node-এর মাত্র একটি সন্তান, ফলে tree একটি লম্বা শিকল বা linked list-এর মতো; উচ্চতা n − 1.যেখানে শিখবেন: পর্ব ২৬পর্ব ২৭পর্ব ২৮
- Degree (of a node)ডিগ্রি
- rooted tree-তে একটি node-এর সন্তানের সংখ্যা; leaf-এর degree শূন্য, binary tree-তে সর্বোচ্চ 2.যেখানে শিখবেন: পর্ব ২৬
- Degree (of a vertex)ডিগ্রি
- Undirected গ্রাফে একটি vertex-কে ছোঁয়া edge-এর সংখ্যা, deg(v); self-loop ২ হিসেবে গোনা হয়। সব degree-র যোগফল 2m.যেখানে শিখবেন: পর্ব ৩৯
- Delaunay triangulationডেলোনে ট্রায়াঙ্গুলেশন
- বিন্দুগুলোকে এমনভাবে ত্রিভুজে জোড়া যাতে কোনো ত্রিভুজের পরিবৃত্তের ভেতরে অন্য বিন্দু না থাকে; Voronoi diagram-এর দ্বৈত রূপ, Boris Delaunay ১৯৩৪ সালে বর্ণনা করেন।যেখানে শিখবেন: পর্ব ৬৩
- Denial of service (DoS)ডিনায়াল অব সার্ভিস
- যে আক্রমণে কোনো সার্ভারকে এত ব্যস্ত বা অচল করে দেওয়া হয় যে আসল ব্যবহারকারীরা আর সেবা পান না।যেখানে শিখবেন: পর্ব ৩২
- Dense graphডেন্স গ্রাফ
- যে গ্রাফে edge-এর সংখ্যা n²-এর ক্রমে (m = Θ(n²)), অর্থাৎ সম্ভাব্য প্রায় সব জোড়া যুক্ত; এখানে adjacency matrix ভালো চলে।যেখানে শিখবেন: পর্ব ৩৯পর্ব ৪৩পর্ব ৪৪
- Dense rankডেন্স র্যাংক
- সমান মানে একই rank দেওয়া আর পরের আলাদা মানকে ঠিক পরের rank দেওয়া, কোনো ফাঁক না রেখে: 92, 92, 85 → 1, 1, 2. competition rank-এ একই ক্ষেত্রে 1, 1, 3 হয়যেখানে শিখবেন: পর্ব ২৫
- Dependency graphডিপেনডেন্সি গ্রাফ
- কাজ, ফাইল, প্যাকেজ বা কোর্সের directed গ্রাফ, যেখানে u → v মানে v শুরু করতে আগে u লাগবে। build system, package manager আর spreadsheet এই গ্রাফে topological order ধরে কাজ করে।যেখানে শিখবেন: পর্ব ৪২পর্ব ৪৬
- Depth (of a node)ডেপথ বা গভীরতা
- root থেকে কোনো node পর্যন্ত পথে edge-এর সংখ্যা; root-এর depth শূন্য।যেখানে শিখবেন: পর্ব ২৬পর্ব ২৭পর্ব ৪৮
- Depth (of a set of intervals)ডেপথ
- কোনো একটি মুহূর্তে একসাথে চলা interval-এর সর্বোচ্চ সংখ্যা; interval partitioning-এ অন্তত এতগুলো রিসোর্স লাগে, আর greedy ঠিক এতগুলোই ব্যবহার করে।যেখানে শিখবেন: পর্ব ৫০
- Depth-first (LIFO) branch and boundডেপথ-ফার্স্ট ব্রাঞ্চ অ্যান্ড বাউন্ড
- Stack বা রিকার্শন দিয়ে আগে গভীরে যাওয়া branch and bound — backtracking-এর সাথে bound দিয়ে ছাঁটাই; মেমরি কম লাগে আর দ্রুত একটি সম্পূর্ণ সমাধান পাওয়া যায়।যেখানে শিখবেন: পর্ব ৫৭
- Depth-first search (DFS)ডেপথ-ফার্স্ট সার্চ
- গ্রাফ বা tree ঘোরার পদ্ধতি, যেখানে একটি পথ ধরে যতদূর সম্ভব গভীরে যাওয়া হয়, তারপর পিছিয়ে এসে অন্য পথ ধরা হয়; রিকার্শন বা একটি explicit stack দিয়ে লেখা যায়।যেখানে শিখবেন: পর্ব ১৩পর্ব ২৬পর্ব ৩১
- Deque (double-ended queue)ডেক
- এমন সারি, যার দুই প্রান্তেই উপাদান ঢোকানো ও বের করা যায়, প্রতিটি কাজ O(1). monotonic deque দিয়ে প্রতিটি sliding window-এর সর্বোচ্চ বা সর্বনিম্ন O(n)-এ বের করা যায়।যেখানে শিখবেন: পর্ব ১৪পর্ব ১৬পর্ব ৪০
- Dequeue (operation)ডিকিউ
- Queue-এর সামনে (front) থেকে সবচেয়ে পুরোনো উপাদানটি বের করে আনার অপারেশন। বানানে কাছাকাছি হলেও এটি deque ডেটা স্ট্রাকচার নয়।যেখানে শিখবেন: পর্ব ১৪পর্ব ৬০
- Derandomizationডির্যান্ডমাইজেশন
- একটি randomized অ্যালগরিদমকে একই রকম দক্ষ deterministic অ্যালগরিদমে রূপ দেওয়া, বা কম এলোমেলো বিট দিয়ে কাজ চালানো; যেমন method of conditional expectations.যেখানে শিখবেন: পর্ব ৬১
- Descendantডিসেন্ড্যান্ট বা উত্তরসূরি
- কোনো node-এর subtree-তে তার নিচে থাকা সব node — সন্তান, সন্তানের সন্তান, এভাবে leaf পর্যন্ত।যেখানে শিখবেন: পর্ব ২৬পর্ব ৪১
- Descent on a segment treeসেগমেন্ট ট্রি ডিসেন্ট
- root থেকে একটি মাত্র পথে leaf পর্যন্ত নেমে প্রশ্নের উত্তর খোঁজা, প্রতিটি node-এ বাঁ সন্তানের মান দেখে বাঁয়ে না ডানে যাবেন ঠিক করা; যেমন প্রথম কোন index-এ prefix sum ≥ k, সময় O(log n)যেখানে শিখবেন: পর্ব ৩৪
- Deterministic algorithmডিটারমিনিস্টিক অ্যালগরিদম
- যে অ্যালগরিদমে কোনো এলোমেলো সিদ্ধান্ত নেই: একই ইনপুটে প্রতিবার হুবহু একই ধাপ, একই উত্তর আর একই সময়ের নিশ্চয়তা।যেখানে শিখবেন: পর্ব ৫৮পর্ব ৬১পর্ব ৬২
- DFS tree / DFS forestডিএফএস ট্রি
- DFS যে edge দিয়ে প্রতিটি vertex প্রথম আবিষ্কার করে (parent থেকে সন্তান), সেগুলো মিলে তৈরি tree; গ্রাফ connected না হলে কয়েকটি tree মিলে DFS forest.যেখানে শিখবেন: পর্ব ৪১পর্ব ৪৬
- Diameter (of a tree)ডায়ামিটার
- tree-র যেকোনো দুই node-এর মধ্যে সবচেয়ে লম্বা পথের দৈর্ঘ্য (সাধারণত edge-এ মাপা); পথটি root দিয়ে না-ও যেতে পারে।যেখানে শিখবেন: পর্ব ২৬পর্ব ৪৮পর্ব ৫৫
- Dictionary (ADT)ডিকশনারি
- key → value জোড়া রাখার abstract data type, যার মূল কাজ insert, find আর delete; hash table, BST বা সাজানো অ্যারে দিয়ে বানানো যায়।যেখানে শিখবেন: পর্ব ৩২
- diffডিফ
- দুটি ফাইল বা টেক্সটের পার্থক্য দেখানোর প্রোগ্রাম: কোন লাইন মোছা (−), কোনটি নতুন (+) আর কোনগুলো একই আছে; ভেতরে LCS বা shortest edit script-এর অ্যালগরিদম কাজ করে। git-ও এভাবে পরিবর্তন দেখায়।যেখানে শিখবেন: পর্ব ৫৪
- Difference arrayডিফারেন্স অ্যারে
- পাশাপাশি ঘরের পার্থক্যের অ্যারে, D[i] = A[i] − A[i − 1]; [l, r]-এ v যোগ করতে শুধু D[l] += v আর D[r + 1] −= v, আর শেষে D-এর prefix sum নিলে A ফিরে আসে।যেখানে শিখবেন: পর্ব ১৭পর্ব ৩৫পর্ব ৩৬
- Digit DPডিজিট ডিপি
- একটি সীমা N পর্যন্ত কয়টি সংখ্যা কোনো অঙ্কভিত্তিক শর্ত মানে, তা অঙ্কগুলো বাঁ থেকে একে একে বসিয়ে গোনার DP; [L, R]-এর উত্তর f(R) − f(L − 1).যেখানে শিখবেন: পর্ব ৫৫
- Dijkstra's algorithmডাইকস্ট্রার অ্যালগরিদম
- ঋণাত্মক ওজন নেই এমন গ্রাফে একটি উৎস থেকে সব vertex-এর সবচেয়ে ছোট পথ বের করার অ্যালগরিদম (১৯৫৯); binary heap দিয়ে O((V + E) log V).যেখানে শিখবেন: পর্ব ২৩পর্ব ৩৯পর্ব ৪৪
- Dinic's (Dinitz's) algorithmডিনিক অ্যালগরিদম
- max flow-এর অ্যালগরিদম (Yefim Dinitz, ১৯৭০): প্রতিটি phase-এ BFS দিয়ে level graph বানিয়ে DFS দিয়ে blocking flow পাঠানো। সময় O(V²E), bipartite matching-এ O(E√V)যেখানে শিখবেন: পর্ব ৪৭
- Direct-address tableডিরেক্ট-অ্যাড্রেস টেবিল
- যে টেবিলে key নিজেই অ্যারের index — যেমন রোল নম্বর দিয়ে a[roll]; সব কাজ O(1), কিন্তু সম্ভাব্য সব key-এর জন্য একটি করে ঘর লাগে, তাই key-এর পরিসর ছোট হলেই কেবল চলে।যেখানে শিখবেন: পর্ব ৩২
- Directed cycleডিরেক্টেড সাইকেল
- তীরের দিক মেনে হেঁটে কোনো vertex থেকে বেরিয়ে আবার সেখানে ফেরার পথ, যেমন a → b → c → a. নির্ভরতার গ্রাফে এর মানে কাজগুলো একে অন্যের জন্য অপেক্ষা করছে — কোনো বৈধ ক্রম নেই।যেখানে শিখবেন: পর্ব ৪২
- Directed graph (digraph)ডিরেক্টেড গ্রাফ
- যে গ্রাফের প্রতিটি edge-এর একটি দিক আছে: (u, v) মানে u থেকে v-তে যাওয়া যায়, উল্টো দিকে নয় — একমুখী রাস্তা বা ওয়েব লিংকের মতো।যেখানে শিখবেন: পর্ব ৩৯পর্ব ৪০পর্ব ৪১
- Discovery time d[u]ডিসকভারি টাইম
- DFS যখন কোনো vertex প্রথম দেখে (ধূসর করে), তখনকার ঘড়ির মান; প্রতিটি ঘটনায় ঘড়ি এক বাড়ে।যেখানে শিখবেন: পর্ব ৪১পর্ব ৪৬
- Disjoint set union (DSU, union-find)ডিসজয়েন্ট সেট ইউনিয়ন
- পরস্পর-বিচ্ছিন্ন কয়েকটি দল রাখার ডেটা স্ট্রাকচার, যেখানে দল শুধু জোড়া লাগে; কাজ make-set, find আর union. Union by rank আর path compression-সহ m টি কাজ মোট O(m α(n)) সময় নেয়।যেখানে শিখবেন: পর্ব ৩৩পর্ব ৪৫পর্ব ৪৮
- Disjoint sparse tableডিসজয়েন্ট স্পার্স টেবিল
- Sparse table-এর একটি রূপ, যেখানে প্রতিটি স্তরে মাঝখান থেকে বাঁয়ে আর ডানে জমা উত্তর রাখা হয়; ফলে যেকোনো associative অপারেশনের (যোগ, গুণ, ম্যাট্রিক্স গুণ) প্রশ্ন ওভারল্যাপ ছাড়াই O(1)-এ, বানাতে O(n log n).যেখানে শিখবেন: পর্ব ৩৭
- Disk block / pageডিস্ক ব্লক বা পেজ
- ডিস্ক বা SSD থেকে একবারে পড়া বা লেখা ডেটার নির্দিষ্ট মাপের টুকরো, সাধারণত কয়েক KB (যেমন 4 KB, 8 KB, 16 KB); একটি byte লাগলেও পুরো block আনতে হয়যেখানে শিখবেন: পর্ব ৩০
- Distance-vector routingডিসট্যান্স-ভেক্টর রাউটিং
- নেটওয়ার্কের routing পদ্ধতি, যেখানে প্রতিটি router শুধু প্রতিবেশীদের কাছ থেকে “কোথায় কত দূর” তালিকা পেয়ে নিজের তালিকা হালনাগাদ করে — বিতরণ করা Bellman-Ford. RIP এর উদাহরণ।যেখানে শিখবেন: পর্ব ৪৪
- Distractorডিসট্র্যাক্টর
- MCQ-এর ইচ্ছাকৃত বিভ্রান্তিকর ভুল অপশন, যা কোনো প্রচলিত ভুল ধারণা থেকে বানানো হয় — যেমন quick sort-এর worst case হিসেবে n log n, বা heap-এ search-এর সময় log n.যেখানে শিখবেন: পর্ব ৬৯
- Divide and conquerডিভাইড অ্যান্ড কনকার
- সমস্যাকে কয়েকটি ছোট উপ-সমস্যায় ভাগ করা, প্রতিটি রিকার্শন দিয়ে সমাধান করা, তারপর ফলগুলো জোড়া দেওয়ার কৌশল, যেমন merge sort আর binary search.যেখানে শিখবেন: পর্ব ০৯পর্ব ২১পর্ব ২২
- Divide and conquer optimization (DP)ডিভাইড অ্যান্ড কনকার অপটিমাইজেশন
- যখন সর্বোত্তম j, i বাড়লে কখনো কমে না, তখন মাঝের i-র উত্তর বের করে দুই পাশে সরু রেঞ্জে recursion করে DP-র একটি সারি O(n log n)-এ ভরার কৌশল।যেখানে শিখবেন: পর্ব ৫৫
- Divisibility (a | b)ডিভিজিবিলিটি
- a | b মানে a দিয়ে b নিঃশেষে বিভাজ্য, অর্থাৎ কোনো পূর্ণসংখ্যা k-এর জন্য b = a·k. যেমন 3 | 12, কিন্তু 5 ∤ 12.যেখানে শিখবেন: পর্ব ৬২
- Division methodডিভিশন মেথড
- hash বানানোর নিয়ম h(k) = k mod m; ভালো ছড়ানোর জন্য m হিসেবে এমন মৌলিক সংখ্যা নিতে হয়, যা 2-এর কোনো ঘাতের খুব কাছে নয়।যেখানে শিখবেন: পর্ব ৩২
- DOM (Document Object Model)ডম
- ব্রাউজার একটি ওয়েবপেজের HTML পড়ে যে tree বানায়: প্রতিটি ট্যাগ একটি node, ভেতরের ট্যাগগুলো তার সন্তান। JavaScript এই tree পড়ে ও বদলে পেজ পরিবর্তন করে।যেখানে শিখবেন: পর্ব ২৬
- Dot productডট প্রোডাক্ট
- দুটি vector-এর a.x·b.x + a.y·b.y = |a|·|b|·cos θ; চিহ্ন দেখে কোণ সূক্ষ্ম, সমকোণ না স্থূল বোঝা যায়, আর a · b / |b| হলো b-এর দিকে a-এর projection.যেখানে শিখবেন: পর্ব ৬৩
- Double blackডাবল ব্ল্যাক
- Red-black tree-র delete-এ একটি কালো node সরানোর পর তার জায়গার node-কে দেওয়া কল্পিত বাড়তি কালো; এতে কালো নিয়মের হিসাব ঠিক থাকে, আর fix-up সেই বাড়তি কালোটি ওপরে ঠেলে বা rotation করে শোধ করে।যেখানে শিখবেন: পর্ব ২৯
- Double hashingডাবল হ্যাশিং
- open addressing-এর নিয়ম h(k, i) = (h1(k) + i·h2(k)) mod m; দ্বিতীয় hash লাফের দৈর্ঘ্য ঠিক করে, তাই প্রতিটি key-এর নিজস্ব পথ। h2(k) কখনো 0 হবে না আর m-এর সাথে সহমৌলিক হবে।যেখানে শিখবেন: পর্ব ৩২
- Double hashing (two moduli)ডাবল হ্যাশিং
- string hashing-এ একই string-এর দুটি hash দুটি আলাদা বড় মৌলিক mod দিয়ে হিসাব করে জোড়া হিসেবে তুলনা করা, যাতে ভুল মিলের সম্ভাবনা প্রায় গুণফলের হারে কমে যায়। hash table-এর double hashing থেকে এটি আলাদা ধারণা।যেখানে শিখবেন: পর্ব ৫৮
- Double rotationডাবল রোটেশন
- পরপর দুটি rotation: আগে সন্তানে, তারপর মূল node-এ। LR আর RL-এর মতো আঁকাবাঁকা ভারসাম্যহীনতা সারাতে লাগে; ফলে নাতি node সরাসরি দুই ধাপ ওপরে ওঠে।যেখানে শিখবেন: পর্ব ২৮
- Doubling testডাবলিং টেস্ট
- ইনপুট n থেকে 2n করে কাজ বা সময় কত গুণ বাড়ে তা মেপে বৃদ্ধির হার অনুমান করা; প্রায় 2^k গুণ হলে বৃদ্ধি n^k-এর মতোযেখানে শিখবেন: পর্ব ০৪পর্ব ৬৮
- Doubly linked listডাবলি লিংকড লিস্ট
- যে linked list-এ প্রতিটি node আগের (prev) আর পরের (next) দুটি node-এরই ঠিকানা রাখে; দুই দিকে হাঁটা যায়, আর node হাতে থাকলে তাকে O(1) সময়ে মোছা যায়।যেখানে শিখবেন: পর্ব ১২
- DP stateডিপি স্টেট
- DP-র একটি উপসমস্যা, যেমন dp[i] = “প্রথম i দিনে সর্বোচ্চ আয়”; ভবিষ্যতের সিদ্ধান্তের জন্য যতটুকু তথ্য দরকার, অবস্থায় ঠিক ততটুকু থাকে।যেখানে শিখবেন: পর্ব ৫২পর্ব ৫৩পর্ব ৫৪
- DP transitionডিপি ট্রানজিশন
- একটি অবস্থার উত্তর কোন কোন ছোট অবস্থা থেকে কীভাবে আসে — recurrence-এর এক একটি পছন্দ। DP-র সময় = অবস্থার সংখ্যা × প্রতিটির transition খরচ।যেখানে শিখবেন: পর্ব ৫২পর্ব ৫৩
- Dry run (hand tracing)ড্রাই রান
- কম্পিউটারে না চালিয়ে খাতা-কলমে একটি ছোট ইনপুটে কোড বা অ্যালগরিদম ধাপে ধাপে চালানো, প্রতিটি ভ্যারিয়েবলের মান লিখে লিখে।যেখানে শিখবেন: পর্ব ০১পর্ব ১০পর্ব ১৪
- DSU with rollbackরোলব্যাক ডিএসইউ
- যে DSU শেষ কয়েকটি union উল্টো ক্রমে বাতিল (undo) করতে পারে; path compression বাদ দিয়ে শুধু union by size রাখা হয়, প্রতিটি find O(log n), undo O(1).যেখানে শিখবেন: পর্ব ৩৩পর্ব ৬৭
- Dual-pivot quicksortডুয়াল-পিভট কুইকসর্ট
- দুটি pivot নিয়ে array-কে তিন ভাগে ভাগ করা quick sort-এর রূপ; Vladimir Yaroslavskiy-র নকশা, Java 7 থেকে primitive array সাজাতে Arrays.sort এটি ব্যবহার করেযেখানে শিখবেন: পর্ব ২৫
- Dutch national flag problemডাচ ন্যাশনাল ফ্ল্যাগ প্রবলেম
- Edsger Dijkstra-র তুলে ধরা সমস্যা: তিন রকম মানের (যেমন 0, 1, 2) অ্যারেকে এক পাসে, শুধু swap দিয়ে, তিন ভাগে সাজানো। lo, mid, hi — তিন pointer দিয়ে Θ(n) সময়ে আর O(1) বাড়তি জায়গায় হয়।যেখানে শিখবেন: পর্ব ১৬পর্ব ২২
- Dynamic arrayডায়নামিক অ্যারে
- যে array জায়গা ফুরালে নিজে থেকে বড় (সাধারণত ১.৫ বা ২ গুণ) নতুন জায়গা নিয়ে পুরোনো উপাদান কপি করে নেয়। যেমন C++-এর std::vector আর Python-এর list; শেষে যোগ করা amortized O(1).যেখানে শিখবেন: পর্ব ০৫পর্ব ০৬পর্ব ১০
- Dynamic connectivityডায়নামিক কানেক্টিভিটি
- গ্রাফে edge যোগ (বা মোছা) হতে থাকা অবস্থায় বারবার জানতে চাওয়া যে দুটি vertex-এর মধ্যে পথ আছে কি না। শুধু যোগ হলে DSU যথেষ্ট।যেখানে শিখবেন: পর্ব ৩৩পর্ব ৬৭
E
- Earliest deadline first (EDF)আর্লিয়েস্ট ডেডলাইন ফার্স্ট
- যে কাজের deadline সবচেয়ে আগে, সেটি আগে করার নিয়ম; এক মেশিনে সর্বোচ্চ lateness সবচেয়ে কম রাখে (Jackson-এর নিয়ম), রিয়েল-টাইম সিস্টেমের scheduling-এও ব্যবহৃত।যেখানে শিখবেন: পর্ব ৫০
- Earliest finish time firstআর্লিয়েস্ট ফিনিশ টাইম
- activity selection-এর greedy নিয়ম: যে কাজ সবচেয়ে আগে শেষ হয় এবং আগে নেওয়া কাজগুলোর সাথে মেলে না, সেটি আগে নিন — এতে বাকি সময় সবচেয়ে বেশি খালি থাকে।যেখানে শিখবেন: পর্ব ৫০
- Eccentricityএক্সেন্ট্রিসিটি
- একটি node থেকে সবচেয়ে দূরের node-এর দূরত্ব; যার eccentricity সবচেয়ে কম সে কেন্দ্র (center), আর সবচেয়ে বেশি eccentricity-ই diameter.যেখানে শিখবেন: পর্ব ৪৮
- Edgeএজ
- graph বা tree-তে দুটি vertex (node)-কে জোড়া দেওয়া সংযোগ; directed গ্রাফে এর একটি দিক থাকে। tree-তে প্রতিটি edge একটি parent আর তার একটি সন্তানকে জোড়ে, তাই n টি node-এর tree-তে edge ঠিক n − 1 টি।যেখানে শিখবেন: পর্ব ২৬পর্ব ৩১পর্ব ৩৩
- Edge caseএজ কেস
- input-এর সীমানার বা অস্বাভাবিক অবস্থা — খালি অ্যারে, একটি মাত্র উপাদান, সব মান সমান, শূন্য, ঋণাত্মক বা খুব বড় সংখ্যা; বেশিরভাগ বাগ এখানেই লুকায়।যেখানে শিখবেন: পর্ব ০২পর্ব ১০পর্ব ১১
- Edge classificationএজ ক্লাসিফিকেশন
- DFS-এর সময় প্রতিটি edge-কে tree, back, forward বা cross শ্রেণিতে ভাগ করা — edge প্রথম পরীক্ষার মুহূর্তে অন্য প্রান্তের রং আর discovery time দেখে।যেখানে শিখবেন: পর্ব ৪১
- Edge contractionএজ কন্ট্র্যাকশন
- একটি edge-এর দুই প্রান্তকে একটি vertex-এ জুড়ে দেওয়া; বাকি edge থেকে যায় (parallel edge-সহ), আর দুজনের মাঝের edge-গুলো self-loop হয়ে বাদ যায়।যেখানে শিখবেন: পর্ব ৬১
- Edge listএজ লিস্ট
- শুধু সব edge (u, v) বা (u, v, w)-এর একটি অ্যারে; জায়গা Θ(m). Edge সর্ট করতে হয় এমন অ্যালগরিদমে (যেমন Kruskal) সুবিধাজনক।যেখানে শিখবেন: পর্ব ৩৯পর্ব ৪৪
- Edge relaxationরিল্যাক্সেশন
- edge (u, v, w)-এর জন্য dist[u] + w যদি dist[v]-এর চেয়ে ছোট হয়, তাহলে dist[v] কমিয়ে সেই মান করা; সব shortest path অ্যালগরিদমের মূল কাজ।যেখানে শিখবেন: পর্ব ৪৩পর্ব ৪৪পর্ব ৭০
- Edge weightএজ ওয়েট
- একটি edge-এর সাথে যুক্ত সংখ্যা w(u, v), যেমন রাস্তার দৈর্ঘ্য বা লেনদেনের টাকা; ঋণাত্মকও হতে পারে।যেখানে শিখবেন: পর্ব ৩৯
- Edge-disjoint pathsএজ-ডিসজয়েন্ট পাথ
- এমন কয়েকটি পথ, যাদের কোনো দুটি একই edge ব্যবহার করে না; s থেকে t-এর সর্বোচ্চ সংখ্যা = সব capacity 1 দিয়ে max flow.যেখানে শিখবেন: পর্ব ৪৭
- Edit distanceএডিট ডিসট্যান্স
- একটি স্ট্রিংকে আরেকটিতে বদলাতে সবচেয়ে কম কয়টি এক-অক্ষরের অপারেশন (insert, delete, replace) লাগে, সেই সংখ্যা; বানান-সংশোধক আর DNA তুলনায় ব্যবহৃত হয়।যেখানে শিখবেন: পর্ব ৫৪পর্ব ৬৮পর্ব ৬৯
- Editorialএডিটোরিয়াল
- কনটেস্টের পর সমস্যা-নির্মাতাদের লেখা সমাধান-ব্যাখ্যা: মূল ধারণা, কেন সেটি ঠিক, complexity আর প্রায়ই একটি নমুনা কোড।যেখানে শিখবেন: পর্ব ৭২
- Edmonds-Karp algorithmএডমন্ডস-কার্প অ্যালগরিদম
- Ford-Fulkerson, যেখানে প্রতিবার BFS দিয়ে সবচেয়ে কম edge-এর augmenting path নেওয়া হয় (১৯৭২)। সময় O(VE²), capacity-র মান থেকে স্বাধীন।যেখানে শিখবেন: পর্ব ৪৭
- Effectivenessইফেক্টিভনেস
- প্রতিটি ধাপ এত মৌলিক হতে হবে যে কাগজ-কলম দিয়ে সসীম সময়ে নির্ভুলভাবে করা যায়।যেখানে শিখবেন: পর্ব ০২পর্ব ৭০
- Elimination methodইলিমিনেশন মেথড
- উত্তর বাছাইয়ের কৌশল: সরাসরি সঠিকটি না খুঁজে প্রতিটি অপশনের পেছনের দাবি যাচাই করা, আর counterexample বা নিয়ম দিয়ে ভুলগুলো একে একে বাদ দেওয়া।যেখানে শিখবেন: পর্ব ৬৯
- End-of-word markerএন্ড-অফ-ওয়ার্ড মার্কার
- trie-র যে node-এ কোনো রাখা শব্দ শেষ হয়েছে, সেখানে বসানো একটি bool বা counter. এটি না থাকলে শুধু prefix (যেমন ca) আর পুরো শব্দ (car) আলাদা করা যেত না।যেখানে শিখবেন: পর্ব ৩১
- Enqueueএনকিউ
- Queue-এর পেছনে (rear) একটি নতুন উপাদান যোগ করার অপারেশন — সারির শেষে এসে দাঁড়ানো।যেখানে শিখবেন: পর্ব ১৪পর্ব ৬০
- Entropy (information theory)এনট্রপি
- Shannon-এর মাপ H = −Σ p log₂ p: একটি উৎসের প্রতিটি অক্ষরে গড়ে কত বিট তথ্য আছে; অক্ষর-ধরে lossless লেখায় গড় দৈর্ঘ্য এর নিচে নামে না।যেখানে শিখবেন: পর্ব ৫১
- Entry/exit time (tin/tout)এন্ট্রি-এক্সিট টাইম
- DFS-এ প্রতিটি node-এ ঢোকার ক্রমিক নম্বর tin আর তার subtree শেষ হওয়ার সময়ের সবচেয়ে বড় নম্বর tout; একটি node-এর পুরো subtree ঠিক tin থেকে tout পর্যন্ত একটানা রেঞ্জ হয়।যেখানে শিখবেন: পর্ব ৪৮
- Epsilon comparisonএপসাইলন কম্প্যারিজন
- দশমিক সংখ্যা ঠিক সমান কি না না দেখে, পার্থক্য একটি ছোট সীমা ε-এর কম কি না দেখা; ε ইনপুটের মাপ অনুযায়ী বাছতে হয়।যেখানে শিখবেন: পর্ব ৬৩
- Equivalence relationইকুইভ্যালেন্স রিলেশন
- যে সম্পর্ক reflexive (a~a), symmetric (a~b হলে b~a) আর transitive (a~b, b~c হলে a~c); এটি উপাদানগুলোকে পরস্পর-বিচ্ছিন্ন শ্রেণিতে ভাগ করে।যেখানে শিখবেন: পর্ব ৩৩পর্ব ৪৬
- Euclid's algorithmইউক্লিডস অ্যালগরিদম
- gcd(a, b) = gcd(b, a mod b) সূত্র বারবার প্রয়োগ করে b শূন্য হলে a-কেই গসাগু হিসেবে দেওয়া; প্রায় ২৩০০ বছরের পুরোনো, আজও ব্যবহৃত।যেখানে শিখবেন: পর্ব ০২পর্ব ৬২
- Euler circuitঅয়লার সার্কিট
- শুরুর vertex-এই ফিরে আসা Euler path; connected undirected গ্রাফে এটি আছে ঠিক তখন, যখন প্রতিটি vertex-এর degree জোড়।যেখানে শিখবেন: পর্ব ৩৯পর্ব ৬৬
- Euler path (Eulerian trail)অয়লার পাথ
- যে walk গ্রাফের প্রতিটি edge ঠিক একবার ব্যবহার করে; connected undirected গ্রাফে এটি আছে ঠিক তখন, যখন বিজোড় degree-র vertex ০ বা ২ টি।যেখানে শিখবেন: পর্ব ৩৯
- Euler tour (of a tree)অয়লার ট্যুর
- Tree-তে DFS করার সময় প্রতিটি vertex-এ ঢোকার সময় আর প্রতিটি সন্তান থেকে ফেরার সময় সেই vertex লিখে রাখা ক্রম; n টি vertex-এর tree-তে দৈর্ঘ্য 2n − 1. এতে দুটি vertex-এর LCA একটি range minimum query হয়ে যায়।যেখানে শিখবেন: পর্ব ৩৭পর্ব ৪৮
- Euler's theoremঅয়লারের থিওরেম
- gcd(a, n) = 1 হলে a^φ(n) ≡ 1 (mod n). Fermat-এর ছোট উপপাদ্যের সাধারণ রূপ (n মৌলিক হলে φ(n) = n − 1); RSA কেন কাজ করে, তার মূল যুক্তি।যেখানে শিখবেন: পর্ব ৬২
- Euler's totient function φ(n)অয়লারের টোশেন্ট ফাংশন
- 1 থেকে n পর্যন্ত যতগুলো সংখ্যা n-এর সাথে সহমৌলিক, তার সংখ্যা। φ(12) = 4 (1, 5, 7, 11); মৌলিক p-এ φ(p) = p − 1; সাধারণভাবে φ(n) = n · ∏(1 − 1/p), n-এর প্রতিটি আলাদা মৌলিক উৎপাদক p-এর ওপর।যেখানে শিখবেন: পর্ব ৬২
- Exact coverএক্স্যাক্ট কভার
- কিছু উপসেট থেকে এমন কয়েকটি বাছা যাতে মূল সেটের প্রতিটি উপাদান ঠিক একবার ঢাকা পড়ে; sudoku আর N-queens এই রূপে লেখা যায়, আর Knuth-এর Dancing Links এর জন্য বিখ্যাত backtracking কৌশল।যেখানে শিখবেন: পর্ব ৫৬
- Exchange argumentএক্সচেঞ্জ আর্গুমেন্ট
- greedy অ্যালগরিদমের শুদ্ধতা প্রমাণের কৌশল: যেকোনো সর্বোত্তম সমাধানকে ধাপে ধাপে বদলে greedy-র সমাধানে আনা যায়, আর তাতে সমাধান খারাপ হয় না; এর একটি রূপ “greedy এগিয়ে থাকে” যুক্তি।যেখানে শিখবেন: পর্ব ১৯পর্ব ৪৫পর্ব ৫০
- EXP (EXPTIME)এক্সপ-টাইম
- যেসব সমস্যা 2^(nᶜ) সময়ে সমাধান করা যায়। PSPACE ⊆ EXP, আর time hierarchy theorem থেকে P ≠ EXP প্রমাণিত।যেখানে শিখবেন: পর্ব ৬৪
- Expected running timeএক্সপেক্টেড রানিং টাইম
- একটি নির্দিষ্ট ইনপুটে randomized অ্যালগরিদমের নিজের এলোমেলো সিদ্ধান্তগুলোর ওপর গড় চলার সময়। এটি প্রতিটি ইনপুটের জন্য খাটে, ইনপুট-বণ্টনের অনুমান লাগে না।যেখানে শিখবেন: পর্ব ০৫পর্ব ২২পর্ব ২৪
- Expected valueএক্সপেক্টেড ভ্যালু
- প্রত্যাশিত মান — প্রতিটি সম্ভাব্য মানকে তার সম্ভাবনা দিয়ে গুণ করে যোগ করলে যে গড় পাওয়া যায়। লেখা হয় E[X] = Σ P(x)·x.যেখানে শিখবেন: পর্ব ০৫পর্ব ৩২পর্ব ৬১
- Exponential (galloping) searchএক্সপোনেনশিয়াল সার্চ
- সাজানো ক্রমে সূচক 1, 2, 4, 8, … দেখে প্রথমে এমন একটি সীমা খোঁজা যেখানে মান x-এর সমান বা বড়, তারপর সেই সীমার ভেতরে binary search; উত্তর অবস্থান p হলে O(log p), দৈর্ঘ্য অজানা হলেও চলে।যেখানে শিখবেন: পর্ব ১৮
- Exponential growthএক্সপোনেনশিয়াল গ্রোথ
- প্রতি ধাপে একটি নির্দিষ্ট গুণে বাড়া, যেমন 2^n; n একটু বাড়লেই মান বিশাল হয়ে যায়। এমন সময় লাগা অ্যালগরিদম কেবল খুব ছোট ইনপুটে চলেযেখানে শিখবেন: পর্ব ০৬পর্ব ৪৩
- Exponential timeএক্সপোনেনশিয়াল টাইম
- ধাপের সংখ্যা cⁿ আকারে বাড়ে (c > 1), যেমন O(2ⁿ) বা Θ(φⁿ); n এক বাড়লেই সময় কয়েক গুণ হয়, তাই শুধু খুব ছোট n-এ চলে।যেখানে শিখবেন: পর্ব ০৪পর্ব ০৭পর্ব ৫২
- Expression treeএক্সপ্রেশন ট্রি
- গাণিতিক রাশির tree-রূপ: internal node-এ operator, leaf-এ সংখ্যা বা চলক। এর preorder prefix রূপ, postorder postfix রূপ দেয়, আর postorder ধরে মান বের করা যায়।যেখানে শিখবেন: পর্ব ২৬
- Extended Euclidean algorithmএক্সটেন্ডেড ইউক্লিডিয়ান অ্যালগরিদম
- Euclid-এর ভাগের ধাপগুলো ধরে gcd(a, b)-এর সাথে এমন পূর্ণসংখ্যা x, y-ও বের করে যাতে a·x + b·y = gcd(a, b). সময় O(log min(a, b)); modular inverse বের করার প্রধান উপায়।যেখানে শিখবেন: পর্ব ৬২পর্ব ৬৮
- External sortingএক্সটার্নাল সর্টিং
- যে ডেটা RAM-এ একসাথে ধরে না, তা ডিস্কের সাহায্যে সাজানো: প্রথমে মেমরিতে ধরে এমন টুকরো সাজিয়ে ডিস্কে লেখা (run), তারপর সব run একসাথে merge করা।যেখানে শিখবেন: পর্ব ২১পর্ব ৩০
- External-memory model (I/O model)এক্সটার্নাল মেমরি মডেল
- Aggarwal ও Vitter-এর (১৯৮৮) বিশ্লেষণ পদ্ধতি: M মাপের দ্রুত মেমরি আর বিশাল ধীর ডিস্ক, ডেটা আসে B মাপের block-এ; খরচ গোনা হয় CPU-র ধাপে নয়, block আনা-নেওয়ার (I/O) সংখ্যায়যেখানে শিখবেন: পর্ব ৩০
F
- Factorial (n!)ফ্যাক্টোরিয়াল
- ১ থেকে n পর্যন্ত সব পূর্ণসংখ্যার গুণফল; n টি আলাদা জিনিস কতভাবে সারিতে সাজানো যায় তা বলে। 10! = 3,628,800যেখানে শিখবেন: পর্ব ০৬
- Factorial time — O(n!)ফ্যাক্টোরিয়াল টাইম
- সব বিন্যাস (permutation) যাচাই করলে যে সময় লাগে; exponential-এর চেয়েও দ্রুত বাড়ে, n = 11-12-এর পরই অচলযেখানে শিখবেন: পর্ব ০৪পর্ব ৫৬
- Failure link (suffix link)ফেইলিওর লিংক
- Aho-Corasick-এর trie-তে প্রতিটি node থেকে সেই node-এ যাওয়ার পথ, যার string বর্তমান node-এর string-এর সবচেয়ে লম্বা proper suffix এবং যা trie-তেও আছে; মিল ভাঙলে এই পথে সরে গিয়ে আবার চেষ্টা করা হয়।যেখানে শিখবেন: পর্ব ৫৯
- False positiveফলস পজিটিভ
- আসলে নেই এমন জিনিসের জন্য ভুল করে “আছে” উত্তর দেওয়া; Bloom filter-এর একমাত্র সম্ভাব্য ভুল।যেখানে শিখবেন: পর্ব ৩২
- Fan-outফ্যান-আউট
- tree-র একটি node-এর সন্তানসংখ্যা; B-tree-তে fan-out বড় (শত বা হাজার) বলে উচ্চতা খুব ছোট থাকেযেখানে শিখবেন: পর্ব ৩০
- Fast Fourier Transform (FFT)ফাস্ট ফুরিয়ে ট্রান্সফর্ম
- n টি বিন্দুর discrete Fourier transform Θ(n log n) সময়ে হিসাবের divide and conquer অ্যালগরিদম; বহুপদী রাশি আর বড় সংখ্যার দ্রুত গুণ, signal processing ও convolution-এ ব্যবহৃত। Cooley ও Tukey ১৯৬৫ সালে জনপ্রিয় করেন।যেখানে শিখবেন: পর্ব ৪৯
- Fast I/Oফাস্ট আই-ও
- লাখো সংখ্যা পড়া-লেখার সময় বাঁচানোর কৌশল, যেমন C++-এ ios::sync_with_stdio(false) আর cin.tie(nullptr), Python-এ sys.stdin.buffer.read() দিয়ে একবারে সব ইনপুট পড়া।যেখানে শিখবেন: পর্ব ৬৭পর্ব ৭২
- Fast/slow pointersফাস্ট/স্লো পয়েন্টার
- একই দিকে চলা দুটি pointer, যাদের একটি দ্রুত এগিয়ে উপাদান পড়ে আর অন্যটি ধীরে এগিয়ে ফল লেখে বা পিছিয়ে থাকে; duplicate সরানো, partition আর linked list-এ চক্র খোঁজায় ব্যবহৃত।যেখানে শিখবেন: পর্ব ১২পর্ব ১৬পর্ব ২১
- Feasibility checkফিজিবিলিটি চেক
- একটি প্রস্তাবিত মান x দিয়ে সমস্যার সব শর্ত মানা সম্ভব কি না, তা বলার ফাংশন check(x); প্রায়ই একটি greedy pass, আর উত্তরের ওপর binary search-এর প্রতিটি ধাপে একবার চলে।যেখানে শিখবেন: পর্ব ১৯পর্ব ৬৭
- Fenwick tree (Binary Indexed Tree)ফেনউইক ট্রি, বাইনারি ইনডেক্সড ট্রি
- n ঘরের একটি অ্যারেতে prefix-এর টুকরো রেখে point update আর prefix sum দুটিই O(log n)-এ করার কাঠামো; Peter Fenwick ১৯৯৪ সালে প্রকাশ করেন।যেখানে শিখবেন: পর্ব ১৭পর্ব ২৭পর্ব ৩৪
- Fermat primality testফার্মা প্রাইমালিটি টেস্ট
- a^(n−1) mod n = 1 কি না দেখা; না মিললে n নিশ্চিত যৌগিক। Carmichael number n-এর সাথে সহমৌলিক সব base-এ এই পরীক্ষা পাস করে, তাই একে ফাঁকি দেয়।যেখানে শিখবেন: পর্ব ৬১
- Fermat's little theoremফার্মার লিটল থিওরেম
- p মৌলিক আর p ∤ a হলে aᵖ⁻¹ ≡ 1 (mod p). ফলে a⁻¹ ≡ aᵖ⁻² (mod p) — দ্রুত ঘাত দিয়ে inverse. Pierre de Fermat ১৬৪০ সালে প্রমাণ ছাড়া লেখেন।যেখানে শিখবেন: পর্ব ৬২
- Fibonacci heapফিবোনাচ্চি হিপ
- Fredman ও Tarjan-এর (১৯৮৪) priority queue, যাতে insert, meld আর decrease-key amortized O(1), extract-min amortized O(log n); তাত্ত্বিকভাবে Dijkstra-কে O(E + V log V) করে, কিন্তু বাস্তবে ধ্রুবক বড়।যেখানে শিখবেন: পর্ব ২৩পর্ব ৪৩পর্ব ৪৫
- Fibonacci numbersফিবোনাচ্চি সংখ্যা
- 0, 1, 1, 2, 3, 5, 8 … ধারা, যেখানে প্রতিটি সংখ্যা আগের দুটির যোগফল: F(n) = F(n-1) + F(n-2).যেখানে শিখবেন: পর্ব ০৭পর্ব ০৮পর্ব ২৮
- FIFO (First In, First Out)ফাইফো
- যে আগে ঢোকে, সে আগে বের হয় — queue-এর মূল নিয়ম। এর উল্টো LIFO, যা stack মেনে চলে।যেখানে শিখবেন: পর্ব ১৪পর্ব ২৩পর্ব ৪০
- FIFO branch and boundফাইফো ব্রাঞ্চ অ্যান্ড বাউন্ড
- Live node-গুলোকে সাধারণ queue-তে রেখে স্তর ধরে ধরে (BFS-এর মতো) খোলা branch and bound; বুঝতে সহজ, কিন্তু ভালো সমাধান দেরিতে পায় আর মেমরি অনেক লাগে।যেখানে শিখবেন: পর্ব ৫৭
- File systemফাইল সিস্টেম
- ডিস্কে ফাইল আর ফোল্ডার কীভাবে সাজিয়ে রাখা ও খুঁজে পাওয়া হবে তার নিয়ম ও কাঠামো, যেমন NTFS, ext4, APFSযেখানে শিখবেন: পর্ব ৩০
- find (DSU)ফাইন্ড
- DSU-তে x-এর দলের প্রতিনিধি ফেরত দেওয়ার কাজ; forest-এ parent ধরে root পর্যন্ত হাঁটা। দুটি উপাদান একই দলে কি না জানতে find(a) == find(b) দেখা হয়।যেখানে শিখবেন: পর্ব ৩৩
- Finish time f[u]ফিনিশ টাইম
- DFS যখন কোনো vertex-এর সব প্রতিবেশী দেখা শেষ করে তাকে কালো করে, তখনকার ঘড়ির মান; সবসময় d[u]-এর চেয়ে বড়।যেখানে শিখবেন: পর্ব ৪১পর্ব ৪২পর্ব ৪৬
- Finitenessফাইনাইটনেস
- Knuth-এর প্রথম শর্ত: যেকোনো input-এ সসীম সংখ্যক ধাপের পরে অ্যালগরিদম অবশ্যই থামবে।যেখানে শিখবেন: পর্ব ০২পর্ব ৭০
- Fisher–Yates shuffleফিশার–ইয়েটস শাফল
- i = n−1 থেকে 1 পর্যন্ত 0..i থেকে এলোমেলো j নিয়ে a[i] ও a[j] অদলবদল; n! টি permutation-এর প্রত্যেকটি ঠিক 1/n! সম্ভাবনায় দেয়, Θ(n) সময়ে।যেখানে শিখবেন: পর্ব ৬১
- Fixed-length codeফিক্সড-লেংথ কোড
- যে code-এ প্রতিটি অক্ষর সমান সংখ্যক বিটে লেখা হয়, যেমন ASCII-র ৮ বিট; k টি অক্ষরের জন্য অন্তত ⌈log₂ k⌉ বিট লাগে।যেখানে শিখবেন: পর্ব ৫১
- Fixed-parameter tractable (FPT)ফিক্সড-প্যারামিটার ট্র্যাক্টেবল
- যে সমস্যা f(k) · n^c সময়ে সমাধান করা যায় — এখানে k একটি ছোট প্যারামিটার (যেমন উত্তরের আকার), f যেকোনো ফাংশন আর c একটি ধ্রুবক। Exponential অংশটি শুধু k-তে আটকে থাকে, n-এ নয়যেখানে শিখবেন: পর্ব ৬৫
- Floating point errorফ্লোটিং পয়েন্ট এরর
- double-এর মতো দশমিক সংখ্যা বাইনারিতে সীমিত নির্ভুলতায় রাখার কারণে ছোট rounding ভুল; জ্যামিতিতে এতে শূন্য হওয়ার কথা এমন মান সামান্য ধনাত্মক বা ঋণাত্মক হয়ে ভুল সিদ্ধান্ত আসতে পারে।যেখানে শিখবেন: পর্ব ৬৩
- Flood fillফ্লাড ফিল
- একটি ঘর থেকে শুরু করে পাশাপাশি একই ধরনের সব ঘর খুঁজে চিহ্নিত বা রং করা — গ্রিডে BFS বা DFS দিয়ে একটি connected অঞ্চল ভরাট করা, যেমন ছবি আঁকার সফটওয়্যারের রং ঢালার টুল।যেখানে শিখবেন: পর্ব ৪০পর্ব ৪১পর্ব ৭১
- Floor (⌊x⌋)ফ্লোর
- x-এর সমান বা তার চেয়ে ছোট সবচেয়ে বড় পূর্ণসংখ্যা, অর্থাৎ নিচের দিকে গোল করা। যেমন ⌊3.7⌋ = 3 আর ⌊−3.7⌋ = −4যেখানে শিখবেন: পর্ব ০৬
- Floor and ceiling (of a key)ফ্লোর আর সিলিং
- সংগ্রহের যে key x-এর সমান বা ছোট তাদের মধ্যে সবচেয়ে বড়টি হলো floor(x), আর যে key x-এর সমান বা বড় তাদের মধ্যে সবচেয়ে ছোটটি ceil(x); BST-তে দুটোই O(h).যেখানে শিখবেন: পর্ব ২৭
- Flow conservationফ্লো কনজারভেশন
- flow-এর দ্বিতীয় শর্ত: s আর t ছাড়া প্রতিটি vertex-এ যত প্রবাহ ঢোকে ঠিক তত বের হয় — মাঝে কিছু জমে না, হারায়ও না।যেখানে শিখবেন: পর্ব ৪৭
- Flow networkফ্লো নেটওয়ার্ক
- এমন একটি directed গ্রাফ, যার প্রতিটি edge-এর একটি অঋণাত্মক capacity আছে, আর দুটি বিশেষ vertex — source s আর sink t. পানির পাইপ, রাস্তা বা নেটওয়ার্ক লিংকের মডেল।যেখানে শিখবেন: পর্ব ৪৭
- Floyd's cycle detectionফ্লয়েডস সাইকেল ডিটেকশন
- Tortoise and hare নামেও পরিচিত: slow এক ধাপ আর fast দুই ধাপ চলে; cycle থাকলে তারা মেলে, তারপর একটিকে শুরুতে ফিরিয়ে দুটিকে এক ধাপ করে চালালে cycle-এর প্রথম node পাওয়া যায়। সময় O(n), জায়গা O(1)যেখানে শিখবেন: পর্ব ১২পর্ব ৭১
- Floyd-Warshall algorithmফ্লয়েড-ওয়ারশাল অ্যালগরিদম
- সব জোড়ার shortest path-এর DP: মাঝের vertex একে একে k = 1, 2, … খুলে d[i][j] = min(d[i][j], d[i][k] + d[k][j]) হালনাগাদ। সময় Θ(V³), জায়গা Θ(V²); ঋণাত্মক edge চলে (negative cycle না থাকলে)।যেখানে শিখবেন: পর্ব ৪৪পর্ব ৬৭পর্ব ৬৮
- FM-indexএফএম-ইনডেক্স
- BWT-ভিত্তিক সংকুচিত index (Ferragina ও Manzini, ২০০০), যা লেখাকে ছোট করে রেখেও তার ভেতরে একটি pattern কতবার আর কোথায় আছে তা দ্রুত বলতে পারে; DNA aligner-গুলোর ভিত্তি।যেখানে শিখবেন: পর্ব ৫৯
- Follow-up questionফলো-আপ কোয়েশ্চেন
- আগের উত্তরের সূত্র ধরে করা পরের প্রশ্ন, যা একটু একটু করে গভীরে যায়, যেমন stack থেকে call stack, তারপর stack overflow. এটি দেখায় উত্তরটি বোঝা নাকি মুখস্থ।যেখানে শিখবেন: পর্ব ৭০
- Ford-Fulkerson methodফোর্ড-ফুলকারসন মেথড
- augmenting path যতক্ষণ আছে ততক্ষণ তা দিয়ে প্রবাহ বাড়ানোর পদ্ধতি (১৯৫৬)। পথ কীভাবে খোঁজা হবে তা বলে না; integer capacity-তে O(E·|f*|) সময়।যেখানে শিখবেন: পর্ব ৪৭
- Forestফরেস্ট
- কয়েকটি আলাদা tree-র সংগ্রহ। DSU-তে প্রতিটি দল একটি tree, আর সব দল মিলে একটি forest.যেখানে শিখবেন: পর্ব ৩৩পর্ব ৩৯পর্ব ৪১
- Formal verificationফর্মাল ভেরিফিকেশন
- গাণিতিক যুক্তি ও কম্পিউটারের সাহায্যে (proof assistant, model checker) প্রোগ্রাম বা হার্ডওয়্যার specification মানে কি না তা কঠোরভাবে প্রমাণ করা।যেখানে শিখবেন: পর্ব ০৩
- Forward edgeফরোয়ার্ড এজ
- Directed গ্রাফের DFS-এ এমন non-tree edge, যা একটি vertex থেকে তার আগেই শেষ হওয়া (কালো) উত্তরসূরিতে যায়; তখন d[u] < d[v].যেখানে শিখবেন: পর্ব ৪১
- FPTAS (fully polynomial-time approximation scheme)এফপিটিএএস
- যে approximation scheme-এর সময় n আর 1/ε দুটোরই polynomial; যেমন 0/1 knapsack-এর মান গোল করা DP, O(n³/ε).যেখানে শিখবেন: পর্ব ৬৬
- Fractional knapsackফ্র্যাকশনাল ন্যাপস্যাক
- যে knapsack সমস্যায় জিনিসের ভগ্নাংশও নেওয়া যায় (যেমন চাল বা মশলা ওজন করে); প্রতি কেজির দাম (value/weight) অনুযায়ী greedy-তে সর্বোত্তম সমাধান মেলে।যেখানে শিখবেন: পর্ব ৫০পর্ব ৫৩পর্ব ৫৭
- Freivalds' algorithmফ্রেইভাল্ডস অ্যালগরিদম
- C = A·B কি না যাচাইয়ের Monte Carlo পদ্ধতি: এলোমেলো 0/1 vector r নিয়ে A·(B·r) আর C·r মেলানো; প্রতি চেষ্টায় Θ(n²), ভুল C ধরা পড়ে অন্তত 1/2 সম্ভাবনায় (Rūsiņš Freivalds, ১৯৭৭)।যেখানে শিখবেন: পর্ব ৬১
- Frequency arrayফ্রিকোয়েন্সি অ্যারে
- প্রতিটি সম্ভাব্য মানের জন্য একটি করে ঘর রেখে সেই মান কতবার এসেছে গোনার অ্যারে — যেমন ইংরেজি ছোট হাতের অক্ষরের জন্য ২৬ ঘরের অ্যারে।যেখানে শিখবেন: পর্ব ১১পর্ব ২৪পর্ব ৩২
- Frontier (BFS)ফ্রন্টিয়ার
- BFS-এ যে vertex-গুলো আবিষ্কৃত হয়েছে কিন্তু যাদের প্রতিবেশী এখনো দেখা হয়নি — queue-তে থাকা সবাই; ঢেউয়ের সামনের কিনারা।যেখানে শিখবেন: পর্ব ৪০
- Full binary treeফুল বাইনারি ট্রি
- যে binary tree-র প্রতিটি node-এর সন্তান হয় শূন্য, নয় দুটি — কখনো একটি নয়। এতে leaf-এর সংখ্যা internal node-এর চেয়ে ঠিক এক বেশি।যেখানে শিখবেন: পর্ব ২৬পর্ব ৫১
- Fundamental theorem of arithmeticফান্ডামেন্টাল থিওরেম অব অ্যারিথমেটিক
- ১-এর চেয়ে বড় প্রতিটি পূর্ণসংখ্যাকে মৌলিক সংখ্যার গুণফল হিসেবে লেখা যায়, আর ক্রম বাদ দিলে সেই লেখা একটিই — যেমন 360 = 2³·3²·5.যেখানে শিখবেন: পর্ব ৬২
G
- Galactic algorithmগ্যালাকটিক অ্যালগরিদম
- এমন অ্যালগরিদম যার asymptotic complexity সেরা, কিন্তু ধ্রুবক গুণক এত বিশাল যে পৃথিবীতে ব্যবহারযোগ্য কোনো ইনপুটে সেটি সরল পদ্ধতির চেয়ে দ্রুত হয় না।যেখানে শিখবেন: পর্ব ৪৯
- Galloping modeগ্যালপিং মোড
- Timsort-এর merge-এর একটি কৌশল: একটি দিক পরপর অনেকবার জিতলে একটি একটি তুলনার বদলে 1, 3, 7, 15 … লাফে খুঁজে তারপর binary search করে বড় অংশ একসাথে কপি করাযেখানে শিখবেন: পর্ব ২৫
- Gap reductionগ্যাপ রিডাকশন
- এমন reduction, যা “হ্যাঁ” আর “না” ইনপুটের সর্বোত্তম মানের মধ্যে বড় ফাঁক তৈরি করে; তখন একটি ভালো approximation দিয়েই সিদ্ধান্ত নেওয়া যেত, তাই সেই approximation NP-hard.যেখানে শিখবেন: পর্ব ৬৬
- Gap sequenceগ্যাপ সিকোয়েন্স
- Shell sort-এ পরপর ব্যবহার করা দূরত্বগুলোর ধারা, যেমন 1, 4, 13, 40 (Knuth); কোন ধারা নেওয়া হলো তার ওপর সর্টের গতি নির্ভর করে।যেখানে শিখবেন: পর্ব ২০
- Garbage collectionগারবেজ কালেকশন
- ভাষার runtime-এর স্বয়ংক্রিয় ব্যবস্থা, যা খুঁজে বের করে কোন বস্তুতে প্রোগ্রাম আর পৌঁছাতে পারে না, আর সেগুলোর মেমরি নিজেই ফেরত নেয় (Python, Java, JavaScript-এ).যেখানে শিখবেন: পর্ব ১২পর্ব ৬০
- GCDজিসিডি
- Greatest common divisor — গরিষ্ঠ সাধারণ গুণনীয়ক (গসাগু); দুটি পূর্ণসংখ্যাকে নিঃশেষে ভাগ করে এমন সবচেয়ে বড় সংখ্যা।যেখানে শিখবেন: পর্ব ০২পর্ব ০৩পর্ব ৩৪
- Generic MST algorithmজেনেরিক এমএসটি
- MST-এর সাধারণ greedy কাঠামো: একটি খালি edge-সেট থেকে শুরু করে প্রতি ধাপে একটি safe edge যোগ করা। Kruskal, Prim আর Borůvka এর বিশেষ রূপ।যেখানে শিখবেন: পর্ব ৪৫
- Genetic algorithmজেনেটিক অ্যালগরিদম
- অনেক সমাধানের একটি ‘জনসংখ্যা’ রেখে ভালোগুলোকে মিলিয়ে (crossover) আর একটু বদলে (mutation) নতুন প্রজন্ম তৈরির heuristic — প্রাকৃতিক নির্বাচনের অনুকরণে। কোনো গুণমানের নিশ্চয়তা নেইযেখানে শিখবেন: পর্ব ৬৫
- Geometric distributionজিওমেট্রিক ডিস্ট্রিবিউশন
- প্রথম সাফল্য পেতে কতবার চেষ্টা লাগে তার বণ্টন; প্রতিবার সাফল্যের সম্ভাবনা p হলে প্রত্যাশিত চেষ্টা 1/p. skip list-এ একটি node-এর তলার সংখ্যা এই বণ্টন মানে।যেখানে শিখবেন: পর্ব ৩৮পর্ব ৬১
- Geometric seriesজিওমেট্রিক সিরিজ
- গুণোত্তর ধারা: প্রতিটি পদ আগের পদের একটি নির্দিষ্ট গুণ। 1 + 2 + 4 + … + 2^k = 2^(k+1) − 1, তাই এমন ধারায় শেষ পদটিই প্রায় পুরো যোগফল ঠিক করেযেখানে শিখবেন: পর্ব ০৬পর্ব ০৮পর্ব ০৯
- Gift wrapping (Jarvis march)গিফট র্যাপিং
- R. A. Jarvis-এর ১৯৭৩ সালের convex hull পদ্ধতি: একটি কোণ থেকে শুরু করে প্রতিবার সব বিন্দু দেখে পরের কোণ বাছা; সময় Θ(nh), h = hull-এর কোণের সংখ্যা।যেখানে শিখবেন: পর্ব ৬৩
- Global minimum cutগ্লোবাল মিনিমাম কাট
- একটি undirected গ্রাফের vertex-গুলোকে দুটি অখালি ভাগে ভাগ করতে যে সবচেয়ে কম সংখ্যক (বা কম মোট ওজনের) edge কাটতে হয়; কোনো নির্দিষ্ট source বা sink নেই।যেখানে শিখবেন: পর্ব ৬১
- Golden ratio (φ)গোল্ডেন রেশিও
- φ = (1 + √5)/2 ≈ 1.618; r² = r + 1 সমীকরণের ধনাত্মক মূল। পরপর দুটি Fibonacci সংখ্যার অনুপাত এই মানের দিকে যায়।যেখানে শিখবেন: পর্ব ০৮পর্ব ২৮পর্ব ৫২
- Graham scanগ্রাহাম স্ক্যান
- Ronald Graham-এর ১৯৭২ সালের convex hull অ্যালগরিদম: সবচেয়ে নিচের বিন্দুর চারপাশে কোণ অনুযায়ী সাজিয়ে একটি stack-এ বাঁ মোড় রাখা; Θ(n log n).যেখানে শিখবেন: পর্ব ৬৩
- Graphগ্রাফ
- কিছু বিন্দু (vertex) আর তাদের জোড়া দেওয়া রেখা (edge) দিয়ে তৈরি কাঠামো — রাস্তার মানচিত্র, বন্ধুত্বের জাল বা কম্পিউটার নেটওয়ার্ক বোঝাতে ব্যবহৃত হয়।যেখানে শিখবেন: পর্ব ০১পর্ব ১৪পর্ব ২৬
- Graph coloringগ্রাফ কালারিং
- প্রতিটি vertex-কে এমনভাবে রং দেওয়া, যাতে কোনো edge-এর দুই প্রান্ত একই রঙের না হয়; সবচেয়ে কম রং বের করা সাধারণভাবে NP-hard, তবে planar graph-এ ৪টি রং সবসময় যথেষ্ট।যেখানে শিখবেন: পর্ব ৩৯পর্ব ৫৬পর্ব ৬৫
- Graph isomorphismগ্রাফ আইসোমরফিজম
- দুটি গ্রাফ কি একই, শুধু vertex-এর নাম আলাদা? NP-তে আছে, কিন্তু NP-complete বলে জানা নেই; Babai ২০১৫ সালে একটি quasi-polynomial অ্যালগরিদম দেন।যেখানে শিখবেন: পর্ব ৬৪
- Grapheme clusterগ্রাফিম ক্লাস্টার
- পাঠক চোখে যেটিকে একটি অক্ষর হিসেবে দেখেন — যেমন কি বা ক্ষ — যদিও ভেতরে সেটি একাধিক code point দিয়ে তৈরি হতে পারে।যেখানে শিখবেন: পর্ব ১১পর্ব ৩১পর্ব ৫৮
- Greedy algorithmগ্রিডি অ্যালগরিদম
- প্রতিটি ধাপে সেই মুহূর্তের সেরা দেখায় এমন পছন্দটি নিয়ে আর ফিরে না তাকিয়ে এগোনো অ্যালগরিদম; সব সমস্যায় সর্বোত্তম উত্তর দেয় না, তাই প্রমাণ দরকার।যেখানে শিখবেন: পর্ব ০৩পর্ব ১৬পর্ব ১৯
- Greedy stays aheadগ্রিডি স্টেজ অ্যাহেড
- greedy প্রমাণের একটি কৌশল: induction দিয়ে দেখানো যে প্রতিটি ধাপে greedy-র আংশিক সমাধান যেকোনো সর্বোত্তম সমাধানের সমান ধাপের চেয়ে খারাপ নয় — তাই শেষেও greedy পিছিয়ে থাকে না।যেখানে শিখবেন: পর্ব ৫০
- Greedy-choice propertyগ্রিডি-চয়েস প্রপার্টি
- সমস্যার একটি ধর্ম: এই মুহূর্তের সেরা দেখানো (locally best) পছন্দটি নিলেও কোনো না কোনো সর্বোত্তম সমাধানে পৌঁছানো যায় — তাই পছন্দটি পরে বদলানোর দরকার হয় না।যেখানে শিখবেন: পর্ব ৫০পর্ব ৭০
- Grid graphগ্রিড গ্রাফ
- একটি R × C গ্রিডের প্রতিটি খোলা ঘর একটি vertex, আর ৪ (বা ৮) দিকে পাশাপাশি খোলা ঘরের মধ্যে edge; গোলকধাঁধা আর মানচিত্রের সমস্যায় আসে।যেখানে শিখবেন: পর্ব ৩৯পর্ব ৪০পর্ব ৪১
- Growth factorগ্রোথ ফ্যাক্টর
- dynamic array জায়গা ফুরালে capacity কত গুণ বাড়ায় — সাধারণত 2 বা 1.5. গুণ করে বাড়ালেই push_back amortized O(1) হয়।যেখানে শিখবেন: পর্ব ১০পর্ব ৬০পর্ব ৭০
- Growth rateগ্রোথ রেট
- ইনপুট বাড়লে কোনো ফাংশনের (যেমন চলার সময়ের) মান কোন হারে বাড়ে — যেমন log n, n, n², 2ⁿযেখানে শিখবেন: পর্ব ০৪
H
- Half-open intervalহাফ-ওপেন ইন্টারভাল
- যে রেঞ্জে শুরুর বিন্দু অন্তর্ভুক্ত কিন্তু শেষের বিন্দু বাদ, লেখা হয় [lo, hi); দৈর্ঘ্য hi − lo, আর lo = hi মানে খালি রেঞ্জ। C++-এর begin/end আর Python-এর range এই নিয়ম মানে।যেখানে শিখবেন: পর্ব ১৭পর্ব ২১পর্ব ৩৪
- Hall's marriage theoremহলের থিওরেম
- bipartite গ্রাফে বাঁ পাশের সবাইকে জোড়া দেওয়া যায় ঠিক তখনই, যখন বাঁ পাশের প্রতিটি উপসেট A-এর প্রতিবেশী অন্তত |A| টি (Philip Hall, ১৯৩৫)।যেখানে শিখবেন: পর্ব ৪৭
- Halting problemহল্টিং প্রবলেম
- কোনো প্রোগ্রাম আর তার input দেখে প্রোগ্রামটি কখনো থামবে কি না বলে দেওয়ার সমস্যা; Turing প্রমাণ করেন সব ক্ষেত্রে এর উত্তর দিতে পারে এমন কোনো অ্যালগরিদম নেই।যেখানে শিখবেন: পর্ব ০২পর্ব ০৩
- Hamiltonian cycleহ্যামিলটোনিয়ান সাইকেল
- যে cycle গ্রাফের প্রতিটি vertex ঠিক একবার ছুঁয়ে শুরুর vertex-এ ফেরে; আছে কি না বলা NP-complete, আর ওজনসহ সবচেয়ে ছোটটি খোঁজাই TSP.যেখানে শিখবেন: পর্ব ৫৬পর্ব ৬৪পর্ব ৬৫
- Hamiltonian pathহ্যামিলটোনিয়ান পাথ
- যে পথ গ্রাফের প্রতিটি vertex ঠিক একবার ছুঁয়ে যায়। সাধারণ গ্রাফে খোঁজা NP-complete, কিন্তু DAG-এ topological order দিয়ে O(V + E)-এ যাচাই করা যায়।যেখানে শিখবেন: পর্ব ৪২পর্ব ৫২পর্ব ৫৬
- Handshake lemmaহ্যান্ডশেক লেমা
- যেকোনো undirected গ্রাফে সব vertex-এর degree-র যোগফল = 2m, কারণ প্রতিটি edge-এর দুটি প্রান্ত; ফলে বিজোড় degree-র vertex সবসময় জোড় সংখ্যক।যেখানে শিখবেন: পর্ব ৩৯পর্ব ৪০
- Harmonic seriesহারমোনিক সিরিজ
- Hₙ = 1 + 1/2 + 1/3 + … + 1/n. এর মান প্রায় ln n + 0.5772, অর্থাৎ Θ(log n); অসীম পর্যন্ত যোগ করলে কোনো সীমায় থামে না, কিন্তু খুব ধীরে বাড়েযেখানে শিখবেন: পর্ব ০৬পর্ব ২২পর্ব ৩৮
- Hash floodingহ্যাশ ফ্লাডিং
- ইচ্ছাকৃতভাবে একই hash-এর অনেক key পাঠিয়ে একটি hash table-কে তার worst case-এ (প্রতিটি কাজ O(n)) ঠেলে দেওয়ার denial-of-service আক্রমণ।যেখানে শিখবেন: পর্ব ২৯পর্ব ৩২পর্ব ৩৮
- Hash functionহ্যাশ ফাংশন
- একটি key (যেমন নাম বা নম্বর) থেকে নির্দিষ্ট সীমার একটি পূর্ণসংখ্যা বানানোর নিয়ম; ভালো hash function key-গুলোকে তাকে তাকে সমানভাবে ছড়িয়ে দেয়।যেখানে শিখবেন: পর্ব ০১পর্ব ১১পর্ব ১৫
- Hash mapহ্যাশ ম্যাপ
- hash table দিয়ে বানানো map — প্রতিটি key-এর সাথে একটি value রাখে; যেমন C++ unordered_map, Python dict, Java HashMap.যেখানে শিখবেন: পর্ব ৩২পর্ব ৪০পর্ব ৭১
- Hash setহ্যাশ সেট
- hash table দিয়ে বানানো set — শুধু key রাখে আর উত্তর দেয় “আছে কি না”; যেমন C++ unordered_set, Python set, Java HashSet.যেখানে শিখবেন: পর্ব ৩২পর্ব ৩৯পর্ব ৪০
- Hash tableহ্যাশ টেবিল
- hash function দিয়ে key থেকে সরাসরি তাকের (bucket) ঠিকানা হিসাব করে মান রাখে ও খোঁজে; গড়ে O(1) সময়ে, তবে সবচেয়ে খারাপে O(n).যেখানে শিখবেন: পর্ব ০১পর্ব ১১পর্ব ১৫
- Hashableহ্যাশেবল
- Python-এ যে মানের একটি স্থির hash আছে আর যা জীবদ্দশায় বদলায় না (int, str, tuple, frozenset); কেবল এমন মানই dict-এর key বা set-এর সদস্য হতে পারে, list পারে না।যেখানে শিখবেন: পর্ব ১৫পর্ব ৩২
- Havel–Hakimi algorithmহাভেল-হাকিমি অ্যালগরিদম
- একটি degree-তালিকা দিয়ে simple graph বানানো যায় কি না যাচাইয়ের পদ্ধতি: সবচেয়ে বড় degree d সরিয়ে পরের d টি থেকে ১ করে কমানো, আর পুনরাবৃত্তি।যেখানে শিখবেন: পর্ব ৩৯
- Heap (binary heap)হিপ
- একটি array-তে রাখা complete binary tree, যেখানে প্রতিটি node-এর মান তার সন্তানদের চেয়ে বড় বা সমান (max-heap) অথবা ছোট বা সমান (min-heap); তাই সবচেয়ে বড় বা ছোটটি সবসময় root-এ।যেখানে শিখবেন: পর্ব ১৫পর্ব ২১পর্ব ২৩
- Heap memoryহিপ মেমরি
- প্রোগ্রাম চলার সময় প্রয়োজনমতো চেয়ে নেওয়া আর ফেরত দেওয়া যায় এমন মেমরির অংশ (C++-এ new/delete দিয়ে). এখানে heap মানে মেমরির এলাকা, heap ডেটা স্ট্রাকচার নয়।যেখানে শিখবেন: পর্ব ১২পর্ব ২৩
- Heap propertyহিপ প্রপার্টি
- heap-এর একমাত্র ক্রমের নিয়ম: প্রতিটি parent তার সন্তানদের চেয়ে ছোট বা সমান (min-heap) অথবা বড় বা সমান (max-heap). ভাইবোনদের মধ্যে কোনো ক্রমের দাবি নেই।যেখানে শিখবেন: পর্ব ২৩পর্ব ৩৮
- Heapsortহিপসর্ট
- অ্যারেকে একটি max-heap বানিয়ে বারবার সবচেয়ে বড় উপাদানটি শেষে সরিয়ে সাজানোর in-place সর্টিং; সব ক্ষেত্রে O(n log n), তবে stable নয়।যেখানে শিখবেন: পর্ব ২২পর্ব ২৩পর্ব ২৫
- Heavy-light decompositionহেভি-লাইট ডিকম্পোজিশন
- প্রতিটি node থেকে সবচেয়ে বড় subtree-র সন্তানের edge-কে ভারী ধরে tree-কে শিকলে ভাগ করা, যাতে যেকোনো পথ O(log n) টি শিকলে ভাঙে আর segment tree দিয়ে পথে update ও query করা যায়।যেখানে শিখবেন: পর্ব ৪৮
- Height (of a tree or node)হাইট বা উচ্চতা
- কোনো node থেকে তার নিচের সবচেয়ে গভীর leaf পর্যন্ত edge-এর সংখ্যা; root-এর উচ্চতাই পুরো tree-র উচ্চতা। n টি node-এর complete binary tree-র উচ্চতা ⌊log₂ n⌋.যেখানে শিখবেন: পর্ব ২৩পর্ব ২৬পর্ব ২৭
- Held–Karp algorithmহেল্ড-কার্প অ্যালগরিদম
- ১৯৬২ সালে Bellman এবং আলাদাভাবে Held ও Karp-এর দেওয়া travelling salesman-এর DP: state = (ঘোরা শহরের সেট, এখনকার শহর); সময় O(2ⁿ·n²), জায়গা O(2ⁿ·n).যেখানে শিখবেন: পর্ব ৫৫পর্ব ৫৭পর্ব ৬৫
- Held–Karp boundহেল্ড-কার্প বাউন্ড
- প্রতিটি শহরে একটি penalty বসিয়ে 1-tree-কে ঠেলে tour-এর কাছাকাছি নেওয়া, আর সেরা penalty-তে পাওয়া সবচেয়ে বড় lower bound (Held ও Karp, ১৯৭০-৭১); symmetric TSP-এর subtour LP relaxation-এর মানের সমান।যেখানে শিখবেন: পর্ব ৫৭
- Heuristic (algorithm)হিউরিস্টিক
- অভিজ্ঞতা বা বুদ্ধির ওপর দাঁড়ানো দ্রুত পদ্ধতি, যা সাধারণত ভালো উত্তর দেয় কিন্তু সর্বোত্তম হওয়ার বা নির্দিষ্ট মানের কাছাকাছি থাকার কোনো প্রমাণিত নিশ্চয়তা দেয় নাযেখানে শিখবেন: পর্ব ৬৫পর্ব ৬৬
- Heuristic (function)হিউরিস্টিক
- দ্রুত হিসাবযোগ্য অনুমান বা আনুমানিক সমাধানের পদ্ধতি — যেমন A*-এ h(v), মানে v থেকে লক্ষ্য পর্যন্ত আর কতটা বাকি তার আন্দাজ, বা TSP-এর nearest neighbour; সেরা উত্তরের নিশ্চয়তা দেয় না।যেখানে শিখবেন: পর্ব ৪৩পর্ব ৫৬পর্ব ৫৭
- Hibbard deletionহিবার্ড ডিলিশন
- BST থেকে দুই সন্তানওয়ালা node মোছার প্রচলিত পদ্ধতি: node-টিকে তার inorder successor দিয়ে বদলে successor-এর পুরোনো node মোছা; Thomas Hibbard ১৯৬২ সালে প্রকাশ করেন।যেখানে শিখবেন: পর্ব ২৭
- Hierholzer's algorithmহিয়ারহোলজারের অ্যালগরিদম
- শর্ত পূরণ হলে Euler path বা circuit বানানোর অ্যালগরিদম: অব্যবহৃত edge ধরে চক্র বানিয়ে একটির ভেতরে আরেকটি জুড়ে দেওয়া; সময় O(n + m).যেখানে শিখবেন: পর্ব ৩৯
- Hill climbingহিল ক্লাইম্বিং
- সবচেয়ে সরল local search: শুধু উন্নতি দেয় এমন move নেওয়া, আর কোনো উন্নতি না থাকলে থেমে যাওয়া। প্রথম local optimum-এ আটকে যায়যেখানে শিখবেন: পর্ব ৬৫
- Hirschberg's algorithmহার্শবার্গস অ্যালগরিদম
- Daniel Hirschberg-এর (১৯৭৫) divide and conquer কৌশল, যা LCS বা alignment-এর পুরো উত্তর O(nm) সময়ে কিন্তু মাত্র O(n + m) জায়গায় বের করে — মাঝের সারিতে সামনে আর পেছন থেকে আসা দুই সারির DP মিলিয়ে ভাঙার বিন্দু খোঁজে।যেখানে শিখবেন: পর্ব ৫৪
- History independence (unique representation)হিস্টরি ইনডিপেনডেন্স
- যে ডেটা স্ট্রাকচারের আকৃতি শুধু বর্তমান key-গুলোর ওপর নির্ভর করে, কোন ক্রমে ঢোকানো বা মোছা হয়েছিল তার ওপর নয়; priority = hash(key) দিলে treap এমন হয়।যেখানে শিখবেন: পর্ব ৩৮
- Hoare partitionহোর পার্টিশন
- দুই প্রান্ত থেকে মুখোমুখি এগোনো দুটি pointer দিয়ে ভুল দিকের উপাদান জোড়ায় জোড়ায় swap করার partition পদ্ধতি; Lomuto-র চেয়ে কম swap করে, তবে pivot চূড়ান্ত ঘরে বসে এমন নিশ্চয়তা নেই।যেখানে শিখবেন: পর্ব ২২পর্ব ৬৮
- Hopcroft-Karp algorithmহপক্রফট-কার্প অ্যালগরিদম
- bipartite matching-এর দ্রুত অ্যালগরিদম (১৯৭৩): প্রতিটি phase-এ সবচেয়ে ছোট দৈর্ঘ্যের পরস্পর-বিচ্ছিন্ন সব augmenting path একসাথে নেয়; সময় O(E√V)যেখানে শিখবেন: পর্ব ৪৭
I
- ICPCআই-সি-পি-সি
- International Collegiate Programming Contest — বিশ্ববিদ্যালয়ের তিন সদস্যের দলের প্রোগ্রামিং প্রতিযোগিতা; আঞ্চলিক পর্ব পেরিয়ে দলগুলো World Finals-এ যায়।যেখানে শিখবেন: পর্ব ০১পর্ব ৭২
- Idempotent operationআইডেমপোটেন্ট অপারেশন
- যে কাজে x ∘ x = x, যেমন min, max, gcd, AND, OR; তাই একই ঘর দুবার গুনলেও উত্তর বদলায় না, যোগে কিন্তু বদলায়।যেখানে শিখবেন: পর্ব ৩৪পর্ব ৩৭পর্ব ৪৮
- Identity elementআইডেন্টিটি এলিমেন্ট
- যে বিশেষ মান e কোনো কাজের সাথে জুড়লে কিছু বদলায় না, অর্থাৎ e ∘ x = x ∘ e = x; যোগে 0, গুণে 1, min-এ +∞, max-এ −∞যেখানে শিখবেন: পর্ব ৩৪পর্ব ৭২
- Immutableইমিউটেবল
- যে বস্তু একবার তৈরি হলে আর বদলানো যায় না; “বদলাতে” চাইলে নতুন একটি বস্তু তৈরি হয়। Python-এর str আর Java-র String immutable.যেখানে শিখবেন: পর্ব ১১
- Implication graphইমপ্লিকেশন গ্রাফ
- 2-SAT-এর directed গ্রাফ: প্রতিটি literal একটি vertex, আর প্রতিটি clause (x ∨ y) থেকে দুটি edge ¬x → y আর ¬y → x — “x মিথ্যা হলে y সত্য হতেই হবে”.যেখানে শিখবেন: পর্ব ৪৬
- Implicit graphইমপ্লিসিট গ্রাফ
- যে গ্রাফ মেমরিতে edge-তালিকা হিসেবে রাখা নেই; একটি নিয়ম থেকে দরকারের সময় প্রতিবেশী হিসাব করা হয় — যেমন গ্রিড বা ধাঁধার অবস্থা।যেখানে শিখবেন: পর্ব ৩৯পর্ব ৪০পর্ব ৫৬
- Implicit treapইমপ্লিসিট ট্রিপ
- key ছাড়া treap: কোনো উপাদানের অবস্থান (index) তার বাঁয়ে কয়টি node আছে তা থেকে হিসাব হয়। একটি sequence-এ যেকোনো জায়গায় ঢোকানো, মোছা বা একটি অংশ উল্টানো প্রত্যাশিত O(log n)-এ করা যায়।যেখানে শিখবেন: পর্ব ৩৮
- In-degreeইন-ডিগ্রি
- Directed গ্রাফে একটি vertex-এ ঢোকা edge-এর সংখ্যা; in-degree 0-এর vertex-কে source বলা হয়, আর Kahn-এর topological sort এখান থেকেই শুরু হয়।যেখানে শিখবেন: পর্ব ৩৯পর্ব ৪২
- In-place algorithmইন-প্লেস অ্যালগরিদম
- যে অ্যালগরিদম ইনপুটের জায়গাতেই কাজ সারে আর বাড়তি জায়গা নেয় O(1) (কোনো কোনো সংজ্ঞায় O(log n) পর্যন্ত). যেমন insertion sort আর heapsort.যেখানে শিখবেন: পর্ব ০৫পর্ব ১০পর্ব ১১
- Inapproximabilityইনঅ্যাপ্রক্সিমেবিলিটি
- এমন প্রমাণিত ফল যে একটি সমস্যায় নির্দিষ্ট একটি ratio-র চেয়ে ভালো approximation polynomial সময়ে সম্ভব নয় (সাধারণত P ≠ NP ধরে)।যেখানে শিখবেন: পর্ব ৬৬
- Inclusion–exclusion principleইনক্লুশন-এক্সক্লুশন প্রিন্সিপল
- একাধিক অংশ যোগ করলে যা দুবার গোনা হয় তা একবার বাদ দেওয়া (আর বেশিবার বাদ পড়লে ফেরত যোগ করা) — যেমন |A ∪ B| = |A| + |B| − |A ∩ B|. 2D prefix sum-এর সূত্র এর ওপর দাঁড়িয়ে।যেখানে শিখবেন: পর্ব ১৭পর্ব ৩৬পর্ব ৫৫
- Incumbent (best known solution)ইনকামবেন্ট
- খোঁজের মাঝপথে এ পর্যন্ত পাওয়া সেরা বৈধ সমাধান; এর মানের সাথে bound তুলনা করেই ছাঁটাই করা হয়, আর আরও ভালো সমাধান পেলে এটি বদলে যায়।যেখানে শিখবেন: পর্ব ৫৭
- Independent eventsইনডিপেনডেন্ট ইভেন্টস
- যেসব ঘটনার একটি ঘটা অন্যটির সম্ভাবনা বদলায় না; তখন দুটিই ঘটার সম্ভাবনা আলাদা সম্ভাবনার গুণফল, যেমন আলাদা আলাদা মুদ্রা নিক্ষেপ।যেখানে শিখবেন: পর্ব ৬১
- Independent setইনডিপেনডেন্ট সেট
- গ্রাফের এমন vertex-সেট, যাদের কোনো দুজনের মধ্যে edge নেই। “k আকারের independent set আছে কি?” প্রশ্নটি NP-complete.যেখানে শিখবেন: পর্ব ৬৪পর্ব ৭০
- Indexed priority queueইনডেক্সড প্রায়োরিটি কিউ
- যে heap প্রতিটি উপাদানের বর্তমান অবস্থান একটি বাড়তি অ্যারেতে (pos) মনে রাখে, প্রতিটি swap-এ সেটি হালনাগাদ করে — ফলে decrease-key বা মুছে ফেলা O(log n)-এ করা যায়।যেখানে শিখবেন: পর্ব ২৩পর্ব ৪৩
- Indicator random variableইন্ডিকেটর র্যান্ডম ভেরিয়েবল
- একটি ঘটনা ঘটলে 1, না ঘটলে 0 — এমন random variable; এর প্রত্যাশিত মান ঠিক ঘটনাটির সম্ভাবনার সমান, তাই কিছু গুনতে এগুলোর যোগফল নেওয়া হয়।যেখানে শিখবেন: পর্ব ৬১
- Inductive hypothesisইনডাকটিভ হাইপোথিসিস
- Induction প্রমাণে ধরে নেওয়া অনুমান যে ছোট মানগুলোর জন্য দাবিটি সত্য; এটি ব্যবহার করেই বড় মানের জন্য দাবিটি প্রমাণ করা হয়।যেখানে শিখবেন: পর্ব ০৮পর্ব ২৭
- Inductive stepইন্ডাকটিভ স্টেপ
- Induction প্রমাণের দ্বিতীয় ধাপ: ছোট মানে দাবি সত্য ধরে নিয়ে (inductive hypothesis) পরের মানে দাবিটি সত্য দেখানো।যেখানে শিখবেন: পর্ব ০৩
- Infix notationইনফিক্স নোটেশন
- যে চেনা লেখার ধরনে operator দুটি operand-এর মাঝখানে বসে, যেমন a + b * c; সঠিক অর্থ বুঝতে precedence, associativity আর বন্ধনী লাগে।যেখানে শিখবেন: পর্ব ১৩
- Inorder predecessorইনঅর্ডার প্রেডিসেসর
- সাজানো ক্রমে কোনো key-এর ঠিক আগের key; বাঁ subtree থাকলে তার maximum, না থাকলে প্রথম যে পূর্বপুরুষের ডান subtree-তে node-টি আছে।যেখানে শিখবেন: পর্ব ২৭পর্ব ৩০
- Inorder successorইনঅর্ডার সাকসেসর
- সাজানো ক্রমে কোনো key-এর ঠিক পরের key; ডান subtree থাকলে তার minimum, না থাকলে প্রথম যে পূর্বপুরুষের বাঁ subtree-তে node-টি আছে।যেখানে শিখবেন: পর্ব ২৭পর্ব ২৮পর্ব ৭০
- Inorder traversalইনঅর্ডার ট্রাভার্সাল
- binary tree ঘোরার একটি নিয়ম: আগে বাঁ subtree, তারপর node নিজে, তারপর ডান subtree. BST-তে এটি key-গুলো ছোট থেকে বড় সাজানো ক্রমে দেয়।যেখানে শিখবেন: পর্ব ২৬পর্ব ২৭পর্ব ২৮
- Input sizeইনপুট সাইজ
- input কত বড় তার মাপ — অ্যারের দৈর্ঘ্য, গ্রাফের vertex ও edge সংখ্যা, অথবা সংখ্যার ক্ষেত্রে তার অঙ্ক বা bit-এর সংখ্যা।যেখানে শিখবেন: পর্ব ০২পর্ব ০৫পর্ব ৫৩
- Insertion sortইনসারশন সর্ট
- একটি করে উপাদান নিয়ে বাঁ দিকের আগেই-সাজানো অংশে তার ঠিক জায়গায় ঢুকিয়ে দেওয়া সর্টিং পদ্ধতি; সবচেয়ে খারাপ ক্ষেত্রে O(n²), প্রায়-সাজানো ডেটায় খুব দ্রুত।যেখানে শিখবেন: পর্ব ০৩পর্ব ০৫পর্ব ২০
- Instanceইনস্ট্যান্স
- কোনো সমস্যার একটি নির্দিষ্ট input — যেমন সর্বোচ্চ খোঁজার সমস্যার একটি instance হলো [4, 8, 2, 9, 6] অ্যারেটি।যেখানে শিখবেন: পর্ব ০২পর্ব ৭০
- Integer (linear) programmingইন্টিজার প্রোগ্রামিং
- Linear শর্ত আর linear লক্ষ্য, কিন্তু কিছু বা সব চলকের মান পূর্ণসংখ্যা হতেই হবে — এমন অপটিমাইজেশন; সাধারণভাবে NP-hard, আর বাস্তবের solver-গুলো branch and bound দিয়ে সমাধান করে।যেখানে শিখবেন: পর্ব ৫৭পর্ব ৬৫পর্ব ৬৬
- Integer factorizationইন্টিজার ফ্যাক্টরাইজেশন
- একটি পূর্ণসংখ্যাকে মৌলিক উৎপাদকে ভাঙা। সাধারণ কম্পিউটারে এর polynomial অ্যালগরিদম জানা নেই (RSA-এর নিরাপত্তা এর ওপর), তবে quantum কম্পিউটারে Shor-এর অ্যালগরিদম polynomial.যেখানে শিখবেন: পর্ব ৬৪
- Integer overflowইন্টিজার ওভারফ্লো
- হিসাবের ফল ভ্যারিয়েবলের ধারণক্ষমতার বাইরে চলে যাওয়া — যেমন 32-bit int-এ 2147483647-এর বেশি; C++-এ signed overflow undefined behavior.যেখানে শিখবেন: পর্ব ১১পর্ব ১৭পর্ব ১৮
- Integrality theoremইন্টিগ্রালিটি থিওরেম
- সব capacity integer হলে এমন একটি maximum flow আছে, যার প্রতিটি edge-এর প্রবাহ integer, আর Ford-Fulkerson-ধাঁচের অ্যালগরিদম সেটিই দেয়।যেখানে শিখবেন: পর্ব ৪৭
- Intermediate value theoremইন্টারমিডিয়েট ভ্যালু থিওরেম
- একটানা (continuous) কোনো মান এক জায়গায় ধনাত্মক আর অন্য জায়গায় ঋণাত্মক হলে মাঝের কোথাও তা অবশ্যই শূন্য হয় — যেমন একটি রেখাংশ একটি রেখার দুই পাশে থাকলে রেখাটিকে কোথাও পার হয়।যেখানে শিখবেন: পর্ব ৬৩
- Internal nodeইন্টারনাল নোড
- tree-র যে node-এর অন্তত একটি সন্তান আছে, অর্থাৎ যে leaf নয়।যেখানে শিখবেন: পর্ব ২৬পর্ব ৩৪পর্ব ৫১
- Interpolation searchইন্টারপোলেশন সার্চ
- মাঝখানের বদলে মানের অনুপাত দিয়ে x-এর সম্ভাব্য অবস্থান আন্দাজ করে খোঁজা, যেমন ফোনবুকে Z দিয়ে শুরু নাম খুঁজতে শেষের দিকে খোলা; সমানভাবে ছড়ানো মানে গড়ে O(log log n), কিন্তু worst case O(n).যেখানে শিখবেন: পর্ব ১৮
- Interval DPইন্টারভাল ডিপি
- যে DP-র state একটি sequence-এর টুকরো [i, j]; সাধারণত টুকরোর ভেতরে একটি বিন্দু k বেছে দুই ছোট টুকরোয় ভাঙা হয়, আর টেবিল ভরা হয় টুকরোর দৈর্ঘ্য অনুযায়ী ছোট থেকে বড়।যেখানে শিখবেন: পর্ব ৫৪
- Interval graphইন্টারভ্যাল গ্রাফ
- যে গ্রাফে প্রতিটি vertex একটি সময়-ব্যবধান (interval), আর দুটি ব্যবধান মিলে গেলে তাদের মধ্যে edge থাকে। এমন গ্রাফে coloring, maximum clique আর maximum independent set greedy দিয়েই polynomial সময়ে সমাধান হয়যেখানে শিখবেন: পর্ব ৬৫
- Interval mergingইন্টারভাল মার্জিং
- শুরু-শেষ জোড়ার একটি তালিকায় একটির ওপর আরেকটি পড়া (overlap) খণ্ডগুলো জোড়া লাগিয়ে আলাদা আলাদা খণ্ডের তালিকা বানানো; শুরু অনুযায়ী sort করে একবার হাঁটলে O(n log n) সময়ে হয়।যেখানে শিখবেন: পর্ব ৭১
- Interval partitioningইন্টারভ্যাল পার্টিশনিং
- সব interval-কে সবচেয়ে কম সংখ্যক রিসোর্সে (রুম, প্ল্যাটফর্ম, মেশিন) ভাগ করে দেওয়ার সমস্যা, যাতে একই রিসোর্সে দুটি interval একসাথে না পড়ে।যেখানে শিখবেন: পর্ব ৫০পর্ব ৬৫
- Interval schedulingইন্টারভ্যাল শিডিউলিং
- শুরু আর শেষের সময়সহ কিছু কাজ থেকে এমন কাজ বাছাই বা সাজানো, যাতে একই রিসোর্সে দুটি কাজ একসাথে না পড়ে; সবচেয়ে বেশি কাজ বাছাইয়ের রূপটিই activity selection.যেখানে শিখবেন: পর্ব ৫০পর্ব ৭২
- Introsortইন্ট্রোসর্ট
- quick sort দিয়ে শুরু করে রিকার্শন বেশি গভীর হলে heapsort-এ আর ছোট টুকরোয় insertion sort-এ চলে যাওয়া মিশ্র সর্টিং; worst case O(n log n). ১৯৯৭ সালে David Musser প্রস্তাব করেন।যেখানে শিখবেন: পর্ব ১৫পর্ব ২০পর্ব ২১
- Intrusion detection system (IDS)ইনট্রুশন ডিটেকশন সিস্টেম
- নেটওয়ার্কের ডেটা বা কম্পিউটারের কার্যকলাপ পর্যবেক্ষণ করে পরিচিত আক্রমণের চিহ্ন (signature) বা অস্বাভাবিক আচরণ ধরে সতর্ক করার প্রতিরক্ষামূলক সফটওয়্যার, যেমন Snort.যেখানে শিখবেন: পর্ব ৫৯
- Intrusive data structureইনট্রুসিভ ডেটা স্ট্রাকচার
- যে স্ট্রাকচারের link বা node-অংশ (যেমন pointer আর রং) আলাদা করে তৈরি না করে মূল ডেটার struct-এর ভেতরেই বসানো থাকে; insert করতে নতুন মেমরি বরাদ্দ লাগে না। Linux kernel-এর list আর rbtree এভাবে বানানো।যেখানে শিখবেন: পর্ব ২৯
- Invariantইনভ্যারিয়েন্ট
- একটি শর্ত যা একটি ডেটা স্ট্রাকচার বা অ্যালগরিদমের প্রতিটি কাজের আগে ও পরে সবসময় সত্য থাকে; এটি দেখিয়েই সঠিকতা প্রমাণ করা হয়।যেখানে শিখবেন: পর্ব ৩৫পর্ব ৪০পর্ব ৪২
- Inverse Ackermann function α(n)ইনভার্স অ্যাকারম্যান
- Ackermann ফাংশনের উল্টো: কোন ছোট k-তে ফাংশনের মান n ছাড়ায়। এটি এত ধীরে বাড়ে যে বাস্তবের যেকোনো n-এ α(n) ≤ 4, তবু অসীমের দিকে যায়।যেখানে শিখবেন: পর্ব ৩৩পর্ব ৪৮পর্ব ৬০
- Inversionইনভারশন
- কোনো ক্রমে এমন একটি জোড়া, যেখানে যে উপাদান আগে আসা উচিত সে পরে আছে — যেমন array-তে i < j অথচ a[i] > a[j]. সাজানো array-তে ০টি, উল্টো array-তে n(n−1)/2টি।যেখানে শিখবেন: পর্ব ০৫পর্ব ২০পর্ব ২১
- Invertible operationইনভার্টিবল অপারেশন
- যে কাজের ফল থেকে একটি অংশ আবার বাদ দেওয়া যায় — যেমন যোগের উল্টো বিয়োগ, XOR-এর উল্টো XOR. min বা max উল্টানো যায় না, তাই Fenwick tree দিয়ে রেঞ্জের min সাধারণত হয় নাযেখানে শিখবেন: পর্ব ৩৬
- Iterated logarithm log* nইটারেটেড লগারিদম, লগ-স্টার
- n-কে কতবার পরপর log₂ করলে ১ বা তার কমে নামে; যেমন log* 65536 = 4, log* 2^65536 = 5. union-find-এর α(n) বাড়ে এর চেয়েও ধীরে।যেখানে শিখবেন: পর্ব ৩৩
- Iterationইটারেশন
- লুপ (for, while) দিয়ে একই কাজ বারবার করা — রিকার্শনের বিকল্প পথ, যেখানে call stack-এ নতুন frame জমে না।যেখানে শিখবেন: পর্ব ০৭
- Iteration (unrolling) methodইটারেশন মেথড
- Recurrence-কে বারবার নিজের ভেতরে বসিয়ে খুলে লেখা, যতক্ষণ না একটি নিয়ম (প্যাটার্ন) চোখে পড়ে; তারপর base case পর্যন্ত গিয়ে যোগফল বের করা।যেখানে শিখবেন: পর্ব ০৮
- Iterative (bottom-up) segment treeইটারেটিভ সেগমেন্ট ট্রি
- recursion ছাড়া লেখা segment tree, যার leaf-গুলো অ্যারের n থেকে 2n − 1 ঘরে আর node v-এর সন্তান 2v ও 2v + 1; মোট 2n ঘর, update আর query নিচ থেকে ওপরে লুপে চলে।যেখানে শিখবেন: পর্ব ৩৪
- Iterative deepening DFSইটারেটিভ ডিপেনিং
- গভীরতার সীমা ১, ২, ৩, … করে বারবার সীমিত DFS চালানো; DFS-এর অল্প জায়গা রেখে BFS-এর মতো কাছের সমাধান আগে পায়, বিশাল বা অসীম সার্চ-গ্রাফে কাজের।যেখানে শিখবেন: পর্ব ৪১
J
- Jagged arrayজ্যাগড অ্যারে
- যে 2D array-এর প্রতিটি সারির দৈর্ঘ্য আলাদা হতে পারে; প্রতিটি সারি আলাদা একটি array, যেমন C++-এর vector<vector<int>>যেখানে শিখবেন: পর্ব ১০
- Job sequencing with deadlinesজব সিকোয়েন্সিং
- প্রতিটি কাজ এক একক সময় নেয়, তার একটি deadline আর লাভ আছে; deadline-এর মধ্যে শেষ হওয়া কাজগুলোর মোট লাভ সবচেয়ে বেশি করতে কোন কাজ কোন slot-এ রাখবেন, সেই সমস্যা।যেখানে শিখবেন: পর্ব ৫০
- Johnson's algorithmজনসনের অ্যালগরিদম
- Bellman-Ford দিয়ে প্রতিটি vertex-এর potential বের করে ওজনগুলো অঋণাত্মক বানানো, তারপর প্রতিটি উৎস থেকে Dijkstra — সব জোড়ার shortest path (Donald Johnson, ১৯৭৭)।যেখানে শিখবেন: পর্ব ৪৩পর্ব ৪৪
- Josephus problemজোসেফাস প্রবলেম
- n জন বৃত্তে দাঁড়িয়ে, প্রতি k-তম জন বাদ পড়েন — শেষে কে টিকে থাকেন, তা বের করার ক্লাসিক সমস্যা। Circular list দিয়ে অনুকরণ করা যায়, আর একটি recurrence দিয়ে O(n) সময়ে সমাধান হয়।যেখানে শিখবেন: পর্ব ৩৪
K
- k-th ancestorকে-তম অ্যানসেস্টর
- একটি node থেকে ঠিক k টি edge ওপরে যে পূর্বপুরুষ; binary lifting-এ k-এর প্রতিটি চালু bit-এর জন্য একটি লাফ দিয়ে O(log n) সময়ে পাওয়া যায়।যেখানে শিখবেন: পর্ব ৪৮
- k-way mergeকে-ওয়ে মার্জ
- k টি সাজানো তালিকা একসাথে জোড়া দেওয়া: প্রতিটির সামনের উপাদান একটি min-heap-এ রেখে বারবার সবচেয়ে ছোটটি নেওয়া; মোট N উপাদানে সময় O(N log k)যেখানে শিখবেন: পর্ব ২১পর্ব ২৩পর্ব ৭১
- Kadane's algorithmকাদানের অ্যালগরিদম
- maximum subarray সমস্যার Θ(n) সমাধান: প্রতিটি ঘরে “এখানে শেষ হওয়া সেরা যোগফল” = max(x, আগের সেরা + x) রেখে সর্বোচ্চটি মনে রাখা।যেখানে শিখবেন: পর্ব ১০পর্ব ৩৪পর্ব ৪৯
- Kahn's algorithmকান-এর অ্যালগরিদম
- Topological sort-এর পদ্ধতি (A. B. Kahn, ১৯৬২): in-degree শূন্য vertex-গুলো একটি সারিতে রাখুন, একে একে বের করে আউটপুট দিন আর তার পরের vertex-গুলোর in-degree কমান। সবাই আউটপুট না হলে গ্রাফে cycle আছে। সময় O(V + E).যেখানে শিখবেন: পর্ব ৪২পর্ব ৬৮পর্ব ৭১
- Karatsuba algorithmকারাতসুবা অ্যালগরিদম
- দুটি বড় সংখ্যা গুণের divide and conquer পদ্ধতি, যা চারটির বদলে তিনটি অর্ধেক-আকারের গুণ করে; সময় Θ(n^1.585), Anatoly Karatsuba ১৯৬০ সালে আবিষ্কার করেন।যেখানে শিখবেন: পর্ব ০৯পর্ব ৪৯পর্ব ৬৯
- Karger's algorithmকারগার অ্যালগরিদম
- এলোমেলো edge চেপে চেপে দুটি supernode বাকি থাকা পর্যন্ত চালানো global min cut-এর Monte Carlo অ্যালগরিদম; একবারে সফল হয় অন্তত 2/(n(n−1)) সম্ভাবনায় (David Karger, ১৯৯৩)।যেখানে শিখবেন: পর্ব ৬১
- Kasai's algorithmকাসাই অ্যালগরিদম
- suffix array থেকে LCP array O(n) সময়ে বানানোর পদ্ধতি (Kasai ও সহলেখকেরা, ২০০১): suffix-গুলো লেখার ক্রমে দেখা হয়, আর আগের উত্তর h থেকে পরেরটি অন্তত h − 1, তাই তুলনা নতুন করে শুরু হয় না।
- Kendall tau distanceকেন্ডাল টাউ ডিসট্যান্স
- দুটি র্যাঙ্কিংয়ে কতগুলো জোড়ার ক্রম নিয়ে দ্বিমত — অর্থাৎ একটি র্যাঙ্কিংকে অন্যটির ভাষায় লিখলে inversion-এর সংখ্যা। Maurice Kendall-এর ১৯৩৮ সালের rank correlation-এর ভিত্তি।যেখানে শিখবেন: পর্ব ২১পর্ব ৩৬
- Kernelizationকার্নেলাইজেশন
- Polynomial সময়ের কিছু নিয়ম দিয়ে ইনপুটকে এমন ছোট করা, যার আকার শুধু প্যারামিটার k-এর ওপর নির্ভর করে, অথচ উত্তর একই থাকে। যেমন vertex cover-এ k-এর বেশি degree-র vertex নিশ্চিতভাবে cover-এ যায়যেখানে শিখবেন: পর্ব ৬৫
- Key functionকি ফাংশন
- প্রতিটি উপাদান থেকে তুলনার মাপকাঠি বানানো ফাংশন, যেমন Python-এর sorted(a, key=len); sort শুধু এই মানগুলো তুলনা করে, আর key প্রতিটি উপাদানে মাত্র একবার হিসাব হয়যেখানে শিখবেন: পর্ব ২৫
- Knapsack problem (0/1 knapsack)ন্যাপস্যাক
- ওজন আর মানসহ কিছু জিনিস আর একটি ওজনসীমা দেওয়া আছে; প্রতিটি জিনিস নেওয়া বা না-নেওয়া (০ বা ১) বেছে সীমার মধ্যে মোট মান সবচেয়ে বেশি করতে হবে। DP-তে O(nW) সময়ে সমাধান হয়, আর সমস্যাটির সিদ্ধান্ত-রূপ NP-complete.যেখানে শিখবেন: পর্ব ৫০পর্ব ৫৩পর্ব ৫৭
- Knuth optimizationনুথ অপটিমাইজেশন
- কিছু interval DP-তে সেরা ভাঙার বিন্দু একমুখীভাবে সরে (opt[i][j−1] ≤ opt[i][j] ≤ opt[i+1][j]) — এটি কাজে লাগিয়ে k খোঁজার পরিসর ছোট করে Θ(n³)-কে O(n²)-এ নামানোর কৌশল; Donald Knuth (১৯৭১), পরে F. Frances Yao সাধারণ করেন।যেখানে শিখবেন: পর্ব ৫৪
- Knuth-Morris-Pratt (KMP) algorithmনুথ-মরিস-প্র্যাট অ্যালগরিদম
- pattern-এর prefix function আগে হিসাব করে রাখে, যাতে অমিলের পর text-এ পিছিয়ে যেতে না হয়; সবচেয়ে খারাপ ক্ষেত্রেও O(n + m) সময়ে সব মিল খোঁজে। ১৯৭৭ সালে প্রকাশিত।যেখানে শিখবেন: পর্ব ৫৮পর্ব ৬০পর্ব ৬৮
- Kosaraju's algorithmকোসারাজুর অ্যালগরিদম
- SCC খোঁজার পদ্ধতি: প্রথমে মূল গ্রাফে DFS চালিয়ে finish-এর ক্রম রাখা, তারপর উল্টানো গ্রাফে সেই ক্রমের উল্টো দিক থেকে DFS — দ্বিতীয় পাসের প্রতিটি DFS tree একটি SCC. সময় O(V + E).যেখানে শিখবেন: পর্ব ৪৬
- Kraft inequalityক্রাফট ইনইকুয়ালিটি
- দৈর্ঘ্য l₁, …, lₙ-এর একটি prefix-free binary code থাকতে পারে কেবল যদি Σ 2^(−lᵢ) ≤ 1 হয়; সমান হলে code tree-র কোনো ঘর ফাঁকা থাকে না।যেখানে শিখবেন: পর্ব ৫১
- Kruskal reconstruction treeক্রুসকাল রিকনস্ট্রাকশন ট্রি
- Kruskal চালানোর সময় প্রতিটি union-এ একটি নতুন node বানিয়ে তাতে সেই edge-এর ওজন রাখলে যে tree তৈরি হয়; দুটি vertex-এর minimax মান হলো তাদের LCA-র ওজন।যেখানে শিখবেন: পর্ব ৬৭
- Kruskal's algorithmক্রুসকালের অ্যালগরিদম
- Joseph Kruskal-এর (১৯৫৬) MST অ্যালগরিদম: edge-গুলো ওজন অনুযায়ী সাজিয়ে একে একে নেওয়া, যদি তা দুটি আলাদা component জোড়ে (DSU দিয়ে যাচাই); সময় O(E log E).যেখানে শিখবেন: পর্ব ৩৩পর্ব ৪৫পর্ব ৬৮
- Kuhn's algorithm (augmenting-path matching)কুন অ্যালগরিদম
- bipartite matching-এর সরল অ্যালগরিদম: বাঁ পাশের প্রতিটি vertex-এর জন্য DFS দিয়ে augmenting path খোঁজা, দরকার হলে আগের জোড়াদের সরিয়ে। সময় O(V·E)যেখানে শিখবেন: পর্ব ৪৭
- König's theoremকোয়েনিগের থিওরেম
- bipartite গ্রাফে maximum matching-এর আকার = minimum vertex cover-এর আকার (Dénes Kőnig, ১৯৩১)। max-flow min-cut থেকে প্রমাণ করা যায়।যেখানে শিখবেন: পর্ব ৪৭
L
- L'Hôpital's ruleল'পিটালের নিয়ম
- লব আর হর দুটোই অসীমে (বা শূন্যে) গেলে ভাগফলের limit তাদের derivative-এর ভাগফলের limit-এর সমান — এই নিয়ম দিয়ে log n বনাম √n-এর মতো তুলনা সহজ হয়যেখানে শিখবেন: পর্ব ০৪
- Lagrangian relaxationল্যাগ্রাঞ্জিয়ান রিল্যাক্সেশন
- কঠিন একটি শর্ত সরিয়ে দিয়ে তার লঙ্ঘনের জন্য লক্ষ্যে penalty যোগ করা; প্রতিটি penalty-তে একটি সহজ সমস্যা আর একটি bound পাওয়া যায়, সেরা penalty খুঁজলে সবচেয়ে শক্ত সীমা পাওয়া যায়।যেখানে শিখবেন: পর্ব ৫৭
- Lamé's theoremলামের থিওরেম
- Euclid-এর অ্যালগরিদমে ভাগের ধাপ ছোট সংখ্যাটির দশমিক অঙ্কের সংখ্যার ৫ গুণের বেশি হয় না (Gabriel Lamé, ১৮৪৪); সবচেয়ে খারাপ ইনপুট পরপর দুটি Fibonacci সংখ্যা।যেখানে শিখবেন: পর্ব ৬২
- Largest rectangle in a histogramলার্জেস্ট রেক্ট্যাঙ্গল ইন আ হিস্টোগ্রাম
- পাশাপাশি দাঁড়ানো ১ চওড়া স্তম্ভগুলোর (histogram) ভেতরে আঁকা যায় এমন সবচেয়ে বড় আয়তক্ষেত্রের ক্ষেত্রফল বের করার সমস্যা; monotonic stack দিয়ে O(n).যেখানে শিখবেন: পর্ব ১৩পর্ব ৭১
- Las Vegas algorithmলাস ভেগাস অ্যালগরিদম
- যে randomized অ্যালগরিদম সবসময় সঠিক উত্তর দেয়, শুধু চলার সময়টি এলোমেলো; যেমন randomized quicksort, treap আর skip list. উল্টোটি Monte Carlo — সময় নির্দিষ্ট, উত্তর ভুল হওয়ার ছোট সম্ভাবনা থাকে।যেখানে শিখবেন: পর্ব ৩৮পর্ব ৫৮পর্ব ৬১
- Latencyল্যাটেন্সি
- কোনো অনুরোধ পাঠানো থেকে উত্তরের প্রথম অংশ আসা পর্যন্ত অপেক্ষার সময়, যেমন ডিস্ক থেকে একটি block পড়তে কয়েক মিলিসেকেন্ডযেখানে শিখবেন: পর্ব ৩০পর্ব ৬০
- Latenessলেটনেস
- একটি কাজ deadline-এর কত পরে শেষ হলো: max(0, শেষ হওয়ার সময় − deadline). সময়মতো শেষ হলে lateness ০.যেখানে শিখবেন: পর্ব ৫০
- Lattice pointল্যাটিস পয়েন্ট
- যে বিন্দুর x আর y দুটিই পূর্ণসংখ্যা — গ্রাফ কাগজের দাগের মিলনবিন্দু।যেখানে শিখবেন: পর্ব ৬৩
- Lazy deletionলেজি ডিলিশন
- পুরোনো উপাদান সাথে সাথে না সরিয়ে রেখে দেওয়া, আর পরে সেটি বের হলে পুরোনো বলে চিনে বাদ দেওয়া; decrease-key ছাড়া Dijkstra চালানোর প্রচলিত কৌশল।যেখানে শিখবেন: পর্ব ২৩পর্ব ৩৫পর্ব ৪৩
- Lazy evaluationলেজি ইভ্যালুয়েশন
- প্রোগ্রামিং ভাষার একটি নীতি: কোনো expression-এর মান হিসাব করা হয় কেবল যখন সেটি সত্যিই দরকার হয়, আর একবার হিসাব হলে মনে রাখা হয়; Haskell এর পরিচিত উদাহরণ।যেখানে শিখবেন: পর্ব ৩৫
- Lazy propagationলেজি প্রপাগেশন
- Segment tree-তে রেঞ্জ আপডেট দ্রুত করার কৌশল: যে node-এর পুরো রেঞ্জ আপডেটের ভেতরে পড়ে, সেখানে মান ঠিক করে একটি নোট (lazy tag) রেখে থামা, আর নোটটি সন্তানদের কাছে নামানো শুধু যখন কেউ নিচে যেতে চায়; প্রতিটি আপডেট ও প্রশ্ন O(log n).যেখানে শিখবেন: পর্ব ৩৪পর্ব ৩৫পর্ব ৩৭
- Lazy tagলেজি ট্যাগ
- Segment tree-র একটি node-এর গায়ে রাখা নোট — “এই রেঞ্জের সব ঘরে এই আপডেটটি এখনো সন্তানদের কাছে পৌঁছানো বাকি”; node-এর নিজের মান নোটসহ আগেই ঠিক করা থাকে।যেখানে শিখবেন: পর্ব ৩৫
- LCMএলসিএম
- Least common multiple — লঘিষ্ঠ সাধারণ গুণিতক (লসাগু); দুটি সংখ্যা দিয়েই বিভাজ্য সবচেয়ে ছোট ধনাত্মক সংখ্যা। lcm(a, b) = a / gcd(a, b) · b — আগে ভাগ, পরে গুণ, যাতে overflow না হয়।যেখানে শিখবেন: পর্ব ৬২পর্ব ৭২
- LCP arrayএলসিপি অ্যারে
- suffix array-তে পাশাপাশি থাকা প্রতি জোড়া suffix-এর longest common prefix-এর দৈর্ঘ্য; lcp[r] = sa[r − 1] আর sa[r] থেকে শুরু suffix দুটির শুরুতে কতগুলো অক্ষর এক।যেখানে শিখবেন: পর্ব ৫৯
- Leaf nodeলিফ
- tree-র যে node-এর কোনো সন্তান নেই; যেমন n টি node-এর heap-এ (0-based) index ⌊n/2⌋ থেকে n − 1 পর্যন্ত সবাই leaf — প্রায় অর্ধেক node.যেখানে শিখবেন: পর্ব ২৩পর্ব ২৬পর্ব ২৭
- Left-child right-sibling representationলেফট-চাইল্ড রাইট-সিবলিং
- যেকোনো সংখ্যক সন্তানের tree রাখার উপায়: প্রতিটি node-এ শুধু দুটি pointer — প্রথম সন্তান আর পরের ভাই/বোন। এতে যেকোনো tree একটি binary tree হয়ে যায়।যেখানে শিখবেন: পর্ব ২৬
- Left-leaning red-black tree (LLRB)লেফট-লিনিং রেড-ব্ল্যাক ট্রি
- Robert Sedgewick-এর (২০০৮) সরল রূপ, যেখানে লাল link সবসময় বাঁ দিকে থাকে; insert মাত্র তিনটি স্থানীয় মেরামতে লেখা যায়, আর 2-3 রূপটি 2-3 tree-র সাথে হুবহু মেলে।যেখানে শিখবেন: পর্ব ২৯
- Lemmaলেমা
- বড় একটি প্রমাণের ভেতরের ছোট সহায়ক দাবি, যা আলাদাভাবে প্রমাণ করে মূল প্রমাণে ব্যবহার করা হয়।যেখানে শিখবেন: পর্ব ৬৭
- Level (of a tree)লেভেল বা স্তর
- একই depth-এর সব node মিলে একটি level; level 0-তে শুধু root. কিছু বই level গোনা শুরু করে 1 থেকে।যেখানে শিখবেন: পর্ব ২৬
- Level graphলেভেল গ্রাফ
- residual graph-এর সেই অংশ, যেখানে শুধু এমন edge u → v থাকে যাতে BFS-এর level(v) = level(u) + 1 — অর্থাৎ শুধু সবচেয়ে ছোট পথের edge.যেখানে শিখবেন: পর্ব ৪৭
- Level-order traversalলেভেল-অর্ডার ট্রাভার্সাল
- tree-কে স্তরে স্তরে পড়া: আগে root, তারপর level 1-এর সবাই বাঁ থেকে ডানে, তারপর level 2. একটি queue দিয়ে করা হয় — এটিই tree-তে BFS.যেখানে শিখবেন: পর্ব ২৬পর্ব ৪০
- Levenshtein distanceলেভেনশ্টাইন ডিসট্যান্স
- insert, delete আর replace — প্রতিটির খরচ 1 ধরে মাপা edit distance; সোভিয়েত গণিতবিদ Vladimir Levenshtein-এর (১৯৬৫) নামে।যেখানে শিখবেন: পর্ব ৫৪
- Lexicographic orderলেক্সিকোগ্রাফিক অর্ডার
- অভিধানের ক্রম: বাঁ দিক থেকে প্রথম যে ঘরে দুটি string আলাদা, সেই অক্ষরের তুলনাই ফল ঠিক করে; একটি অন্যটির prefix হলে ছোটটি আগে।যেখানে শিখবেন: পর্ব ১১পর্ব ১৫পর্ব ২৪
- LIFO (Last In, First Out)লাস্ট ইন ফার্স্ট আউট
- যে নিয়মে সবার শেষে যা ঢোকে, সেটিই সবার আগে বের হয় — থালার স্তূপের মতো। stack এই নিয়মে চলে।যেখানে শিখবেন: পর্ব ১৩পর্ব ১৪পর্ব ৪১
- Light edgeলাইট এজ
- একটি cut পার হওয়া সব edge-এর মধ্যে যার ওজন সবচেয়ে কম (সমতা থাকলে তাদের যেকোনোটি)।যেখানে শিখবেন: পর্ব ৪৫
- Limitলিমিট
- n অসীমের দিকে গেলে কোনো রাশির মান যে নির্দিষ্ট সংখ্যার দিকে এগোয়; f(n)/g(n)-এর limit দেখে দুটি ফাংশনের বৃদ্ধি তুলনা করা যায়যেখানে শিখবেন: পর্ব ০৪
- Linear probingলিনিয়ার প্রোবিং
- hash table-এ collision সামলানোর একটি কৌশল: নিজের তাক ভরা থাকলে পরের, তার পরের তাক — এভাবে প্রথম খালি তাকে key বসানো হয়, খোঁজাও একই পথে চলে।যেখানে শিখবেন: পর্ব ০১পর্ব ৩২পর্ব ৬৮
- Linear programming dualityলিনিয়ার প্রোগ্রামিং ডুয়ালিটি
- প্রতিটি linear program-এর একটি “dual” প্রোগ্রাম থাকে, আর (শর্তসাপেক্ষে) দুইয়ের সর্বোত্তম মান সমান। Max flow আর min cut এমন একটি জোড়া।যেখানে শিখবেন: পর্ব ৪৭
- Linear searchলিনিয়ার সার্চ
- প্রথম উপাদান থেকে শুরু করে একটি একটি করে মিলিয়ে খোঁজা; তালিকা সাজানো না থাকলেও চলে, সবচেয়ে খারাপে n টি তুলনা লাগে — O(n).যেখানে শিখবেন: পর্ব ০১পর্ব ০৫পর্ব ১৮
- Linear sieveলিনিয়ার সিভ
- যে sieve প্রতিটি যৌগিক সংখ্যাকে ঠিক একবার, তার সবচেয়ে ছোট মৌলিক উৎপাদক দিয়ে চিহ্নিত করে — তাই সময় O(n). সাথে প্রতিটি সংখ্যার smallest prime factor পাওয়া যায়। Gries ও Misra, ১৯৭৮.যেখানে শিখবেন: পর্ব ৬২
- Linear time — O(n)লিনিয়ার টাইম
- ধাপের সংখ্যা ইনপুটের আকারের সমানুপাতিক; n দ্বিগুণ হলে সময়ও দ্বিগুণযেখানে শিখবেন: পর্ব ০৪
- Linearity of expectationলিনিয়ারিটি অব এক্সপেক্টেশন
- কয়েকটি random চলকের যোগফলের প্রত্যাশিত মান = তাদের প্রত্যাশিত মানের যোগফল, চলকগুলো স্বাধীন হোক বা না হোক। জটিল প্রত্যাশা ছোট ছোট ঘটনার সম্ভাবনায় ভেঙে হিসাব করতে কাজে লাগে।যেখানে শিখবেন: পর্ব ৩৮পর্ব ৬১পর্ব ৭০
- Link-state routingলিংক-স্টেট রাউটিং
- যে routing পদ্ধতিতে প্রতিটি router পুরো নেটওয়ার্কের মানচিত্র জানে আর নিজে Dijkstra চালিয়ে পথ ঠিক করে — যেমন OSPF আর IS-IS.যেখানে শিখবেন: পর্ব ৪৩
- Linked listলিংকড লিস্ট
- এমন ডেটা স্ট্রাকচার, যেখানে উপাদানগুলো (node) মেমরিতে পাশাপাশি থাকে না; প্রতিটি node পরের node-এর ঠিকানা রাখে, আর এভাবে শিকলের মতো একটি ক্রম তৈরি হয়।যেখানে শিখবেন: পর্ব ১২পর্ব ১৩পর্ব ১৪
- List schedulingলিস্ট শিডিউলিং
- Graham-এর (১৯৬৬) greedy নিয়ম: কাজগুলো তালিকার ক্রমে নিয়ে প্রতিটিকে সেই মুহূর্তের সবচেয়ে কম ব্যস্ত মেশিনে দেওয়া; makespan ≤ (2 − 1/m) · OPT.যেখানে শিখবেন: পর্ব ৬৬
- Literalলিটারাল
- একটি boolean চলক নিজে (x) বা তার উল্টো (¬x, NOT x). n টি চলকে 2n টি literal.যেখানে শিখবেন: পর্ব ৪৬পর্ব ৬৪পর্ব ৭০
- little-oলিটল-ও
- কঠোর ওপরের সীমা। f(n) = o(g(n)) মানে যেকোনো ধ্রুবক c > 0 নিলেও একসময় f(n) < c·g(n); যেমন n = o(n²)যেখানে শিখবেন: পর্ব ০৪
- little-omega (ω)লিটল-ওমেগা
- কঠোর নিচের সীমা। f(n) = ω(g(n)) মানে যেকোনো ধ্রুবক c > 0-এর জন্য একসময় f(n) > c·g(n); যেমন n² = ω(n)যেখানে শিখবেন: পর্ব ০৪
- Live node, E-node, dead nodeলাইভ নোড
- Live node = তৈরি হয়েছে কিন্তু এখনো খোলা হয়নি, queue-তে অপেক্ষমাণ; E-node = এই মুহূর্তে যার সন্তান তৈরি হচ্ছে; dead node = খোলা শেষ বা ছাঁটাই হয়ে বাদ।যেখানে শিখবেন: পর্ব ৫৭
- Load factorলোড ফ্যাক্টর
- hash table-এ উপাদানের সংখ্যা ÷ bucket-এর সংখ্যা, লেখা হয় α = n/m; এটি একটি সীমা ছাড়ালে টেবিল বড় করা হয়, যাতে chain বা probe-এর পথ ছোট থাকে।যেখানে শিখবেন: পর্ব ১৫পর্ব ৩২পর্ব ৬৯
- Local optimumলোকাল অপটিমাম
- যে সমাধানের কোনো প্রতিবেশী (একটি ছোট move দূরের সমাধান) তার চেয়ে ভালো নয়। এটি সবচেয়ে ভালো সমাধান (global optimum) না-ও হতে পারেযেখানে শিখবেন: পর্ব ৬৫
- Local searchলোকাল সার্চ
- একটি সম্পূর্ণ সমাধান দিয়ে শুরু করে বারবার ছোট পরিবর্তন (move) করে ভালো প্রতিবেশী সমাধানে যাওয়া। দ্রুত ভালো উত্তর দেয়, কিন্তু সর্বোত্তম হওয়ার কোনো নিশ্চয়তা নেইযেখানে শিখবেন: পর্ব ৬৫
- Lock-freeলক-ফ্রি
- lock ছাড়া, compare-and-swap-এর মতো atomic নির্দেশ দিয়ে লেখা concurrent কাঠামো, যেখানে কোনো thread আটকে থাকলেও পুরো সিস্টেম এগোতে থাকে — অন্তত একটি thread সবসময় তার কাজ শেষ করে।যেখানে শিখবেন: পর্ব ৩৮
- Logarithm (log)লগারিদম
- সূচকের উল্টো হিসাব: log_b x = y মানে b^y = x. log₂ n বলে দেয় n-কে কতবার অর্ধেক করলে ১-এ পৌঁছায়, বা ১-কে কতবার দ্বিগুণ করলে n হয়যেখানে শিখবেন: পর্ব ০৬পর্ব ৪৪
- Logarithmic time — O(log n)লগারিদমিক টাইম
- প্রতি ধাপে সমস্যা একটি ধ্রুবক অনুপাতে (যেমন অর্ধেক) ছোট হলে যে সময় লাগে; n দ্বিগুণ হলে মাত্র এক ধাপ বাড়েযেখানে শিখবেন: পর্ব ০৪পর্ব ১৮
- Lomuto partitionলোমুতো পার্টিশন
- শেষ উপাদানকে pivot ধরে, একদিকে চলা দুটি pointer দিয়ে ছোট উপাদানগুলো বাঁ দিকে জড়ো করার partition পদ্ধতি; ঠিক n − 1 তুলনা লাগে আর শেষে pivot তার চূড়ান্ত ঘরে বসে।যেখানে শিখবেন: পর্ব ২২পর্ব ৬৮পর্ব ৭০
- Longest common prefix (LCP)লংগেস্ট কমন প্রিফিক্স
- কয়েকটি string-এর শুরুতে যে সবচেয়ে লম্বা অংশ সবার মধ্যে হুবহু এক, যেমন dhaka, dhanmondi, dhamrai-এর LCP হলো dha.যেখানে শিখবেন: পর্ব ১১পর্ব ৩১পর্ব ৩৭
- Longest common subsequence (LCS)লংগেস্ট কমন সাবসিকোয়েন্স
- দুটি (বা বেশি) sequence-এর এমন সবচেয়ে লম্বা subsequence, যা সবগুলোতেই একই ক্রমে আছে; দুটি স্ট্রিংয়ের জন্য DP দিয়ে Θ(nm) সময়ে বের হয়।যেখানে শিখবেন: পর্ব ৫৪পর্ব ৬৮পর্ব ৭০
- Longest common substringলংগেস্ট কমন সাবস্ট্রিং
- দুটি string-এর দুটিতেই টানা আকারে থাকা সবচেয়ে লম্বা অংশ; subsequence-এর LCS থেকে আলাদা, কারণ এখানে মাঝের অক্ষর বাদ দেওয়া যায় না।যেখানে শিখবেন: পর্ব ৫৯
- Longest increasing subsequence (LIS)লংগেস্ট ইনক্রিজিং সাবসিকোয়েন্স
- একটি ক্রমের সবচেয়ে লম্বা subsequence, যার উপাদানগুলো কঠোরভাবে বাড়তে থাকে। সরল DP-তে O(n²), patience sorting আর binary search-এ O(n log n).যেখানে শিখবেন: পর্ব ৫৩পর্ব ৬৯
- Longest path problemলংগেস্ট পাথ
- গ্রাফে সবচেয়ে বেশি ওজনের (বা সবচেয়ে বেশি edge-এর) simple পথ খোঁজা। সাধারণ গ্রাফে NP-hard, কিন্তু DAG-এ topological order ধরে DP দিয়ে O(V + E).যেখানে শিখবেন: পর্ব ৪২
- Longest prefix matchলংগেস্ট প্রিফিক্স ম্যাচ
- একটি address-এর সাথে একাধিক prefix মিললে সবচেয়ে লম্বা (সবচেয়ে নির্দিষ্ট) মেলা prefix-টি বেছে নেওয়ার নিয়ম — IP routing-এর মূল কাজ, trie-তে O(W), W = address-এর bit.যেখানে শিখবেন: পর্ব ৩১
- Longest repeated substringলংগেস্ট রিপিটেড সাবস্ট্রিং
- একটি string-এর যে সবচেয়ে লম্বা substring অন্তত দুটি আলাদা অবস্থান থেকে শুরু হয় (দুটি ঘটনা একে অন্যের ওপর পড়তে পারে); এর দৈর্ঘ্য LCP array-র সবচেয়ে বড় মান।যেখানে শিখবেন: পর্ব ৫৯
- Lookup tableলুকআপ টেবিল
- বারবার লাগে এমন উত্তরগুলো আগেই হিসাব করে রাখা একটি array বা টেবিল, যাতে পরে হিসাব না করে সরাসরি দেখে নেওয়া যায়।যেখানে শিখবেন: পর্ব ০৫
- Loop invariantলুপ ইনভেরিয়েন্ট
- লুপের প্রতিটি ঘোরার শুরুতে সবসময় সত্য থাকে এমন একটি বক্তব্য; এটি দিয়ে লুপওয়ালা অ্যালগরিদমের শুদ্ধতা প্রমাণ করা হয়।যেখানে শিখবেন: পর্ব ০২পর্ব ০৩পর্ব ১০
- Lossless compressionলসলেস কমপ্রেশন
- যে সংকোচন খুললে হুবহু আগের ডেটা ফেরত আসে, একটি বিটও হারায় না — যেমন zip, PNG আর Huffman coding.যেখানে শিখবেন: পর্ব ৫১
- Lossy compressionলসি কমপ্রেশন
- যে সংকোচন চোখ-কানে প্রায় ধরা পড়ে না এমন খুঁটিনাটি ফেলে দিয়ে আরও ছোট করে; খুললে হুবহু আগের ডেটা ফেরে না — যেমন JPEG, MP3.যেখানে শিখবেন: পর্ব ৫১
- Low-link value (low)লো-লিংক
- DFS-এ u-র subtree থেকে tree edge ধরে নেমে, তারপর সর্বোচ্চ একটি অ-tree edge দিয়ে (SCC-র ক্ষেত্রে শুধু এখনো stack-এ থাকা vertex-এ) পৌঁছানো যায় এমন vertex-গুলোর সবচেয়ে ছোট disc মান। SCC, bridge আর articulation point — তিনটিই এটি দিয়ে চেনা যায়।যেখানে শিখবেন: পর্ব ৪৬
- Lower boundলোয়ার বাউন্ড
- এমন একটি সীমা যার চেয়ে কম কখনো হয় না; কোনো অ্যালগরিদম বা পুরো সমস্যার নিচের সীমা Ω দিয়ে লেখা হয়। Optimisation-এ (যেমন branch and bound) মানে: কোনো সমাধানের খরচ এর চেয়ে কম হতে পারে না।যেখানে শিখবেন: পর্ব ০৪পর্ব ১৮পর্ব ২১
- lower_bound (lower bound of x)লোয়ার বাউন্ড
- সাজানো ক্রমে প্রথম যে অবস্থানে মান x-এর সমান বা বড় (a[i] ≥ x); এমন না থাকলে শেষের পরের অবস্থান n. C++-এ std::lower_bound, Python-এ bisect_left — দুটিই O(log n).যেখানে শিখবেন: পর্ব ১৮পর্ব ৫৩
- Lowest common ancestor (LCA)লোয়েস্ট কমন অ্যানসেস্টর
- rooted tree-তে দুটি node-এর সাধারণ ancestor-দের মধ্যে যে root থেকে সবচেয়ে দূরে (গভীরে); একটি node নিজেও নিজের ancestor ধরা হয়।যেখানে শিখবেন: পর্ব ২৬পর্ব ৩৭পর্ব ৩৯
- Lowest set bit (lowbit)লোয়েস্ট সেট বিট, লো-বিট
- একটি সংখ্যার binary রূপের সবচেয়ে ডানের 1-bit-এর মান; যেমন 12 = 1100-এর lowbit 4. C++ ও Python-এ i & -i দিয়ে পাওয়া যায়যেখানে শিখবেন: পর্ব ৩৬পর্ব ৫৫পর্ব ৫৬
- LP relaxationএলপি রিল্যাক্সেশন
- Integer program থেকে “পূর্ণসংখ্যা হতে হবে” শর্তটি তুলে দিয়ে পাওয়া সাধারণ linear program; দ্রুত সমাধান করা যায়, আর এর মান মূল সমস্যার সর্বোত্তমের চেয়ে খারাপ হয় না।যেখানে শিখবেন: পর্ব ৫৭পর্ব ৬৫পর্ব ৬৬
- LP roundingএলপি রাউন্ডিং
- LP relaxation-এর ভগ্নাংশ সমাধানকে নিয়ম মেনে পূর্ণসংখ্যায় (যেমন ০ বা ১) রূপান্তর করে একটি বৈধ সমাধান পাওয়া; vertex cover-এ x ≥ 1/2 হলে নেওয়া — ২-approximation.যেখানে শিখবেন: পর্ব ৬৬
- LPT (Longest Processing Time first)এলপিটি
- List scheduling-এর আগে কাজগুলো বড় থেকে ছোট ক্রমে সাজানো; Graham (১৯৬৯) দেখান makespan ≤ (4/3 − 1/(3m)) · OPT.যেখানে শিখবেন: পর্ব ৬৬
- LSD radix sortএলএসডি র্যাডিক্স সর্ট
- Least Significant Digit radix sort: সবচেয়ে ডানের অঙ্ক থেকে শুরু করে প্রতিটি অঙ্কে পুরো অ্যারের ওপর একটি stable সর্ট চালানো। ভেতরের সর্ট stable না হলে ফল ভুল হয়।যেখানে শিখবেন: পর্ব ২৪
- LSM-tree (log-structured merge-tree)এলএসএম ট্রি
- লেখা খুব দ্রুত করার কাঠামো: নতুন ডেটা আগে মেমরিতে জমে, তারপর সাজানো ফাইল হিসেবে ডিস্কে একসাথে লেখা হয় আর পরে ফাইলগুলো merge করা হয়; RocksDB, Cassandra-র মতো সিস্টেমে ব্যবহৃতযেখানে শিখবেন: পর্ব ৩০পর্ব ৩৮
- Lucas's theoremলুকাসের থিওরেম
- মৌলিক p-এর জন্য C(n, r) mod p বের করতে n আর r-কে p-ভিত্তিক অঙ্কে লিখে প্রতিটি অঙ্ক-জোড়ার C(nᵢ, rᵢ)-এর গুণফল নেওয়া; n ≥ p হলে, যেখানে factorial টেবিল কাজ করে না, তখন লাগে।যেখানে শিখবেন: পর্ব ৬২
- LZ77এলজেড সেভেন্টি-সেভেন
- Abraham Lempel আর Jacob Ziv-এর ১৯৭৭ সালের সংকোচন পদ্ধতি: আগে আসা অংশের পুনরাবৃত্তিকে “কত পেছনে, কত লম্বা” জোড়া দিয়ে বদলে দেয়।যেখানে শিখবেন: পর্ব ৫১
M
- make-setমেক-সেট
- DSU-তে একটি উপাদান দিয়ে নতুন এক-সদস্যের দল বানানোর কাজ; forest-এ p[x] = x, O(1).যেখানে শিখবেন: পর্ব ৩৩
- Makespanমেকস্প্যান
- কয়েকটি মেশিনে কাজ ভাগ করলে সবচেয়ে ব্যস্ত মেশিনের মোট সময় — অর্থাৎ সব কাজ শেষ হতে কত সময় লাগে। Load balancing-এ এটিই কমাতে হয়।যেখানে শিখবেন: পর্ব ৬৬
- Mark schemeমার্ক স্কিম
- একটি প্রশ্নের নম্বর কোন কোন অংশে ভাগ করে দেওয়া হবে তার তালিকা, যেমন সংজ্ঞায় এত, pseudocode-এ এত, প্রমাণে এত। পরীক্ষক খাতা দেখার সময় এটি মিলিয়ে নম্বর দেন।যেখানে শিখবেন: পর্ব ৭০
- Markov's inequalityমার্কভস ইনইকুয়ালিটি
- অঋণাত্মক random variable X আর a > 0-এর জন্য P(X ≥ a) ≤ E[X]/a; শুধু গড় জেনেই “অনেক বড় হওয়ার” সম্ভাবনার একটি সীমা দেয়।যেখানে শিখবেন: পর্ব ৬১
- Master theoremমাস্টার থিওরেম
- T(n) = a·T(n/b) + f(n) ধরনের divide and conquer recurrence-এর উত্তর f(n)-কে n^(log_b a)-এর সাথে তুলনা করে সরাসরি বলে দেওয়ার একটি সূত্র।যেখানে শিখবেন: পর্ব ০৮পর্ব ০৯পর্ব ২১
- Matchingম্যাচিং
- গ্রাফের এমন কিছু edge-এর সেট, যাদের কোনো দুটি একই vertex ছোঁয় না — প্রত্যেকে সর্বোচ্চ একজনের সাথে জোড়া।যেখানে শিখবেন: পর্ব ৪৭পর্ব ৬৫পর্ব ৬৬
- Mathematical inductionম্যাথমেটিক্যাল ইন্ডাকশন
- গাণিতিক আরোহ: base case-এ দাবিটি সত্য দেখিয়ে, তারপর k-এ সত্য হলে k+1-এ সত্য প্রমাণ করে সব স্বাভাবিক সংখ্যার জন্য দাবি প্রতিষ্ঠা করার পদ্ধতি।যেখানে শিখবেন: পর্ব ০৩পর্ব ০৭পর্ব ০৮
- Matrix chain multiplicationম্যাট্রিক্স চেইন মাল্টিপ্লিকেশন
- কয়েকটি matrix-এর গুণফল কোন বন্ধনীতে নিলে মোট সংখ্যা-গুণ সবচেয়ে কম হয়, তা বের করার সমস্যা; interval DP দিয়ে Θ(n³) সময়ে সমাধান হয়।যেখানে শিখবেন: পর্ব ৫৪পর্ব ৬৮পর্ব ৬৯
- Matrix multiplication exponent (ω)ম্যাট্রিক্স মাল্টিপ্লিকেশন এক্সপোনেন্ট বা ওমেগা
- সবচেয়ে ছোট সংখ্যা ω যাতে যেকোনো ε > 0-এর জন্য দুটি n×n matrix O(n^(ω+ε)) সময়ে গুণ করা যায়; জানা আছে 2 ≤ ω, আর বর্তমান ওপরের সীমা প্রায় ২.৩৭১.যেখানে শিখবেন: পর্ব ৪৯পর্ব ৬১
- Matroidম্যাট্রয়েড
- একটি সেট আর তার কিছু 'স্বাধীন' উপসেটের কাঠামো, যেখানে স্বাধীন সেটের উপসেটও স্বাধীন, আর ছোট স্বাধীন সেটকে বড়টি থেকে একটি উপাদান নিয়ে বাড়ানো যায়; ঠিক এমন কাঠামোতেই সব ওজনে greedy সর্বোত্তম।যেখানে শিখবেন: পর্ব ৫০
- Max-flow min-cut theoremম্যাক্স-ফ্লো মিন-কাট থিওরেম
- যেকোনো flow network-এ সর্বোচ্চ প্রবাহের মান = সবচেয়ে ছোট s-t cut-এর capacity; সমতুল্যভাবে, residual graph-এ augmenting path না থাকলেই flow সর্বোচ্চ (১৯৫৬)।যেখানে শিখবেন: পর্ব ৪৭পর্ব ৬৯
- Max-heapম্যাক্স-হিপ
- যে heap-এ প্রতিটি node তার সন্তানদের চেয়ে বড় বা সমান, তাই সবচেয়ে বড় উপাদানটি root-এ থাকে। C++-এর std::priority_queue ডিফল্টভাবে max-heap.যেখানে শিখবেন: পর্ব ২৩পর্ব ৩৮
- Maximal matchingম্যাক্সিমাল ম্যাচিং
- এমন matching, যাতে আর কোনো edge যোগ করা যায় না — বাকি প্রতিটি edge-এর অন্তত এক প্রান্ত আগেই ব্যবহৃত। এক পাসের greedy-তেই পাওয়া যায়; সবচেয়ে বড় (maximum) matching হওয়া জরুরি নয়।যেখানে শিখবেন: পর্ব ৬৬পর্ব ৭০
- Maximum (weight) independent setম্যাক্সিমাম ইনডিপেনডেন্ট সেট
- এমন vertex-এর সেট, যার কোনো দুটি edge দিয়ে সরাসরি যুক্ত নয়, আর যার আকার বা মোট ওজন সর্বোচ্চ; সাধারণ graph-এ NP-hard, tree-তে tree DP-তে O(n).যেখানে শিখবেন: পর্ব ৫৫পর্ব ৬৫
- Maximum flowম্যাক্সিমাম ফ্লো
- capacity আর conservation মেনে source থেকে sink-এ সবচেয়ে বেশি মোট প্রবাহ পাঠানোর সমস্যা, বা সেই প্রবাহটি।যেখানে শিখবেন: পর্ব ৪৭
- Maximum matchingম্যাক্সিমাম ম্যাচিং
- সবচেয়ে বেশি edge-এর matching. Bipartite গ্রাফে এটি max flow, Kuhn বা Hopcroft-Karp দিয়ে বের করা যায়।যেখানে শিখবেন: পর্ব ৪৭পর্ব ৬৫পর্ব ৬৬
- Maximum spanning treeম্যাক্সিমাম স্প্যানিং ট্রি
- যে spanning tree-র মোট ওজন সবচেয়ে বেশি; Kruskal-এ edge দামি থেকে সস্তা ক্রমে নিয়ে, বা সব ওজন −w করে সাধারণ MST চালিয়ে পাওয়া যায়।যেখানে শিখবেন: পর্ব ৪৫
- Maximum subarray problemম্যাক্সিমাম সাবঅ্যারে
- array-এর পরপর উপাদানের এমন একটি অংশ খোঁজা, যার যোগফল সবচেয়ে বেশি; সংখ্যা ঋণাত্মকও হতে পারে।যেখানে শিখবেন: পর্ব ১০পর্ব ৩৪পর্ব ৪৯
- Maximum XOR pairম্যাক্সিমাম এক্সওআর পেয়ার
- একটি অ্যারের দুটি সংখ্যা বাছাই, যাদের XOR সবচেয়ে বড়। binary trie-তে প্রতিটি bit-এ উল্টো bit-এর দিকে greedy-ভাবে নামলে O(n·B)-এ সমাধান, যেখানে B = bit-এর সংখ্যা।যেখানে শিখবেন: পর্ব ৩১
- MCQ (Multiple Choice Question)এম-সি-কিউ
- বহুনির্বাচনী প্রশ্ন — সাধারণত চারটি অপশন দেওয়া থাকে, আর তার মধ্যে থেকে একটি সঠিক উত্তর বেছে নিতে হয়। বিশ্ববিদ্যালয়, চাকরির লিখিত পরীক্ষা আর অনলাইন screening test-এ এই ধরন খুব চলে।যেখানে শিখবেন: পর্ব ৬৯
- Medianমিডিয়ান
- সাজানো তালিকার ঠিক মাঝের মান — n বিজোড় হলে (n + 1)/2-তম ছোট উপাদান; এর চেয়ে ছোট আর বড় উপাদান প্রায় সমান সংখ্যায় থাকে।যেখানে শিখবেন: পর্ব ২২পর্ব ৩৬
- Median of medians (BFPRT)মিডিয়ান অব মিডিয়ানস
- উপাদানগুলোকে ৫টি করে দলে ভাগ করে প্রতিটি দলের median-এর median-কে pivot বাছার পদ্ধতি, যা selection-কে worst case-এও O(n) করে। ১৯৭৩ সালে Blum, Floyd, Pratt, Rivest আর Tarjan দেন।যেখানে শিখবেন: পর্ব ২২পর্ব ৪৯
- Median-of-three pivotমিডিয়ান-অব-থ্রি পিভট
- অংশের প্রথম, মাঝের আর শেষ উপাদানের মধ্যে মাঝের মানটিকে pivot বাছার নিয়ম; সাজানো ইনপুটে খারাপ ভাগ এড়ায় আর গড় তুলনাও কিছুটা কমায়।যেখানে শিখবেন: পর্ব ২২
- Meet in the middleমিট ইন দ্য মিডল
- ইনপুটকে দুই ভাগে ভেঙে প্রতিটি ভাগের সব সম্ভাবনা আলাদা করে বের করা, তারপর সাজিয়ে আর binary search দিয়ে জোড়া মেলানো — O(2ⁿ)-এর কাজ মোটামুটি O(2^(n/2) · n)-এ নামে।যেখানে শিখবেন: পর্ব ৫৩পর্ব ৫৫পর্ব ৬৫
- Memoizationমেমোইজেশন
- একটি ফাংশনের ফল প্রথমবার হিসাব করে মনে রাখা, যাতে একই ইনপুটে আবার ডাকলে সরাসরি জমা ফল ফেরত দেওয়া যায়। Dynamic programming-এর একটি মূল কৌশল।যেখানে শিখবেন: পর্ব ০৫পর্ব ০৭পর্ব ০৮
- Memory hierarchyমেমরি হায়ারার্কি
- register, cache, RAM, SSD আর hard disk — দ্রুত কিন্তু ছোট আর দামি থেকে ধীর কিন্তু বড় আর সস্তা স্টোরেজের স্তরবিন্যাসযেখানে শিখবেন: পর্ব ৩০
- Memory leakমেমরি লিক
- যে মেমরি আর ব্যবহার হবে না, তা ফেরত না দেওয়ার ভুল; প্রোগ্রাম যত চলে, মেমরি তত খরচ হতে থাকে। C++-এ new করা জিনিস delete না করলে এটি ঘটে।যেখানে শিখবেন: পর্ব ১২পর্ব ২৭
- Memory Limit Exceeded (MLE)মেমরি লিমিট এক্সিডেড
- প্রোগ্রাম অনুমোদিত মেমরির (যেমন ২৫৬ MB) বেশি ব্যবহার করেছে — খুব বড় অ্যারে, n × n টেবিল বা অসীমভাবে বাড়তে থাকা কোনো কাঠামো এর সাধারণ কারণ।যেখানে শিখবেন: পর্ব ৭২
- Memory overheadমেমরি ওভারহেড
- আসল ডেটার বাইরে বাড়তি যে মেমরি খরচ হয় — যেমন linked list-এর প্রতিটি node-এ pointer-এর জায়গা আর allocator-এর নিজের হিসাবের জায়গা।যেখানে শিখবেন: পর্ব ১২
- Memtableমেমটেবিল
- LSM-tree ভিত্তিক ডেটাবেসে (LevelDB, RocksDB) নতুন লেখাগুলো প্রথমে যে সাজানো কাঠামোয় মেমরিতে জমা হয়; ভরে গেলে পুরোটা একটি সাজানো ফাইল হিসেবে ডিস্কে লেখা হয়। এই দুটি সিস্টেমে এর ডিফল্ট রূপ একটি skip list.যেখানে শিখবেন: পর্ব ৩৮
- Menger's theoremমেঙ্গারের থিওরেম
- s থেকে t-এর edge-disjoint পথের সর্বোচ্চ সংখ্যা = s আর t-কে বিচ্ছিন্ন করতে সবচেয়ে কম যতগুলো edge সরাতে হয় (Karl Menger, ১৯২৭); vertex-এর জন্যও একই রূপ আছে।যেখানে শিখবেন: পর্ব ৪৭
- Merge (of sorted sequences)মার্জ
- দুটি সাজানো তালিকার শুরুতে একটি করে pointer রেখে বারবার ছোট উপাদানটি নিয়ে একটি সম্মিলিত সাজানো তালিকা তৈরি করা; সময় Θ(n + m). merge sort-এর মূল ধাপ।যেখানে শিখবেন: পর্ব ১৬পর্ব ২১
- Merge (treap)মার্জ
- দুটি treap জোড়া দেওয়া, যখন প্রথমটির সব key দ্বিতীয়টির সব key-র চেয়ে ছোট; যার root-এর priority বেশি সে ওপরে থাকে, আর বাকিটা recursion-এ জোড়া হয়। প্রত্যাশিত O(log n).যেখানে শিখবেন: পর্ব ৩৮
- Merge sortমার্জ সর্ট
- তালিকাকে দুই ভাগ করে প্রতিটি ভাগ রিকার্শন দিয়ে সাজায়, তারপর দুটি সাজানো ভাগ জোড়া (merge) দেয়; সব ক্ষেত্রে সময় Θ(n log n)যেখানে শিখবেন: পর্ব ০৮পর্ব ০৯পর্ব ২১
- Mersenne Twisterমার্সেন টুইস্টার
- Matsumoto ও Nishimura-র ১৯৯৮ সালের জনপ্রিয় PRNG (C++-এর mt19937, Python-এর random); simulation-এ চমৎকার, কিন্তু ৬২৪টি আউটপুট দেখে ভবিষ্যৎ অনুমান করা যায় বলে নিরাপত্তায় অচল।যেখানে শিখবেন: পর্ব ৬১
- Metaheuristicমেটাহিউরিস্টিক
- নির্দিষ্ট সমস্যার বাইরে বহু সমস্যায় খাটে এমন সাধারণ খোঁজের কৌশল — simulated annealing, tabu search, genetic algorithm ইত্যাদি। দ্রুত ভালো উত্তর দেয়, প্রমাণিত নিশ্চয়তা দেয় নাযেখানে শিখবেন: পর্ব ৬৫
- Metric TSPমেট্রিক টিএসপি
- যে TSP-তে দূরত্ব প্রতিসম আর ত্রিভুজ অসমতা মানে: d(u, w) ≤ d(u, v) + d(v, w); সরাসরি যাওয়া কখনো মাঝে থেমে যাওয়ার চেয়ে দীর্ঘ নয়। NP-hard, কিন্তু ধ্রুবক ratio-র approximation আছে।যেখানে শিখবেন: পর্ব ৬৬
- Miller–Rabin testমিলার–র্যাবিন টেস্ট
- n − 1 = 2^s·d লিখে a^d থেকে বারবার বর্গ করে 1-এর অদ্ভুত বর্গমূল খোঁজার primality test; যৌগিক n একটি এলোমেলো base-এ পার পায় সর্বোচ্চ 1/4 সম্ভাবনায়।যেখানে শিখবেন: পর্ব ৬১পর্ব ৬২পর্ব ৬৯
- Min-heapমিন-হিপ
- যে heap-এ প্রতিটি node তার সন্তানদের চেয়ে ছোট বা সমান, তাই সবচেয়ে ছোট উপাদানটি root-এ থাকে। Python-এর heapq একটি min-heap.যেখানে শিখবেন: পর্ব ২৩পর্ব ৪২পর্ব ৫০
- Min-stackমিন-স্ট্যাক
- এমন stack যা push, pop, top-এর পাশাপাশি এই মুহূর্তের সবচেয়ে ছোট উপাদানটিও O(1)-এ বলে দেয় — প্রতিটি ঘরে “এ পর্যন্ত সর্বনিম্ন” মান সাথে রেখে।যেখানে শিখবেন: পর্ব ১৩
- Minimal AVL tree (Fibonacci tree)মিনিমাল এভিএল ট্রি বা ফিবোনাচ্চি ট্রি
- নির্দিষ্ট উচ্চতা h-এর সবচেয়ে কম node-এর AVL tree: root-এর এক দিকে উচ্চতা h−1-এর, অন্য দিকে h−2-এর minimal tree. Node সংখ্যা N(h) = N(h−1) + N(h−2) + 1 = F(h+3) − 1.যেখানে শিখবেন: পর্ব ২৮
- Minimax (bottleneck) pathমিনিম্যাক্স পাথ
- দুটি vertex-এর মধ্যে এমন পথ যার সবচেয়ে ভারী edge-টি যতটা সম্ভব হালকা; undirected গ্রাফে যেকোনো minimum spanning tree-র ভেতরের পথটিই এমন একটি পথ।যেখানে শিখবেন: পর্ব ৬৭
- Minimum bottleneck spanning tree (MBST)মিনিমাম বটলনেক স্প্যানিং ট্রি
- যে spanning tree-র সবচেয়ে ভারী edge-টি (bottleneck) যতটা সম্ভব হালকা। প্রতিটি MST একটি MBST, কিন্তু উল্টোটি সবসময় নয়।যেখানে শিখবেন: পর্ব ৪৫পর্ব ৬৭
- Minimum cutমিনিমাম কাট
- সবচেয়ে ছোট capacity-র s-t cut — নেটওয়ার্কের “সবচেয়ে সরু গলা”; এর মান সবসময় max flow-এর সমান। একটি edge নয়, edge-এর একটি সেট।যেখানে শিখবেন: পর্ব ৪৭পর্ব ৬১
- Minimum degree (t)মিনিমাম ডিগ্রি
- CLRS বইয়ের B-tree-র মাপ: root ছাড়া প্রতিটি node-এ অন্তত t − 1 আর সর্বোচ্চ 2t − 1 টি key থাকে, অর্থাৎ internal node-এর t থেকে 2t টি সন্তান; t ≥ 2যেখানে শিখবেন: পর্ব ৩০
- Minimum spanning tree (MST)মিনিমাম স্প্যানিং ট্রি
- একটি connected, ওজনযুক্ত undirected গ্রাফের সব vertex-কে জোড়া এমন tree, যার edge-গুলোর মোট ওজন সবচেয়ে কম; V টি vertex-এ ঠিক V − 1 টি edge.যেখানে শিখবেন: পর্ব ৩৩পর্ব ৩৯পর্ব ৪৫
- Minimum-cost flowমিন-কস্ট ফ্লো
- প্রতিটি edge-এ capacity-র সাথে প্রতি একক প্রবাহের খরচ থাকলে, নির্দিষ্ট পরিমাণ প্রবাহ সবচেয়ে কম মোট খরচে পাঠানোর সমস্যা।যেখানে শিখবেন: পর্ব ৪৭
- Mock interviewমক ইন্টারভিউ
- আসল ইন্টারভিউর আগে অনুশীলনের জন্য সাজানো নকল ইন্টারভিউ, যেখানে একজন বন্ধু, পরামর্শদাতা বা AI প্রশ্নকর্তার ভূমিকা নিয়ে সমস্যা দেন আর শেষে মূল্যায়ন করেন।যেখানে শিখবেন: পর্ব ৭১
- Model answerমডেল অ্যানসার
- একটি প্রশ্নের আদর্শ নমুনা উত্তর, যা দেখে বোঝা যায় পূর্ণ নম্বর পেতে উত্তরে কী কী থাকা উচিত। মুখস্থ করার জন্য নয়, কাঠামো বোঝার জন্য।যেখানে শিখবেন: পর্ব ৭০
- Modular arithmeticমডুলার অ্যারিথমেটিক
- ভাগশেষ নিয়ে হিসাব, ঘড়ির মতো একটি সীমায় পৌঁছে আবার শূন্য থেকে গোনা। যোগ, বিয়োগ আর গুণের প্রতিটি ধাপে mod নেওয়া যায়, তাই বিশাল সংখ্যাও ছোট রাখা যায়যেখানে শিখবেন: পর্ব ০৬পর্ব ৪২পর্ব ৪৯
- Modular inverseমডুলার ইনভার্স
- a-এর mod m-এ inverse হলো এমন x যাতে a·x ≡ 1 (mod m); থাকে ঠিক তখনই, যখন gcd(a, m) = 1. mod-এর হিসাবে a দিয়ে ভাগ করা মানে a⁻¹ দিয়ে গুণ করা।যেখানে শিখবেন: পর্ব ৬২পর্ব ৬৯
- Modulo (mod)মডুলো
- ভাগশেষ বের করার কাজ; a mod b মানে a-কে b দিয়ে ভাগ করলে যা অবশিষ্ট থাকে, যেমন 17 mod 5 = 2যেখানে শিখবেন: পর্ব ০২পর্ব ১৪পর্ব ৩২
- Monoidমনয়েড
- একটি সেট আর তার ওপর একটি associative ক্রিয়া, যার একটি নিরপেক্ষ উপাদান আছে, যেমন যোগ আর 0 বা min আর +∞; segment tree যেকোনো monoid-এর ওপর চলে।যেখানে শিখবেন: পর্ব ৩৪পর্ব ৩৫পর্ব ৭২
- Monotonic dequeমনোটোনিক ডেক
- এমন deque, যার উপাদানগুলো সবসময় একটি নির্দিষ্ট ক্রমে (যেমন সামনে থেকে পেছনে কমতে থাকা) রাখা হয় — নতুন উপাদান ঢোকার আগে নিয়ম ভাঙা উপাদান পেছন থেকে সরিয়ে দেওয়া হয়। sliding window-এর সর্বোচ্চ বা সর্বনিম্ন মান O(n)-এ বের করতে কাজে লাগে।যেখানে শিখবেন: পর্ব ১৪
- Monotonic predicateমনোটোনিক প্রেডিকেট
- এমন একটি হ্যাঁ/না শর্ত যার উত্তর একটি ক্রম ধরে একবারই বদলায় — প্রথমে সব মিথ্যা, তারপর সব সত্য (বা উল্টো). Binary search আসলে এই বদলের সীমানাটি খোঁজে, যেমন সাজানো অ্যারেতে a[i] ≥ x.যেখানে শিখবেন: পর্ব ১৮পর্ব ১৯পর্ব ৪৮
- Monotonic stackমনোটোনিক স্ট্যাক
- যে stack-এ উপাদানগুলো নিচ থেকে ওপরে সবসময় একদিকে সাজানো থাকে (সব বাড়ছে বা সব কমছে); নতুন উপাদান ঢোকানোর আগে নিয়ম ভাঙে এমন উপাদান pop করা হয়। next greater element, histogram-এর মতো সমস্যা O(n)-এ সমাধান করে।যেখানে শিখবেন: পর্ব ১৩পর্ব ৬৩পর্ব ৭১
- Monte Carlo algorithmমন্টে কার্লো অ্যালগরিদম
- যে randomized অ্যালগরিদম নির্দিষ্ট সময়ে শেষ হয়, কিন্তু খুব ছোট একটি সম্ভাবনায় ভুল উত্তর দিতে পারে — যেমন যাচাই ছাড়া শুধু hash মিলিয়ে দেওয়া উত্তর।যেখানে শিখবেন: পর্ব ৫৮পর্ব ৬১পর্ব ৬২
- Monte Carlo simulationমন্টে কার্লো সিমুলেশন
- অনেকবার এলোমেলো পরীক্ষা চালিয়ে ফলাফলের গড় থেকে কোনো মান আনুমানিক বের করার পদ্ধতি — যেমন percolation-এর সীমা মাপা।যেখানে শিখবেন: পর্ব ৩৩পর্ব ৬১
- Morris traversalমরিস ট্রাভার্সাল
- Joseph M. Morris-এর (১৯৭৯) পদ্ধতি, যা খালি right pointer-এ সাময়িক সুতা (thread) বেঁধে stack বা recursion ছাড়াই O(n) সময় আর O(1) বাড়তি জায়গায় inorder করে; শেষে tree আগের অবস্থায় ফেরে।যেখানে শিখবেন: পর্ব ২৬
- Morse codeমোর্স কোড
- টেলিগ্রাফের জন্য ১৮৩০–৪০-এর দশকে বানানো ডট আর ড্যাশের code, যেখানে বেশি আসা অক্ষর (যেমন E) ছোট; prefix-free নয়, তাই অক্ষরের মাঝে বিরতি দিতে হয়।যেখানে শিখবেন: পর্ব ৫১
- Most-constrained-first (MRV) heuristicমোস্ট-কনস্ট্রেইন্ড-ফার্স্ট
- পরের সিদ্ধান্ত হিসেবে সেই ভেরিয়েবল বাছা যার সম্ভাব্য মান সবচেয়ে কম; ভুল পথ গাছের ওপরের দিকেই ধরা পড়ে, তাই বহু শাখা আগেভাগে কাটা যায়।যেখানে শিখবেন: পর্ব ৫৬
- Mo’s algorithmমো’স অ্যালগরিদম
- আগে থেকে জানা (offline) অনেকগুলো রেঞ্জ-প্রশ্নকে (l-এর ব্লক, r) অনুযায়ী সাজিয়ে একটি চলমান জানালার দুই প্রান্ত সরিয়ে সরিয়ে উত্তর দেওয়ার কৌশল; প্রতিটি সরানো O(1) হলে মোট সময় O((n + q)√n).যেখানে শিখবেন: পর্ব ৩৭পর্ব ৬৯
- MSD radix sortএমএসডি র্যাডিক্স সর্ট
- Most Significant Digit radix sort: বাঁয়ের অঙ্ক বা অক্ষর দিয়ে উপাদানগুলোকে দলে ভাগ করে প্রতিটি দলকে পরের অঙ্ক দিয়ে রিকার্সিভভাবে সাজানো। string সাজাতে কাজের, আর দল ছোট হলেই থেমে যায়।যেখানে শিখবেন: পর্ব ২৪
- Multi-source BFSমাল্টি-সোর্স বিএফএস
- একাধিক উৎসকে শুরুতেই dist 0 দিয়ে একসাথে queue-তে রেখে একটি BFS চালানো; প্রতিটি vertex পায় নিকটতম উৎস থেকে দূরত্ব, মোট সময় একটি BFS-এর সমান, O(V + E).যেখানে শিখবেন: পর্ব ৪০পর্ব ৭১পর্ব ৭২
- Multi-source shortest pathমাল্টি-সোর্স শর্টেস্ট পাথ
- একাধিক উৎসের মধ্যে সবচেয়ে কাছেরটি থেকে প্রতিটি vertex-এর দূরত্ব; সব উৎসকে dist 0 দিয়ে শুরুতে priority queue-তে দিলে একবারেই বের হয়।যেখানে শিখবেন: পর্ব ৪৩পর্ব ৬৭
- Multigraphমাল্টিগ্রাফ
- যে গ্রাফে parallel edge (আর অনেক সংজ্ঞায় self-loop-ও) থাকতে পারে; Königsberg-এর সাত সেতুর গ্রাফ একটি multigraph.যেখানে শিখবেন: পর্ব ৩৯পর্ব ৪৬পর্ব ৬১
- Multiple test casesমাল্টিপল টেস্ট কেস
- একটি ইনপুট ফাইলে প্রথমে টেস্টের সংখ্যা T, তারপর T টি আলাদা টেস্ট — প্রতিটির জন্য আলাদা উত্তর; প্রতিটি টেস্টের আগে আগের টেস্টের ডেটা মুছে নতুন করে শুরু করতে হয়।যেখানে শিখবেন: পর্ব ৭২
- Multiplication methodমাল্টিপ্লিকেশন মেথড
- hash বানানোর নিয়ম h(k) = ⌊m · (kA mod 1)⌋, যেখানে 0 < A < 1; Knuth A ≈ 0.618 (সোনালি অনুপাতের উল্টো) নিতে বলেন। m 2-এর ঘাত হলেও ভালো কাজ করে।যেখানে শিখবেন: পর্ব ৩২
- Multipopমাল্টিপপ
- Stack-এর একটি কাজ, যা ওপর থেকে min(k, size) টি উপাদান একে একে সরায়। একটি multipop Θ(n) হতে পারে, কিন্তু প্রতিটি উপাদান একবারই সরানো যায় বলে n কাজে মোট O(n).যেখানে শিখবেন: পর্ব ৬০
- Multisetমাল্টিসেট
- যে set-এ একই মান একাধিকবার থাকতে পারে; C++-এর std::multiset মানগুলো সাজানো রাখে, সব কাজ O(log n).যেখানে শিখবেন: পর্ব ১৫
- Mutableমিউটেবল
- যে বস্তু তৈরির পরেও জায়গায় বসেই বদলানো যায়। C++-এর std::string mutable: s[0] = 'x' লিখলেই প্রথম অক্ষর বদলে যায়।যেখানে শিখবেন: পর্ব ১১
- Mutable default argumentমিউটেবল ডিফল্ট আর্গুমেন্ট
- Python-এ def f(x, a=[]) ধরনের ডিফল্ট মান ফাংশন সংজ্ঞায়িত হওয়ার সময় একবারই তৈরি হয়, তাই প্রতিটি কল একই list ভাগ করে নেয়; সমাধান a=None দিয়ে ভেতরে নতুন list বানানো।যেখানে শিখবেন: পর্ব ১৫
- Mutation testingমিউটেশন টেস্টিং
- কোডে ইচ্ছে করে ছোট একটি ভুল ঢুকিয়ে দেখা যে টেস্টগুলো সেটি ধরতে পারে কি না; না পারলে টেস্টগুলো যথেষ্ট শক্ত নয়।যেখানে শিখবেন: পর্ব ৬৭
- Mutual recursionমিউচুয়াল রিকার্শন
- যখন দুই বা ততোধিক ফাংশন একে অপরকে ডাকে — যেমন isEven ডাকে isOdd-কে, আর isOdd ডাকে isEven-কে।যেখানে শিখবেন: পর্ব ০৭
N
- N-queens problemএন-কুইন্স প্রবলেম
- n × n দাবার বোর্ডে n টি রানি এমনভাবে বসানো, যাতে কোনো দুটি একই সারি, কলাম বা কোণাকুণি রেখায় না থাকে; n = 8-এ মোট ৯২টি সমাধান।যেখানে শিখবেন: পর্ব ৫৬
- Naive string matchingনেইভ স্ট্রিং ম্যাচিং
- pattern-কে text-এর প্রতিটি সম্ভাব্য শুরুর ঘরে বসিয়ে অক্ষর ধরে ধরে মিলিয়ে দেখা; সবচেয়ে খারাপে O(n·m) তুলনা।যেখানে শিখবেন: পর্ব ১১পর্ব ৫৮
- Natural sortন্যাচারাল সর্ট
- string-এর ভেতরের সংখ্যাকে অক্ষর হিসেবে নয়, সংখ্যা হিসেবে তুলনা করে সাজানো, যাতে file2 আসে file10-এর আগে — মানুষ যেভাবে পড়েযেখানে শিখবেন: পর্ব ২৫
- Nearest-neighbour heuristicনিয়ারেস্ট নেইবার হিউরিস্টিক
- TSP-এর দ্রুত আনুমানিক সমাধান: যেকোনো শহর থেকে শুরু করে প্রতিবার এখনো না-যাওয়া সবচেয়ে কাছের শহরে যাওয়া, শেষে শুরুর শহরে ফেরা; O(n²) সময়, কিন্তু সর্বোত্তম হওয়ার নিশ্চয়তা নেই।যেখানে শিখবেন: পর্ব ৫৭পর্ব ৬৫
- Needleman–Wunsch algorithmনিডলম্যান–উনশ অ্যালগরিদম
- ১৯৭০ সালে Saul Needleman আর Christian Wunsch-এর দেওয়া global sequence alignment-এর DP: মিলে পুরস্কার, অমিল আর gap-এ শাস্তি দিয়ে পুরো দুই sequence-এর সর্বোচ্চ স্কোরের alignment, সময় Θ(nm).যেখানে শিখবেন: পর্ব ৫৪
- Negative cycleনেগেটিভ সাইকেল
- যে cycle-এর edge-গুলোর ওজনের যোগফল ঋণাত্মক; এমন cycle পৌঁছানো গেলে বারবার ঘুরে খরচ অসীমভাবে কমানো যায়, তাই সবচেয়ে ছোট পথ সংজ্ঞায়িত থাকে না।যেখানে শিখবেন: পর্ব ৪৩পর্ব ৪৪পর্ব ৭০
- Negative markingনেগেটিভ মার্কিং
- যে পরীক্ষায় ভুল উত্তরের জন্য প্রাপ্ত নম্বর থেকে নির্দিষ্ট পরিমাণ কেটে নেওয়া হয়; তখন না জেনে আন্দাজ করা লাভ না ক্ষতি, তা হিসাব করে ঠিক করতে হয়।যেখানে শিখবেন: পর্ব ৬৯
- Negative-weight edgeনেগেটিভ-ওয়েট এজ
- যে edge-এর ওজন শূন্যের চেয়ে কম — যেমন ক্যাশব্যাক বা লাভ; এমন edge থাকলে Dijkstra ভুল উত্তর দিতে পারে।যেখানে শিখবেন: পর্ব ৪৩পর্ব ৪৪
- Neighbour (neighbor)নেইবার
- একটি vertex-এর সাথে সরাসরি একটি edge দিয়ে যুক্ত অন্য vertex; undirected simple graph-এ প্রতিবেশীর সংখ্যাই degree.যেখানে শিখবেন: পর্ব ৩৯
- Network flowনেটওয়ার্ক ফ্লো
- Directed গ্রাফের প্রতিটি edge-এর একটি ক্ষমতা (capacity) ধরে উৎস থেকে গন্তব্যে সর্বোচ্চ কতটা প্রবাহ পাঠানো যায়, সেই সমস্যা; matching আর min cut-ও এর রূপ।যেখানে শিখবেন: পর্ব ৩৯
- Next greater elementনেক্সট গ্রেটার এলিমেন্ট
- অ্যারের প্রতিটি উপাদানের ডান দিকে প্রথম যে উপাদানটি তার চেয়ে বড়; না থাকলে সাধারণত −1 লেখা হয়। monotonic stack দিয়ে সবগুলো একসাথে O(n)-এ বের হয়।যেখানে শিখবেন: পর্ব ১৩পর্ব ৭১
- NIL leafনিল লিফ
- Red-black tree-তে যেখানে কোনো আসল সন্তান নেই সেখানে কল্পিত একটি খালি leaf; নিয়ম অনুযায়ী এটি সবসময় কালো। কোডে এটি সাধারণত nullptr, None বা একটি sentinel node.যেখানে শিখবেন: পর্ব ২৯
- Nodeনোড
- Linked list, tree বা graph-এর একেকটি একক — এতে ডেটা থাকে, আর থাকে অন্য node-এর সাথে সংযোগ (pointer বা reference দিয়ে).যেখানে শিখবেন: পর্ব ১২পর্ব ২৬পর্ব ২৭
- Node mergeনোড মার্জ
- B-tree থেকে মোছার সময় দুটি প্রায় খালি পাশাপাশি node আর parent-এর মাঝের একটি key মিলিয়ে একটি node বানানো; এতে parent-এর একটি key আর একটি সন্তান কমেযেখানে শিখবেন: পর্ব ৩০
- Node splitনোড স্প্লিট
- B-tree-তে ভরা node-কে দুই ভাগ করা: মাঝের key ওপরে parent-এ ওঠে, বাঁয়ের key-গুলো এক node-এ আর ডানের key-গুলো নতুন একটি node-এ যায়যেখানে শিখবেন: পর্ব ৩০
- Nondeterministic Turing machineননডিটারমিনিস্টিক টুরিং মেশিন
- একটি কাল্পনিক গণনা-যন্ত্র, যা প্রতিটি মোড়ে একাধিক পথের মধ্যে “ঠিকটি অনুমান করে” নিতে পারে। এমন যন্ত্রে polynomial সময়ে সমাধানযোগ্য সমস্যাই NP.যেখানে শিখবেন: পর্ব ৬৪
- NP (complexity class)ক্লাস এনপি
- যেসব decision problem-এর প্রতিটি “হ্যাঁ” উত্তরের একটি ছোট প্রমাণ (certificate) আছে, যা polynomial সময়ে যাচাই করা যায়। নামের অর্থ Nondeterministic Polynomial time, “non-polynomial” নয়।যেখানে শিখবেন: পর্ব ৬৪পর্ব ৭০
- NP-completeএনপি-কমপ্লিট
- NP শ্রেণির সবচেয়ে কঠিন সমস্যাগুলো: এদের একটির দ্রুত (polynomial সময়ের) সমাধান পেলে NP-এর সব সমস্যার দ্রুত সমাধান পাওয়া যেত। এমন সমাধান আছে কি না, তা আজও অজানা।যেখানে শিখবেন: পর্ব ৪৬পর্ব ৫৩পর্ব ৫৬
- NP-hardএনপি-হার্ড
- যে সমস্যা NP-এর প্রতিটি সমস্যার অন্তত সমান কঠিন (NP-এর সব সমস্যা এতে polynomial সময়ে reduce হয়); নিজে NP-তে থাকা জরুরি নয়। এর polynomial সময়ের অ্যালগরিদম জানা নেই, আর পেলে P = NP হয়ে যেত।যেখানে শিখবেন: পর্ব ৪২পর্ব ৫০পর্ব ৫২
- NP-intermediateএনপি-ইন্টারমিডিয়েট
- NP-এর এমন সমস্যা, যা P-তেও নয়, NP-complete-ও নয়। Ladner (১৯৭৫) দেখান P ≠ NP হলে এমন সমস্যা থাকবেই; সন্দেহভাজন: factorization, graph isomorphism.যেখানে শিখবেন: পর্ব ৬৪
- nth_elementএনথ এলিমেন্ট
- C++-এর একটি ফাংশন, যা পুরো array না সাজিয়ে k-তম উপাদানকে তার সঠিক জায়গায় বসায় — বাঁয়ে ছোট বা সমান, ডানে বড় বা সমান; quickselect-ভিত্তিক, গড়ে O(n)যেখানে শিখবেন: পর্ব ২৫
- Null pointerনাল পয়েন্টার
- কোনো বস্তুকে দেখায় না এমন বিশেষ pointer — C++-এ nullptr, Python-এ None. Linked list-এর শেষ node-এর next সাধারণত null, আর খালি list-এর head-ও null.যেখানে শিখবেন: পর্ব ১২পর্ব ২৭
- Null terminatorনাল টার্মিনেটর
- C-ভাষার string-এর শেষে রাখা '\0' (মান 0) অক্ষর, যা দেখে বোঝা যায় string কোথায় শেষ। দৈর্ঘ্য জানতে তাই পুরো string হাঁটতে হয় — O(n).যেখানে শিখবেন: পর্ব ১১
- Number of distinct substringsডিস্টিংক্ট সাবস্ট্রিং
- একটি string-এর ভেতরে কতগুলো আলাদা (একই লেখা একবার গোনা) খালি-নয় substring আছে; দৈর্ঘ্য n-এ সংখ্যাটি n(n + 1)/2 থেকে LCP array-র যোগফল বাদ দিলে পাওয়া যায়।যেখানে শিখবেন: পর্ব ৫৯
- Number theoryনাম্বার থিওরি
- পূর্ণসংখ্যার ধর্ম নিয়ে গণিতের শাখা — বিভাজ্যতা, মৌলিক সংখ্যা, গসাগু, ভাগশেষের হিসাব। অ্যালগরিদমে এর বড় ব্যবহার ক্রিপ্টোগ্রাফি, hashing আর কনটেস্টের গণনায়।যেখানে শিখবেন: পর্ব ৬২
O
- Odd cycleঅড সাইকেল
- বিজোড় সংখ্যক edge-এর একটি cycle, যেমন ত্রিভুজ (৩) বা পঞ্চভুজ (৫)। কোনো গ্রাফ bipartite হয় ঠিক তখনই, যখন তাতে কোনো odd cycle নেই।যেখানে শিখবেন: পর্ব ৪০
- Off-by-one errorঅফ-বাই-ওয়ান এরর
- সীমানায় এক ঘর বেশি বা কম ধরার ভুল, যেমন < এর জায়গায় <= লেখা বা লুপ এক বার বেশি চালানো।যেখানে শিখবেন: পর্ব ০৩পর্ব ১১পর্ব ১৬
- Offline algorithmঅফলাইন অ্যালগরিদম
- যে অ্যালগরিদম সব প্রশ্ন বা ইনপুট আগে থেকে হাতে পায় আর নিজের সুবিধামতো ক্রমে (যেমন উল্টো ক্রমে বা সাজিয়ে) উত্তর দিতে পারে; online-এর উল্টো।যেখানে শিখবেন: পর্ব ৩৩পর্ব ৩৫পর্ব ৩৬
- One-sided errorওয়ান-সাইডেড এরর
- যে randomized অ্যালগরিদমের দুই ধরনের উত্তরের একটি সবসময় সঠিক, ভুল হতে পারে শুধু অন্যটি — যেমন Miller–Rabin-এর “যৌগিক” উত্তর সবসময় সত্য।যেখানে শিখবেন: পর্ব ৬১
- Online algorithmঅনলাইন অ্যালগরিদম
- যে অ্যালগরিদম পুরো ইনপুট আগে না পেয়েও, উপাদান একটি একটি করে আসার সাথে সাথে কাজ চালিয়ে যেতে পারে; যেমন insertion sort.যেখানে শিখবেন: পর্ব ২০পর্ব ৩৫পর্ব ৩৬
- Online judgeঅনলাইন জাজ
- যে ওয়েবসাইটে সমস্যার সমাধান-কোড জমা দিলে সার্ভার গোপন টেস্টে চালিয়ে জানায় উত্তর ঠিক, ভুল নাকি সময়সীমা পেরিয়েছে; যেমন Codeforces, AtCoder, Toph.যেখানে শিখবেন: পর্ব ০১পর্ব ১৫পর্ব ৬৭
- Open addressingওপেন অ্যাড্রেসিং
- collision সামলানোর কৌশল যেখানে সব key টেবিলের অ্যারের ভেতরেই থাকে, প্রতি ঘরে একটি; নিজের ঘর ভরা থাকলে একটি নির্দিষ্ট নিয়মে পরের ঘরগুলো দেখা হয় — একে probing বলে। এখানে α ≤ 1.যেখানে শিখবেন: পর্ব ৩২
- Operator precedenceঅপারেটর প্রেসিডেন্স
- কোন operator আগে হিসাব হবে তার অগ্রাধিকারের নিয়ম — যেমন * আর /, + আর −-এর চেয়ে আগে; তাই 2 + 3 * 4 = 14, 20 নয়।যেখানে শিখবেন: পর্ব ১৩
- Optimal binary search treeঅপটিমাল বাইনারি সার্চ ট্রি
- প্রতিটি key কত ঘন ঘন খোঁজা হয় তা জানা থাকলে, যে BST-তে গড় খোঁজার খরচ সবচেয়ে কম; interval DP দিয়ে বের হয়, Knuth-এর কৌশলে O(n²) সময়ে।যেখানে শিখবেন: পর্ব ৫৪
- Optimal substructureঅপটিমাল সাবস্ট্রাকচার
- সমস্যার একটি ধর্ম: সেরা সমাধানের ভেতরের অংশগুলোও নিজ নিজ উপ-সমস্যার সেরা সমাধান — যেমন সেরা পথের যেকোনো টুকরোও সেরা পথ। DP আর greedy-র প্রধান শর্ত।যেখানে শিখবেন: পর্ব ৪৪পর্ব ৪৯পর্ব ৫০
- Optimality gapঅপটিমালিটি গ্যাপ
- এ পর্যন্ত পাওয়া সেরা সমাধান (incumbent) আর সব live node-এর সবচেয়ে ভালো bound-এর পার্থক্য; gap শূন্য হলে incumbent প্রমাণিতভাবে সর্বোত্তম।যেখানে শিখবেন: পর্ব ৫৭
- Optimization problemঅপটিমাইজেশন প্রবলেম
- যে সমস্যায় সব বৈধ সমাধানের মধ্যে সবচেয়ে ভালোটি চাই — সবচেয়ে ছোট, সবচেয়ে বড়, সবচেয়ে কম খরচের; যেমন “সর্বনিম্ন কত গতিতে কাজটি শেষ হয়?”যেখানে শিখবেন: পর্ব ১৯পর্ব ৫০পর্ব ৫৭
- Order of a B-tree (m)অর্ডার
- Knuth-এর রীতিতে B-tree-র মাপ: একটি node-এর সর্বোচ্চ সন্তানসংখ্যা m; root ছাড়া প্রতিটি internal node-এর অন্তত ⌈m/2⌉ টি সন্তান। বইভেদে সংজ্ঞা আলাদা, তাই সবসময় কোন রীতি তা দেখে নিতে হয়যেখানে শিখবেন: পর্ব ৩০
- Order statisticঅর্ডার স্ট্যাটিস্টিক
- একটি তালিকার k-তম ছোট উপাদান — অর্থাৎ সাজালে যে উপাদানটি k নম্বর ঘরে বসত। minimum, maximum আর median এর বিশেষ রূপ।যেখানে শিখবেন: পর্ব ২২পর্ব ২৭পর্ব ২৮
- Order-statistic treeঅর্ডার স্ট্যাটিস্টিক ট্রি
- যে BST-র প্রতিটি node-এ তার subtree-র আকার রাখা থাকে, ফলে k-তম ছোট key আর কোনো key-এর rank (কয়টি তার চেয়ে ছোট) দুটোই O(h)-এ পাওয়া যায়।যেখানে শিখবেন: পর্ব ২৭পর্ব ৩৮
- Orientation testওরিয়েন্টেশন টেস্ট
- তিনটি বিন্দু o, a, b-এর জন্য (a − o) × (b − o)-এর চিহ্ন: ধনাত্মক মানে বাঁ মোড় (counter-clockwise), ঋণাত্মক মানে ডান মোড়, শূন্য মানে একই রেখায়; জ্যামিতি অ্যালগরিদমের মূল primitive.যেখানে শিখবেন: পর্ব ৬৩
- Out-degreeআউট-ডিগ্রি
- Directed গ্রাফে একটি vertex থেকে বেরিয়ে যাওয়া edge-এর সংখ্যা; সব vertex-এর out-degree-র যোগফল m.যেখানে শিখবেন: পর্ব ৩৯
- Out-of-bounds accessআউট-অব-বাউন্ডস অ্যাক্সেস
- array-এর বৈধ index (0 থেকে n − 1)-এর বাইরের ঘর পড়া বা লেখা; C++-এ undefined behavior, Python-এ IndexError, Java-তে exception.যেখানে শিখবেন: পর্ব ১০পর্ব ৩৫পর্ব ৪০
- Output link (dictionary suffix link)আউটপুট লিংক
- Aho-Corasick-এ একটি node থেকে failure link-এর শিকল ধরে প্রথম যে node-এ কোনো pattern শেষ হয়, সেখানে সরাসরি যাওয়ার পথ; এতে একই অবস্থানে শেষ হওয়া সব pattern অপচয় ছাড়াই পাওয়া যায়।যেখানে শিখবেন: পর্ব ৫৯
- Output-sensitive algorithmআউটপুট-সেনসিটিভ অ্যালগরিদম
- যে অ্যালগরিদমের সময় ইনপুটের আকারের সাথে আউটপুটের আকারের ওপরও নির্ভর করে; যেমন Jarvis march-এর Θ(nh) বা Bentley–Ottmann-এর O((n + k) log n).যেখানে শিখবেন: পর্ব ৬৩
P
- P (complexity class)ক্লাস পি
- যেসব decision problem-এর polynomial সময়ের অ্যালগরিদম আছে, তাদের শ্রেণি — যেমন সাজানো, shortest path, 2-SAT, মৌলিকতা পরীক্ষা।যেখানে শিখবেন: পর্ব ৬৪পর্ব ৭০
- P vs NP problemপি ভার্সাস এনপি
- যা দ্রুত (polynomial সময়ে) যাচাই করা যায়, তা কি সবসময় দ্রুত সমাধানও করা যায়? অর্থাৎ P = NP কি না — কম্পিউটার বিজ্ঞানের সবচেয়ে বিখ্যাত অমীমাংসিত প্রশ্ন, Clay-এর একটি Millennium Prize Problem.যেখানে শিখবেন: পর্ব ৬৪
- Palindromeপ্যালিনড্রোম
- যে শব্দ, সংখ্যা বা ক্রম সামনে থেকে আর পেছন থেকে পড়লে একই — যেমন madam, racecar, 12321.যেখানে শিখবেন: পর্ব ১১পর্ব ১৬পর্ব ৫৪
- Parallel edges (multi-edges)প্যারালাল এজেস
- একই দুই vertex-এর মধ্যে একাধিক edge — যেমন একই দুজনের মধ্যে কয়েকটি আলাদা লেনদেন, বা দুই স্থলভাগের মধ্যে দুটি সেতু।যেখানে শিখবেন: পর্ব ৩৯পর্ব ৬৭
- Parametric searchপ্যারামেট্রিক সার্চ
- একটি সিদ্ধান্তের অ্যালগরিদমকে অপটিমাইজেশনের অ্যালগরিদমে বদলানোর তাত্ত্বিক কৌশল, যা Nimrod Megiddo ১৯৮৩ সালে দেন; সমান্তরাল সিদ্ধান্ত-অ্যালগরিদমের তুলনাগুলো ব্যবহার করে সঠিক উত্তর সরাসরি বের করে।যেখানে শিখবেন: পর্ব ১৯
- Parent (node)প্যারেন্ট
- tree-তে কোনো node-এর ঠিক ওপরের node, যার সাথে সে একটি edge দিয়ে যুক্ত। root ছাড়া প্রতিটি node-এর parent ঠিক একটি।যেখানে শিখবেন: পর্ব ২৬পর্ব ৪৮
- Parent pointerপ্যারেন্ট পয়েন্টার
- tree-র প্রতিটি node-এ রাখা একটি বাড়তি pointer, যা তার parent-কে দেখায়; এতে ওপরে ওঠা সহজ হয়, কিন্তু প্রতিটি পরিবর্তনে এটিও ঠিক রাখতে হয়।যেখানে শিখবেন: পর্ব ২৭পর্ব ৩৩
- Parenthesis theoremপ্যারেনথেসিস থিওরেম
- DFS-এর যেকোনো দুটি vertex-এর [d, f] ব্যবধান হয় সম্পূর্ণ আলাদা, নয়তো একটি অন্যটির পুরো ভেতরে — আংশিক জোড়া কখনো নয়; ভেতরে থাকা vertex অন্যটির উত্তরসূরি।যেখানে শিখবেন: পর্ব ৪১
- Parity DSU (DSU with parity)প্যারিটি ডিএসইউ
- যে DSU প্রতিটি node-এ একটি বাড়তি bit রাখে — parent-এর সাথে একই পক্ষে না উল্টো পক্ষে; root পর্যন্ত XOR দিয়ে দুই উপাদানের সম্পর্ক বের হয়, আর স্ববিরোধ ধরা যায়।যেখানে শিখবেন: পর্ব ৩৩
- Parsingপার্সিং
- লেখা (string) পড়ে তার ভেতরের অর্থপূর্ণ মান বা কাঠামো বের করা — যেমন "4096" থেকে সংখ্যা 4096.যেখানে শিখবেন: পর্ব ১১
- Partial correctnessপারশিয়াল কারেক্টনেস
- আংশিক সঠিকতা: অ্যালগরিদম যদি থামে, তবে উত্তর ঠিক হবে — কিন্তু সে আদৌ থামবে কি না, সেই নিশ্চয়তা এতে নেই।যেখানে শিখবেন: পর্ব ০৩
- Partial orderপার্শিয়াল অর্ডার
- এমন একটি “আগে-পরে” সম্পর্ক যা reflexive, antisymmetric আর transitive, কিন্তু সব জোড়ার তুলনা দিতে বাধ্য নয়। DAG-এর reachability একটি partial order; topological order তাকে একটি পূর্ণ সারিতে (linear extension) বাড়ায়।যেখানে শিখবেন: পর্ব ৪২
- Partial sortপার্শিয়াল সর্ট
- পুরো array নয়, শুধু সবচেয়ে ছোট (বা বড়) k টি উপাদান সাজিয়ে সামনে আনা; C++-এর std::partial_sort heap দিয়ে এটি O(n log k) সময়ে করেযেখানে শিখবেন: পর্ব ২৫
- Partitionপার্টিশন
- একটি মাপকাঠি (যেমন pivot-এর চেয়ে ছোট না বড়) অনুযায়ী অ্যারের উপাদানগুলোকে পাশাপাশি কয়েকটি ভাগে সাজানো, সাধারণত in-place আর এক পাসে। quick sort-এর মূল ধাপ।যেখানে শিখবেন: পর্ব ১৬পর্ব ২২
- Partition problemপার্টিশন প্রবলেম
- সংখ্যাগুলোকে সমান যোগফলের দুই দলে ভাগ করা যায় কি না — মোট যোগফলের অর্ধেকের subset sum প্রশ্ন।যেখানে শিখবেন: পর্ব ৫৩
- Path (in a graph)পাথ
- Edge ধরে এক vertex থেকে আরেক vertex-এ যাওয়ার vertex-ক্রম; বেশিরভাগ বইয়ে path মানে simple path, যাতে কোনো vertex পুনরাবৃত্ত হয় না।যেখানে শিখবেন: পর্ব ৩৯
- Path (in a tree)পাথ বা পথ
- edge ধরে ধরে এক node থেকে আরেক node-এ যাওয়ার node-ক্রম, যেখানে কোনো node দুবার আসে না; দৈর্ঘ্য মাপা হয় edge-এর সংখ্যায়। tree-তে যেকোনো দুই node-এর মধ্যে পথ ঠিক একটি।যেখানে শিখবেন: পর্ব ২৬
- Path compressionপাথ কমপ্রেশন
- find-এর সময় root পর্যন্ত পথের প্রতিটি node-কে সরাসরি root-এর সাথে জুড়ে দেওয়া, যাতে পরের find এক লাফে হয়; union by rank-এর সাথে মিলে amortized O(α(n)) দেয়।যেখানে শিখবেন: পর্ব ৩৩পর্ব ৪৮পর্ব ৬৮
- Path copyingপাথ কপিয়িং
- Persistent ডেটা স্ট্রাকচার বানানোর কৌশল: আপডেটে root থেকে বদলানো node পর্যন্ত পথের node-গুলোর নতুন কপি তৈরি করা আর বাকি অংশ পুরোনো সংস্করণের সাথে ভাগ করে নেওয়া।যেখানে শিখবেন: পর্ব ৩৫
- Path halvingপাথ হাভিং
- এক পাসের find: প্রতি দ্বিতীয় node-কে তার দাদার (grandparent) সাথে জুড়ে সরাসরি দাদার কাছে লাফ দেওয়া — p[x] = p[p[x]]; x = p[x]. full compression-এর সমান amortized সীমা দেয়।যেখানে শিখবেন: পর্ব ৩৩পর্ব ৪৫পর্ব ৬৭
- Path reconstructionপাথ রিকনস্ট্রাকশন
- parent অ্যারে বা DP টেবিলের সিদ্ধান্ত ধরে শেষ অবস্থা থেকে শুরু পর্যন্ত পেছনে হেঁটে, তারপর ক্রমটি উল্টে দিয়ে আসল পথ বা সমাধানটি বের করা; খরচ পথের দৈর্ঘ্যের সমান।যেখানে শিখবেন: পর্ব ৪০পর্ব ৪৪পর্ব ৫৩
- Path splittingপাথ স্প্লিটিং
- এক পাসের find: পথের প্রত্যেক node-কে তার দাদার সাথে জুড়ে এক ধাপ করে এগোনো; পথটি দুটি অর্ধেক-দৈর্ঘ্যের শাখায় ভাগ হয়, আর amortized সীমা full compression-এর সমান।যেখানে শিখবেন: পর্ব ৩৩
- Patience sortingপেশেন্স সর্টিং
- তাস সাজানোর এক খেলা থেকে নেওয়া পদ্ধতি: প্রতিটি সংখ্যাকে বাঁ থেকে প্রথম যে স্তূপের ওপরের তাস তার সমান বা বড়, সেখানে রাখা, না থাকলে নতুন স্তূপ। স্তূপের সংখ্যাই LIS-এর দৈর্ঘ্য।যেখানে শিখবেন: পর্ব ৫৩
- PATRICIA trieপ্যাট্রিশিয়া ট্রাই
- Practical Algorithm To Retrieve Information Coded In Alphanumeric — Donald R. Morrison-এর (১৯৬৮) bit-ভিত্তিক compressed trie; প্রতিটি node শুধু বলে কোন bit দেখতে হবে, মাঝের শাখাহীন bit লাফিয়ে যায়।যেখানে শিখবেন: পর্ব ৩১
- Pattern matching (string)প্যাটার্ন ম্যাচিং
- একটি লম্বা লেখা (text)-এর ভেতরে একটি ছোট string (pattern) কোথায় কোথায় হুবহু আছে, তা খুঁজে বের করা।যেখানে শিখবেন: পর্ব ১১পর্ব ৫৮
- PCP theoremপিসিপি থিওরেম
- ১৯৯২ সালের মৌলিক ফল: NP-এর প্রতিটি প্রমাণ এমনভাবে লেখা যায় যে এলোমেলোভাবে কয়েকটি বিট পড়েই উচ্চ সম্ভাবনায় যাচাই করা যায়। এর ফলে অনেক সমস্যার approximation-এর নিম্নসীমা প্রমাণ করা যায়।যেখানে শিখবেন: পর্ব ৬৬
- Peak elementপিক এলিমেন্ট
- অ্যারের এমন একটি উপাদান যা তার দুই প্রতিবেশীর চেয়ে বড় (অ্যারের বাইরের ঘর −∞ ধরে); অ্যারে সাজানো না হলেও a[mid] আর a[mid + 1] তুলনা করে binary search দিয়ে O(log n)-এ একটি peak পাওয়া যায়।যেখানে শিখবেন: পর্ব ১৮
- Penalty timeপেনাল্টি টাইম
- ICPC-ধাঁচের র্যাংকিংয়ে সমান সংখ্যক সমস্যা সমাধানকারী দলের মধ্যে ক্রম ঠিক করার হিসাব — প্রতিটি সমাধান করা সমস্যার জন্য শুরু থেকে AC পর্যন্ত মিনিট, সাথে তার আগের প্রতিটি ভুল জমার জন্য একটি নির্দিষ্ট বাড়তি সময় (সাধারণত ২০ মিনিট).যেখানে শিখবেন: পর্ব ৭২
- Percolationপারকোলেশন
- এলোমেলোভাবে খোলা ঘরের গ্রিডে ওপর থেকে নিচ পর্যন্ত খোলা পথ আছে কি না — পানি চুইয়ে নামা বা আগুন ছড়ানোর মডেল; বর্গ গ্রিডে সীমা প্রায় 0.5927.যেখানে শিখবেন: পর্ব ৩৩
- Perfect binary treeপারফেক্ট বাইনারি ট্রি
- যে binary tree-র সব internal node-এর দুটি সন্তান আর সব leaf একই level-এ; উচ্চতা h হলে node ঠিক 2^(h+1) − 1 টি।যেখানে শিখবেন: পর্ব ২৬পর্ব ৩৪
- Perfect matchingপারফেক্ট ম্যাচিং
- যে matching-এ প্রতিটি vertex ঠিক একবার জোড়া পায়; bipartite গ্রাফে কখন সম্ভব তা Hall-এর theorem বলে।যেখানে শিখবেন: পর্ব ৪৭পর্ব ৬৬
- Period of a stringস্ট্রিংয়ের পিরিয়ড
- p এমন একটি সংখ্যা যাতে সব বৈধ i-তে s[i] = s[i + p]. সবচেয়ে ছোট period p = n − π[n − 1]; p < n আর p দিয়ে n নিঃশেষে বিভাজ্য হলে s একটি ছোট টুকরোর পুনরাবৃত্তি।যেখানে শিখবেন: পর্ব ৫৮
- Permanent tagপারমানেন্ট ট্যাগ
- Segment tree-তে lazy নোট কখনো নিচে না নামিয়ে node-এর গায়ে স্থায়ীভাবে রেখে দেওয়ার কৌশল; প্রশ্নের সময় পথের নোটগুলোর প্রভাব জমিয়ে হিসাব করা হয়।যেখানে শিখবেন: পর্ব ৩৫
- Permutationপারমুটেশন
- বিন্যাস: কিছু জিনিসকে একটি নির্দিষ্ট ক্রমে সাজানোর একটি উপায়, যেমন ABC-র একটি বিন্যাস CAB; n টি জিনিসের মোট n! টি বিন্যাস, আর n টি থেকে k টি সাজানোর উপায় n!/(n−k)!যেখানে শিখবেন: পর্ব ০৬পর্ব ২০পর্ব ২৪
- Persistent data structureপারসিস্টেন্ট ডেটা স্ট্রাকচার
- যে ডেটা স্ট্রাকচার বদলালে পুরোনো সংস্করণ মুছে যায় না, বরং নতুন সংস্করণের পাশাপাশি ব্যবহারযোগ্য থাকে; functional ভাষার immutable ডেটা এর উদাহরণ। এখানে একই পুরোনো অবস্থা বারবার ব্যবহার করা যায় বলে সাধারণ amortized সীমা ভাঙতে পারে।যেখানে শিখবেন: পর্ব ৬০
- Persistent segment treeপারসিস্টেন্ট সেগমেন্ট ট্রি
- যে segment tree প্রতিটি আপডেটের পর পুরোনো সংস্করণও রেখে দেয়, যাতে যেকোনো অতীত সংস্করণে প্রশ্ন করা যায়; প্রতিটি আপডেটে শুধু পথের O(log n) টি node নতুন করে বানানো হয়।যেখানে শিখবেন: পর্ব ৩৫পর্ব ৬৭
- Pick's theoremপিকস থিওরেম
- সব কোণ lattice point-এ থাকা সাধারণ বহুভুজে ক্ষেত্রফল A = I + B/2 − 1, যেখানে I ভেতরের আর B সীমানার lattice point-এর সংখ্যা; Georg Pick, ১৮৯৯ সাল।যেখানে শিখবেন: পর্ব ৬৩
- Pigeonhole principleপিজনহোল প্রিন্সিপল
- কবুতরের খোপের নীতি: n টি খোপে n+1 টি কবুতর রাখলে অন্তত একটি খোপে দুটি থাকবেই। অস্তিত্ব প্রমাণ আর নিম্নসীমা দেখাতে কাজে লাগেযেখানে শিখবেন: পর্ব ০৬পর্ব ২৪পর্ব ৩২
- Pigeonhole sortপিজনহোল সর্ট
- key-এর পরিসরের প্রতিটি মানের জন্য একটি খোপ (তালিকা) রেখে প্রতিটি রেকর্ডকে তার খোপে রাখা, তারপর খোপগুলো ক্রমে পড়া। সময় ও জায়গা Θ(n + m), যেখানে m = max − min + 1.যেখানে শিখবেন: পর্ব ২৪
- Pivotপিভট
- quick sort বা quickselect-এ যে উপাদানকে মাপকাঠি ধরে বাকিদের ছোট আর বড় দলে ভাগ করা হয়। pivot যত মাঝামাঝি মানের হয়, ভাগ তত সমান হয়।যেখানে শিখবেন: পর্ব ২২পর্ব ২৭
- Point in polygonপয়েন্ট ইন পলিগন
- একটি বিন্দু বহুভুজের ভেতরে, বাইরে নাকি সীমানায় তা নির্ণয়ের সমস্যা; ray casting বা winding number দিয়ে প্রতি প্রশ্নে Θ(n).যেখানে শিখবেন: পর্ব ৬৩
- Point updateপয়েন্ট আপডেট
- অ্যারের একটিমাত্র ঘরের মান বদলানো; সাধারণ অ্যারেতে O(1), কিন্তু prefix sum অ্যারে হালনাগাদ রাখতে O(n), আর segment tree বা Fenwick tree-তে O(log n).যেখানে শিখবেন: পর্ব ১৭পর্ব ৩৪পর্ব ৩৫
- Pointer / referenceপয়েন্টার / রেফারেন্স
- মেমরিতে অন্য কোনো বস্তুর ঠিকানা রাখে এমন মান। C ও C++-এ একে pointer বলে, Python ও Java-তে reference — দুটিই বলে দেয় “আসল জিনিসটি কোথায় আছে”।যেখানে শিখবেন: পর্ব ১২পর্ব ২৭পর্ব ৩০
- Polar angleপোলার অ্যাঙ্গেল
- একটি কেন্দ্রবিন্দু থেকে x-অক্ষের ধনাত্মক দিকের সাথে একটি বিন্দুর দিকের কোণ; জ্যামিতি কোডে কোণ না মেপে orientation দিয়েই এ অনুযায়ী তুলনা করা হয়।যেখানে শিখবেন: পর্ব ৬৩
- Pollard's rho algorithmপোলার্ডস রো অ্যালগরিদম
- x → x² + c (mod n) ক্রম চালিয়ে cycle খুঁজে gcd দিয়ে n-এর একটি উৎপাদক বের করার randomized পদ্ধতি; প্রত্যাশিত ধাপ মোটামুটি n-এর চতুর্থ মূলের কাছাকাছি। John Pollard, ১৯৭৫.যেখানে শিখবেন: পর্ব ৬২
- Polygonপলিগন
- বহুভুজ — পরপর জোড়া রেখাংশ (বাহু) দিয়ে ঘেরা একটি বন্ধ আকার; কোডে কোণগুলোর ক্রমানুসারে সাজানো একটি তালিকা।যেখানে শিখবেন: পর্ব ৬৩
- Polylogarithmic factor (log^k n)পলিলগারিদমিক
- log n-এর কোনো ধ্রুবক ঘাত, যেমন log² n; যেকোনো n^ε-এর চেয়ে ধীরে বাড়ে, তাই master theorem-এর case 2-তে এটি আলাদা করে হিসাব হয়।যেখানে শিখবেন: পর্ব ০৯
- Polynomial hashপলিনোমিয়াল হ্যাশ
- string-এর অক্ষরগুলোকে একটি base p-এর সংখ্যার অঙ্ক ধরে বানানো hash: h = (h·p + c) mod M প্রতিটি অক্ষর c-এর জন্য; অক্ষরের অবস্থানও গোনে বলে "ab" আর "ba" আলাদা হয়।যেখানে শিখবেন: পর্ব ৩২পর্ব ৫৮
- Polynomial timeপলিনোমিয়াল টাইম
- ইনপুটের আকার n হলে কোনো স্থির c-এর জন্য O(nᶜ) সময় — যেমন n, n log n, n³. তত্ত্বে একে “দক্ষ” সময় ধরা হয়; 2ⁿ বা n! এর বাইরে।যেখানে শিখবেন: পর্ব ৬৪পর্ব ৬৬
- Polynomial-time reduction (A ≤p B)পলিনোমিয়াল-টাইম রিডাকশন
- A-এর প্রতিটি ইনপুটকে polynomial সময়ে B-এর এমন ইনপুটে বদলানো, যাতে A-এর উত্তর হ্যাঁ ⇔ B-এর উত্তর হ্যাঁ. এর মানে B অন্তত A-এর সমান কঠিন।যেখানে শিখবেন: পর্ব ৬৪পর্ব ৬৫পর্ব ৬৯
- Polynomially smaller / largerপলিনোমিয়ালি স্মলার
- একটি ফাংশন অন্যটির চেয়ে অন্তত n^ε গুণক (ε একটি ধনাত্মক ধ্রুবক) ছোট বা বড়; যেমন n, n²-এর চেয়ে polynomially ছোট, কিন্তু n/log n, n-এর চেয়ে polynomially ছোট নয়।যেখানে শিখবেন: পর্ব ০৯
- Popপপ
- stack-এর একেবারে ওপরের উপাদানটি সরিয়ে ফেলার অপারেশন; এটিও O(1). খালি stack-এ pop করা একটি ভুল (underflow).যেখানে শিখবেন: পর্ব ১৩পর্ব ৬০
- Popcountপপকাউন্ট
- একটি সংখ্যার binary রূপে কয়টি 1-bit আছে তার গণনা; যেমন popcount(7) = 3. Fenwick tree-র prefix query ঠিক এতগুলো ধাপ নেয়যেখানে শিখবেন: পর্ব ৩৬পর্ব ৫৫
- Postconditionপোস্ট-কন্ডিশন
- অ্যালগরিদম শেষ হওয়ার পর আউটপুট সম্পর্কে যে শর্ত সত্য হতে হবে, যেমন অ্যারেটি ছোট থেকে বড় ক্রমে সাজানো।যেখানে শিখবেন: পর্ব ০৩
- Postfix notation (RPN)পোস্টফিক্স নোটেশন
- যে লেখায় operator তার operand-গুলোর পরে বসে, যেমন a b c * + — একে Reverse Polish Notation-ও বলে। এতে বন্ধনী বা precedence লাগে না, একটি stack দিয়ে বাঁ থেকে ডানে একবার পড়েই মান বের হয়।যেখানে শিখবেন: পর্ব ১৩পর্ব ২৬
- Postorder traversalপোস্টঅর্ডার ট্রাভার্সাল
- tree ঘোরার একটি নিয়ম: আগে সব সন্তানের subtree (binary tree-তে বাঁ, তারপর ডান), সবার শেষে node নিজে। root সবসময় শেষে আসে; height বা size-এর মতো হিসাবে কাজে লাগে।যেখানে শিখবেন: পর্ব ২৬পর্ব ৫৫পর্ব ৬৮
- Potential functionপোটেনশিয়াল ফাংশন
- amortized analysis-এ ডেটা স্ট্রাকচারের অবস্থাকে একটি অঋণাত্মক সংখ্যা দেওয়া (যেন জমানো শক্তি); সস্তা ধাপে এটি বাড়ে, দামি ধাপে খরচ হয়, ফলে মোট খরচের সীমা বের করা যায়।যেখানে শিখবেন: পর্ব ৫৮পর্ব ৬০
- Potential method (physicist's method)পোটেনশিয়াল মেথড
- ডেটা স্ট্রাকচারের প্রতিটি অবস্থাকে একটি সংখ্যা Φ দিয়ে, প্রতিটি কাজের amortized খরচ = আসল খরচ + Φ(পরে) − Φ(আগে) ধরা। Φ শুরুতে 0 আর কখনো ঋণাত্মক না হলে মোট আসল খরচ ≤ মোট amortized খরচ।যেখানে শিখবেন: পর্ব ৬০পর্ব ৭০
- Powersortপাওয়ারসর্ট
- ২০১৮ সালে J. Ian Munro আর Sebastian Wild-এর প্রস্তাবিত run জোড়া দেওয়ার নিয়ম (merge policy), যা run-গুলোর মাপ অসমান হলেও প্রায় সর্বোত্তম ক্রমে merge করে; Python ৩.১১ থেকে list.sort এটি ব্যবহার করেযেখানে শিখবেন: পর্ব ২৫
- Preconditionপ্রি-কন্ডিশন
- অ্যালগরিদম শুরুর আগে ইনপুট সম্পর্কে যে শর্ত সত্য বলে ধরে নেওয়া হয়, যেমন binary search-এ অ্যারে সাজানো থাকা।যেখানে শিখবেন: পর্ব ০৩পর্ব ১৮
- Predecessor (parent) arrayপ্রিডিসেসর অ্যারে
- par[v] অ্যারে, যা বলে v-তে আসার সেরা জানা পথে ঠিক আগের vertex কে; লক্ষ্য থেকে পেছনে হেঁটে পুরো পথ ফিরে পাওয়া যায়।যেখানে শিখবেন: পর্ব ৪৩
- Prefix / suffixপ্রিফিক্স / সাফিক্স
- string-এর শুরু থেকে নেওয়া টুকরো হলো prefix ("dhaka"-র "dha"), আর শেষ পর্যন্ত নেওয়া টুকরো suffix ("aka").যেখানে শিখবেন: পর্ব ১১পর্ব ৩১পর্ব ৫৮
- Prefix countপ্রিফিক্স কাউন্ট
- কতগুলো রাখা শব্দ একটি নির্দিষ্ট prefix দিয়ে শুরু। trie-র প্রতিটি node-এ pass-counter (কতগুলো শব্দের পথ এই node দিয়ে গেছে) রাখলে উত্তর O(L)-এ মেলে।যেখানে শিখবেন: পর্ব ৩১
- Prefix doublingপ্রিফিক্স ডাবলিং
- suffix array বানানোর পদ্ধতি: প্রথমে প্রথম ১টি অক্ষর ধরে suffix-গুলোর rank, তারপর (rank[i], rank[i + k]) জোড়া সাজিয়ে প্রথম 2k অক্ষরের rank — প্রতি ধাপে দৈর্ঘ্য দ্বিগুণ, তাই log n টি ধাপ।যেখানে শিখবেন: পর্ব ৫৯
- Prefix function (failure function, π)প্রিফিক্স ফাংশন
- π[i] = s-এর প্রথম i + 1টি অক্ষরের (s[0..i]) সবচেয়ে লম্বা border-এর দৈর্ঘ্য। KMP-র মূল টেবিল; পুরো অ্যারে O(m) সময়ে বানানো যায়।যেখানে শিখবেন: পর্ব ৫৮পর্ব ৬০পর্ব ৬৮
- Prefix sumপ্রিফিক্স সাম
- P[0] = 0 এবং P[i + 1] = P[i] + a[i] — অ্যারের শুরু থেকে প্রতিটি অবস্থান পর্যন্ত যোগফলের টেবিল। এটি থাকলে যেকোনো a[L..R]-এর যোগফল P[R + 1] − P[L], অর্থাৎ O(1)-এ পাওয়া যায়।যেখানে শিখবেন: পর্ব ১৬পর্ব ১৭পর্ব ১৯
- Prefix XORপ্রিফিক্স এক্সর
- চলতি XOR-এর অ্যারে: X[0] = 0, X[i + 1] = X[i] ^ a[i]; যেকোনো রেঞ্জের XOR = X[r + 1] ^ X[l], কারণ সাধারণ অংশ দুবার এসে বাতিল হয়।যেখানে শিখবেন: পর্ব ১৭পর্ব ৩১
- Prefix-free code (prefix code)প্রিফিক্স-ফ্রি কোড
- যে code-এ কোনো অক্ষরের code অন্য কোনো অক্ষরের code-এর শুরুর অংশ নয়; তাই বিভাজক ছাড়াই বিটের স্রোত একভাবে পড়া যায়।যেখানে শিখবেন: পর্ব ৫১পর্ব ৭০
- Preorder traversalপ্রিঅর্ডার ট্রাভার্সাল
- tree ঘোরার একটি নিয়ম: আগে বর্তমান node, তারপর তার সন্তানদের subtree একে একে (binary tree-তে আগে বাঁ, পরে ডান). root সবসময় প্রথমে আসে।যেখানে শিখবেন: পর্ব ২৬পর্ব ৩১পর্ব ৬৬
- Preprocessingপ্রিপ্রসেসিং
- প্রশ্নের উত্তর দেওয়ার আগে একবার কিছু বাড়তি কাজ করে সাহায্যকারী তথ্য বানিয়ে রাখা, যাতে পরের প্রতিটি প্রশ্ন দ্রুত হয় — যেমন O(n) সময়ে prefix sum বানানো।যেখানে শিখবেন: পর্ব ১৭
- Pricing (charging) argumentপ্রাইসিং আর্গুমেন্ট
- Approximation প্রমাণের একটি কৌশল: অ্যালগরিদমের খরচকে উপাদানগুলোর মধ্যে “দাম” হিসেবে ভাগ করে দেওয়া, তারপর দেখানো যে সর্বোত্তম সমাধানের প্রতিটি অংশ সীমিত দাম বহন করে।যেখানে শিখবেন: পর্ব ৬৬
- Prim's algorithm (Jarník-Prim)প্রিমের অ্যালগরিদম
- একটি vertex থেকে শুরু করে প্রতি ধাপে tree থেকে বাইরে যাওয়া সবচেয়ে সস্তা edge যোগ করে MST বানানো; binary heap-এ O(E log V), সরল অ্যারেতে O(V²).যেখানে শিখবেন: পর্ব ৪৫
- Primality testপ্রাইমালিটি টেস্ট
- একটি সংখ্যা মৌলিক কি না তা বের করার পদ্ধতি; উৎপাদকগুলো খুঁজে বের না করেই উত্তর দিতে পারে।যেখানে শিখবেন: পর্ব ৬১
- Primary clusteringপ্রাইমারি ক্লাস্টারিং
- linear probing-এর সমস্যা: ভরা ঘরগুলো লম্বা একটানা দল বাঁধে, আর দল যত লম্বা, নতুন key তাতে পড়ার সম্ভাবনা তত বেশি — ফলে probe-এর সংখ্যা দ্রুত বাড়ে।যেখানে শিখবেন: পর্ব ৩২পর্ব ৬৮
- Prime numberপ্রাইম নাম্বার
- মৌলিক সংখ্যা: ১-এর চেয়ে বড় যে পূর্ণসংখ্যার ধনাত্মক উৎপাদক শুধু ১ আর সে নিজে — 2, 3, 5, 7, 11 … ১-এর বেশি অন্য সংখ্যাকে বলে যৌগিক (composite).যেখানে শিখবেন: পর্ব ৬২
- Prime number theoremপ্রাইম নাম্বার থিওরেম
- n পর্যন্ত মৌলিক সংখ্যার সংখ্যা π(n) মোটামুটি n / ln n. ১৮৯৬ সালে Hadamard আর de la Vallée Poussin আলাদাভাবে প্রমাণ করেন; যেমন 10⁶ পর্যন্ত মৌলিক 78498টি, আর 10⁶ / ln 10⁶ ≈ 72382.যেখানে শিখবেন: পর্ব ৬২
- Primitive operationপ্রিমিটিভ অপারেশন
- RAM model-এ যে কাজকে এক ধাপ ধরা হয়: যোগ, বিয়োগ, গুণ, ভাগ, তুলনা, মান রাখা, অ্যারের একটি ঘর পড়া, শর্তসাপেক্ষ লাফ, ফাংশন ডাকা ও ফেরা।যেখানে শিখবেন: পর্ব ০২
- Principle of optimalityপ্রিন্সিপল অফ অপটিমালিটি
- Richard Bellman-এর (১৯৫৭) নীতি: একটি সেরা সিদ্ধান্ত-শিকলের প্রথম সিদ্ধান্তের পর বাকি সিদ্ধান্তগুলোও নতুন অবস্থা থেকে নিজেরাই একটি সেরা শিকল। Optimal substructure-এর মূল রূপ।যেখানে শিখবেন: পর্ব ৫২
- Priority (treap)প্রায়োরিটি
- treap-এর প্রতিটি node-এ key-র পাশাপাশি রাখা একটি এলোমেলো সংখ্যা; tree-টি এই সংখ্যা অনুযায়ী heap-এর নিয়ম মানে, তাই priority-ই ঠিক করে কোন key ওপরে বসবে।যেখানে শিখবেন: পর্ব ৩৮
- Priority queueপ্রায়োরিটি কিউ
- যে queue-তে আগে আসা নয়, সবচেয়ে বেশি (বা সবচেয়ে কম) অগ্রাধিকারের উপাদানটি আগে বের হয় — সাধারণত heap দিয়ে বানানো হয়, ঢোকানো ও বের করায় O(log n) সময় লাগে।যেখানে শিখবেন: পর্ব ১৪পর্ব ১৫পর্ব ২১
- Proactive (top-down) splittingটপ-ডাউন স্প্লিটিং
- B-tree-তে insert-এর সময় নিচে নামার পথে যে ভরা node পাওয়া যায় তা আগেভাগেই ভাগ করে ফেলা, যাতে leaf-এ পৌঁছে আর ওপরে ফিরে যেতে না হয়; CLRS-এর পদ্ধতিযেখানে শিখবেন: পর্ব ৩০
- Probability distributionপ্রোবাবিলিটি ডিস্ট্রিবিউশন
- কোন ফল বা ইনপুট কত সম্ভাবনায় ঘটে, তার পূর্ণ তালিকা বা নিয়ম; সব সম্ভাবনার যোগফল ১। যেমন n!টি বিন্যাসের প্রতিটি সমান সম্ভাব্য।যেখানে শিখবেন: পর্ব ০৫পর্ব ৬০
- Probe sequenceপ্রোব সিকোয়েন্স
- open addressing-এ একটি key-এর জন্য ঘর দেখার ক্রম h(k, 0), h(k, 1), …; insert আর find দুজনেই একই ক্রমে হাঁটে।যেখানে শিখবেন: পর্ব ৩২
- Problem patternপ্রবলেম প্যাটার্ন
- অনেক আলাদা সমস্যার পেছনে থাকা একই সমাধান-কৌশল (যেমন sliding window বা monotonic stack), যা সমস্যার বিবরণের কিছু চেনা সংকেত দেখে শনাক্ত করা যায়।যেখানে শিখবেন: পর্ব ৭১
- Producer–consumerপ্রোডিউসার–কনজিউমার
- যে নকশায় এক বা একাধিক অংশ (producer) কাজ বা ডেটা তৈরি করে একটি buffer-এ (সাধারণত queue) রাখে, আর অন্য অংশ (consumer) নিজের গতিতে সেখান থেকে তুলে নেয় — দুই পক্ষের গতির পার্থক্য buffer সামলায়।যেখানে শিখবেন: পর্ব ১৪
- Product ruleপ্রোডাক্ট রুল
- O(f) · O(g) = O(f · g); একটি লুপের প্রতিটি পুনরাবৃত্তিতে আরেকটি লুপ চললে দুটির খরচ গুণ হয়যেখানে শিখবেন: পর্ব ০৪
- Profile DP (broken profile)প্রোফাইল ডিপি
- Grid-এর একটি সরু পাশের সীমানার অবস্থা একটি bitmask-এ রেখে ঘর ধরে ধরে এগোনো DP; যেমন domino দিয়ে বোর্ড ঢাকার উপায় গোনা।যেখানে শিখবেন: পর্ব ৫৫
- Project selection (maximum closure)প্রজেক্ট সিলেকশন
- পূর্বশর্ত মেনে কোন প্রজেক্ট আর সরঞ্জাম নিলে নিট লাভ সর্বোচ্চ — min cut দিয়ে সমাধান: সর্বোচ্চ লাভ = সব লাভের যোগফল − min cut.যেখানে শিখবেন: পর্ব ৪৭
- Proof by contradictionপ্রুফ বাই কন্ট্রাডিকশন
- বিরোধের মাধ্যমে প্রমাণ: দাবিটি মিথ্যা ধরে নিয়ে যুক্তি চালালে একটি অসম্ভব বা স্ববিরোধী ফল আসে, তাই দাবিটি সত্য হতেই হবে।যেখানে শিখবেন: পর্ব ০৩পর্ব ৪২পর্ব ৪৩
- Property-based testingপ্রপার্টি-বেসড টেস্টিং
- নির্দিষ্ট উদাহরণের বদলে একটি সাধারণ নিয়ম (যেমন দুই সমাধানের উত্তর সমান) লিখে, টুলকে দিয়ে অসংখ্য এলোমেলো ইনপুটে সেটি যাচাই করানো; ভুল পেলে টুল ইনপুটটিকে ছোট করে দেখায়।যেখানে শিখবেন: পর্ব ৬৭
- Pruningপ্রুনিং
- গাছের ডাল ছাঁটার মতো: যে আংশিক সমাধান থেকে কোনো বৈধ বা ভালো সমাধান আসা অসম্ভব, তার পুরো উপ-গাছ না দেখেই বাদ দেওয়া। একই উত্তর, অনেক কম node.যেখানে শিখবেন: পর্ব ৫৬পর্ব ৫৭পর্ব ৬৫
- Pseudo-polynomial timeসিউডো-পলিনোমিয়াল
- যে সময় ইনপুটের দৈর্ঘ্যে (বিটের সংখ্যায়) নয়, ইনপুটের সংখ্যাগুলোর মানে বহুপদী — যেমন 0/1 knapsack-এর Θ(nW), যেখানে W লিখতে মাত্র প্রায় log₂ W বিট লাগে, বা Ford-Fulkerson-এর O(E·|f*|); সংখ্যা বড় হলে তা অনেক ধীর হতে পারে।যেখানে শিখবেন: পর্ব ৪৭পর্ব ৫০পর্ব ৫২
- Pseudocodeসুডোকোড
- কোনো নির্দিষ্ট প্রোগ্রামিং ভাষার নিয়ম না মেনে, কিন্তু সুনির্দিষ্টভাবে অ্যালগরিদম লেখার পদ্ধতি; মানুষ পড়ে সহজে যেকোনো ভাষায় অনুবাদ করতে পারে।যেখানে শিখবেন: পর্ব ০২পর্ব ০৭
- Pseudorandom number generator (PRNG)সিউডোর্যান্ডম নাম্বার জেনারেটর
- একটি নির্দিষ্ট সূত্রে একের পর এক এলোমেলো দেখতে সংখ্যা বানানোর প্রোগ্রাম; শুরুর মান (seed) এক হলে পুরো সংখ্যার ধারা হুবহু এক হয়।যেখানে শিখবেন: পর্ব ৩৮পর্ব ৬১পর্ব ৬৫
- PSPACEপি-স্পেস
- যেসব সমস্যা polynomial পরিমাণ মেমরিতে সমাধান করা যায় (সময় যত লাগুক)। NP ⊆ PSPACE; সাধারণীকৃত বোর্ড-খেলার অনেক প্রশ্ন এখানে।যেখানে শিখবেন: পর্ব ৬৪
- PTAS (polynomial-time approximation scheme)পিটিএএস
- এমন অ্যালগরিদম-পরিবার, যা যেকোনো স্থির ε > 0-এর জন্য (1 + ε)-approximation দেয়, আর প্রতিটি স্থির ε-এ সময় n-এর polynomial — তবে 1/ε-এর ওপর exponential হতে পারে, যেমন n^(1/ε).যেখানে শিখবেন: পর্ব ৬৬
- Public-key cryptographyপাবলিক-কি ক্রিপ্টোগ্রাফি
- দুটি চাবির ব্যবস্থা: একটি সবার জন্য খোলা (public), একটি শুধু মালিকের (private). খোলা চাবি দিয়ে তালা দেওয়া বার্তা শুধু গোপন চাবি খুলতে পারে; HTTPS, ডিজিটাল স্বাক্ষর এর ওপর দাঁড়িয়ে।যেখানে শিখবেন: পর্ব ৬২পর্ব ৬৪
- Pull-upপুল-আপ
- Segment tree-তে দুই সন্তানের মান থেকে parent-এর মান আবার হিসাব করা, যেমন sum[v] = sum[2v] + sum[2v + 1]; আপডেটের পর ফেরার পথে করা হয়।যেখানে শিখবেন: পর্ব ৩৫
- Punched cardপাঞ্চড কার্ড
- শক্ত কাগজের কার্ড, যার নির্দিষ্ট জায়গায় ফুটো করে তথ্য রাখা হতো। Herman Hollerith-এর ১৮৯০ সালের মার্কিন আদমশুমারির যন্ত্র থেকে শুরু করে বিশ শতকের মাঝামাঝি পর্যন্ত তথ্য-প্রক্রিয়াকরণের প্রধান মাধ্যম।যেখানে শিখবেন: পর্ব ২৪
- Pushপুশ
- stack-এর ওপরে (top-এ) নতুন একটি উপাদান রাখার অপারেশন; ঠিকভাবে বানানো stack-এ এটি O(1) সময়ে হয়।যেখানে শিখবেন: পর্ব ১৩পর্ব ৬০
- Push-downপুশ-ডাউন
- একটি node-এর lazy tag দুই সন্তানের ওপর প্রয়োগ করে তাদের মান আর tag হালনাগাদ করা, তারপর node-এর নিজের tag মুছে ফেলা; সন্তানে নামার ঠিক আগে করতে হয়।যেখানে শিখবেন: পর্ব ৩৫
- Push-relabel algorithmপুশ-রিলেবেল
- max flow-এর একটি পদ্ধতি (Goldberg ও Tarjan, ১৯৮৮): পথ না খুঁজে vertex-এ বাড়তি প্রবাহ জমতে দিয়ে উচ্চতার নিয়মে তা sink-এর দিকে ঠেলে দেয়।যেখানে শিখবেন: পর্ব ৪৭
Q
- Quadratic probingকোয়াড্রাটিক প্রোবিং
- open addressing-এর নিয়ম h(k, i) = (h(k) + i²) mod m; primary clustering কমায়, কিন্তু m মৌলিক আর α ≤ ½ না হলে খালি ঘর না-ও পেতে পারে।যেখানে শিখবেন: পর্ব ৩২
- Quadratic time — O(n²)কোয়াড্রাটিক টাইম
- ধাপের সংখ্যা n²-এর সমানুপাতিক, সাধারণত সব জোড়া তুলনা বা দুটি nested লুপে হয়; n দ্বিগুণ হলে সময় চার গুণযেখানে শিখবেন: পর্ব ০৪পর্ব ১১পর্ব ১৬
- Queueকিউ
- যে ডেটা স্ট্রাকচারে উপাদান ঢোকে এক মাথা (rear/back) দিয়ে আর বের হয় অন্য মাথা (front) দিয়ে — যে আগে আসে সে আগে যায় (FIFO), ঠিক টিকিটের লাইনের মতো।যেখানে শিখবেন: পর্ব ১৪পর্ব ১৫পর্ব ২৩
- Queue using two stacksটু-স্ট্যাক কিউ
- দুটি stack (inbox, outbox) দিয়ে বানানো queue: enqueue যায় inbox-এ; outbox খালি হলে inbox-এর সব উপাদান উল্টো ক্রমে outbox-এ ঢেলে সেখান থেকে dequeue. একটি dequeue Θ(n) হতে পারে, কিন্তু প্রতি কাজে amortized O(1).যেখানে শিখবেন: পর্ব ৬০পর্ব ৬৯
- Quick sortকুইক সর্ট
- একটি pivot বেছে অ্যারেকে তার চেয়ে ছোট আর বড় দুই ভাগে partition করে, তারপর দুই ভাগকে রিকার্শনে সাজানোর in-place সর্টিং; গড়ে Θ(n log n), worst case Θ(n²). ১৯৫৯–৬১ সালে Tony Hoare উদ্ভাবন করেন।যেখানে শিখবেন: পর্ব ২২পর্ব ২৫পর্ব ৬৯
- Quick-findকুইক-ফাইন্ড
- DSU-এর সরল রূপ, যেখানে id[x] সরাসরি দলের লেবেল রাখে: find O(1), কিন্তু union-এ পুরো অ্যারে ঘুরে লেবেল বদলাতে হয় — O(n).যেখানে শিখবেন: পর্ব ৩৩
R
- Rabin-Karp algorithmরবিন-কার্প অ্যালগরিদম
- text-এর প্রতিটি m দৈর্ঘ্যের জানালার rolling hash-কে pattern-এর hash-এর সাথে মেলায়, আর hash মিললে অক্ষর ধরে যাচাই করে। Richard Karp ও Michael Rabin, ১৯৮৭; সাধারণ ইনপুটে প্রত্যাশিত সময় O(n + m), সবচেয়ে খারাপে O(n·m).যেখানে শিখবেন: পর্ব ৫৮
- Radix (base)র্যাডিক্স বা বেস
- সংখ্যা লেখার ভিত্তি — একটি অঙ্ক কত রকম মান নিতে পারে। দশমিকে 10, byte ধরে ভাঙলে 256 (2⁸). radix sort-এ বড় base মানে কম pass কিন্তু বড় count অ্যারে।যেখানে শিখবেন: পর্ব ২৪
- Radix sortর্যাডিক্স সর্ট
- key-কে অঙ্কে (বা byte-এ) ভেঙে প্রতিটি অঙ্ক অনুযায়ী আলাদা pass-এ সাজানোর পদ্ধতি। d অঙ্কের base-b key-তে সময় Θ(d(n + b)); তুলনা ছাড়াই কাজ করে।যেখানে শিখবেন: পর্ব ২৪পর্ব ২৫পর্ব ৫৯
- Radix tree (compressed trie)র্যাডিক্স ট্রি
- যে trie-তে একটি মাত্র সন্তানের লম্বা শিকলগুলো জুড়ে একটি edge করা হয়, তাই একটি edge-এ একটি পুরো string থাকে। n টি শব্দে node O(n), খোঁজা এখনও O(L).যেখানে শিখবেন: পর্ব ৩১
- RAM modelর্যাম মডেল
- Random-access machine — অ্যালগরিদম বিশ্লেষণের জন্য একটি কাল্পনিক কম্পিউটার: একটি প্রসেসর, নির্দেশ একটির পর একটি চলে, প্রতিটি মৌলিক কাজ আর মেমরির যেকোনো ঘর পড়তে স্থির সময় লাগে।যেখানে শিখবেন: পর্ব ০২পর্ব ১০পর্ব ২৪
- Random accessর্যান্ডম অ্যাক্সেস
- যেকোনো অবস্থানের উপাদান আগের উপাদানগুলো না ঘুরেই সরাসরি, ধ্রুবক সময়ে পড়তে পারার ক্ষমতা; array-এর সবচেয়ে বড় শক্তি।যেখানে শিখবেন: পর্ব ১০পর্ব ১২পর্ব ২১
- Random binary search treeর্যান্ডম বিএসটি
- n টি key-কে সমান সম্ভাবনার একটি এলোমেলো ক্রমে সাধারণ BST-তে ঢুকিয়ে যে tree পাওয়া যায়; এর প্রত্যাশিত গভীরতা প্রায় 2 ln n, অর্থাৎ O(log n).যেখানে শিখবেন: পর্ব ৩৮
- Random test generatorটেস্ট জেনারেটর
- যে প্রোগ্রাম নির্দিষ্ট সীমার ভেতরে এলোমেলো কিন্তু বৈধ ইনপুট বানায়; stress testing-এ হাজার হাজার ছোট ইনপুট তৈরিতে ব্যবহার হয়।যেখানে শিখবেন: পর্ব ৬৭পর্ব ৭২
- Random variableর্যান্ডম ভেরিয়েবল
- একটি এলোমেলো পরীক্ষার প্রতিটি ফলকে একটি সংখ্যায় রূপ দেওয়ার নিয়ম, যেমন “quicksort-এ মোট তুলনার সংখ্যা” বা “ছক্কায় ওঠা মান”.যেখানে শিখবেন: পর্ব ৬১
- Randomized algorithmর্যান্ডমাইজড অ্যালগরিদম
- যে অ্যালগরিদম চলার সময় নিজে এলোমেলো সংখ্যা ব্যবহার করে সিদ্ধান্ত নেয়, যেমন এলোমেলো pivot বাছা। একই ইনপুটে ভিন্ন বার ভিন্ন পথে চলতে পারে।যেখানে শিখবেন: পর্ব ০৫পর্ব ২২পর্ব ৩২
- Randomized quicksortর্যান্ডমাইজড কুইকসর্ট
- প্রতিটি partition-এ এলোমেলোভাবে বাছা উপাদানকে pivot ধরা quick sort; যেকোনো ইনপুটে প্রত্যাশিত সময় O(n log n), কারণ কোনো ইনপুট আগে থেকে খারাপ pivot জোর করে দিতে পারে না।যেখানে শিখবেন: পর্ব ২২পর্ব ৬১পর্ব ৭০
- Range assignরেঞ্জ অ্যাসাইন
- অ্যারের একটি রেঞ্জ [l, r]-এর প্রতিটি ঘরের মান একটি নির্দিষ্ট মান c-তে বসিয়ে দেওয়ার আপডেট; আগের মান বা আগের যোগ-বিয়োগের কোনো প্রভাব থাকে না।যেখানে শিখবেন: পর্ব ৩৫
- Range minimum query (RMQ)রেঞ্জ মিনিমাম কোয়েরি
- অ্যারের একটি অংশ a[l..r]-এর সবচেয়ে ছোট মান (বা তার index) জানতে চাওয়া প্রশ্ন; segment tree, sparse table আর LCA-র সাথে ঘনিষ্ঠভাবে যুক্ত।যেখানে শিখবেন: পর্ব ৩৪পর্ব ৩৭পর্ব ৪৮
- Range queryরেঞ্জ কোয়েরি
- একটি পরিসর নিয়ে প্রশ্ন — অ্যারের অবিচ্ছিন্ন অংশ a[l..r]-এর যোগফল, সর্বনিম্ন মান বা কোনো মান কতবার আছে, অথবা সাজানো সংগ্রহে (BST, B-tree বা ডেটাবেসে) l ≤ key ≤ r এমন সব key খোঁজা বা গোনা।যেখানে শিখবেন: পর্ব ১৭পর্ব ২৭পর্ব ৩০
- Range updateরেঞ্জ আপডেট
- অ্যারের একটি পুরো অংশ a[l..r]-এর সব ঘরে একসাথে একই পরিবর্তন — যেমন প্রতিটি ঘরে v যোগ করা।যেখানে শিখবেন: পর্ব ১৭পর্ব ৩৪পর্ব ৩৫
- Rank (in DSU)র্যাংক
- DSU-তে প্রতিটি root-এ রাখা একটি সংখ্যা, যা tree-র উচ্চতার একটি ওপরের সীমা; path compression না থাকলে এটি ঠিক উচ্চতা, আর কখনো log₂ n ছাড়ায় না।যেখানে শিখবেন: পর্ব ৩৩
- Rank array (inverse suffix array)র্যাংক অ্যারে
- suffix array-র উল্টো অ্যারে: rank[i] বলে i থেকে শুরু suffix-টি সাজানো ক্রমে কোন অবস্থানে আছে, অর্থাৎ sa[rank[i]] = i.যেখানে শিখবেন: পর্ব ৫৯
- Ray casting (even-odd rule)রে কাস্টিং
- বিন্দু থেকে একদিকে একটি রশ্মি টেনে বহুভুজের সীমানা কতবার পার হয় গোনা; বিজোড় হলে ভেতরে, জোড় হলে বাইরে।যেখানে শিখবেন: পর্ব ৬৩
- Reachabilityরিচেবিলিটি
- u থেকে edge ধরে ধরে v-তে পৌঁছানো যায় কি না — এই প্রশ্ন। Directed গ্রাফে u থেকে v-তে পৌঁছানো গেলেও v থেকে u-তে না-ও যেতে পারে।যেখানে শিখবেন: পর্ব ৪৬
- Reallocationরি-অ্যালোকেশন
- জায়গা ফুরালে নতুন, বড় একটি মেমরি ব্লক নেওয়া, পুরোনো সব উপাদান সেখানে কপি করা আর পুরোনো ব্লক ছেড়ে দেওয়া; এর খরচ Θ(n)যেখানে শিখবেন: পর্ব ১০
- Recoloringরিকালারিং
- Red-black tree-তে কোনো node-এর রং লাল থেকে কালো বা কালো থেকে লাল করা; pointer বদলায় না, তাই rotation-এর চেয়ে সস্তা।যেখানে শিখবেন: পর্ব ২৯
- Recurrence (recurrence relation)রিকারেন্স
- এমন একটি সমীকরণ, যেখানে কোনো ফাংশনের মান (যেমন n আকারের ইনপুটে সময় T(n)) তারই ছোট ইনপুটের মান দিয়ে লেখা হয়, যেমন T(n) = 2T(n/2) + n; সঙ্গে থাকে একটি base case.যেখানে শিখবেন: পর্ব ০৮পর্ব ০৯পর্ব ২১
- Recursionরিকার্শন
- একটি ফাংশন নিজেকেই ছোট ইনপুট দিয়ে ডেকে সমস্যা সমাধান করা; base case-এ এসে থামে।যেখানে শিখবেন: পর্ব ০৩পর্ব ০৭পর্ব ০৮
- Recursion depthরিকার্শন ডেপথ
- একসাথে সর্বোচ্চ কতগুলো recursive ডাক শেষ না হয়ে অপেক্ষায় থাকে। Recursion-এর stack-জায়গা মোটামুটি এই গভীরতার সমানুপাতিক।যেখানে শিখবেন: পর্ব ০৫পর্ব ০৭পর্ব ১২
- Recursion limitরিকার্শন লিমিট
- Python-এ রিকার্শনের গভীরতার একটি নিরাপত্তা-সীমা (সাধারণত 1000); এর বেশি গেলে RecursionError হয়। sys.setrecursionlimit দিয়ে বদলানো যায়, তবে ঝুঁকিসহ।যেখানে শিখবেন: পর্ব ০৭পর্ব ৪১পর্ব ৪২
- Recursion treeরিকার্শন ট্রি
- প্রতিটি ফাংশন-কলকে একটি node ধরে আঁকা গাছ; প্রতিটি node-এ সেই কলের নিজস্ব কাজ লিখে স্তর ধরে যোগ করলে মোট সময় পাওয়া যায়, আর গাছের উচ্চতা দেখায় call stack-এর গভীরতা।যেখানে শিখবেন: পর্ব ০৭পর্ব ০৮পর্ব ০৯
- Recursive caseরিকার্সিভ কেস
- ফাংশনের যে অংশ সমস্যাকে ছোট করে নিজেকে আবার ডাকে এবং সেই ছোট উত্তর দিয়ে বড় উত্তর তৈরি করে।যেখানে শিখবেন: পর্ব ০৭
- Red-black treeরেড-ব্ল্যাক ট্রি
- প্রতিটি node-কে লাল বা কালো রঙ দিয়ে কয়েকটি নিয়মে ভারসাম্য রাখা binary search tree; উচ্চতা সবসময় O(log n), তাই সব কাজ worst case-এও O(log n). C++-এর set ও map সাধারণত এটি দিয়েই বানানো।যেখানে শিখবেন: পর্ব ১৫পর্ব ২৭পর্ব ২৮
- Reduced cost matrixরিডিউসড কস্ট ম্যাট্রিক্স
- TSP-এর খরচের ম্যাট্রিক্সের প্রতিটি সারি ও কলাম থেকে তার সবচেয়ে ছোট মান বিয়োগ করে পাওয়া ম্যাট্রিক্স, যাতে প্রতিটি সারি ও কলামে অন্তত একটি 0 থাকে; মোট বিয়োগফলের চেয়ে কোনো tour-এর খরচ কম হতে পারে না।যেখানে শিখবেন: পর্ব ৫৭
- Reductionরিডাকশন
- একটি সমস্যা A-কে আরেকটি সমস্যা B-এর সমাধান দিয়ে সমাধান করার রূপান্তর; এতে প্রমাণ হয় B অন্তত A-এর মতো কঠিন — যেমন sort থেকে convex hull-এ রূপান্তর।যেখানে শিখবেন: পর্ব ৬৩পর্ব ৬৬পর্ব ৬৭
- Reference countingরেফারেন্স কাউন্টিং
- প্রতিটি বস্তুকে কতজন দেখাচ্ছে তার গণনা রাখা, আর গণনা শূন্য হলেই বস্তুটি মুছে ফেলা। CPython-এর প্রধান পদ্ধতি; তবে cycle-এ গণনা শূন্য হয় না বলে আলাদা cycle collector লাগে।যেখানে শিখবেন: পর্ব ১২
- Regression testরিগ্রেশন টেস্ট
- একবার ধরা পড়া বাগের ইনপুটকে স্থায়ী টেস্ট হিসেবে রেখে দেওয়া, যাতে পরে কোড বদলালে একই বাগ ফিরে এলে সাথে সাথে ধরা পড়ে।যেখানে শিখবেন: পর্ব ৬৭
- Regularity conditionরেগুলারিটি কন্ডিশন
- Master theorem-এর case 3-এর শর্ত a·f(n/b) ≤ c·f(n), যেখানে c < 1 একটি ধ্রুবক; এটি নিশ্চিত করে যে recursion tree-র তলার খরচ জ্যামিতিক হারে কমে আর মূলই মোট খরচ ঠিক করে।যেখানে শিখবেন: পর্ব ০৯পর্ব ৭০
- Rehashingরিহ্যাশিং
- hash table বড় করে (বেশি bucket নিয়ে) সব key নতুন করে hash করে নতুন জায়গায় বসানো; একবারে O(n), কিন্তু amortized হিসাবে প্রতি যোগে O(1).যেখানে শিখবেন: পর্ব ১৫পর্ব ৩২পর্ব ৬০
- Representative (of a set)রিপ্রেজেন্টেটিভ বা প্রতিনিধি
- DSU-তে প্রতিটি দলের একটি নির্দিষ্ট সদস্য, যা find ফেরত দেয়; forest-এ এটি tree-র root. union-এর পর প্রতিনিধি বদলাতে পারে।যেখানে শিখবেন: পর্ব ৩৩
- Reproducibilityরিপ্রোডিউসিবিলিটি
- একই ইনপুট আর একই সেটিং দিয়ে আবার চালালে হুবহু একই ফল পাওয়া; randomized প্রোগ্রামে নির্দিষ্ট seed রেখে এটি নিশ্চিত করা হয়, যাতে বাগ আবার ঘটিয়ে দেখা যায়।যেখানে শিখবেন: পর্ব ৩৮পর্ব ৬১পর্ব ৬৭
- Rerooting DPরি-রুটিং ডিপি
- Tree-র প্রতিটি node-কে root ধরলে উত্তর কত, তা বের করার কৌশল: একটি DFS-এ নিচ থেকে ওপরে হিসাব, আরেকটিতে root এক ধাপ সরানোর সময় উত্তর সংশোধন; মোট O(n).যেখানে শিখবেন: পর্ব ৪৮পর্ব ৫৫
- Reservoir samplingরিজার্ভয়ার স্যাম্পলিং
- অজানা দৈর্ঘ্যের stream থেকে একবার হেঁটে k টি উপাদানের ন্যায্য নমুনা: i-তম উপাদান k/i সম্ভাবনায় একটি এলোমেলো ঘরে ঢোকে; শেষে প্রত্যেকের থাকার সম্ভাবনা k/n.যেখানে শিখবেন: পর্ব ৬১
- Residual capacityরেসিডুয়াল ক্যাপাসিটি
- residual graph-এ একটি edge-এর বাকি সামর্থ্য: এগোনো edge-এ c(u, v) − f(u, v), ফেরত edge-এ f(u, v)যেখানে শিখবেন: পর্ব ৪৭
- Residual graphরেসিডুয়াল গ্রাফ
- বর্তমান flow-এর পর কোথায় আরও পাঠানো বা কতটা ফেরানো যায় তার গ্রাফ: প্রতিটি edge-এ বাকি জায়গা c − f এগোনো দিকে আর f উল্টো দিকে।যেখানে শিখবেন: পর্ব ৪৭পর্ব ৭০
- Resource-constrained shortest pathরিসোর্স-কনস্ট্রেইন্ড শর্টেস্ট পাথ
- এমন shortest path সমস্যা যেখানে পথের আরেকটি খরচও (যেমন জ্বালানি বা ওজন) একটি সীমার নিচে রাখতে হয়; সাধারণ রূপটি NP-hard.যেখানে শিখবেন: পর্ব ৬৭
- Retracing (rebalancing path)রিট্রেসিং
- AVL insert বা delete-এর পর পরিবর্তনের জায়গা থেকে root-এর দিকে উঠতে উঠতে প্রতিটি পূর্বপুরুষের উচ্চতা ও balance factor হালনাগাদ করা, আর দরকার হলে rotation করা।যেখানে শিখবেন: পর্ব ২৮
- Return addressরিটার্ন অ্যাড্রেস
- ফাংশনের কাজ শেষ হলে প্রোগ্রাম কোন নির্দেশে ফিরে যাবে তার ঠিকানা; প্রতিটি stack frame-এ এটি রাখা থাকে।যেখানে শিখবেন: পর্ব ০৭
- Reversal algorithm (rotation)রিভার্সাল অ্যালগরিদম
- তিনবার অংশ উল্টে array ঘোরানোর কৌশল: পুরোটা উল্টাও, তারপর প্রথম k ঘর, তারপর বাকিটা — Θ(n) সময়, O(1) বাড়তি জায়গা।যেখানে শিখবেন: পর্ব ১০
- Reverse (back) edge in a residual graphরিভার্স এজ
- residual graph-এ u → v-এর প্রবাহের জন্য তৈরি উল্টো edge v → u, যার capacity বর্তমান প্রবাহের সমান; এটি দিয়ে গেলে আগের প্রবাহ বাতিল হয়।যেখানে শিখবেন: পর্ব ৪৭
- Reweightingরিওয়েটিং
- প্রতিটি edge-এর ওজন w(u, v) + h(u) − h(v) দিয়ে বদলানো, যাতে সব ওজন ≥ 0 হয় অথচ প্রতিটি s থেকে t পথের খরচ একই পরিমাণ সরে — তাই সেরা পথ বদলায় না।যেখানে শিখবেন: পর্ব ৪৪
- Robin Hood hashingরবিন হুড হ্যাশিং
- linear probing-এর একটি রূপ: insert-এর সময় যে key নিজের home থেকে বেশি দূরে আছে সে জায়গা পায়, কম দূরের key সরে যায় — ফলে probe-দূরত্ব সবার জন্য কাছাকাছি থাকে।যেখানে শিখবেন: পর্ব ৩২
- Rolling arrayরোলিং অ্যারে
- DP-তে জায়গা বাঁচানোর কৌশল: recurrence শুধু শেষ কয়েকটি সারি বা ঘরের ওপর নির্ভর করলে পুরো টেবিলের বদলে শুধু সেগুলো রাখা; তবে তখন পুরো সমাধান পুনর্গঠন করা যায় না।যেখানে শিখবেন: পর্ব ৫২পর্ব ৫৪পর্ব ৭১
- Rolling hashরোলিং হ্যাশ
- একটি জানালা এক ঘর সরালে পুরোনো hash থেকে O(1)-এ নতুন hash বের করার কৌশল — বাঁয়ের অক্ষর বাদ, ডানের অক্ষর যোগ। Rabin–Karp অ্যালগরিদমের ভিত্তি।যেখানে শিখবেন: পর্ব ১১পর্ব ৩২পর্ব ৫৮
- Root (tree)রুট
- tree-র সবার ওপরের node, যার কোনো parent নেই; heap-এ এটি অ্যারের a[0] ঘর।যেখানে শিখবেন: পর্ব ২৩পর্ব ২৬পর্ব ২৭
- Rooted treeরুটেড ট্রি
- যে tree-তে একটি node-কে root বেছে নেওয়া হয়েছে, ফলে প্রতিটি অন্য node-এর একটি নির্দিষ্ট parent, depth আর subtree আছে।যেখানে শিখবেন: পর্ব ৪৮পর্ব ৫৫
- Rope (data structure)রোপ
- লম্বা string-কে ছোট ছোট টুকরোয় ভাগ করে একটি balanced tree-তে রাখার কাঠামো, যাতে মাঝখানে লেখা ঢোকানো, কাটা বা জোড়া পুরো string না সরিয়েই O(log n)-এর কাছাকাছি সময়ে হয়।যেখানে শিখবেন: পর্ব ৩৮
- Rotated sorted arrayরোটেটেড সর্টেড অ্যারে
- একটি সাজানো অ্যারেকে কোনো জায়গা থেকে কেটে সামনের অংশ পেছনে জুড়ে দেওয়া অ্যারে, যেমন [30, 40, 5, 10, 20]; মান আলাদা হলে এতেও O(log n)-এ খোঁজা যায়, কারণ যেকোনো mid-এ অন্তত এক অর্ধেক সাজানো থাকে।যেখানে শিখবেন: পর্ব ১৮
- Rotating calipersরোটেটিং ক্যালিপার্স
- convex বহুভুজের দুই পাশে দুটি সমান্তরাল রেখা চেপে ধরে চারপাশে ঘোরানোর কৌশল; Θ(h)-এ সবচেয়ে দূরের জোড়া (diameter), ন্যূনতম প্রস্থ ইত্যাদি বের করে।যেখানে শিখবেন: পর্ব ৬৩
- Rotation (tree)রোটেশন
- একটি node আর তার সন্তানের মধ্যে কয়েকটি pointer বদলে সন্তানটিকে ওপরে তোলার O(1) কাজ; in-order ক্রম অটুট থাকে বলে BST বৈধ থাকে। বাঁ সন্তানকে তুললে right rotation, ডান সন্তানকে তুললে left rotation.যেখানে শিখবেন: পর্ব ২৮পর্ব ২৯পর্ব ৩৮
- Round-robin schedulingরাউন্ড-রবিন শিডিউলিং
- Operating system-এর একটি পদ্ধতি, যেখানে অপেক্ষমাণ প্রতিটি প্রোগ্রাম পালা করে অল্প সময় (time slice) CPU পায়, আর শেষজনের পরে আবার প্রথমজনের পালা আসে।যেখানে শিখবেন: পর্ব ১২
- Round-robin schedulingরাউন্ড-রবিন
- Operating system-এর একটি scheduling পদ্ধতি — প্রতিটি কাজ পালা করে একটি নির্দিষ্ট সময় (time slice) চলে, শেষ না হলে queue-এর পেছনে ফিরে যায়।যেখানে শিখবেন: পর্ব ১৪
- Routing tableরাউটিং টেবিল
- router-এর ভেতরের তালিকা, যেখানে IP address-এর prefix আর সেই গন্তব্যের packet কোন পথে পাঠাতে হবে তা লেখা থাকে।যেখানে শিখবেন: পর্ব ৩১পর্ব ৪৩
- Row-major orderরো-মেজর অর্ডার
- 2D array মেমরিতে রাখার নিয়ম যেখানে প্রথম সারির সব উপাদান, তারপর দ্বিতীয় সারি — এভাবে রাখা হয়; m[i][j]-এর অবস্থান i × C + j. C, C++, Python-এর NumPy (ডিফল্ট) এটি মানে।যেখানে শিখবেন: পর্ব ১০
- RP (randomized polynomial time)আরপি
- যেসব decision problem polynomial সময়ের এমন randomized অ্যালগরিদমে সমাধান হয়, যার “না” উত্তর সবসময় সঠিক আর “হ্যাঁ” ক্ষেত্রে অন্তত 1/2 সম্ভাবনায় “হ্যাঁ” বলে।যেখানে শিখবেন: পর্ব ৬১
- RSAআরএসএ
- Rivest, Shamir আর Adleman-এর (১৯৭৭) public-key ব্যবস্থা: দুটি বড় মৌলিকের গুণফল n প্রকাশ্য, গোপন চাবি d = e⁻¹ mod φ(n). নিরাপত্তা নির্ভর করে n-কে উৎপাদকে ভাঙা কঠিন — এই বিশ্বাসের ওপর।যেখানে শিখবেন: পর্ব ৬২
- Run (natural run)রান
- ইনপুটের ভেতরে আগে থেকেই সাজানো (বাড়তে থাকা বা কঠোরভাবে কমতে থাকা) পাশাপাশি উপাদানের একটি টুকরো; Timsort এমন টুকরো খুঁজে জোড়া দিয়ে কাজ বাঁচায়যেখানে শিখবেন: পর্ব ২৫
- Run (sorted run)রান
- ডেটার একটি টানা অংশ যা নিজের ভেতরে আগে থেকেই সাজানো; external sort-এর প্রথম ধাপ এমন run তৈরি করে, আর Timsort ইনপুটে থাকা run খুঁজে নেয়।যেখানে শিখবেন: পর্ব ২১
- Run-length encoding (RLE)রান-লেংথ এনকোডিং
- একই অক্ষরের টানা সারিকে “অক্ষর + কতবার” দিয়ে লেখা, যেমন aaabb → a3b2. পুনরাবৃত্তি বেশি থাকলে লেখা ছোট হয়, না থাকলে বরং বড় হয়।যেখানে শিখবেন: পর্ব ১১
- Running medianরানিং মিডিয়ান
- একে একে আসা সংখ্যাগুলোর প্রতিটির পর এখন পর্যন্ত সবগুলোর median; ছোট অর্ধেক একটি max-heap-এ আর বড় অর্ধেক একটি min-heap-এ রেখে প্রতি ধাপ O(log n).যেখানে শিখবেন: পর্ব ২৩
- Running timeরানিং টাইম
- একটি input-এ অ্যালগরিদম মোট কতগুলো মৌলিক ধাপ চালায়, input-এর আকার n-এর ফাংশন হিসেবে — সাধারণত T(n) লেখা হয়।যেখানে শিখবেন: পর্ব ০২
- Runtime Error (RE)রানটাইম এরর
- চলার মাঝপথে প্রোগ্রাম ভেঙে পড়েছে বা শূন্য ছাড়া অন্য exit code দিয়েছে — অ্যারের সীমার বাইরে লেখা, শূন্য দিয়ে ভাগ, খুব গভীর recursion-এ stack overflow বা main থেকে শূন্য ছাড়া কিছু ফেরত দেওয়া এর সাধারণ কারণ।যেখানে শিখবেন: পর্ব ৭২
S
- s-t cutএস-টি কাট
- vertex-গুলোকে দুই ভাগ S আর T-তে ভাগ করা, যাতে s ∈ S আর t ∈ T; capacity = S থেকে T-তে যাওয়া সব edge-এর capacity-র যোগফল।যেখানে শিখবেন: পর্ব ৪৭
- SA-ISএসএ-আইএস
- suffix array O(n) সময়ে বানানোর একটি পদ্ধতি (Nong, Zhang ও Chan, ২০০৯), যা suffix-গুলোকে S আর L ধরনে ভাগ করে recursion দিয়ে সাজায়; বাস্তবের দ্রুততম পদ্ধতিগুলোর একটি।যেখানে শিখবেন: পর্ব ৫৯
- Safe edgeসেফ এজ
- একটি edge-সেট A কোনো MST-এর অংশ হলে, যে edge যোগ করার পরেও A কোনো MST-এর অংশ থাকে, সেটি A-এর জন্য safe edge.যেখানে শিখবেন: পর্ব ৪৫
- SAT solverস্যাট সলভার
- Boolean সূত্র সত্য করা যায় কি না খুঁজে বের করার সফটওয়্যার (যেমন MiniSat বা Kissat). Worst case-এ exponential হলেও শিল্পের লক্ষ লক্ষ চলকের সমস্যা প্রায়ই দ্রুত মেটায়যেখানে শিখবেন: পর্ব ৬৫
- Satellite dataস্যাটেলাইট ডেটা
- সাজানোর key-এর সাথে যুক্ত বাকি তথ্য — যেমন নম্বরের সাথে রোল, নাম, ঠিকানা। সর্ট করার সময় key-এর সাথে এগুলোও একসাথে সরে।যেখানে শিখবেন: পর্ব ২৪
- Schoolbook multiplicationস্কুলবুক মাল্টিপ্লিকেশন
- স্কুলে শেখা গুণের পদ্ধতি, যেখানে একটি সংখ্যার প্রতিটি অঙ্ককে অন্যটির প্রতিটি অঙ্কের সাথে গুণ করে সরিয়ে সরিয়ে যোগ করা হয়; দুটি n-অঙ্কের সংখ্যায় Θ(n²) সময় লাগে।যেখানে শিখবেন: পর্ব ৪৯
- Scoreboard freezeস্কোরবোর্ড ফ্রিজ
- কনটেস্টের শেষ অংশে (প্রায়ই শেষ এক ঘণ্টা) স্কোরবোর্ড হালনাগাদ বন্ধ রাখা — দলগুলো নিজেদের ফল জানে, কিন্তু অন্যদের নতুন সমাধান দেখা যায় না; চূড়ান্ত ফল পরে একসাথে প্রকাশ হয়।যেখানে শিখবেন: পর্ব ৭২
- Search spaceসার্চ স্পেস
- যে সব সম্ভাব্য মানের মধ্যে উত্তর খোঁজা হয় — যেমন 1 থেকে 10^9 পর্যন্ত সব পূর্ণসংখ্যা; উত্তরের ওপর binary search-এ এটি lo আর hi দিয়ে ঘেরা থাকে।যেখানে শিখবেন: পর্ব ১৯
- Second-best MSTসেকেন্ড বেস্ট এমএসটি
- MST-এর পরের সবচেয়ে কম ওজনের spanning tree; MST থেকে ঠিক একটি edge বদলে পাওয়া যায় — একটি non-tree edge যোগ করে তার cycle-এর সবচেয়ে ভারী tree edge সরিয়ে।যেখানে শিখবেন: পর্ব ৪৫
- Secondary clusteringসেকেন্ডারি ক্লাস্টারিং
- যে probing-এ একই home slot-এর সব key হুবহু একই ক্রমে ঘর দেখে (যেমন quadratic probing), সেখানে তারা একে অপরের পথে বারবার ধাক্কা খায়।যেখানে শিখবেন: পর্ব ৩২
- Seed (random seed)সিড
- pseudorandom জেনারেটরের শুরুর মান। একই seed দিলে প্রতিবার একই সংখ্যার ধারা আসে, তাই পরীক্ষা পুনরায় চালানো যায়; প্রোডাকশনে সাধারণত অনুমান-অযোগ্য seed দেওয়া হয়।যেখানে শিখবেন: পর্ব ৩৮পর্ব ৬১পর্ব ৬৫
- Segment intersectionসেগমেন্ট ইন্টারসেকশন
- দুটি রেখাংশ কোনো বিন্দুতে মেলে কি না তা নির্ণয়; চারটি orientation-এর চিহ্ন আর একই রেখার ক্ষেত্রে প্রান্তবিন্দু বাক্সের ভেতরে কি না দেখে Θ(1) সময়ে হয়।যেখানে শিখবেন: পর্ব ৬৩
- Segment treeসেগমেন্ট ট্রি
- যে binary tree-এর প্রতিটি node অ্যারের একটি রেঞ্জের তথ্য (যোগফল, min, max ইত্যাদি) রাখে; রেঞ্জের প্রশ্ন আর আপডেট O(log n)-এ হয়।যেখানে শিখবেন: পর্ব ১৭পর্ব ২৭পর্ব ৩৪
- Segment tree beatsসেগমেন্ট ট্রি বিটস
- a[i] = min(a[i], x) ধরনের আপডেটের জন্য segment tree-র উন্নত রূপ; প্রতিটি node সর্বোচ্চ মান, দ্বিতীয় সর্বোচ্চ মান আর সর্বোচ্চের সংখ্যা রাখে, আর amortized বিশ্লেষণে মোট খরচ সীমিত থাকে।যেখানে শিখবেন: পর্ব ৩৫
- Segmented sieveসেগমেন্টেড সিভ
- বড় একটি পরিসর [L, R]-এর মৌলিক সংখ্যা খুঁজতে আগে √R পর্যন্ত মৌলিকগুলো বের করে, তারপর শুধু ওই জানালায় তাদের গুণিতক কাটা। জায়গা লাগে O(√R + (R − L)), পুরো R পর্যন্ত নয়।যেখানে শিখবেন: পর্ব ৬২
- Selection sortসিলেকশন সর্ট
- প্রতি ধাপে বাকি অংশের সবচেয়ে ছোট উপাদান খুঁজে সামনের ঘরে বসানোর সর্টিং; তুলনা সবসময় n(n−1)/2, কিন্তু swap সর্বোচ্চ n−1টি। stable নয়।যেখানে শিখবেন: পর্ব ২০
- Self-balancing BSTসেলফ-ব্যালান্সিং বিএসটি
- যে binary search tree প্রতিটি insert বা delete-এর পর নিজেই আকার ঠিক করে উচ্চতা O(log n) রাখে, ইনপুট যে ক্রমেই আসুক; যেমন AVL tree, red-black tree.যেখানে শিখবেন: পর্ব ২৭পর্ব ২৮পর্ব ২৯
- Self-loopসেলফ-লুপ
- একটি vertex থেকে নিজের দিকেই ফেরা edge (v, v); undirected গ্রাফে এটি degree-তে ২ যোগ করে।যেখানে শিখবেন: পর্ব ৩৯পর্ব ৬৭
- Sentinel / dummy nodeসেন্টিনেল / ডামি নোড
- আসল ডেটা ছাড়া একটি নকল node, যা list-এর শুরুতে (বা দুই প্রান্তে), কিংবা tree-তে সব খালি সন্তানের জায়গায় (যেমন red-black tree-র একক কালো NIL) বসানো হয়, যাতে প্রান্তের জন্য আলাদা নিয়ম না লাগে; কোড ছোট ও কম ভুলপ্রবণ হয়।যেখানে শিখবেন: পর্ব ১২পর্ব ২১পর্ব ২৯
- Sentinel valueসেন্টিনেল ভ্যালু
- সীমানার পরীক্ষা এড়াতে ইচ্ছা করে বসানো একটি নকল মান; যেমন linear search-এ অ্যারের শেষে খোঁজার মান x নিজেই বসিয়ে দিলে লুপ নিশ্চিতভাবে থামে, তাই প্রতি ধাপে i < n পরীক্ষা লাগে না।যেখানে শিখবেন: পর্ব ১৮পর্ব ৭১
- Separate chainingসেপারেট চেইনিং
- collision সামলানোর কৌশল: প্রতিটি bucket-এ একটি তালিকা (সাধারণত linked list) রাখা, আর একই bucket-এ পড়া সব key সেই তালিকায় রাখা; প্রত্যাশিত খরচ Θ(1 + α).যেখানে শিখবেন: পর্ব ৩২পর্ব ৭০
- Separating axis theoremসেপারেটিং অ্যাক্সিস থিওরেম
- দুটি convex আকার একে অপরকে না কাটলে এমন একটি রেখা আছে যা তাদের দুই পাশে আলাদা করে; গেম আর সিমুলেশনে সংঘর্ষ পরীক্ষার ভিত্তি।যেখানে শিখবেন: পর্ব ৬৩
- Separator characterসেপারেটর ক্যারেক্টার
- দুটি string জোড়া দেওয়ার সময় মাঝে বসানো এমন একটি অক্ষর (যেমন '$' বা '#'), যা দুটির কোনোটিতেই নেই; এর ফলে কোনো মিল জোড়ার সীমানা পার হতে পারে না।যেখানে শিখবেন: পর্ব ৫৮
- Separator keyসেপারেটর কি
- internal node-এর যে key দুটি সন্তানের মাঝে সীমারেখা টানে: বাঁ subtree-র সব key তার চেয়ে ছোট, ডান subtree-র সব key বড় (B+ tree-তে বড় বা সমান)যেখানে শিখবেন: পর্ব ৩০
- Sequence alignmentসিকোয়েন্স অ্যালাইনমেন্ট
- দুটি sequence-কে একটির নিচে আরেকটি সাজানো, প্রয়োজনে ফাঁক (gap) বসিয়ে, যাতে মিল সর্বোচ্চ বা খরচ সর্বনিম্ন হয়; DNA আর প্রোটিন তুলনার মূল পদ্ধতি।যেখানে শিখবেন: পর্ব ৫৪
- Serializationসিরিয়ালাইজেশন
- মেমরিতে থাকা কোনো ডেটা স্ট্রাকচারকে (যেমন tree) একটি লেখা বা byte-এর সারিতে রূপান্তর করা, যাতে ফাইলে রাখা বা নেটওয়ার্কে পাঠানো যায়; উল্টো কাজটি deserialization.যেখানে শিখবেন: পর্ব ২৬
- Set coverসেট কভার
- একটি universe আর তার কিছু উপসেট দেওয়া; সবচেয়ে কম সংখ্যক উপসেট বাছতে হবে, যাদের মিলনে universe-এর প্রতিটি উপাদান থাকে। NP-hard; greedy প্রায় ln n গুণের মধ্যে উত্তর দেয়।যেখানে শিখবেন: পর্ব ৬৬
- Settled vertexসেটলড ভার্টেক্স
- Dijkstra-তে যে vertex-কে priority queue থেকে বের করে চূড়ান্ত ঘোষণা করা হয়েছে; ওজন ঋণাত্মক না হলে তার dist আর কখনো বদলায় না।যেখানে শিখবেন: পর্ব ৪৩
- Shell sortশেল সর্ট
- বড় gap থেকে শুরু করে ক্রমে ছোট gap-এ insertion sort চালানোর পদ্ধতি, শেষ gap 1; ১৯৫৯ সালে Donald Shell প্রকাশ করেন। in-place, কিন্তু stable নয়।যেখানে শিখবেন: পর্ব ২০
- Shoelace formulaশুলেস ফর্মুলা
- কোণগুলোর কোঅর্ডিনেট থেকে বহুভুজের ক্ষেত্রফল: 2A = Σ (x_i·y_(i+1) − x_(i+1)·y_i); কোণগুলো counter-clockwise হলে যোগফল ধনাত্মক, সময় Θ(n).যেখানে শিখবেন: পর্ব ৬৩
- Shortcuttingশর্টকাটিং
- একটি হাঁটায় আগে দেখা vertex এড়িয়ে সরাসরি পরের নতুন vertex-এ যাওয়া; ত্রিভুজ অসমতা থাকলে এতে মোট দৈর্ঘ্য কখনো বাড়ে না।যেখানে শিখবেন: পর্ব ৬৬
- Shortest pathশর্টেস্ট পাথ
- দুটি vertex-এর মধ্যে সবচেয়ে কম দৈর্ঘ্যের পথ — unweighted গ্রাফে সবচেয়ে কম edge-এর, weighted গ্রাফে edge-এর ওজনের সবচেয়ে কম যোগফলের। এর দৈর্ঘ্যকে লেখা হয় δ(s, v).যেখানে শিখবেন: পর্ব ৪০পর্ব ৪২পর্ব ৪৩
- Shortest path treeশর্টেস্ট পাথ ট্রি
- উৎস s-কে root ধরে প্রতিটি vertex v আর তার par[v]-এর edge নিয়ে তৈরি tree; এতে s থেকে প্রতিটি vertex-এর একটি সবচেয়ে ছোট পথ থাকে। minimum spanning tree থেকে আলাদা।যেখানে শিখবেন: পর্ব ৪৩পর্ব ৪৪পর্ব ৪৫
- Shunting-yard algorithmশান্টিং-ইয়ার্ড অ্যালগরিদম
- Edsger Dijkstra-র (১৯৬১) অ্যালগরিদম, যা একটি operator stack ব্যবহার করে infix expression-কে postfix-এ রূপান্তর করে, precedence আর associativity মেনে, O(n) সময়ে।যেখানে শিখবেন: পর্ব ১৩
- Siblingসিবলিং বা ভাইবোন
- একই parent-এর সন্তানরা একে অপরের sibling.যেখানে শিখবেন: পর্ব ২৬
- Sieve of Eratosthenesসিভ অব ইরাটোস্থেনিস
- 2 থেকে n পর্যন্ত সব সংখ্যা লিখে প্রতিটি মৌলিক p-এর গুণিতক p² থেকে কেটে দেওয়া; যা কাটা পড়ে না সেগুলোই মৌলিক। সময় O(n log log n), জায়গা O(n).যেখানে শিখবেন: পর্ব ৬২পর্ব ৬৮পর্ব ৬৯
- Sift-down (bubble-down, sink, heapify)সিফট-ডাউন
- কোনো উপাদানকে তার উপযুক্ত সন্তানের (min-heap-এ ছোটটির) সাথে বারবার জায়গা বদল করে নিচে নামানো, যতক্ষণ না নিয়ম ঠিক হয়; extract, build-heap আর heapsort-এ লাগে, সময় O(log n).যেখানে শিখবেন: পর্ব ২৩
- Sift-up (bubble-up, swim)সিফট-আপ
- নতুন উপাদানকে অ্যারের শেষে বসিয়ে যতক্ষণ parent নিয়ম ভাঙে ততক্ষণ parent-এর সাথে জায়গা বদল করে ওপরে তোলা; insert আর decrease-key-তে লাগে, সময় O(log n).যেখানে শিখবেন: পর্ব ২৩
- Simple graphসিম্পল গ্রাফ
- যে গ্রাফে কোনো self-loop বা parallel edge নেই; n টি vertex-এর simple undirected গ্রাফে edge সর্বোচ্চ n(n − 1)/2 টি।যেখানে শিখবেন: পর্ব ৩৯
- Simple pathসিম্পল পাথ
- যে walk-এ কোনো vertex একবারের বেশি আসে না; যেকোনো walk থেকে মাঝের ঘোরাঘুরি কেটে একটি simple path পাওয়া যায়।যেখানে শিখবেন: পর্ব ৩৯পর্ব ৪৪পর্ব ৫২
- Simple polygonসিম্পল পলিগন
- যে বহুভুজের বাহুগুলো শুধু পাশাপাশি কোণে মেলে, অন্য কোথাও একে অপরকে কাটে না; convex হওয়া জরুরি নয়।যেখানে শিখবেন: পর্ব ৬৩
- Simple uniform hashingসিম্পল ইউনিফর্ম হ্যাশিং
- বিশ্লেষণের একটি অনুমান: প্রতিটি key অন্যদের থেকে স্বাধীনভাবে m টি bucket-এর যেকোনোটিতে সমান সম্ভাবনায় (1/m) পড়ে।যেখানে শিখবেন: পর্ব ৩২পর্ব ৭০
- Simulated annealingসিমুলেটেড অ্যানিলিং
- যে local search মাঝে মাঝে খারাপ move-ও নেয়, সম্ভাবনা e^(−Δ/T) — T হলো ‘তাপমাত্রা’, যা ধীরে ধীরে কমানো হয়। শুরুতে বেশি ঘোরাঘুরি করে local optimum থেকে বেরোয়, শেষে hill climbing-এর মতো স্থির হয়যেখানে শিখবেন: পর্ব ৬৫
- Single-linkage clusteringসিঙ্গেল লিংকেজ ক্লাস্টারিং
- বারবার সবচেয়ে কাছের দুই দল জোড়া দিয়ে ডেটা ভাগ করা, যেখানে দুই দলের দূরত্ব = তাদের সবচেয়ে কাছের দুই বিন্দুর দূরত্ব; এটি আসলে k টি component-এ থামানো Kruskal.যেখানে শিখবেন: পর্ব ৪৫
- Single-source shortest path (SSSP)সিঙ্গল-সোর্স শর্টেস্ট পাথ
- একটি নির্দিষ্ট উৎস vertex থেকে গ্রাফের প্রতিটি vertex-এর সবচেয়ে ছোট পথের দূরত্ব বের করার সমস্যা।যেখানে শিখবেন: পর্ব ৪৩পর্ব ৪৪
- Singly linked listসিঙ্গলি লিংকড লিস্ট
- যে linked list-এ প্রতিটি node শুধু পরের node-এর ঠিকানা রাখে; তাই শুধু সামনের দিকে হাঁটা যায়।যেখানে শিখবেন: পর্ব ১২পর্ব ৭০
- Sink (t)সিংক
- flow network-এর যে vertex-এ প্রবাহ শেষ হয়; সর্বোচ্চ প্রবাহ মানে t-তে সবচেয়ে বেশি পৌঁছানো।যেখানে শিখবেন: পর্ব ৪৭
- Sink (vertex with out-degree 0)সিংক
- যে vertex থেকে কোনো edge বের হয় না (out-degree শূন্য) — কারও পূর্বশর্ত নয়, তাই topological order-এর শেষে বসতে পারে।যেখানে শিখবেন: পর্ব ৪২
- SipHashসিপহ্যাশ
- Aumasson ও Bernstein-এর (২০১২) একটি দ্রুত hash function, যা একটি গোপন 128-bit key নেয়; key না জেনে collision বানানো কার্যত অসম্ভব, তাই hash flooding ঠেকায়। Python, Rust-সহ অনেক ভাষার ডিফল্ট।যেখানে শিখবেন: পর্ব ৩২
- Skip listস্কিপ লিস্ট
- কয়েক তলার সাজানো linked list, যেখানে প্রতিটি উপাদান এলোমেলোভাবে কয়েকটি ওপরের তলায়ও থাকে; ওপরের তলা দিয়ে লাফিয়ে খোঁজা যায় বলে search, insert, delete প্রত্যাশিত O(log n). William Pugh-এর উদ্ভাবন (১৯৮৯ সালে technical report, ১৯৯০ সালে CACM-এ প্রবন্ধ)।যেখানে শিখবেন: পর্ব ২৯পর্ব ৩৮পর্ব ৬১
- Slack (float)স্ল্যাক, ফ্লোট
- একটি কাজ পুরো প্রজেক্ট দেরি না করিয়ে কত সময় পিছিয়ে শুরু হতে পারে: সবচেয়ে দেরিতে শুরুর সময় − সবচেয়ে আগে শুরুর সময়। critical path-এর কাজের slack শূন্য।যেখানে শিখবেন: পর্ব ৪২
- Sliding windowস্লাইডিং উইন্ডো
- অ্যারে বা string-এর একটি টানা অংশ a[L..R], যার ডান প্রান্তে উপাদান ঢোকে আর বাঁ প্রান্ত থেকে বের হয়; পুরো অংশ নতুন করে না গুনে শুধু হালনাগাদ করা হয়। দৈর্ঘ্য স্থির (fixed) বা পরিবর্তনশীল (variable) হতে পারে।যেখানে শিখবেন: পর্ব ১৪পর্ব ১৬পর্ব ১৭
- Small string optimization (SSO)স্মল স্ট্রিং অপটিমাইজেশন
- ছোট string-কে আলাদা heap মেমরি না নিয়ে std::string বস্তুর ভেতরেই রেখে দেওয়ার কৌশল; libstdc++-এ ১৫ char পর্যন্ত এভাবে থাকে।যেখানে শিখবেন: পর্ব ১১
- Small-to-large mergingস্মল-টু-লার্জ
- দুটি সংগ্রহ জোড়ার সময় সবসময় ছোটটির উপাদান বড়টিতে সরানো; প্রতিটি উপাদান সর্বোচ্চ log₂ n বার সরে, কারণ প্রতিবার তার সংগ্রহ অন্তত দ্বিগুণ হয়।যেখানে শিখবেন: পর্ব ৩৩পর্ব ৬৭
- Smallest prime factor (spf)স্মলেস্ট প্রাইম ফ্যাক্টর
- একটি সংখ্যার সবচেয়ে ছোট মৌলিক উৎপাদক; spf[12] = 2, spf[35] = 5, মৌলিক p-এর spf p নিজে। sieve দিয়ে spf টেবিল বানালে যেকোনো x ≤ n-কে O(log x)-এ উৎপাদকে ভাঙা যায়।যেখানে শিখবেন: পর্ব ৬২
- Smart pointerস্মার্ট পয়েন্টার
- C++-এর এমন বস্তু, যা একটি pointer-এর মতো আচরণ করে কিন্তু নিজের দায়িত্ব শেষে মেমরি নিজেই ফেরত দেয় — যেমন std::unique_ptr (একক মালিক) আর std::shared_ptr (ভাগাভাগি মালিকানা).যেখানে শিখবেন: পর্ব ১২
- Sort keyসর্ট কি
- রেকর্ডের যে অংশ দেখে সাজানো হয় (যেমন ছাত্রের নম্বর); রেকর্ডের বাকি অংশ key-এর সাথে সাথে সরে।যেখানে শিখবেন: পর্ব ২০
- Sorted set (Redis ZSET)সর্টেড সেট
- Redis-এর একটি ডেটা টাইপ: প্রতিটি সদস্যের সাথে একটি score, আর সদস্যরা score অনুযায়ী সাজানো থাকে; লিডারবোর্ড বা সময়ভিত্তিক তালিকার জন্য জনপ্রিয়। বড় sorted set-এর ভেতরে একটি skip list আর একটি hash table থাকে।যেখানে শিখবেন: পর্ব ৩৮
- Sortingসর্টিং
- কিছু উপাদানকে একটি নির্দিষ্ট ক্রমে (যেমন ছোট থেকে বড়) সাজানো; আউটপুট হতে হয় ইনপুটেরই একটি সাজানো পুনর্বিন্যাস।যেখানে শিখবেন: পর্ব ২০পর্ব ৬৭
- SOS DP (sum over subsets)এসওএস ডিপি
- প্রতিটি mask-এর জন্য তার সব submask-এর মানের যোগফল এক এক bit ধরে বের করার DP; সময় O(n·2ⁿ), সরাসরি সব submask ঘোরার O(3ⁿ)-এর বদলে।যেখানে শিখবেন: পর্ব ৫৫
- Source (s)সোর্স
- flow network-এর যে vertex থেকে প্রবাহ শুরু হয়; এখানে conservation-এর শর্ত খাটে না।যেখানে শিখবেন: পর্ব ৪৭
- Source (vertex with in-degree 0)সোর্স
- যে vertex-এ কোনো edge ঢোকে না (in-degree শূন্য) — যার কোনো পূর্বশর্ত নেই, তাই topological order-এ প্রথমে বসতে পারে। প্রতিটি অশূন্য DAG-এ অন্তত একটি থাকে।যেখানে শিখবেন: পর্ব ৪২
- Source coding theoremসোর্স কোডিং থিওরেম
- Shannon-এর (১৯৪৮) ফল: lossless সংকোচনে গড়ে প্রতি অক্ষরে entropy H-এর কম বিট সম্ভব নয়, আর H-এর যত কাছে চাই তত কাছে যাওয়া যায়।যেখানে শিখবেন: পর্ব ৫১
- Space complexityস্পেস কমপ্লেক্সিটি
- অ্যালগরিদম চলার সময় সর্বোচ্চ কতটুকু মেমরি লাগে, ইনপুটের আকারের ফাংশন হিসেবে; তুলনায় সাধারণত ইনপুট বাদে বাড়তি জায়গা (auxiliary space) ধরা হয়।যেখানে শিখবেন: পর্ব ০১পর্ব ০৪পর্ব ০৫
- Spanning treeস্প্যানিং ট্রি
- একটি connected গ্রাফের edge-এর এমন উপসেট, যা সব vertex-কে জোড়ে আর কোনো cycle বানায় না; V টি vertex-এ ঠিক V − 1 টি edge.যেখানে শিখবেন: পর্ব ৪৫
- Sparse graphস্পার্স গ্রাফ
- যে গ্রাফে edge n²-এর তুলনায় অনেক কম, সাধারণত O(n) বা O(n log n); রাস্তা, বন্ধুত্ব আর ওয়েবের মতো বাস্তবের বেশিরভাগ গ্রাফ এমন।যেখানে শিখবেন: পর্ব ৩৯পর্ব ৪৩পর্ব ৪৪
- Sparse tableস্পার্স টেবিল
- প্রতিটি i আর প্রতিটি 2-এর ঘাত দৈর্ঘ্যের অংশ a[i..i + 2^j − 1]-এর উত্তর আগে থেকে রাখা টেবিল; O(n log n) প্রস্তুতির পর min বা max-এর মতো idempotent প্রশ্ন O(1)-এ, কিন্তু অ্যারে বদলালে চলে না।যেখানে শিখবেন: পর্ব ৩৪পর্ব ৩৭পর্ব ৫৯
- Spatial localityস্প্যাশিয়াল লোকালিটি
- একটি ঠিকানা পড়ার পর তার কাছাকাছি ঠিকানা শিগগির পড়ার প্রবণতা; array পরপর ঘুরলে এটি সর্বোচ্চ হয়, তাই cache সবচেয়ে ভালো কাজ করে।যেখানে শিখবেন: পর্ব ১০পর্ব ৩২
- Specificationস্পেসিফিকেশন
- অ্যালগরিদমের কাছে কী চাওয়া হচ্ছে তার নিখুঁত বিবরণ — কোন ইনপুট বৈধ (precondition) আর আউটপুট কেমন হতে হবে (postcondition) তার শর্ত।যেখানে শিখবেন: পর্ব ০৩
- SPFA (Shortest Path Faster Algorithm)এসপিএফএ
- Bellman-Ford-এর queue-ভিত্তিক রূপ: শুধু যাদের dist কমেছে সেই vertex-গুলোর edge আবার দেখে। বাস্তবে প্রায়ই দ্রুত, কিন্তু worst case এখনো O(VE).যেখানে শিখবেন: পর্ব ৪৪
- Splay treeস্প্লে ট্রি
- Sleator ও Tarjan-এর (১৯৮৫) self-adjusting BST: যে node-এ প্রবেশ করা হয় তাকে rotation দিয়ে root-এ তুলে আনা হয়। কোনো ভারসাম্যের নিয়ম নেই, তবু প্রতিটি কাজ amortized O(log n), আর বারবার চাওয়া key দ্রুত পাওয়া যায়।যেখানে শিখবেন: পর্ব ২৯পর্ব ৩৮পর্ব ৬০
- Split (treap)স্প্লিট
- একটি treap-কে একটি key k দিয়ে দুই ভাগ করা: একটিতে k-এর চেয়ে ছোট সব key, অন্যটিতে বাকিগুলো। root থেকে একটি পথ ধরে চলে, তাই প্রত্যাশিত O(log n).যেখানে শিখবেন: পর্ব ৩৮
- Spoolingস্পুলিং
- ধীর যন্ত্রের (যেমন প্রিন্টার) কাজগুলো একটি queue-তে জমিয়ে রেখে একে একে পাঠানো, যাতে প্রোগ্রামগুলোকে যন্ত্রের জন্য অপেক্ষা করতে না হয়।যেখানে শিখবেন: পর্ব ১৪
- Spurious hitস্পুরিয়াস হিট
- Rabin-Karp-এ যে জানালার hash pattern-এর hash-এর সমান, অথচ লেখা আলাদা — অর্থাৎ hash-এর collision থেকে আসা ভুয়া মিল। অক্ষর ধরে যাচাই করলে এটি ধরা পড়ে।যেখানে শিখবেন: পর্ব ৫৮
- Sqrt decompositionস্কয়ার রুট ডিকম্পোজিশন
- অ্যারেকে প্রায় √n আকারের ব্লকে ভাগ করে প্রতিটি ব্লকের সারাংশ রাখার কৌশল; রেঞ্জের প্রশ্ন আর আপডেট সাধারণত O(√n) সময়ে হয়।যেখানে শিখবেন: পর্ব ৩৪পর্ব ৩৫পর্ব ৩৭
- Stable sortস্টেবল সর্ট
- যে সর্টিংয়ে সমান key-এর উপাদানগুলোর আগের আপেক্ষিক ক্রম বদলায় না; Python-এর sorted আর C++-এর std::stable_sort stable, std::sort নয়।যেখানে শিখবেন: পর্ব ১৫পর্ব ২০পর্ব ২১
- Stackস্ট্যাক
- এমন ডেটা স্ট্রাকচার যেখানে শেষে যা ঢোকে সেটিই আগে বের হয় (LIFO) — থালার স্তূপের মতো; push দিয়ে ওপরে রাখা, pop দিয়ে ওপর থেকে নেওয়া।যেখানে শিখবেন: পর্ব ০৭পর্ব ১৩পর্ব ১৪
- Stack frameস্ট্যাক ফ্রেম
- একটি ফাংশন-কলের জন্য call stack-এ রাখা জায়গা — এতে থাকে parameter, local ভ্যারিয়েবল আর কাজ শেষে কোথায় ফিরতে হবে তার ঠিকানা (return address).যেখানে শিখবেন: পর্ব ০৭পর্ব ১৩
- Stack machineস্ট্যাক মেশিন
- যে কম্পিউটার বা virtual machine-এর নির্দেশগুলো register-এর বদলে একটি operand stack থেকে মান নেয় আর ফল সেখানেই রাখে — যেমন JVM, CPython-এর bytecode আর WebAssembly.যেখানে শিখবেন: পর্ব ১৩
- Stack overflowস্ট্যাক ওভারফ্লো
- Call stack-এর নির্দিষ্ট জায়গা ফুরিয়ে গেলে যে ত্রুটি হয় — সাধারণত খুব গভীর বা অসীম recursion থেকে। C++-এ প্রোগ্রাম crash করে, Python-এ RecursionError আসে।যেখানে শিখবেন: পর্ব ০৫পর্ব ০৭পর্ব ১২
- Stack underflowস্ট্যাক আন্ডারফ্লো
- খালি stack থেকে pop বা top করার চেষ্টা — যা নেই তা নেওয়ার ভুল। C++-এ এটি undefined behavior, Python-এ IndexError দেয়।যেখানে শিখবেন: পর্ব ১৩
- State spaceস্টেট স্পেস
- কোনো ধাঁধা বা প্রক্রিয়ার সব সম্ভাব্য অবস্থার গ্রাফ: প্রতিটি অবস্থা একটি vertex, আর এক চালে এক অবস্থা থেকে অন্যটিতে যাওয়া একটি edge.যেখানে শিখবেন: পর্ব ৩৯পর্ব ৪০
- State-space searchস্টেট-স্পেস সার্চ
- vertex-কে শুধু জায়গা নয়, (জায়গা, অতিরিক্ত অবস্থা) জোড়া হিসেবে ধরে নতুন গ্রাফে খোঁজা — যেমন (শহর, ব্যবহৃত কুপন)।যেখানে শিখবেন: পর্ব ৪৩পর্ব ৭২
- State-space treeস্টেট-স্পেস ট্রি
- backtracking আর branch and bound-এর অদৃশ্য গাছ: root হলো খালি আংশিক সমাধান, প্রতিটি সন্তান একটি নতুন সিদ্ধান্ত যোগ করে, আর leaf হলো পূর্ণ সমাধান বা অচল অবস্থা। Backtracking সাধারণত এতে DFS চালায়; branch and bound FIFO বা best-first ক্রমেও খোঁজে।যেখানে শিখবেন: পর্ব ৫৬পর্ব ৫৭
- Static arrayস্ট্যাটিক অ্যারে
- যে array-এর আকার তৈরির সময়েই ঠিক হয়ে যায় এবং পরে বাড়ানো বা কমানো যায় না; যেমন C-র int a[10] বা C++-এর std::array.যেখানে শিখবেন: পর্ব ১০
- std::string_viewস্ট্রিং ভিউ
- C++17-এর একটি হালকা বস্তু, যা কপি না করে অন্য string-এর একটি অংশের দিকে শুধু “তাকিয়ে” থাকে (শুরুর ঠিকানা আর দৈর্ঘ্য); তাই substring নিতে O(1).যেখানে শিখবেন: পর্ব ১১
- Steiner treeস্টাইনার ট্রি
- নির্দিষ্ট কিছু vertex-কে সবচেয়ে কম খরচে জোড়া, যেখানে বাড়তি সংযোগ-বিন্দু (Steiner point) ব্যবহারের অনুমতি আছে; NP-hard, আর MST এর একটি ২-approximation দেয়।যেখানে শিখবেন: পর্ব ৪৫পর্ব ৬৫
- Stirling's approximationস্টার্লিংয়ের আসন্ন মান
- n! ≈ √(2πn)·(n/e)^n সূত্র। এখান থেকে পাওয়া যায় log n! = Θ(n log n), যা তুলনা-ভিত্তিক সর্টের নিম্নসীমার মূল হিসাবযেখানে শিখবেন: পর্ব ০৬পর্ব ২৪
- STL (Standard Template Library)এস-টি-এল
- C++-এর standard library-র অংশ, যেখানে vector, map, set, priority_queue-এর মতো তৈরি data structure আর sort, lower_bound-এর মতো algorithm আছে।যেখানে শিখবেন: পর্ব ০১পর্ব ১৫
- Stock span problemস্টক স্প্যান প্রবলেম
- প্রতিদিনের শেয়ার-দামের জন্য বের করা: আজসহ পরপর কতদিন ধরে দাম আজকের দামের সমান বা কম ছিল; monotonic stack দিয়ে O(n) সময়ে হয়।যেখানে শিখবেন: পর্ব ১৩
- Strassen's algorithmস্ট্রাসেন অ্যালগরিদম
- দুটি n×n matrix গুণের divide and conquer পদ্ধতি, যা আটটির বদলে সাতটি অর্ধেক-আকারের matrix গুণ করে; সময় Θ(n^(log₂ 7)) ≈ Θ(n^2.81), Volker Strassen ১৯৬৯ সালে প্রকাশ করেন।যেখানে শিখবেন: পর্ব ০৯পর্ব ৪৯
- Stress testingস্ট্রেস টেস্টিং
- এলোমেলো ছোট ইনপুট বানিয়ে বারবার দ্রুত সমাধান আর brute force দুটিই চালিয়ে উত্তর মেলানো, যতক্ষণ না কোনো অমিল (বাগ) ধরা পড়ে।যেখানে শিখবেন: পর্ব ০১পর্ব ০২পর্ব ০৩
- Strict weak orderingস্ট্রিক্ট উইক অর্ডারিং
- sort-এর comparator-কে যে নিয়ম মানতে হয়: কেউ নিজের আগে বসে না (comp(a, a) false), a আগে হলে b আগে নয়, আগে-পরে সম্পর্ক transitive, আর “সমান” সম্পর্কও transitive. <= এই নিয়ম ভাঙে, < মানেযেখানে শিখবেন: পর্ব ২৫পর্ব ২৭
- Stringস্ট্রিং
- অক্ষরের (character) একটি ক্রমিক সারি, যেমন একটি নাম বা একটি বাক্য। মেমরিতে এটি মূলত অক্ষরের একটি অ্যারে, তাই i-তম অক্ষর O(1) সময়ে পড়া যায়।যেখানে শিখবেন: পর্ব ১১
- String builderস্ট্রিং বিল্ডার
- টুকরোগুলো আগে একটি বাড়তে-পারা বাফারে জমিয়ে শেষে একবারে string বানানোর কৌশল — Python-এ list আর join, Java-য় StringBuilder, C++-এ reserve বা ostringstream.যেখানে শিখবেন: পর্ব ১১
- String concatenationস্ট্রিং কনক্যাটেনেশন
- দুটি string জোড়া দিয়ে একটি বানানো, যেমন "ab" + "cd" = "abcd". নতুন string বানাতে হলে দুটির সব অক্ষর কপি হয়, তাই খরচ দুটির মোট দৈর্ঘ্যের সমান।যেখানে শিখবেন: পর্ব ১১
- String hashingস্ট্রিং হ্যাশিং
- একটি string-কে একটি সংখ্যায় রূপান্তর (যেমন অক্ষরগুলোকে একটি base-এর অঙ্ক ধরে, একটি বড় mod-এ), যাতে দুটি string বা substring-এর তুলনা প্রায় O(1)-এ করা যায়; ভিন্ন string-এর একই hash (collision) সম্ভব।যেখানে শিখবেন: পর্ব ১১
- Strong inductionস্ট্রং ইন্ডাকশন
- শক্তিশালী আরোহ: k+1-এর জন্য প্রমাণ করতে শুধু k নয়, ০ থেকে k পর্যন্ত সব মানে দাবিটি সত্য বলে ধরে নেওয়া যায়; রিকার্শন যখন n/2-এর মতো ছোট যেকোনো মানকে ডাকে তখন কাজে লাগে।যেখানে শিখবেন: পর্ব ০৩পর্ব ২১পর্ব ২৬
- Strongly connectedস্ট্রংলি কানেক্টেড
- যে directed গ্রাফে প্রতিটি জোড়া u, v-এর জন্য u থেকে v আর v থেকে u দুই দিকেই path আছে; সবচেয়ে বড় এমন অংশকে SCC বলে।যেখানে শিখবেন: পর্ব ৩৯পর্ব ৪৬
- Strongly connected component (SCC)স্ট্রংলি কানেক্টেড কম্পোনেন্ট
- Directed গ্রাফের এমন সবচেয়ে বড় vertex-এর দল, যার যেকোনো দুজনের মধ্যে দুই দিকেই পথ আছে; Tarjan বা Kosaraju-র পদ্ধতিতে DFS দিয়ে Θ(V + E)-এ বের হয়।যেখানে শিখবেন: পর্ব ৪১পর্ব ৪৬
- Subarrayসাবঅ্যারে
- অ্যারের পাশাপাশি থাকা উপাদানের একটি টানা অংশ a[L..R]; n উপাদানের অ্যারেতে খালি নয় এমন subarray আছে n(n + 1)/2 টি। মাঝখান থেকে বাদ দিয়ে বেছে নেওয়া অংশ subarray নয়, subsequence.যেখানে শিখবেন: পর্ব ১৬পর্ব ১৭পর্ব ১৯
- Submaskসাবমাস্ক
- একটি mask-এর এমন mask, যার প্রতিটি চালু bit মূল mask-এও চালু — অর্থাৎ একটি উপসেট। সব mask-এর সব submask মিলে 3ⁿ টি জোড়া।যেখানে শিখবেন: পর্ব ৫৫
- Subproblemসাবপ্রবলেম
- মূল সমস্যারই একটি ছোট রূপ, যার উত্তর থেকে বড় সমস্যার উত্তর তৈরি করা যায়; যেমন merge sort-এ অ্যারের এক অর্ধেক সাজানো।যেখানে শিখবেন: পর্ব ৪৯
- Subsequenceসাবসিকোয়েন্স
- একটি ক্রম থেকে কিছু উপাদান বাদ দিয়ে, বাকিদের আগের ক্রম না বদলে যা পাওয়া যায়; পাশাপাশি থাকার দরকার নেই — যেমন 3 1 4 1 5-এর একটি subsequence 3 4 5.যেখানে শিখবেন: পর্ব ৫৩পর্ব ৫৪
- Subset sumসাবসেট সাম
- কয়েকটি ধনাত্মক পূর্ণসংখ্যার কোনো উপসেটের যোগফল ঠিক একটি লক্ষ্য S হতে পারে কি না, সেই প্রশ্ন। boolean DP-তে O(n·S), আর সাধারণভাবে NP-complete.যেখানে শিখবেন: পর্ব ৫৩পর্ব ৫৬পর্ব ৬৪
- Substitution methodসাবস্টিটিউশন মেথড
- Recurrence-এর সমাধান আগে অনুমান করা, তারপর গাণিতিক induction দিয়ে প্রমাণ করা যে অনুমানটি সব n-এর জন্য খাটে।যেখানে শিখবেন: পর্ব ০৮পর্ব ০৯পর্ব ৭০
- Substringসাবস্ট্রিং
- একটি string-এর পাশাপাশি থাকা অক্ষরের টানা অংশ — যেমন "pwwkew"-এর "wke" অংশটি। মাঝের অক্ষর বাদ দিয়ে বানানো "pwke" substring নয়, subsequence.যেখানে শিখবেন: পর্ব ১১পর্ব ১৬পর্ব ৫৪
- Subtreeসাবট্রি
- tree-র কোনো একটি node আর তার নিচের সব বংশধর মিলে যে ছোট tree হয়; binary tree-তে প্রতিটি node-এর একটি বাঁ আর একটি ডান subtree থাকে (খালিও হতে পারে), আর trie-র মতো tree-তে যতগুলো সন্তান ততগুলো subtree.যেখানে শিখবেন: পর্ব ২৬পর্ব ২৭পর্ব ২৮
- Suffixসাফিক্স
- একটি string-এর কোনো একটি অবস্থান থেকে শেষ পর্যন্ত টানা অংশ; যেমন banana-র suffix হলো banana, anana, nana, ana, na আর a. দৈর্ঘ্য n-এর string-এ খালি নয় এমন suffix ঠিক n টি।যেখানে শিখবেন: পর্ব ৫৯
- Suffix arrayসাফিক্স অ্যারে
- একটি লেখার সব suffix-এর শুরুর index, suffix-গুলোর lexicographic ক্রমে সাজানো (Manber ও Myers, ১৯৯০) — suffix tree-র চেয়ে অনেক কম জায়গায় প্রায় একই কাজ করে।যেখানে শিখবেন: পর্ব ৩১পর্ব ৫৪পর্ব ৫৮
- Suffix treeসাফিক্স ট্রি
- suffix trie-র একা-সন্তানের শিকল জুড়ে বানানো compressed রূপ — দৈর্ঘ্য n-এর লেখায় O(n) node, আর O(n) সময়ে বানানো যায় (Weiner ১৯৭৩, Ukkonen ১৯৯৫).যেখানে শিখবেন: পর্ব ৩১পর্ব ৫৯
- Suffix trieসাফিক্স ট্রাই
- একটি লেখার সব suffix ঢোকানো trie; যেকোনো substring কোনো suffix-এর prefix, তাই দৈর্ঘ্য m-এর pattern খোঁজা O(m). কিন্তু দৈর্ঘ্য n-এর লেখায় worst case Θ(n²) node.যেখানে শিখবেন: পর্ব ৩১পর্ব ৫৯
- Sum ruleসাম রুল
- O(f) + O(g) = O(max(f, g)); পরপর চলা দুটি অংশের মোট সময়ে বড় অংশটিই টেকেযেখানে শিখবেন: পর্ব ০৪
- Summation (Σ)সামেশন
- অনেকগুলো পদের যোগফল লেখার সংক্ষিপ্ত চিহ্ন। Σᵢ₌₁^n f(i) মানে i = 1 থেকে n পর্যন্ত প্রতিটি f(i) যোগ করা; লুপ কতবার চলে তা গোনার মূল হাতিয়ারযেখানে শিখবেন: পর্ব ০৬পর্ব ২৩
- Super sourceসুপার সোর্স
- একটি নকল vertex, যার থেকে প্রতিটি আসল উৎসে 0-ওজনের edge দেওয়া হয়; এতে বহু-উৎসের সমস্যা এক-উৎসের সমস্যায় বদলে যায়।যেখানে শিখবেন: পর্ব ৪৩
- Swapসোয়াপ
- দুটি ঘরের মান পরস্পরের সাথে বদলে দেওয়া; সাধারণত একটি অস্থায়ী ভ্যারিয়েবল দিয়ে তিনটি লেখায় হয়।যেখানে শিখবেন: পর্ব ২০
- Sweep lineসুইপ লাইন
- সময় বা অক্ষ বরাবর বাঁ থেকে ডানে একটি কাল্পনিক রেখা টেনে, শুধু ঘটনার বিন্দুগুলোতে (শুরু, শেষ) হিসাব আপডেট করার কৌশল।যেখানে শিখবেন: পর্ব ৫০পর্ব ৬৩
- Symmetric treeসিমেট্রিক ট্রি
- যে binary tree-র বাঁ অর্ধেক ডান অর্ধেকের আয়নার প্রতিবিম্ব — আকার আর মান দুটোই।যেখানে শিখবেন: পর্ব ২৬
T
- Tabu searchট্যাবু সার্চ
- যে local search সাম্প্রতিক move-গুলো একটি তালিকায় (tabu list) রেখে কিছুক্ষণ সেগুলোতে ফিরে যাওয়া নিষেধ করে, যাতে একই জায়গায় ঘুরপাক না খায় আর local optimum ছেড়ে এগোতে পারেযেখানে শিখবেন: পর্ব ৬৫
- Tabulationট্যাবুলেশন
- DP-র লুপভিত্তিক রূপ: সবচেয়ে ছোট উপসমস্যা থেকে শুরু করে একটি টেবিল এমন ক্রমে ভরা, যাতে প্রতিটি ঘর ভরার সময় তার দরকারি ঘরগুলো আগেই ভরা থাকে।যেখানে শিখবেন: পর্ব ৫২পর্ব ৫৪পর্ব ৭১
- Tag compositionট্যাগ কম্পোজিশন
- একই node-এ পরপর আসা দুটি lazy tag-কে একটি tag-এ মেলানো, যাতে ফল দুটিকে ক্রমানুসারে প্রয়োগ করার সমান হয়; ক্রম গুরুত্বপূর্ণ, যেমন add আর assign-এ নতুন assign পুরোনো add মুছে দেয়।যেখানে শিখবেন: পর্ব ৩৫
- Tail call optimizationটেইল কল অপটিমাইজেশন
- শেষ কাজ হিসেবে ডাকা ফাংশনের জন্য নতুন frame না বানিয়ে পুরোনোটিই আবার ব্যবহার করা; ফলে tail recursion লুপের মতো O(1) stack-এ চলে। C++ compiler optimization চালু থাকলে প্রায়ই করে, কিন্তু standard-এ এর নিশ্চয়তা নেই; Python করে না।যেখানে শিখবেন: পর্ব ০৭পর্ব ২২
- Tail recursionটেইল রিকার্শন
- যে রিকার্শনে নিজেকে ডাকাই ফাংশনের একেবারে শেষ কাজ — ফেরত আসা মান নিয়ে আর কোনো হিসাব বাকি থাকে না।যেখানে শিখবেন: পর্ব ০৭পর্ব ৬৮
- Tarjan's SCC algorithmটারজানের SCC অ্যালগরিদম
- একটিমাত্র DFS-এ SCC খোঁজার পদ্ধতি (Robert Tarjan, ১৯৭২): প্রতিটি vertex-এর disc আর low মান আর একটি stack রাখা হয়; low[u] == disc[u] হলে stack থেকে u পর্যন্ত সবাই একটি SCC.
- Telescoping sumটেলিস্কোপিং সাম
- যে যোগফলে পাশাপাশি পদগুলো কাটাকাটি হয়ে শুধু প্রথম আর শেষ পদ থাকে, যেমন (Φ1 − Φ0) + (Φ2 − Φ1) + … = Φn − Φ0. দূরবীনের নলের মতো ভাঁজ হয়ে যায় বলে এই নাম।যেখানে শিখবেন: পর্ব ৬০
- Terminationটার্মিনেশন
- অ্যালগরিদম সসীম সংখ্যক ধাপে থেমে যাওয়া; লুপ বা রিকার্শন যে চিরকাল চলবে না তার প্রমাণ।যেখানে শিখবেন: পর্ব ০৩পর্ব ০৭
- Ternary searchটার্নারি সার্চ
- পরিসরকে দুটি বিন্দু দিয়ে তিন ভাগ করে প্রতিবার এক ভাগ বাদ দেওয়া; সাজানো অ্যারেতে খোঁজায় binary search-এর চেয়ে বেশি তুলনা লাগে, তবে একটি চূড়াওয়ালা (unimodal) ফাংশনের সর্বোচ্চ বা সর্বনিম্ন বিন্দু খুঁজতে কাজে লাগে।যেখানে শিখবেন: পর্ব ১৮পর্ব ১৯
- Ternary search tree (TST)টার্নারি সার্চ ট্রি
- trie আর BST-র মিশ্রণ (Bentley ও Sedgewick, ১৯৯৭): প্রতিটি node-এ একটি অক্ষর আর তিনটি সন্তান — ছোট, সমান, বড়। array-trie-এর চেয়ে অনেক কম মেমরিতে prefix-খোঁজা চলে।যেখানে শিখবেন: পর্ব ৩১
- Think aloudথিংক অ্যালাউড
- সমস্যা সমাধানের সময় মনের ভাবনা জোরে জোরে বলে যাওয়া, যাতে পরীক্ষক আপনার যুক্তির পথ দেখতে পান। ভুল হলেও পথ দেখে তিনি আংশিক কৃতিত্ব দিতে পারেন।যেখানে শিখবেন: পর্ব ৭০পর্ব ৭১
- Thrashing (resize thrashing)থ্র্যাশিং
- সীমানার কাছে পর্যায়ক্রমে কাজ করলে একটি ডেটা স্ট্রাকচার বারবার বড়-ছোট হয়ে প্রতিটি কাজে বিশাল খরচ করা, যেমন অর্ধেক ভরা হলেই ছোট করা dynamic array-এ push-pop-push-pop.যেখানে শিখবেন: পর্ব ৬০
- Threaded binary treeথ্রেডেড বাইনারি ট্রি
- যে binary tree-তে খালি left/right pointer-এর জায়গায় inorder-এর আগের বা পরের node-এর দিকে সুতা (thread) রাখা হয়, যাতে stack ছাড়াই traversal করা যায়।যেখানে শিখবেন: পর্ব ২৬
- Tie-breakingটাই-ব্রেকিং
- মুখ্য key সমান হলে কে আগে বসবে, তা ঠিক করার জন্য দ্বিতীয় (বা পরের) একটি key ব্যবহার করা — যেমন নম্বর সমান হলে রোল ছোট যার, সে আগেযেখানে শিখবেন: পর্ব ২৫পর্ব ৫১
- Tight flag (digit DP)টাইট ফ্ল্যাগ
- digit DP-র state-এর একটি অংশ: এ পর্যন্ত বসানো অঙ্কগুলো কি সীমা N-এর শুরুর অঙ্কের সাথে হুবহু মেলে; মিললে পরের অঙ্ক N-এর অঙ্কের বেশি হতে পারবে না।যেখানে শিখবেন: পর্ব ৫৫
- Time complexityটাইম কমপ্লেক্সিটি
- ইনপুটের আকারের ফাংশন হিসেবে একটি অ্যালগরিদম কতগুলো মৌলিক ধাপ নেয়, সাধারণত O, Ω বা Θ দিয়ে প্রকাশ করা হয়যেখানে শিখবেন: পর্ব ০১পর্ব ০৪পর্ব ০৬
- Time limitটাইম লিমিট
- একটি টেস্ট ইনপুটে প্রোগ্রাম সর্বোচ্চ যতটুকু সময় চলতে পারে, সাধারণত ১ থেকে ২ সেকেন্ড; পেরোলে online judge রায় দেয় Time Limit Exceeded (TLE).যেখানে শিখবেন: পর্ব ৬৭পর্ব ৭২
- Time Limit Exceeded (TLE)টাইম লিমিট এক্সিডেড
- কোনো টেস্টে প্রোগ্রাম সময়সীমার মধ্যে শেষ হয়নি — সাধারণত অ্যালগরিদমের complexity বেশি, অসীম লুপ, ধীর ইনপুট-আউটপুট বা প্রতিটি টেস্টে বড় অ্যারে নতুন করে পরিষ্কার করার কারণে।যেখানে শিখবেন: পর্ব ৭২
- Timetablingটাইমটেবলিং
- ক্লাস বা পরীক্ষাকে সময়-স্লট আর কক্ষে এমনভাবে বসানো, যাতে কোনো শিক্ষক, ছাত্র বা কক্ষে সংঘাত না হয়। মূল অংশটি graph coloring, তাই সাধারণভাবে NP-hardযেখানে শিখবেন: পর্ব ৬৫
- Time–space trade-offটাইম-স্পেস ট্রেড-অফ
- বেশি মেমরি খরচ করে সময় বাঁচানো, বা বেশি সময় খরচ করে মেমরি বাঁচানোর দরদাম। যেমন আগে থেকে হিসাব করে টেবিলে রাখা।যেখানে শিখবেন: পর্ব ০৫পর্ব ৫৪পর্ব ৭১
- Timsortটিমসর্ট
- ডেটার ভেতরের আগে থেকে সাজানো টুকরো খুঁজে merge sort আর insertion sort মিলিয়ে কাজ করা stable সর্টিং; worst case O(n log n), প্রায়-সাজানো ডেটায় প্রায় O(n). ২০০২ সালে Tim Peters Python-এর জন্য লেখেন।যেখানে শিখবেন: পর্ব ১৫পর্ব ২০পর্ব ২১
- Tombstone (deleted marker)টুম্বস্টোন
- open addressing-এ মোছা ঘরে রাখা বিশেষ চিহ্ন: খোঁজা এটি পার হয়ে এগোয় (শিকল ভাঙে না), আর insert এই ঘর আবার ব্যবহার করতে পারে।যেখানে শিখবেন: পর্ব ৩২
- Toom–Cook multiplicationটুম-কুক মাল্টিপ্লিকেশন
- বড় সংখ্যাকে k ভাগে ভেঙে বহুপদী রাশির মতো কয়েকটি বিন্দুতে মান বের করে 2k−1টি ছোট গুণে গুণফল বের করার পদ্ধতি; Toom-3-এ Θ(n^1.465), আর k = 2 হলে এটিই Karatsuba.যেখানে শিখবেন: পর্ব ৪৯
- Top (peek)টপ বা পিক
- stack-এর সবচেয়ে ওপরের উপাদানটি না সরিয়ে শুধু দেখা; একমাত্র এই উপাদানটিই সরাসরি দেখা যায়।যেখানে শিখবেন: পর্ব ১৩
- Top-down DPটপ-ডাউন ডিপি
- বড় প্রশ্ন থেকে শুরু করে রিকার্শনে প্রয়োজনমতো ছোট প্রশ্নে নামা, আর প্রতিটি উত্তর একটি খাতায় (memo) রেখে দেওয়া; memoization-এর অন্য নাম।যেখানে শিখবেন: পর্ব ৫২
- Top-k problemটপ-কে
- অনেক উপাদানের মধ্যে সবচেয়ে বড় (বা ছোট) k টি বের করা; আকার-k একটি min-heap দিয়ে O(n log k) সময় আর O(k) জায়গায় করা যায়, ডেটা স্রোতের মতো এলেও।যেখানে শিখবেন: পর্ব ২৩পর্ব ২৫পর্ব ৩১
- Topological sortটপোলজিক্যাল সর্ট
- একটি DAG-এর vertex-গুলোকে এমন এক সারিতে সাজানো, যাতে প্রতিটি edge u → v-তে u আগে আসে; O(n + m) সময়ে করা যায়।যেখানে শিখবেন: পর্ব ৩৯পর্ব ৪১পর্ব ৪২
- Total correctnessটোটাল কারেক্টনেস
- পূর্ণ সঠিকতা: partial correctness আর termination একসাথে — প্রতিটি বৈধ ইনপুটে অ্যালগরিদম থামে এবং ঠিক উত্তর দেয়।যেখানে শিখবেন: পর্ব ০৩
- Tower of Hanoiটাওয়ার অব হ্যানয়
- তিনটি খুঁটি আর ছোট-বড় চাকতির ধাঁধা: একবারে একটি চাকতি সরানো যায়, বড় চাকতি ছোটটির ওপর রাখা যায় না; n চাকতিতে সর্বনিম্ন 2^n − 1 চাল লাগে।যেখানে শিখবেন: পর্ব ০৭পর্ব ০৮
- Trace tableট্রেস টেবিল
- হাতে কোড বা অ্যালগরিদম চালানোর সময় খাতায় আঁকা একটি ছক: প্রতিটি সারি একটি ধাপ (যেমন একটি পাস বা একটি iteration), আর প্রতিটি কলাম একটি ভ্যারিয়েবল, অ্যারে বা কিউ-এর তখনকার অবস্থা।যেখানে শিখবেন: পর্ব ৬৮
- Transitive closureট্রানজিটিভ ক্লোজার
- গ্রাফের প্রতিটি জোড়া (i, j)-এর জন্য “i থেকে j-এ কোনো পথ আছে কি না” — এই হ্যাঁ/না উত্তরের টেবিল। Warshall-এর অ্যালগরিদম OR আর AND দিয়ে এটি Θ(V³)-এ বের করে।যেখানে শিখবেন: পর্ব ৪৪
- Transpose (reverse) graphট্রান্সপোজ গ্রাফ
- একই vertex, কিন্তু প্রতিটি edge-এর দিক উল্টানো: মূল গ্রাফে u → v থাকলে এখানে v → u. এর SCC-গুলো মূল গ্রাফের SCC-র হুবহু সমান।যেখানে শিখবেন: পর্ব ৪৬
- Traveling salesman problem (TSP)ট্রাভেলিং সেলসম্যান প্রবলেম
- সব শহর ঠিক একবার ঘুরে শুরুর শহরে ফেরার সবচেয়ে ছোট ট্যুর খোঁজা; NP-hard. দূরত্ব ত্রিভুজ অসমতা মানলে MST দিয়ে ২-approximation পাওয়া যায়।যেখানে শিখবেন: পর্ব ৪৫পর্ব ৫৫পর্ব ৫৬
- Traversalট্রাভার্সাল
- একটি ডেটা স্ট্রাকচারের প্রতিটি উপাদান একটি নির্দিষ্ট ক্রমে একবার করে দেখা বা প্রক্রিয়া করা — যেমন linked list-এ head থেকে null পর্যন্ত হাঁটা।যেখানে শিখবেন: পর্ব ১২
- Treapট্রিপ
- tree আর heap-এর মিশ্রণ: key অনুযায়ী BST, আর প্রতিটি node-এর এলোমেলো priority অনুযায়ী heap. এলোমেলোতার কারণে প্রত্যাশিত উচ্চতা O(log n); split আর merge সহজ বলে কনটেস্টে জনপ্রিয়।যেখানে শিখবেন: পর্ব ২৯পর্ব ৩৮পর্ব ৬১
- Treeট্রি
- root থেকে শাখায় শাখায় ছড়ানো, চক্রহীন, connected একটি non-linear ডেটা স্ট্রাকচার (graph-এর ভাষায়: connected আর চক্রহীন graph); root ছাড়া প্রতিটি node-এর ঠিক একটি parent থাকে, তাই n টি node-এ edge n − 1 টি।যেখানে শিখবেন: পর্ব ০১পর্ব ২৬পর্ব ২৭
- Tree DPট্রি ডিপি
- Tree-র প্রতিটি node-এর subtree-র উত্তর তার সন্তানদের উত্তর জুড়ে বের করার DP, সাধারণত postorder-এ; প্রায়ই O(n) সময়ে।যেখানে শিখবেন: পর্ব ৫৫পর্ব ৬৫
- Tree edgeট্রি এজ
- যে edge দিয়ে DFS একটি সাদা (অদেখা) vertex প্রথম আবিষ্কার করে; এগুলো মিলেই DFS tree.যেখানে শিখবেন: পর্ব ৪১পর্ব ৪৬
- Tree sortট্রি সর্ট
- সব উপাদান একটি BST-তে insert করে তারপর inorder traversal-এ পড়ে সাজানোর পদ্ধতি; ভারসাম্যপূর্ণ tree-তে O(n log n), শিকলের মতো tree-তে O(n²).যেখানে শিখবেন: পর্ব ২৭
- Tree traversalট্রি ট্রাভার্সাল
- একটি নির্দিষ্ট নিয়মে tree-র প্রতিটি node ঠিক একবার দেখা (visit করা); প্রধান চারটি হলো preorder, inorder, postorder আর level-order.যেখানে শিখবেন: পর্ব ২৬
- Treewidthট্রি-উইডথ
- একটি গ্রাফ গাছের কতটা কাছাকাছি, তার একটি সংখ্যা — গাছের treewidth ১. Treewidth ছোট হলে অনেক NP-hard গ্রাফ সমস্যা tree DP-র ধাঁচে দ্রুত সমাধান হয়যেখানে শিখবেন: পর্ব ৬৫
- Trial divisionট্রায়াল ডিভিশন
- n মৌলিক কি না দেখতে 2 থেকে √n পর্যন্ত প্রতিটি সংখ্যা দিয়ে ভাগ করে দেখা। সময় O(√n); কোনো উৎপাদক √n-এর চেয়ে বড় হলে তার জোড়াটি √n-এর চেয়ে ছোট, তাই এর বেশি দেখার দরকার নেই।যেখানে শিখবেন: পর্ব ৬২
- Triangle inequality (shortest paths)ট্রায়াঙ্গল ইনইকুয়ালিটি
- যেকোনো edge (u, v)-এর জন্য δ(s, v) ≤ δ(s, u) + w(u, v) — u হয়ে ঘুরে যাওয়া পথ সবচেয়ে ছোট পথের চেয়ে ছোট হতে পারে না।যেখানে শিখবেন: পর্ব ৪৩পর্ব ৪৪
- Trie (prefix tree)ট্রাই বা ট্রি
- যে tree-তে প্রতিটি edge একটি অক্ষর আর root থেকে প্রতিটি node-এর পথ একটি prefix; একই শুরুর শব্দগুলো একই পথ ভাগ করে। দৈর্ঘ্য L-এর শব্দে insert ও search O(L) — নামটি retrieval শব্দ থেকে (Fredkin, ১৯৬০).যেখানে শিখবেন: পর্ব ৩১পর্ব ৫৯পর্ব ৬৯
- Trémaux's algorithmত্রেমো-র পদ্ধতি
- উনিশ শতকের গোলকধাঁধা সমাধানের নিয়ম: প্রতিটি গলির মুখে দাগ দিয়ে অদেখা গলি ধরা; নতুন গলি দিয়ে আগে দেখা মোড়ে পৌঁছালে, বা সামনে অদেখা গলি না থাকলে, যে পথে এসেছিলেন সে পথে পিছিয়ে আসা — DFS-এর আগাম রূপ।যেখানে শিখবেন: পর্ব ৪১
- Turing machineটুরিং মেশিন
- ১৯৩৬ সালে Alan Turing-এর প্রস্তাবিত গণনার গাণিতিক মডেল — অসীম ফিতা, একটি পড়া-লেখার মাথা আর সসীম নিয়মের তালিকা; “গণনাযোগ্য” কথাটির সুনির্দিষ্ট সংজ্ঞা দেয়।যেখানে শিখবেন: পর্ব ০২
- Two pointer techniqueটু পয়েন্টার
- দুটি index ভ্যারিয়েবল রেখে প্রতিটি ধাপে অন্তত একটিকে শুধু এক দিকে সরানোর কৌশল; প্রতিটি index সর্বোচ্চ n বার সরে বলে অনেক O(n²) জোড়ার লুপ O(n)-এ নেমে আসে।যেখানে শিখবেন: পর্ব ১০পর্ব ১১পর্ব ১৬
U
- Unbounded knapsackআনবাউন্ডেড ন্যাপস্যাক
- knapsack-এর যে রূপে প্রতিটি জিনিস যতবার খুশি নেওয়া যায়। এক সারির DP-তে ক্ষমতার লুপ সামনে থেকে চালালেই হয়, সময় O(nW).যেখানে শিখবেন: পর্ব ৫৩
- Uncle (tree)আঙ্কেল নোড
- tree-তে কোনো node-এর parent-এর ভাই, অর্থাৎ grandparent-এর অন্য সন্তান। Red-black tree-র insert fix-up কোন কেসে যাবে তা uncle-এর রং ঠিক করে।যেখানে শিখবেন: পর্ব ২৯
- Undefined behaviorআনডিফাইনড বিহেভিয়ার
- C/C++-এ এমন কাজ (যেমন array-এর সীমার বাইরে পড়া), যার ফল ভাষার নিয়মে নির্ধারিত নয় — প্রোগ্রাম ঠিক চলতে পারে, ভুল মান দিতে পারে বা crash করতে পারে।যেখানে শিখবেন: পর্ব ১০পর্ব ২৫পর্ব ৩৪
- Undirected graphআনডিরেক্টেড গ্রাফ
- যে গ্রাফের edge-এর কোনো দিক নেই: u–v মানে u থেকে v আর v থেকে u দুদিকেই যাওয়া যায়, দুই দিকের রাস্তার মতো।যেখানে শিখবেন: পর্ব ৩৩পর্ব ৩৯পর্ব ৪১
- Undo / Redoআনডু / রিডু
- শেষ কাজটি ফিরিয়ে নেওয়া (undo) আর ফিরিয়ে নেওয়া কাজ আবার করা (redo); সাধারণত দুটি stack দিয়ে বানানো হয়।যেখানে শিখবেন: পর্ব ১৩
- Unicodeইউনিকোড
- পৃথিবীর প্রায় সব লিপির প্রতিটি অক্ষরকে একটি আলাদা নম্বর (code point) দেওয়ার আন্তর্জাতিক মান। বাংলার অক্ষরগুলো আছে U+0980 থেকে U+09FF অংশে।যেখানে শিখবেন: পর্ব ১১পর্ব ২৫পর্ব ৩১
- Unicode normalizationইউনিকোড নরমালাইজেশন
- দেখতে এক কিন্তু ভিন্নভাবে এনকোড করা লেখাকে একটি মানক রূপে (যেমন NFC) আনা, যাতে তুলনা আর খোঁজা ঠিকঠাক কাজ করে।যেখানে শিখবেন: পর্ব ১১পর্ব ৩১পর্ব ৫৮
- Uniform distributionইউনিফর্ম ডিস্ট্রিবিউশন
- সমবণ্টন: একটি পরিসরের সব সমান-মাপের অংশে মান পড়ার সম্ভাবনা সমান। bucket sort-এর প্রত্যাশিত Θ(n) সময় এই অনুমানের ওপর দাঁড়িয়ে।যেখানে শিখবেন: পর্ব ২৪
- Unimodal functionইউনিমোডাল ফাংশন
- যে ফাংশন একটি বিন্দু পর্যন্ত কঠোরভাবে বাড়ে আর তারপর কঠোরভাবে কমে (বা উল্টো) — একটিমাত্র চূড়া; এর সর্বোচ্চ বিন্দু ternary search দিয়ে খোঁজা যায়।যেখানে শিখবেন: পর্ব ১৯
- union (DSU)ইউনিয়ন
- DSU-তে দুটি উপাদানের দল মিলিয়ে একটি দল বানানোর কাজ; forest-এ দুই root-এর একটিকে অন্যটির নিচে বসানো। C++-এ union সংরক্ষিত শব্দ বলে প্রায়ই unite নাম দেওয়া হয়।যেখানে শিখবেন: পর্ব ৩৩
- Union boundইউনিয়ন বাউন্ড
- কয়েকটি ঘটনার অন্তত একটি ঘটার সম্ভাবনা তাদের আলাদা সম্ভাবনার যোগফলের বেশি নয়: P(A ∪ B) ≤ P(A) + P(B). ঘটনাগুলো স্বাধীন না হলেও খাটে।যেখানে শিখবেন: পর্ব ৩৮পর্ব ৬১
- Union by rankইউনিয়ন বাই র্যাংক
- union-এ কম rank-এর root-কে বেশি rank-এর root-এর নিচে বসানো, সমান হলে ওপরেরটির rank এক বাড়ানো; rank r-এর tree-তে অন্তত 2^r টি node থাকে।যেখানে শিখবেন: পর্ব ৩৩পর্ব ৬৮পর্ব ৭০
- Union by sizeইউনিয়ন বাই সাইজ
- union-এ কম সদস্যের tree-র root-কে বেশি সদস্যের tree-র root-এর নিচে বসানো; এতে কোনো tree-র উচ্চতা ⌊log₂ n⌋ ছাড়ায় না।যেখানে শিখবেন: পর্ব ৩৩পর্ব ৬৭পর্ব ৭১
- Uniquely decodable codeইউনিকলি ডিকোডেবল কোড
- যে code-এ যেকোনো বিটের স্রোত শুধু একভাবেই অক্ষরে ভাঙা যায়; প্রতিটি prefix-free code এমন, তবে উল্টোটা সবসময় নয়।যেখানে শিখবেন: পর্ব ৫১
- Unit-capacity networkইউনিট ক্যাপাসিটি নেটওয়ার্ক
- যে flow network-এর প্রতিটি edge-এর capacity 1; এখানে Dinic অনেক দ্রুত — bipartite matching-এর নেটওয়ার্কে O(E√V)যেখানে শিখবেন: পর্ব ৪৭
- Universal hashingইউনিভার্সাল হ্যাশিং
- hash function-এর এমন একটি পরিবার থেকে প্রোগ্রাম শুরুতে এলোমেলোভাবে একটি বেছে নেওয়া, যাতে যেকোনো দুটি আলাদা key-এর collision-এর সম্ভাবনা ≤ 1/m; Carter ও Wegman, ১৯৭৯ সালে।যেখানে শিখবেন: পর্ব ৩২পর্ব ৬১
- Universe of keys (U)ইউনিভার্স
- সম্ভাব্য সব key-এর সেট — যেমন সব ১১ অঙ্কের মোবাইল নম্বর বা সব string; সাধারণত আসলে ব্যবহৃত key-এর চেয়ে অনেক অনেক বড়।যেখানে শিখবেন: পর্ব ৩২
- Upper boundআপার বাউন্ড
- এমন একটি সীমা যার চেয়ে বেশি কখনো হয় না; চলার সময়ের ওপরের সীমা সাধারণত O দিয়ে লেখা হয়। Optimisation-এ (যেমন branch and bound) মানে: কোনো সমাধানের মান এর চেয়ে বেশি হতে পারে না।যেখানে শিখবেন: পর্ব ০৪পর্ব ৫৭পর্ব ৬০
- upper_bound (upper bound of x)আপার বাউন্ড
- সাজানো ক্রমে প্রথম যে অবস্থানে মান x-এর চেয়ে কঠোরভাবে বড় (a[i] > x); না থাকলে n. upper_bound − lower_bound = x কতবার আছে। C++-এ std::upper_bound, Python-এ bisect_right.যেখানে শিখবেন: পর্ব ১৮
- Upsolvingআপসলভিং
- কনটেস্ট শেষ হওয়ার পর যে সমস্যাগুলো সময়ের মধ্যে পারেননি, সেগুলো নিজে ভেবে বা ব্যাখ্যা পড়ে সমাধান করে জমা দেওয়া — কনটেস্ট থেকে শেখার সবচেয়ে কার্যকর অভ্যাস।যেখানে শিখবেন: পর্ব ৭২
V
- Value density (value-to-weight ratio)ভ্যালু ডেনসিটি
- একটি জিনিসের দাম ভাগ ওজন, অর্থাৎ প্রতি একক ওজনে কত দাম; fractional knapsack-এর greedy এই অনুপাতের বড় থেকে ছোট ক্রমে জিনিস নেয়।যেখানে শিখবেন: পর্ব ৫০
- Variable-length codeভেরিয়েবল-লেংথ কোড
- যে code-এ বিভিন্ন অক্ষরের code-এর দৈর্ঘ্য আলাদা — সাধারণত বেশি আসা অক্ষরে ছোট আর কম আসায় লম্বা।যেখানে শিখবেন: পর্ব ৫১
- Variant functionভেরিয়েন্ট ফাংশন
- লুপের প্রতিটি পুনরাবৃত্তিতে কঠোরভাবে কমে এমন একটি অঋণাত্মক পূর্ণসংখ্যা মাপ (যেমন hi − lo + 1); এটি অসীমভাবে কমতে পারে না বলে লুপ থামবেই।যেখানে শিখবেন: পর্ব ০৩পর্ব ১৮
- Vector (geometry)ভেক্টর
- দিক আর দৈর্ঘ্যসহ একটি সরণ, যেমন বিন্দু a থেকে b-তে যাওয়া b − a = (b.x − a.x, b.y − a.y); কোডে সাধারণত বিন্দুর মতোই একটি (x, y) জোড়া।যেখানে শিখবেন: পর্ব ৬৩
- Vehicle routing problem (VRP)ভেহিকল রাউটিং প্রবলেম
- কয়েকটি গাড়ি দিয়ে একটি ডিপো থেকে অনেক গ্রাহকের কাছে মাল পৌঁছানোর সবচেয়ে সস্তা রুট খোঁজা — গাড়ির ধারণক্ষমতা আর সময়ের শর্তসহ। TSP হলো এর একটি বিশেষ রূপ (একটি গাড়ি, ধারণক্ষমতার সীমা নেই), তাই এটিও NP-hardযেখানে শিখবেন: পর্ব ৬৫
- Verdict (judge-এর রায়)ভারডিক্ট
- জমা দেওয়া কোড গোপন টেস্টে চালিয়ে online judge যে ফল জানায় — যেমন AC (সব টেস্টে ঠিক), WA, TLE, MLE, RE বা CE; সাধারণত প্রথম যে টেস্টে সমস্যা হলো, তার রায়টিই দেখানো হয়।যেখানে শিখবেন: পর্ব ৭২
- Verifierভেরিফায়ার
- যে অ্যালগরিদম একটি ইনপুট আর একটি প্রস্তাবিত প্রমাণ (certificate) নিয়ে বলে প্রমাণটি “হ্যাঁ” উত্তর নিশ্চিত করে কি না। NP-এর সংজ্ঞায় verifier-কে polynomial সময়ে চলতে হয়।যেখানে শিখবেন: পর্ব ৬৪
- Vertex (node of a graph)ভার্টেক্স
- গ্রাফের একটি বিন্দু — যেমন একটি গ্রাম, একজন মানুষ বা একটি কম্পিউটার। বহুবচন vertices.যেখানে শিখবেন: পর্ব ৩৩পর্ব ৩৯পর্ব ৪০
- Vertex coverভার্টেক্স কভার
- এমন vertex-এর সেট, যা গ্রাফের প্রতিটি edge-এর অন্তত এক প্রান্ত ছোঁয়। সাধারণ গ্রাফে সবচেয়ে ছোটটি খোঁজা NP-hard, bipartite গ্রাফে সহজ।যেখানে শিখবেন: পর্ব ৪৭পর্ব ৬৪পর্ব ৬৫
- Vertex potentialভার্টেক্স পটেনশিয়াল
- প্রতিটি vertex-কে দেওয়া একটি সংখ্যা h(v), যা দিয়ে edge-এর ওজন বদলানো হয়; Johnson-এর অ্যালগরিদমে h(v) = একটি কাল্পনিক উৎস থেকে v-এর shortest-path দূরত্ব।যেখানে শিখবেন: পর্ব ৪৪
- Virtual contestভার্চুয়াল কনটেস্ট
- আগে হয়ে যাওয়া একটি কনটেস্ট নিজের সুবিধামতো সময়ে আসল সময়সীমা ধরে আবার দেওয়া, যেন সেটি এখনই চলছে — চাপের মধ্যে কাজ করার অনুশীলন।যেখানে শিখবেন: পর্ব ৭২
- Visited arrayভিজিটেড অ্যারে
- গ্রাফ ঘোরার সময় কোন vertex আগেই দেখা হয়েছে তা মনে রাখার boolean অ্যারে (বা set), যাতে একই vertex দুবার প্রক্রিয়া না হয়। BFS-এ চিহ্ন দেওয়া হয় queue-তে ঢোকানোর সময়।যেখানে শিখবেন: পর্ব ৪০
- Viva (oral exam)ভাইভা
- মৌখিক পরীক্ষা। পরীক্ষক মুখে প্রশ্ন করেন, আপনি মুখে উত্তর দেন, আর উত্তরের সূত্র ধরে তিনি একের পর এক পরের প্রশ্ন করেন।যেখানে শিখবেন: পর্ব ৭০
- Voronoi diagramভরোনয় ডায়াগ্রাম
- কয়েকটি কেন্দ্রবিন্দু দেওয়া থাকলে সমতলকে এমন এলাকায় ভাগ করা, যাতে প্রতিটি এলাকার সব বিন্দুর কাছে একটি নির্দিষ্ট কেন্দ্রই সবচেয়ে কাছে; O(n log n)-এ বানানো যায়।যেখানে শিখবেন: পর্ব ৬৩
W
- Walkওয়াক
- Edge ধরে ধরে vertex-এর একটি ক্রম, যেখানে vertex আর edge বারবার আসতে পারে; দৈর্ঘ্য মাপা হয় edge-এর সংখ্যায়।যেখানে শিখবেন: পর্ব ৩৯
- Watershed functionওয়াটারশেড ফাংশন
- Master theorem-এ n^(log_b a) ফাংশনটি, যা recursion tree-র পাতার মোট সংখ্যা; f(n) এর চেয়ে ছোট, সমান না বড় — তা দেখেই case ঠিক হয়।যেখানে শিখবেন: পর্ব ০৯পর্ব ৭০
- Weighted DSU (potential DSU)ওয়েটেড ডিএসইউ
- যে DSU প্রতিটি node-এ parent-এর সাপেক্ষে একটি পার্থক্য (যেমন মানের বিয়োগফল) রাখে; root পর্যন্ত যোগ করে যেকোনো দুই উপাদানের পার্থক্য পাওয়া আর স্ববিরোধ ধরা যায়।যেখানে শিখবেন: পর্ব ৩৩
- Weighted graphওয়েটেড গ্রাফ
- যে গ্রাফের প্রতিটি edge-এর সাথে একটি সংখ্যা (ওজন) থাকে — দূরত্ব, সময়, খরচ বা টাকার পরিমাণ।যেখানে শিখবেন: পর্ব ৩৯পর্ব ৪০পর্ব ৪৩
- Weighted path lengthওয়েটেড পাথ লেংথ
- tree-র প্রতিটি leaf-এর depth-কে তার ওজন (frequency) দিয়ে গুণ করে যোগফল, Σ f·d; code tree-তে এটিই বার্তার মোট বিট।যেখানে শিখবেন: পর্ব ৫১
- Weighted treeওয়েটেড ট্রি
- যে tree-র প্রতিটি edge-এ একটি সংখ্যা (ওজন) থাকে, যেমন দূরত্ব, খরচ বা দেরি; পথের দৈর্ঘ্য মানে তখন edge-এর ওজনের যোগফল।যেখানে শিখবেন: পর্ব ৪৮
- Weighted union (linked lists)ওয়েটেড ইউনিয়ন
- linked list দিয়ে রাখা দলে সবসময় ছোট list-কে বড়টির সাথে জোড়া; প্রতিটি উপাদানের head pointer সর্বোচ্চ log₂ n বার বদলায়, তাই মোট O(m + n log n).যেখানে শিখবেন: পর্ব ৩৩
- White / grey / black colouringতিন রঙের ডিএফএস
- DFS-এ vertex-এর তিন অবস্থা: সাদা = অদেখা, ধূসর = দেখা কিন্তু শেষ হয়নি (recursion stack-এ), কালো = শেষ। ধূসর vertex-গুলো সবসময় root থেকে বর্তমান vertex পর্যন্ত একটি পথ।যেখানে শিখবেন: পর্ব ৪১পর্ব ৪২
- White-path theoremহোয়াইট-পাথ থিওরেম
- DFS forest-এ v হবে u-এর উত্তরসূরি ঠিক তখন, যখন u আবিষ্কারের মুহূর্তে u থেকে v পর্যন্ত এমন একটি পথ আছে যার সব vertex সাদা।যেখানে শিখবেন: পর্ব ৪১
- Winding numberওয়াইন্ডিং নাম্বার
- বহুভুজের সীমানা ধরে একবার ঘুরলে সেটি একটি বিন্দুকে মোট কতবার পাক খায়; শূন্য হলে বিন্দুটি বাইরে।যেখানে শিখবেন: পর্ব ৬৩
- With high probability (w.h.p.)উইথ হাই প্রোবাবিলিটি
- কোনো ঘটনা অন্তত 1 − 1/n^c সম্ভাবনায় ঘটে, যেখানে c একটি ধ্রুবক; n বড় হলে ব্যর্থতার সম্ভাবনা কার্যত শূন্য।যেখানে শিখবেন: পর্ব ৩৮
- Word sizeওয়ার্ড সাইজ
- একটি মেমরি ঘরে কত bit রাখা যায়; RAM model-এ ধরা হয় প্রায় c log n bit, যাতে একটি ঘরে পুরো অ্যারে লুকিয়ে রাখার মতো চালাকি না চলে।যেখানে শিখবেন: পর্ব ০২
- Worst caseওয়র্স্ট কেস
- একই আকারের সব ইনপুটের মধ্যে যেটিতে অ্যালগরিদম সবচেয়ে বেশি সময় নেয়, সেই সময়যেখানে শিখবেন: পর্ব ০৪পর্ব ০৫পর্ব ১৫
- Wrap-aroundর্যাপ-অ্যারাউন্ড
- অ্যারের শেষ index পেরোলে আবার 0 থেকে শুরু হওয়া — circular buffer-এ (i + 1) % capacity দিয়ে এটি করা হয়।যেখানে শিখবেন: পর্ব ১৪পর্ব ৭০
- Write amplificationরাইট অ্যামপ্লিফিকেশন
- ব্যবহারকারী যতটুকু ডেটা লিখতে চান, স্টোরেজে আসলে তার চেয়ে কত গুণ বেশি লেখা হয় — যেমন একটি ছোট row বদলাতে পুরো page আবার লেখাযেখানে শিখবেন: পর্ব ৩০
- Wrong Answer (WA)রং অ্যানসার
- প্রোগ্রাম সময় ও মেমরির ভেতরে ঠিকঠাক শেষ হয়েছে, কিন্তু অন্তত একটি টেস্টের আউটপুট প্রত্যাশিত উত্তরের সাথে মেলেনি — ভুল ধারণা, edge case, overflow বা আউটপুটের বিন্যাসের ভুল এর সাধারণ কারণ।যেখানে শিখবেন: পর্ব ৭২
X
- XOR (exclusive or)এক্সর
- দুটি bit আলাদা হলে 1, একই হলে 0 দেয় এমন bitwise operation; C++ ও Python-এ ^ চিহ্ন। x ^ x = 0 আর x ^ 0 = x, তাই XOR নিজেই নিজের উল্টো।যেখানে শিখবেন: পর্ব ১৭পর্ব ৩১পর্ব ৩৪
- Xorshift generatorজরশিফট
- George Marsaglia-র (২০০৩) খুব ছোট আর দ্রুত pseudorandom জেনারেটর: অবস্থাকে কয়েকবার shift করে নিজের সাথে XOR করা হয়। পরিসংখ্যানের কঠিন পরীক্ষায় দুর্বল, তবে ছোট উদাহরণ আর খেলার জন্য যথেষ্ট।যেখানে শিখবেন: পর্ব ৩৮
Z
- Z algorithmজেড অ্যালগরিদম
- প্রতিটি i-র জন্য z[i] = s আর s[i..]-এর সবচেয়ে লম্বা সাধারণ prefix-এর দৈর্ঘ্য — পুরো Z-array O(n) সময়ে বানায়। P + '$' + T-এর ওপর চালালে pattern matching হয়।যেখানে শিখবেন: পর্ব ৫৮
- Z-boxজেড-বক্স
- Z algorithm-এ এ পর্যন্ত পাওয়া সবচেয়ে ডানে শেষ হওয়া অংশ [l, r), যা s-এর একটি prefix-এর হুবহু কপি। এর ভেতরের ঘরের z মান আগের হিসাব থেকে প্রায় বিনা খরচে পাওয়া যায়।যেখানে শিখবেন: পর্ব ৫৮
- ZPP (zero-error probabilistic polynomial time)জেডপিপি
- প্রত্যাশিত polynomial সময়ের Las Vegas অ্যালগরিদমে সমাধানযোগ্য সমস্যার শ্রেণি — উত্তর কখনো ভুল নয়; ZPP = RP ∩ co-RP.যেখানে শিখবেন: পর্ব ৬১
এই শব্দটি পাওয়া যায়নি। বানান বদলে বা বাংলায় লিখে দেখুন।