ကပ်လျက်ရှိသော ကိန်းဂဏန်းနှစ်ခုကို နှိုင်းယှဉ်ပြီး မှားယွင်းနေပါက နေရာချင်းလဲလှယ်၍ အကြီးဆုံးကိန်းကို နောက်ဆုံးသို့ ပူဖောင်းကဲ့သို့ တွန်းတင်သည့် နည်းလမ်း။
ကဏ္ဍအလိုက် ရွေးချယ်ရန် (Categories)
Pivot (ဗဟိုဒြပ်စင်) တစ်ခု ရွေးချယ်ပြီး ၎င်းထက်ငယ်သော ကိန်းများကို ဘယ်ဘက်၊ ကြီးသော ကိန်းများကို ညာဘက် ခွဲခြား၍ ထပ်ဆင့် ဖြေရှင်းနည်း။
Array ကို တစ်ဝက်စီ ထပ်ခါတလဲလဲ ခွဲခြမ်းပြီး စီစဉ်ပြီးသား အပိုင်းငယ်များကို ပြန်လည်ပေါင်းစည်း (Merge) သည့် တည်ငြိမ်သော နည်းလမ်း။
ကိန်းတစ်ခုချင်းစီကို ယူ၍ ရှေ့တွင် စီစဉ်ပြီးသား အပိုင်းရှိ သင့်တော်သော နေရာတွင် ကတ်တွန်းထည့်သကဲ့သို့ ထည့်သွင်းသည့် နည်း။
ကျန်ရှိနေသော ဒေတာများထဲမှ အငယ်ဆုံးကိန်းကို ရှာဖွေရွေးချယ်ပြီး ရှေ့ဆုံးမှ မစီရသေးသော နေရာနှင့် လဲလှယ်သည့် နည်းလမ်း။
Binary Heap သစ်ပင်ပုံစံ တည်ဆောက်ပြီး အကြီးဆုံးတန်ဖိုး (Root) ကို နောက်ဆုံးနေရာသို့ အဆင့်ဆင့် ထုတ်ယူ စီစဥ်နည်း။
ကိန်းဂဏန်းများကို တစ်ခုချင်း နှိုင်းယှဉ်ခြင်း မပြုဘဲ ခုဂဏန်း၊ ဆယ်ဂဏန်း၊ ရာဂဏန်း နေရာများအလိုက် အဆင့်ဆင့် စီစဥ်နည်း။
ကိန်းတစ်ခုချင်းစီ ပါဝင်သည့် အကြိမ်အရေအတွက်ကို ရေတွက်မှတ်သားပြီး အစဉ်အတိုင်း ပြန်လည်ထုတ်ပေးသည့် နည်း။
ကိန်းဂဏန်းများကို တန်ဖိုးအပိုင်းအခြားအလိုက် ပုံး (Buckets) များထဲ ခွဲထည့်ပြီး ပုံးတစ်ခုချင်းစီကို သီးခြား စီစဥ်ပေါင်းစည်းနည်း။
Insertion Sort ကို အခြေခံပြီး ဝေးကွာသော ဒြပ်စင်များကို ကြားကွာဟချက် (Gap) အလိုက် ဦးစွာ နှိုင်းယှဉ်စီစဥ်သည့် နည်း။
Bubble Sort ကို ဘယ်မှညာသို့ တစ်ခေါက်၊ ညာမှဘယ်သို့ တစ်ခေါက် နှစ်ဖက်စလုံးသို့ စုန်ဆန် လူးလာ နှိုင်းယှဉ် စီစဥ်နည်း။
ပန်းအိုးများကို စီစဉ်သော ဥယျာဉ်စောင့်ကဲ့သို့ မှန်ကန်လျှင် ရှေ့တစ်လှမ်းတိုး၊ မှားနေလျှင် လဲလှယ်၍ နောက်တစ်လှမ်းဆုတ်သည့် နည်း။
Bubble Sort ကို တိုးတက်စေပြီး Shrink Factor (1.3) ဖြင့် ကြီးမားသော Gap များမှ စတင် နှိုင်းယှဉ် စီစဥ်သည့် နည်း။
Counting Sort ကဲ့သို့ ဖြစ်ပြီး တန်ဖိုးအပိုင်းအခြား (Range) နှင့် ဒြပ်စင်အရေအတွက် နီးစပ်ချိန်တွင် အလွန်မြန်သည့် နည်း။
Merge Sort နှင့် Insertion Sort တို့ကို အားသာချက်ချင်း ပေါင်းစပ်ထားသော ကမ္ဘာ့အမြန်ဆုံး လက်တွေ့သုံး Sorting နည်း။
စီစဉ်ပြီးသား စာရင်းတစ်ခုတွင် အလယ်ဗဟိုမှ တန်ဖိုးနှင့် နှိုင်းယှဉ်၍ မလိုသောအခြမ်းကို တစ်ဝက်စီ ပယ်ဖျက်ကာ လျင်မြန်စွာ ရှာဖွေနည်း။
စာရင်းတစ်ခု၏ အစမှ အဆုံးအထိ ဒြပ်စင်တစ်ခုချင်းစီကို လိုချင်သော တန်ဖိုးနှင့် တစ်ခုပြီးတစ်ခု တိုက်ဆိုင်ရှာဖွေသည့် နည်း။
စီစဉ်ပြီးသား စာရင်းတွင် တစ်ခုချင်း မရှာဘဲ သတ်မှတ်ထားသော အကွာအဝေး (Block/Step) အတိုင်း ခုန်ကျော်၍ ရှာဖွေနည်း။
တန်ဖိုးများ အချိုးကျ ပြန့်ကျဲနေသော Array တွင် Target ရှိနိုင်မည့် နေရာကို ပုံသေနည်းဖြင့် တန်းခန့်မှန်း ရှာဖွေနည်း။
အပိုင်းအခြား (Range) ကို 1, 2, 4, 8... ဟု နှစ်ဆတိုး ရှာဖွေပြီးမှ ထိုအပိုင်းအတွင်း Binary Search ပြန်လုပ်နည်း။
Array ကို အလယ်မှတ် နှစ်ခု (mid1, mid2) သုံး၍ သုံးပိုင်း ညီမျှစွာ ခွဲခြမ်းရှာဖွေသော နည်းလမ်း။
အလယ်မှတ် တွက်ရာတွင် အစားအသောက် (Division ` / `) မသုံးဘဲ ဖီဘိုနာချီ ကိန်းစဉ် အပေါင်းအနုတ်ဖြင့်သာ တွက်ချက်ရှာဖွေနည်း။
Linked List ကြီးတစ်ခု (Second List) အတွင်း၌ အခြား Linked List ငယ် (First List) တစ်ခုလုံး အစီအစဉ်တကျ ပါဝင်ခြင်း ရှိ/မရှိ ရှာနည်း။
ပထမဆုံး/နောက်ဆုံး တန်ဖိုး ရှာဖွေခြင်း (Lower/Upper Bound)
Ubiquitous Binary Search (First / Last Occurrence)
တူညီသော ကိန်းများစွာ ပါဝင်သည့် Array တွင် Target ၏ ပထမဆုံး စတင်ရာ index သို့မဟုတ် နောက်ဆုံး index ကို O(log n) ဖြင့် တိကျစွာ ရှာနည်း။
မက်ထရစ် ဇယားကွက် (2D Matrix) အတွင်း ရှာဖွေခြင်း
Saddleback Search (Sorted 2D Matrix)
အတန်းရော အကော်လံပါ ကြီးစဉ်ငယ်လိုက် စီစဉ်ထားသော 2D Matrix တွင် အပေါ်ညာထောင့်မှ စတင်၍ O(R + C) ဖြင့် အမြန်ရှာနည်း။
စတင်ရာ Node မှ နီးရာ အလွှာလိုက် (Layer by Layer) တစ်ဆင့်ချင်းစီ ဖြန့်ကျက် ရှာဖွေသော နည်းလမ်း။
လမ်းကြောင်းတစ်ခုတည်းကို အဆုံးထိ ဦးစွာ နက်ရှိုင်းစွာ လျှောက်ပြီး မဖြစ်နိုင်မှ နောက်ပြန်ဆုတ် ရှာဖွေသော နည်းလမ်း။
အလေးချိန် (Weighted Graph) ပါသော မြို့များအကြား အတိုဆုံး ကုန်ကျစရိတ် လမ်းကြောင်းကို Priority Queue ဖြင့် တွက်ချက်နည်း။
Negative Weight (အနုတ်တန်ဖိုး လမ်းကြောင်းများ) ပါဝင်သော ဂရပ်ဖ်တွင် အတိုဆုံးလမ်းရှာပြီး Negative Cycle ကို ရှာဖွေနိုင်သော နည်း။
မြို့အားလုံး အတိုဆုံးလမ်းကြောင်း (All-Pairs Shortest Path)
Floyd-Warshall Algorithm
Graph အတွင်းရှိ မည်သည့် Node စုံတွဲမဆို (All-Pairs) ကြားရှိ အတိုဆုံး လမ်းကြောင်းများကို DP ဇယားဖြင့် တစ်ပြိုင်နက် တွက်နည်း။
ခရပ်စ်ကယ် အနည်းဆုံး ဆက်သွယ်ကွန်ရက် (Kruskal MST)
Kruskal's Minimum Spanning Tree (MST)
Edge များကို အလေးချိန်ငယ်ရာမှကြီးရာ စီပြီး Cycle မဖြစ်စေသော လမ်းများကို ရွေးချယ်၍ အသက်သာဆုံး ကွန်ရက် တည်ဆောက်နည်း။
ပရင်းမ် အနည်းဆုံး ဆက်သွယ်ကွန်ရက် (Prim MST)
Prim's Minimum Spanning Tree (MST)
လက်ရှိ ချိတ်ဆက်ပြီးသော ကွန်ရက်အုပ်စုနှင့် မချိတ်ရသေးသော Nodes များအကြား အတိုဆုံး လမ်းကို တစ်ဆင့်ချင်း တိုးချဲ့သည့် နည်း။
ကန့်သတ်ချက်အလိုက် အဆင့်ဆင့်စီစဥ်ခြင်း (Topological Sort)
Topological Sort (DFS based)
ဦးစွာ ပြီးစီးရမည့် အလုပ် (Prerequisites) ရှိသော Directed Acyclic Graph (DAG) တွင် အလုပ်လုပ်ရမည့် မှန်ကန်သော အစဉ်ကို ထုတ်ပေးနည်း။
တာဂျန် အားကောင်းစွာ ချိတ်ဆက်နေသောအုပ်စု (Tarjan SCC)
Tarjan's Strongly Connected Components (SCC)
Directed Graph အတွင်း တစ်ခုနှင့်တစ်ခု အပြန်အလှန် ရောက်ရှိနိုင်သော (Strongly Connected) အုပ်စုအားလုံးကို DFS တစ်ကြိမ်တည်းဖြင့် ရှာနည်း။
Graph ၏ လမ်းကြောင်းအားလုံးကို ပြောင်းပြန်လှန် (Transpose) ပြီး DFS ၂ ကြိမ်ဖြင့် SCC အုပ်စုများကို ရှာနည်း။
f(n) = g(n) + h(n) ဟူသော ခန့်မှန်း Heuristic တန်ဖိုးကို ပေါင်းစပ်၍ လိုရာပန်းတိုင်သို့ အမြန်ဆုံး ဦးတည်ရှာဖွေသော နည်း။
နှစ်အုပ်စုခွဲနိုင်သော ဂရပ်ဖ် စစ်ဆေးခြင်း (Bipartite Check)
Bipartite Graph Check (2-Coloring)
ဆက်သွယ်ထားသော အိမ်နီးချင်း Node များ အရောင်မတူစေဘဲ အရောင် ၂ မျိုးတည်းဖြင့် ဆေးခြယ်နိုင်ခြင်း ရှိ/မရှိ BFS ဖြင့် စစ်ဆေးနည်း။
ကန်-၏ အဆင့်လိုက်စီစဥ်နည်း (Kahn Topological Sort)
Kahn's Algorithm (BFS Topological Sort)
In-degree (မိမိထံ ဝင်ရောက်လာသော မျှားအရေအတွက်) ၀ ဖြစ်သော Node များကို Queue ဖြင့် ထုတ်ယူ၍ စီစဥ်နည်း။
တံတားအားလုံး တစ်ကြိမ်တည်း ဖြတ်သန်းနည်း (Eulerian Path)
Hierholzer's Eulerian Circuit / Path
Graph ပေါ်ရှိ လမ်းကြောင်း (Edges) အားလုံးကို မထပ်စေဘဲ တစ်ကြိမ်တည်းဖြင့် ဖြတ်သန်းသွားလာနိုင်သော လမ်းရှာနည်း။
အမြင့်ဆုံး ရေစီးဆင်းနှုန်း ရှာဖွေနည်း (Edmonds-Karp)
Edmonds-Karp Maximum Flow
Ford-Fulkerson နည်းကို BFS ဖြင့် အဆင့်မြှင့်ပြီး Source မှ Sink သို့ အများဆုံး စီးဆင်းနိုင်သော Max Flow တွက်နည်း။
ဖီဘိုနာချီ ကိန်းစဉ် (Dynamic Programming)
Fibonacci Sequence (Dynamic Programming)
ထပ်ခါတလဲလဲ တွက်ချက်ရသည့် ကိန်းစဉ်များကို Memoization သို့မဟုတ် Tabulation ဖြင့် မှတ်သား၍ O(n) အချိန်တွင်း တွက်နည်း။
ကျောပိုးအိတ် တန်ဖိုးအများဆုံး ထည့်သွင်းခြင်း (0/1 Knapsack)
0/1 Knapsack Problem
အိတ်၏ သယ်ဆောင်နိုင်သော အလေးချိန် ကန့်သတ်ချက်အတွင်း စုစုပေါင်း တန်ဖိုးအများဆုံး ရစေရန် ပစ္စည်းများကို ရွေးချယ်နည်း။
စာကြောင်း နှစ်ခုအကြား ဆက်တိုက် ကပ်လျက် မဟုတ်သော်လည်း အစဉ်လိုက် တူညီသော အရှည်ဆုံး စာလုံးတွဲကို ရှာနည်း။
တန်ဖိုးတိုး အရှည်ဆုံး ကိန်းစဉ် (LIS)
Longest Increasing Subsequence (LIS)
ကိန်းများစွာအနက် ရှေ့မှနောက်သို့ တန်ဖိုး ကြီးစဉ်ငယ်လိုက် (သို့မဟုတ် ငယ်စဉ်ကြီးလိုက်) ဆက်တိုက်တိုးသည့် အရှည်ဆုံး အစဉ်ကို ရှာနည်း။
မက်ထရစ် ကွင်းဆက် မြှောက်လဒ် တွက်ချက်မှု (MCM)
Matrix Chain Multiplication (MCM)
မက်ထရစ် အများအပြား မြှောက်ရာတွင် ကိန်းဂဏန်း မြှောက်လဒ် အနည်းဆုံး ကုန်ကျမည့် ကွင်းခတ် (Parenthesization) အစဉ်ကို တွက်နည်း။
အကြွေစေ့ အနည်းဆုံး လဲလှယ်ခြင်း (Coin Change)
Coin Change Problem (Minimum Coins)
သတ်မှတ်ထားသော ငွေပမာဏတစ်ခုရရန် ရှိသော အကြွေစေ့များထဲမှ အရေအတွက် အနည်းဆုံး လိုအပ်ချက်ကို တွက်နည်း။
စာလုံးပြင်ဆင်မှု အကွာအဝေး (Edit Distance)
Edit Distance (Levenshtein Distance)
စာကြောင်းတစ်ခုကို အခြားတစ်ခုဖြစ်ရန် ထည့်သွင်း/ဖျက်/ပြောင်း လုပ်ငန်း (Insert/Delete/Replace) အနည်းဆုံး အကြိမ်ရေ တွက်နည်း။
တန်ဖိုးပေါင်းလဒ် ကိုက်ညီသော အပိုင်းငယ် (Subset Sum)
Subset Sum Problem (Dynamic Programming)
ကိန်းများစွာထဲမှ အချို့ကို ရွေးချယ်ပေါင်းသောအခါ လိုချင်သော Target ပေါင်းလဒ် အတိအကျ ရ/မရ တွက်နည်း။
သံချောင်း ဖြတ်တောက် ရောင်းချနည်း (Rod Cutting)
Rod Cutting Problem (Unbounded Knapsack)
အရှည် n ရှိ သံချောင်းကို ဈေးနှုန်းအမျိုးမျိုးဖြင့် ဖြတ်တောက် ရောင်းချရာတွင် ဝင်ငွေအများဆုံး ရစေမည့် နည်းလမ်း။
ရှေ့နောက်ညီ အရှည်ဆုံး စာလုံးတွဲ (LPS DP)
Longest Palindromic Subsequence (LPS)
စာကြောင်းတစ်ခုအတွင်း ရှေ့မှဖတ်ဖတ် နောက်မှဖတ်ဖတ် တူညီသော (Palindrome) အရှည်ဆုံး စာလုံးစဉ်ကို တွက်နည်း။
ကြက်ဥချ ပဟေဠိ (Egg Dropping DP)
Egg Dropping Puzzle (Dynamic Programming)
ကြက်ဥ k လုံးနှင့် အထပ် n ထပ်ရှိ အဆောက်အအုံတွင် ကြက်ဥကွဲစေသည့် အန္တရာယ်အထပ်ကို အကြိမ်အနည်းဆုံးဖြင့် ရှာနည်း။
ဆက်တိုက် ရေးထားသော စာကြောင်းတစ်ခုကို အဘိဓာန်ရှိ စကားလုံးများအဖြစ် မှန်ကန်စွာ ပိုင်းခြားနိုင်ခြင်း ရှိ/မရှိ စစ်ဆေးနည်း။
ကပ်လျက်အိမ် နှစ်လုံး ဆက်တိုက် ဝင်ရောက်ပါက အချက်ပေးမီး မြည်မည်ဖြစ်၍ မကပ်လျက် အိမ်များမှ ငွေအများဆုံး ရအောင် ယူနည်း။
လှေကားထစ် တက်ရောက်နည်း (Climbing Stairs)
Climbing Stairs (DP / Fibonacci equivalent)
တစ်ကြိမ်လျှင် လှေကား ၁ ထစ် သို့မဟုတ် ၂ ထစ် တက်နိုင်ရာ အထပ် n ထပ်သို့ တက်ရောက်နိုင်သော နည်းလမ်းပေါင်း အရေအတွက် တွက်နည်း။
ကဒိန်း-၏ အများဆုံး ကပ်လျက်ပေါင်းလဒ် (Kadane DP)
Kadane's Algorithm (Maximum Subarray Sum)
အပေါင်းအနုတ် ရောနှောနေသော Array တွင် ကပ်လျက်ရှိသော ကိန်းများ၏ အများဆုံး ပေါင်းလဒ်ကို O(n) တစ်ခေါက်တည်းဖြင့် ရှာနည်း။
ဟက်ဖ်မန်း ဒေတာချုံ့နည်း (Huffman Coding)
Huffman Coding Data Compression
အကြိမ်အများဆုံး ပါဝင်သည့် စာလုံးများကို ဘစ် (Bit) အတိုဆုံး ကုတ်များ သတ်မှတ်၍ ဖိုင်အရွယ်အစား ချုံ့နည်း။
အလုပ်ချိန် မထပ်စေဘဲ အလုပ်အများဆုံး ရွေးချယ်နည်း
Activity Selection Problem
စတင်ချိန်နှင့် ပြီးဆုံးချိန်များရှိသည့် အလုပ်များအနက် တစ်ချိန်တည်း အများဆုံး ပြီးမြောက်မည့် အလုပ်များကို ရွေးနည်း။
အစိတ်အပိုင်းခွဲရသော ကျောပိုးအိတ် ပြဿနာ (Fractional Knapsack)
Fractional Knapsack Problem
ပစ္စည်းများကို တစ်ဝက် သို့မဟုတ် အစိတ်အပိုင်းခွဲ၍ ထည့်နိုင်ရာတွင် ယူနစ်တန်ဖိုး အမြင့်ဆုံးမှ စတင်ထည့်၍ တန်ဖိုးအများဆုံး ရယူနည်း။
သတ်မှတ်ရက်ပါ အလုပ်များကို အမြတ်အများဆုံး စီစဥ်နည်း
Job Sequencing Problem with Deadlines
အလုပ်တစ်ခုစီတွင် Deadline နှင့် Profit ရှိရာ အမြတ်အများဆုံးရမည့် အလုပ်များကို Deadline မတိုင်မီ နေရာချ စီစဥ်နည်း။
အီဂျစ် အပိုင်းဂဏန်း ခွဲခြမ်းနည်း (Egyptian Fraction)
Egyptian Fraction Representation (Greedy)
အပိုင်းဂဏန်းတစ်ခုကို ပိုင်းဝေ ၁ (Unit Fraction `1/n`) များ၏ ပေါင်းလဒ်အဖြစ် ခွဲခြမ်းရေးသားနည်း။
ဆီဆိုင် ဝိုင်းပတ် ခရီးစဉ် (Gas Station Greedy)
Gas Station Circuit Tour Problem
ဆီဆိုင် n ဆိုင်ရှိရာ မည်သည့်ဆိုင်မှ စတင်မောင်းနှင်ပါက ဆီမကုန်ဘဲ တစ်ပတ်အပြည့် ဝိုင်းပတ်နိုင်မည်ကို O(n) ဖြင့် ရှာနည်း။
ဘူတာရုံ ရထားလမ်း စင်္ကြံအနည်းဆုံး လိုအပ်ချက်
Minimum Platforms for Railway Station
ရထားများ ဆိုက်ရောက်/ထွက်ခွာချိန်စာရင်း အရ မည်သည့်ရထားမျှ မစောင့်ဆိုင်းရစေရန် လိုအပ်သော အနည်းဆုံး ပလက်ဖောင်း အရေအတွက် တွက်နည်း။
ရေပိုက်လိုင်း ဆက်သွယ်မှု ကွန်ရက် အနည်းဆုံး လမ်းကြောင်း
Water Connection Problem (Pipes & Taps)
အိမ်များသို့ ရေသွယ်တန်းရာတွင် အစပိုက် (Tank) နှင့် အဆုံးပိုက် (Tap) တွဲဖက်မှုများကို အချင်းအကျဉ်းဆုံး ပိုက်တန်ဖိုးဖြင့် ရှာနည်း။
ကလေးများကို သကြားလုံး ဝေငှနည်း (Candy Greedy)
Candy Distribution Problem (Greedy Two-Pass)
ကလေးတိုင်း အနည်းဆုံး ၁ လုံးရရှိစေပြီး အမှတ်များသူက ဘေးလူထက် ပိုရရန် အနည်းဆုံး သကြားလုံး အရေအတွက် တွက်နည်း။
ထပ်ဆင့်မနေသော အချိန်ဇယားများ အများဆုံး ရွေးချယ်ခြင်း
Non-overlapping Interval Scheduling Problem
ကြားကာလ (Intervals) အများအပြားအနက် မထပ်ဆင့်စေဘဲ အများဆုံး ထားရှိနိုင်ရန် ဖယ်ရှားရမည့် အနည်းဆုံး အရေအတွက် ရှာနည်း။
နှစ်ပိုင်းခွဲ သစ်ပင် (BST) ရှာဖွေခြင်းနှင့် ထည့်သွင်းခြင်း
Binary Search Tree (BST) Search & Insert
ဘယ်ဘက်တွင် မိဘထက်ငယ်သောတန်ဖိုး၊ ညာဘက်တွင် ကြီးသောတန်ဖိုးထား၍ O(log n) ဖြင့် ရှာဖွေ/ထည့်သွင်းနည်း။
ဘယ်-အလယ်-ညာ အစဉ်လိုက် သစ်ပင်ဖြတ်သန်းနည်း
Tree In-order Traversal (Left - Root - Right)
ဘယ်ဘက်အခြမ်း၊ Root နှင့် ညာဘက်အခြမ်း အစဉ်အတိုင်း ဖြတ်သန်းခြင်းဖြင့် BST မှ ကြီးစဉ်ငယ်လိုက် ကိန်းများကို ရယူနည်း။
အလယ်-ဘယ်-ညာ ဦးစွာ ဖြတ်သန်းနည်း
Tree Pre-order Traversal (Root - Left - Right)
Root ကို ဦးစွာ မှတ်သားပြီးမှ ဘယ်နှင့်ညာသို့ ဆက်သွားခြင်းဖြင့် Tree တစ်ခုလုံး၏ မိတ္တူ သို့မဟုတ် Prefix Expression ထုတ်နည်း။
ဘယ်-ညာ-အလယ် နောက်ဆုံးမှ ဖြတ်သန်းနည်း
Tree Post-order Traversal (Left - Right - Root)
ကလေး Node များကို ဦးစွာ ပြီးစီးစေပြီးမှ Root ကို နောက်ဆုံး တွက်ချက်သည့် သစ်ပင်ဖျက်သိမ်းမှု/အမြင့်တွက်နည်း။
ဘုံဘိုးဘေးအနီးဆုံး Node ရှာဖွေခြင်း (LCA)
Lowest Common Ancestor (LCA) in Binary Tree
Node နှစ်ခု p နှင့် q တို့၏ အနီးဆုံး ဆွေစဉ်မျိုးဆက် ဘုံဘိုးဘေး (Ancestor) ကို O(n) ဖြင့် ရှာနည်း။
အလိုအလျောက် ချိန်ခွင်လျှာညှိ သစ်ပင် (AVL Tree)
AVL Tree Self-Balancing Rotations
Node ထည့်တိုင်း ဘယ်ညာ အမြင့်ကွာဟချက် Balance Factor (-1, 0, 1) မကျော်စေရန် Rotations ဖြင့် ထိန်းကျောင်းနည်း။
စကားလုံးများကို စာလုံးတစ်လုံးချင်း Node အလိုက် ထည့်သွင်း၍ Prefix ဖြင့် စက္ကန့်မလပ် ရှာဖွေနိုင်သော သစ်ပင်။
အပိုင်းအခြား ပေါင်းလဒ် သစ်ပင် (Segment Tree)
Segment Tree Range Sum Query & Update
Array ဒြပ်စင်များကို ပြင်ဆင်ခြင်းနှင့် Range [L, R] ပေါင်းလဒ် မေးခွန်း နှစ်ခုလုံးကို O(log n) ဖြင့် အဖြေပေးနည်း။
ဖင်ဝစ်ခ် သစ်ပင် (Binary Indexed Tree)
Fenwick Tree (Binary Indexed Tree - BIT)
Segment Tree ထက် Memory သက်သာပြီး Bitwise Operation `i & (-i)` ဖြင့် Prefix Sum ကို O(log n) ဖြင့် တွက်နည်း။
အငယ်ဆုံးတန်ဖိုး ဦးစားပေးတန်းစီ (Min-Heap Priority Queue)
Min-Heap Priority Queue Implementation
အငယ်ဆုံး (သို့မဟုတ် အကြီးဆုံး) ဒြပ်စင်ကို အမြဲတမ်း Root တွင် O(1) ဖြင့် ထားရှိပြီး O(log n) ဖြင့် ထည့်/ထုတ်နိုင်သော Complete Binary Tree။
အုပ်စုပေါင်းစည်းမှုနှင့် ခေါင်းဆောင်ရှာနည်း (Union-Find DSU)
Disjoint Set Union (DSU / Union-Find)
Path Compression နှင့် Union by Rank သုံး၍ ဒြပ်စင်နှစ်ခု အုပ်စုတစ်ခုတည်း ဟုတ်မဟုတ် O(α(n)) နီးပါး O(1) ဖြင့် စစ်ဆေးနည်း။
Binary Tree တစ်ခုရှိ မည်သည့် Node နှစ်ခုအကြားမဆို အရှည်ဆုံး လမ်းကြောင်း (Edges အရေအတွက်) ကို တွက်နည်း။
သစ်ပင်ကို စာသားပြောင်းခြင်းနှင့် ပြန်လည်တည်ဆောက်ခြင်း
Serialize and Deserialize Binary Tree
Binary Tree တစ်ခုလုံးကို String စာသားအဖြစ် ပြောင်းလဲသိမ်းဆည်းပြီး မူလသစ်ပင်အဖြစ် တိကျစွာ ပြန်လည်တည်ဆောက်နည်း။
အသုံးအနည်းဆုံး ဦးစွာဖယ်ရှားသည့် Cache (LRU Cache)
LRU (Least Recently Used) Cache Implementation
Doubly Linked List နှင့် Hash Map တွဲသုံး၍ get နှင့် put နှစ်ခုလုံးကို O(1) ဖြင့် အလုပ်လုပ်သော Cache စနစ်။
အလိုအလျောက် အပေါ်ဆုံးရောက် သစ်ပင် (Splay Tree)
Splay Tree Self-Adjusting BST
မကြာခဏ ရှာဖွေသော ဒြပ်စင်ကို Splaying (Rotations) ဖြင့် Root သို့ အလိုအလျောက် ဆွဲတင်ပေးသော BST။
ကနုသ်-မောရစ်-ပရက်တ် စာသားရှာဖွေနည်း (KMP)
Knuth-Morris-Pratt (KMP) Pattern Searching
LPS (Longest Prefix Suffix) ဇယားကို တည်ဆောက်၍ မကိုက်ညီသော နေရာမှ စာသားကို မလိုအပ်ဘဲ နောက်ပြန်မဆုတ်စေသော ရှာဖွေနည်း။
ရေဘင်-ကာ့ပ် ဟက်ရှ်တန်ဖိုးဖြင့် စာသားရှာဖွေနည်း
Rabin-Karp Rolling Hash String Matching
Rolling Hash ဖြင့် စာသားအပိုင်း၏ Hash တန်ဖိုးကို O(1) ဖြင့် အမြန်တွက်၍ တိုက်ဆိုင်ရှာဖွေနည်း။
ဘွိုင်ယာ-မိုး စာသား ခုန်ကျော်ရှာဖွေနည်း
Boyer-Moore String Search Algorithm
Pattern ၏ ညာဘက်ဆုံးမှ ဘယ်သို့ နောက်ပြန် စစ်ဆေးပြီး Bad Character Table ဖြင့် စာလုံးများစွာ ခုန်ကျော်ရှာနည်း။
Z အယ်လဂိုရစ်သမ် (O(N) စာသားရှာဖွေနည်း)
Z Algorithm (Linear Time Pattern Matching)
`Pattern + $ + Text` ပေါင်းစပ်ပြီး Z-box (Z array) ဖြင့် Prefix တူညီမှုကို O(N) ဖြင့် တွက်နည်း။
မန်နချာ-၏ O(N) အရှည်ဆုံး Palindrome ရှာနည်း
Manacher's Algorithm (Linear Longest Palindrome)
စာသားကြားတွင် "#" ထည့်၍ စ-မ မရွေး Palindrome အရှည်ဆုံးကို O(N) linear time ဖြင့် ရှာနည်း။
နောက်ဆက်စာသား အက္ခရာစဉ် ဇယား (Suffix Array)
Suffix Array & LCP Construction
စာကြောင်းတစ်ခု၏ Suffix အားလုံးကို အက္ခရာစဉ် (Lexicographical order) စီ၍ ရှာဖွေမှု လျင်မြန်စေသော ဇယား။
အာဟို-ကိုရာဆစ် စာလုံးများစွာ တစ်ပြိုင်နက် ရှာဖွေနည်း
Aho-Corasick Multi-Pattern String Matching
Trie သစ်ပင်နှင့် Failure Links ပေါင်းစပ်၍ Pattern စကားလုံးပေါင်း ထောင်ချီကို Text တစ်ခေါက်တည်း ဖြတ်ရှာနည်း။
ဆက်တိုက်ပါ စာလုံးရေတွက် ချုံ့နည်း (RLE)
Run-Length Encoding (RLE) Compression
ဆက်တိုက် တူညီသော စာလုံးများကို စာလုံးနှင့် အရေအတွက်တွဲ "A4B3C2" အဖြစ် အလွယ်ကူဆုံး ချုံ့နည်း။
စာကြောင်းများ၏ ရှေ့ဆုံးတူညီသော စာလုံးတွဲ (LCP)
Longest Common Prefix (LCP)
စကားလုံး စာရင်းတစ်ခုလုံးတွင် အားလုံးတူညီစွာ စတင်သော အရှည်ဆုံး ရှေ့ဆက် Prefix ကို ရှာနည်း။
အက္ခရာတူ စာလုံးရှုပ် ရှာဖွေနည်း (Anagram Sliding Window)
Anagram Pattern Search (Sliding Window)
Sliding Window ဖြင့် Character Count Array နှိုင်းယှဉ်၍ Pattern ၏ Anagram (စာလုံးရှုပ်) အားလုံး ရှာနည်း။
ဘုရင်မ N ပါး စစ်တုရင်ပုစ္ဆာ (Backtracking)
N-Queens Problem (Backtracking)
N×N စစ်တုရင်ခုံပေါ်တွင် ဘုရင်မ N ပါး တစ်ပါးနှင့်တစ်ပါး အပြန်အလှန် မစားမိစေရန် နေရာချထားသည့် နည်းလမ်းပေါင်းစုံကို ရှာနည်း။
ဆူဒိုကူ ကိန်းဂဏန်းပဟေဠိ ဖြေရှင်းနည်း (Backtracking)
Sudoku Puzzle Solver (Backtracking)
9×9 ဇယားကွက်လပ်များတွင် 1 မှ 9 အထိ ကိန်းများကို စည်းကမ်းချက်နှင့်အညီ စမ်းသပ်ထည့်သွင်း ဖြေရှင်းနည်း။
ယူကလစ်၏ အကြီးဆုံးဘုံဆားခွဲကိန်း ရှာနည်း (GCD/LCM)
Euclidean Algorithm for GCD & LCM
ကိန်းကြီးကို ကိန်းငယ်ဖြင့် အကြွင်းယူ နုတ်ယူခြင်းကို O(log(min(a, b))) ဖြင့် တွက်ချက်သော ရှေးအကျဆုံး အယ်လဂိုရစ်သမ်။
အီရာတိုစသီးနီးစ်၏ သုဒ္ဓကိန်း စစ်ထုတ်နည်း
Sieve of Eratosthenes (Prime Numbers)
ကိန်း N အထိ သုဒ္ဓကိန်း (Primes) အားလုံးကို ဆားပေါင်းကိန်းများ ကျော်ဖျက်ခြင်းဖြင့် O(n log log n) ဖြင့် ရှာနည်း။
နှစ်ဆတိုး ထပ်ကိန်း မြန်ဆန်စွာ တွက်ချက်နည်း
Fast Modular Exponentiation (Binary Powering)
`(base^exp) % mod` ကို တိုက်ရိုက်မမြှောက်ဘဲ O(log exp) ဖြင့် တွက်ချက်နည်း။
ဂျိုးဇက်ဖတ်စ် စက်ဝိုင်းပုံ ကျန်ရစ်သူ တွက်နည်း
Josephus Survivor Problem
လူ N ဦး စက်ဝိုင်းပုံ ထိုင်နေစဉ် k-မြောက်လူကို အစဉ်လိုက် ဖယ်ရှားပါက နောက်ဆုံး ကျန်ရစ်မည့်သူကို O(N) ဖြင့် ရှာနည်း။
ဝင်္ကပါအတွင်းမှ ကြွက် လမ်းကြောင်းရှာနည်း (Backtracking)
Rat in a Maze Pathfinder (Backtracking)
N×N ဝင်္ကပါအတွင်း အတားအဆီးများ ရှောင်ကွင်း၍ (0,0) မှ (N-1,N-1) သို့ လမ်းကြောင်းများ ရှာနည်း။
ဇယားကွက်အတွင်း စာလုံးရှာနည်း (Word Search)
Word Search in 2D Grid (Backtracking)
2D Character ဇယားပေါ်တွင် လိုချင်သော စကားလုံးကို ကပ်လျက် (အပေါ်/အောက်/ဘယ်/ညာ) ဆက်တိုက် ရှိ/မရှိ ရှာနည်း။
ဘစ် (Bit) ဖြင့် Subsets အားလုံး ထုတ်ယူနည်း
Power Set Generation via Bit Manipulation
`0` မှ `2^N - 1` အထိ Binary Bits (0/1) ကို သုံး၍ Array ၏ Subsets အားလုံးကို O(N × 2^N) ဖြင့် လျင်မြန်စွာ ထုတ်နည်း။
ဘရိုင်ယန်-ကာနီဂန် 1-ဘစ် အရေအတွက် ရေတွက်နည်း
Brian Kernighan's Bit Counting Algorithm
`n & (n - 1)` လုပ်ဆောင်ချက်ကို သုံး၍ Binary အတွင်းရှိ 1-bit အရေအတွက် (Hamming Weight) ကို အမြန် ရေတွက်နည်း။
ကက်တလန် ကိန်းစဉ် တွက်ချက်နည်း (Catalan Number)
Catalan Numbers Computation
BST ပုံစံပေါင်း အရေအတွက်၊ ကွင်းစကွင်းပိတ် မှန်ကန်မှု (Parentheses combinations) တို့ကို တွက်ပေးသော ကိန်းစဉ်။
ဖာမက်-၏ သုဒ္ဓကိန်း ဖြစ်နိုင်ခြေ စစ်ဆေးနည်း
Fermat's Primality Test (Probabilistic Prime Check)
`a^(n-1) % n === 1` ဖြစ်လျှင် ကိန်းကြီး n သည် သုဒ္ဓကိန်း (Prime) ဖြစ်နိုင်ခြေများကြောင်း O(k log n) ဖြင့် စစ်ဆေးနည်း။
မက်ထရစ် ထပ်ကိန်းဖြင့် ဖီဘိုနာချီ O(log n) တွက်နည်း
N-th Fibonacci via Matrix Exponentiation
ကိန်းစဉ် N အလွန်ကြီးမား (ဥပမာ 10^18) ပါက 2×2 မက်ထရစ် ထပ်ကိန်းဖြင့် O(log n) ဖြင့် တွက်နည်း။
ဖလွိုက်-၏ လိပ်နှင့်ယုန် သံသရာစက်ဝိုင်း ရှာနည်း
Floyd's Cycle Detection (Tortoise and Hare)
အမြန်ရွေ့ pointer (ယုန်) နှင့် အနှေးရွေ့ pointer (လိပ်) ဖြင့် Linked List သို့မဟုတ် Array အတွင်း သံသရာလည်မှု (Loop) ကို O(1) space ဖြင့် ရှာနည်း။
ဖစ်ရှာ-ယိတ်စ် မျှတသော ကျပန်းမွှေနှောက်နည်း
Fisher-Yates (Knuth) Array Shuffling
Array တစ်ခုရှိ ဒြပ်စင်များကို ဖြစ်နိုင်ခြေ တူညီစွာ (Unbiased uniform random) O(N) တစ်ခေါက်တည်းဖြင့် ကျပန်းမွှေနှောက်နည်း။
စိတ်ကူးထဲက Project တွေကို လမ်းကြောင်းမျိုးစုံနဲ့ လက်တွေ့ပုံဖော်ပေးမယ့် AI-Powered Personal Planning Studio 🎯
taraspace.space — သင့်ရဲ့ Idea နှင့် Project များကို AI နည်းပညာဖြင့် လွယ်ကူစွာ စီမံပုံဖော်လိုက်ပါ။