AIUnlimited
🌳

AI పునాదులు

🌱
AI Seeds

సున్నా నుండి ప్రారంభించండి

🌿
AI Sprouts

పునాదులు నిర్మించండి

🌳
AI Branches

ఆచరణలో అన్వయించండి

🏕️
AI Canopy

లోతుగా వెళ్ళండి

🌲
AI Forest

AI లో నిపుణత సాధించండి

🔨

AI నైపుణ్యం

✏️
AI Sketch

సున్నా నుండి ప్రారంభించండి

🪨
AI Chisel

పునాదులు నిర్మించండి

⚒️
AI Craft

ఆచరణలో అన్వయించండి

💎
AI Polish

లోతుగా వెళ్ళండి

🏆
AI Masterpiece

AI లో నిపుణత సాధించండి

📘

AI ఆచరణ

📖
ఓపెన్-సోర్స్ మోడల్స్ అర్థం చేసుకోవడం

ఓపెన్-సోర్స్ మోడల్స్ ప్రాథమికాలు మరియు వనరులు

🎯
సమస్య నుండి మోడల్ టాస్క్‌కు

వ్యాపార సమస్యలను మోడల్ టాస్క్‌లుగా మార్చడం

⚡
మీ మొదటి మోడల్ నడపడం

30 నిమిషాల్లో మీ మొదటి ఫలితాలను చూడండి

🔧
ఫైన్-ట్యూనింగ్ మరియు మూల్యాంకనం

మోడల్స్ ఫైన్-ట్యూన్ చేసి పనితీరును మూల్యాంకనం చేయండి

🚀
అప్లికేషన్ సిస్టమ్‌లు

వాస్తవ AI అనువర్తనాలను నిర్మించండి

🎨
జనరేటివ్ AI

ఓపెన్-సోర్స్ AIGC మోడల్స్ అన్వేషించండి

🤖
ఏజెంట్లు

ఏజెంట్ ఫ్రేమ్‌వర్క్‌లు మరియు MCP టూల్స్ నేర్చుకోండి

📐
సప్లిమెంటరీ ప్రాథమికాలు

LLM ప్రాథమికాలు మరియు మూల్యాంకనం

🎓

Claude Academy

🤖
Claude 101

Learn AI basics with Claude

💻
Claude Code 101

Code with Claude as your pair programmer

🤝
Introduction to Claude Cowork

Collaborate with Claude on complex projects

⚙️
Claude Platform 101

Build apps with the Claude API

ల్యాబ్

7 ప్రయోగాలు లోడ్ అయ్యాయి
🧬Neural Network Playground🤖AI లేదా మనిషి?🥋Prompt Engineering Dojo🏁Algorithm Race🧠AI ట్రివియా ఛాలెంజ్🏗️సిస్టమ్ డిజైన్ క్యాన్వాస్
🎯మాక్ ఇంటర్వ్యూల్యాబ్‌లోకి వెళ్ళండి→
🚀

కెరీర్ అభివృద్ధి

🚀
ఇంటర్వ్యూ లాంచ్‌ప్యాడ్

మీ ప్రయాణం ప్రారంభించండి

🌟
ప్రవర్తనా ఇంటర్వ్యూ నైపుణ్యం

సాఫ్ట్ స్కిల్స్ నేర్చుకోండి

💻
సాంకేతిక ఇంటర్వ్యూలు

కోడింగ్ రౌండ్ విజయం సాధించండి

🤖
AI & ML ఇంటర్వ్యూలు

ML ఇంటర్వ్యూ నైపుణ్యం

🏆
ఆఫర్ & అంతకు మించి

అత్యుత్తమ ఆఫర్ పొందండి

నేర్చుకోవడం ప్రారంభించండి
AIUnlimited

MIT లైసెన్స్

沪ICP备18025655号-11

నేర్చుకోండి

  • AI ప్రాథమికాలు
  • AI ఆచరణ
  • Claude Academy
  • ల్యాబ్
  • కెరీర్ అభివృద్ధి

సంఘం

  • మా గురించి
  • తరచుగా అడిగే ప్రశ్నలు

మద్దతు

  • footer.terms
  • footer.privacy
  • footer.contact
AI & ఇంజనీరింగ్ ప్రోగ్రామ్‌లు›✏️ AI Sketch›పాఠాలు›రికర్షన్ మరియు బ్యాక్‌ట్రాకింగ్
🧩
AI Sketch • మధ్యస్థం⏱️ 20 నిమిషాల పఠన సమయం

రికర్షన్ మరియు బ్యాక్‌ట్రాకింగ్

Recursion పునాదులు

Recursive function base case చేరుకునే వరకు సమస్య యొక్క చిన్న రూపంతో తనను తాను call చేసుకుంటుంది.

ప్రతి recursion కి రెండు విషయాలు కావాలి:

  1. Base case - నేరుగా return చేసే సరళమైన input.
  2. Recursive case - సమస్యను విభజించి తనను తాను call చేసుకోవడం.
def factorial(n):
    if n <= 1:        # base case
        return 1
    return n * factorial(n - 1)  # recursive case

Call Stack - దృశ్యీకరణ

ప్రతి recursive call call stack పైకి frame push చేస్తుంది. Base case return అయినప్పుడు, frames రివర్స్ క్రమంలో pop అవుతాయి.

factorial(4)
  → factorial(3)
    → factorial(2)
      → factorial(1) → 1 return చేస్తుంది
    ← 2 return చేస్తుంది
  ← 6 return చేస్తుంది
← 24 return చేస్తుంది

Base case లేకపోతే, stack overflow అవుతుంది. Python default recursion limit 1,000 frames.

🤯
Python 1,000 recursion limit ఉద్దేశపూర్వకంగా conservative. sys.setrecursionlimit() తో పెంచవచ్చు, కానీ deep recursion కి iterative solutions సాధారణంగా ఇష్టపడతారు.

Fibonacci - క్లాసిక్ ఉచ్చు

Naïve recursive Fibonacci O(2ⁿ) ఎందుకంటే ఇది అదే sub-problems ను మళ్ళీ మళ్ళీ compute చేస్తుంది. Memoisation దీన్ని O(n) time మరియు space లో పరిష్కరిస్తుంది.

from functools import lru_cache

@lru_cache(maxsize=None)
def fib(n):
    if n < 2:
        return n
    return fib(n - 1) + fib(n - 2)
Fibonacci కోసం recursion tree, పునరావృత sub-problems చూపిస్తూ
Memoisation లేకుండా fib(5) 15 calls చేస్తుంది. Memoisation తో కేవలం 5.

Backtracking - అన్నీ ప్రయత్నించు, తర్వాత రద్దు చేయి

Backtracking అనేది twist తో recursion: మీరు ఎంపిక చేసి, recurse చేసి, తదుపరి option ప్రయత్నించే ముందు ఎంపికను రద్దు చేస్తారు. Maze explore చేయడం అనుకోండి - ముందుకు నడవండి, dead end తగిలితే వెనక్కి, తదుపరి path ప్రయత్నించండి.

Backtracking Template

def backtrack(state, choices):
    if is_solution(state):
        result.append(state.copy())
        return
    for choice in choices:
        if is_valid(choice):
            state.add(choice)       # ఎంచుకో
            backtrack(state, ...)   # explore చేయి
            state.remove(choice)    # రద్దు చేయి

ఈ మూడు-దశల pattern - ఎంచుకో, explore చేయి, రద్దు చేయి - దాదాపు ప్రతి backtracking సమస్య యొక్క వెన్నెముక.

పాఠం 8 / 100% పూర్తి
←Binary Search పాటర్న్‌లు

చర్చ

సైన్ ఇన్ చర్చలో చేరండి

🧠త్వరిత తనిఖీ

Backtracking template లో, recursive call తర్వాత ఎంపికను ఎందుకు రద్దు చేస్తాం?

Permutations

[1, 2, 3] యొక్క అన్ని వరుసక్రమాలు generate చేయండి. ప్రతి level లో, ఉపయోగించని number ఎంచుకోండి, recurse చేయండి, తర్వాత un-pick చేయండి.

         []
      /   |   \
    [1]  [2]  [3]
    / \   ...
 [1,2] [1,3]
   |      |
[1,2,3] [1,3,2]  ... (6 మొత్తం)

n! permutations ఉంటాయి, కాబట్టి time complexity O(n × n!).

Combinations మరియు Subsets

Combinations (n choose k): ప్రతి element వద్ద, దాన్ని చేర్చండి లేదా skip చేయండి, duplicates నివారించడానికి ముందుకు మాత్రమే recurse చేయండి.

Subsets: size constraint లేకుండా అదే ఆలోచన - recursion tree లో ప్రతి node valid subset. 2ⁿ subsets ఉంటాయి.

🤔
Think about it:Permutations n! results ఇస్తాయి, subsets 2ⁿ ఇస్తాయి. n=10 కి, అది 3,628,800 vs 1,024 - భారీ తేడా. ఎందుకు?

N-Queens - వివరణ

N×N board పై N queens ను ఒకరినొకరు attack చేయకుండా ఉంచండి. N=4 కి:

. Q . .
. . . Q
Q . . .
. . Q .

వ్యూహం: ప్రతి row కి ఒక queen ఉంచండి. ప్రతి row కి ప్రతి column ప్రయత్నించండి. Column, main diagonal మరియు anti-diagonal conflicts తనిఖీ చేయండి. Safe అయితే ఉంచి తదుపరి row కి recurse చేయండి. Stuck అయితే backtrack.

మూడు sets తో conflicts track చేయండి: cols, diag (row − col) మరియు anti_diag (row + col).

🧠త్వరిత తనిఖీ

N-Queens సమస్యలో diagonal conflicts ను సమర్థవంతంగా ఎలా తనిఖీ చేస్తాం?

Sudoku Solver - భావన

ఖాళీ cell కనుగొని, 1–9 digits ప్రయత్నించండి. ప్రతి digit కి row, column మరియు 3×3 box constraints తనిఖీ చేయండి. Valid అయితే ఉంచి recurse చేయండి. ఏ digit పనిచేయకపోతే, undo చేసి backtrack. Constraints నుండి pruning భారీ search space ఉన్నప్పటికీ దీన్ని సాధ్యం చేస్తుంది.

Grid లో Word Search

2D letters board మరియు target word ఇచ్చినప్పుడు, ప్రతి cell నుండి ప్రారంభించి నాలుగు దిశలలో DFS చేయండి, ఒక character చొప్పున match చేస్తూ. Recursion సమయంలో cells ను visited గా mark చేసి, backtrack చేసేటప్పుడు unmark చేయండి.

Backtracking యొక్క Time Complexity

ఖర్చు branching factor (ప్రతి step లో choices) మరియు depth (solution కి steps) పై ఆధారపడుతుంది. b branches మరియు d depth కి: O(bᵈ).

| సమస్య | Branching | Depth | Complexity | |--------|-----------|-------|------------| | Permutations | n, n−1, … | n | O(n!) | | Subsets | 2 | n | O(2ⁿ) | | N-Queens | ~n | n | O(n!) worst case |

Pruning ద్వారా Optimisation

Pruning అంటే విఫలమవుతాయని తెలిసిన branches ను skip చేయడం. ఉదాహరణలు:

  • N-Queens: ఇప్పటికే occupied columns skip.
  • Sudoku: constraints ఉల్లంఘించే digits skip.
  • Combination sum: remaining sum < 0 అయితే skip.

మంచి pruning అసాధ్యమైన search ను వేగవంతమైనదిగా మార్చగలదు.

🧠త్వరిత తనిఖీ

Backtracking algorithm లో pruning ఏమి చేస్తుంది?

🤔
Think about it:చాలా backtracking సమస్యలు dynamic programming తో కూడా పరిష్కరించవచ్చు. రెండింటి మధ్య విధానంలో కీలక తేడా ఏమిటి?

📚 మరింత చదవండి

  • NeetCode - Backtracking playlist - video walkthroughs తో సమస్యలు
  • Tech Interview Handbook - Recursion - patterns మరియు సాధారణ pitfalls
  • LeetCode Backtracking study plan - క్రమానుగత సమస్యల సెట్