AI EducademyAIEducademy
🌳

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 & ML ఇంటర్వ్యూలు

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

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

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

అన్ని ప్రోగ్రామ్‌లు చూడండి→

ల్యాబ్

7 ప్రయోగాలు లోడ్ అయ్యాయి
🧠న్యూరల్ నెట్‌వర్క్ ప్లేగ్రౌండ్🤖AI లేదా మనిషి?💬ప్రాంప్ట్ ల్యాబ్🎨ఇమేజ్ జనరేటర్😊సెంటిమెంట్ ఎనలైజర్💡చాట్‌బాట్ బిల్డర్⚖️ఎథిక్స్ సిమ్యులేటర్
🎯మాక్ ఇంటర్వ్యూల్యాబ్‌లోకి వెళ్ళండి→
nav.journeyబ్లాగ్
🎯
మా గురించి

ప్రతి చోటా, ప్రతి ఒక్కరికీ AI విద్యను అందుబాటులోకి తీసుకురావడం

❓
nav.faq

Common questions answered

✉️
Contact

Get in touch with us

⭐
ఓపెన్ సోర్స్

GitHub లో బహిరంగంగా నిర్మించబడింది

నేర్చుకోవడం ప్రారంభించండి - ఇది ఉచితం
AI EducademyAIEducademy

MIT లైసెన్స్ - ఓపెన్ సోర్స్

నేర్చుకోండి

  • ప్రోగ్రాములు
  • పాఠాలు
  • ల్యాబ్

సంఘం

  • GitHub
  • సహకరించండి
  • ప్రవర్తనా నియమావళి
  • మా గురించి
  • తరచుగా అడిగే ప్రశ్నలు

మద్దతు

  • కాఫీ కొనండి ☕
  • footer.terms
  • footer.privacy
  • footer.contact
AI & ఇంజనీరింగ్ ప్రోగ్రామ్‌లు›✏️ AI Sketch›పాఠాలు›Greedy Algorithms
🏃
AI Sketch • మధ్యస్థం⏱️ 17 నిమిషాల పఠన సమయం

Greedy Algorithms

Algorithm ను Greedy గా ఏది చేస్తుంది?

Greedy algorithm ఒక పరిష్కారాన్ని ఒక్కో అడుగు గా నిర్మిస్తుంది, ఎల్లప్పుడూ ఇప్పుడు ఉత్తమంగా కనిపించే ఎంపికను ఎంచుకుంటుంది - గత ఎంపికలను తిరిగి పరిగణించకుండా. Backtracking లేదు, ముందుకు చూడడం లేదు.

రెండు లక్షణాలు ఉన్నప్పుడు ఇది పనిచేస్తుంది:

  1. Greedy choice property - స్థానికంగా ఉత్తమ ఎంపిక సమగ్రంగా ఉత్తమ పరిష్కారానికి దారితీస్తుంది.
  2. Optimal substructure - ప్రతి ఎంపిక తర్వాత మిగిలిన సమస్య అదే సమస్య యొక్క చిన్న రూపం.

Activity Selection - క్లాసిక్ ఉదాహరణ

ప్రారంభ మరియు ముగింపు సమయాలతో కార్యకలాపాల సమూహం ఇచ్చినప్పుడు, అతిపెక్కు అతివ్యాప్తి కాని కార్యకలాపాలను ఎంచుకోండి.

Greedy వ్యూహం: ముగింపు సమయం ప్రకారం sort చేసి, ఎల్లప్పుడూ ముందుగా ముగిసే కార్యకలాపాన్ని ఎంచుకోండి.

def max_activities(intervals):
    intervals.sort(key=lambda x: x[1])
    count, end = 0, 0
    for s, e in intervals:
        if s >= end:
            count += 1
            end = e
    return count

ఇది ఎందుకు పనిచేస్తుంది? ముందుగా ముగిసే కార్యకలాపాన్ని ఎంచుకోవడం భవిష్యత్ కార్యకలాపాలకు ఎక్కువ స్థలం ఇస్తుంది. మరే ఎంపికా దీని కంటే మెరుగ్గా చేయలేదు.

ముందుగా ముగింపు సమయం ఆధారంగా activity selection చూపే timeline
ముందుగా ముగింపు సమయం ప్రకారం ఎంపిక అతివ్యాప్తి కాని కార్యకలాపాల సంఖ్యను గరిష్టం చేస్తుంది.

Huffman Coding - భావన

అత్యంత తక్కువ-ఫ్రీక్వెన్సీ రెండు చిహ్నాలను పదేపదే కలపడం ద్వారా ఉత్తమ prefix-free binary code నిర్మించండి. ఇది greedy: ప్రతి అడుగులో, చౌకైన జతను కలపండి. ఫలితం ఒక tree, ఇందులో తరచుగా వచ్చే చిహ్నాలకు చిన్న codes ఉంటాయి.

🤯
Huffman coding JPEG, MP3, మరియు ZIP compression లో ఉపయోగించబడుతుంది. David Huffman దీన్ని 1952 లో విద్యార్థిగా కనుగొన్నాడు - ఇది ఒక హోంవర్క్ అసైన్‌మెంట్!

Jump Game

nums[i] index i నుండి గరిష్ట jump పొడవు అయిన array ఇచ్చినప్పుడు, మీరు చివరి index కి చేరుకోగలరా అని నిర్ణయించండి.

Greedy విధానం: ఇప్పటివరకు చేరుకోగల అతి దూర index ను ట్రాక్ చేయండి. ఎడమ నుండి కుడికి scan చేయండి - మీరు ఎప్పుడైనా వెనుకబడితే, false రిటర్న్ చేయండి.

def can_jump(nums):
    farthest = 0
    for i, jump in enumerate(nums):
        if i > farthest:
            return False
        farthest = max(farthest, i + jump)
    return True
పాఠం 9 / 100% పూర్తి
←రికర్షన్ మరియు బ్యాక్‌ట్రాకింగ్

Discussion

Sign in to join the discussion

lessons.suggestEdit
🧠త్వరిత తనిఖీ

Jump Game లో, greedy variable 'farthest' ఏమిటి?

Gas Station

Gas stations ఉన్న వృత్తాకార మార్గంలో ప్రయాణించండి. Station i వద్ద gas[i] ఇంధనం పొందుతారు మరియు తదుపరి station కి చేరుకోవడానికి cost[i] ఖర్చవుతుంది. circuit పూర్తి చేయగల starting station కనుగొనండి, లేదా −1 రిటర్న్ చేయండి.

Greedy అంతర్దృష్టి: మొత్తం gas ≥ మొత్తం cost అయితే, పరిష్కారం ఉంటుంది. Running surplus ట్రాక్ చేయండి; అది సున్నా కంటే తగ్గినప్పుడు, సమాధానం ఆ point తర్వాత మొదలవ్వాలి.

Task Scheduler

ఒకే రకమైన tasks మధ్య n cooldown తో tasks షెడ్యూల్ చేయండి. Greedy: ఎల్లప్పుడూ అత్యధిక ఫ్రీక్వెన్సీ మిగిలిన task ను ఎంచుకోండి. సమాధానం గరిష్ట ఫ్రీక్వెన్సీ మరియు ఎన్ని tasks దాన్ని పంచుకుంటాయి అనే దానిపై ఆధారపడుతుంది.

Tasks: A A A B B C, cooldown = 2
Schedule: A B C A B _ A
Total = 7
🤔
Think about it:Task scheduler లో, అత్యధిక ఫ్రీక్వెన్సీ task ను ముందుగా ఎంచుకోవడం idle slots ను ఎందుకు తగ్గిస్తుంది? అత్యల్ప ఫ్రీక్వెన్సీ ముందుగా ఎంచుకుంటే ఏమి తప్పు జరుగుతుంది?

Fractional Knapsack vs 0/1 Knapsack

Fractional knapsack: అంశాల భాగాలు తీసుకోవచ్చు. Greedy పనిచేస్తుంది - విలువ-ప్రతి-బరువు ప్రకారం sort చేసి, ఉత్తమ నిష్పత్తి ముందుగా తీసుకోండి.

0/1 knapsack: అంశాలు పూర్తిగా తీసుకోవాలి లేదా వదిలేయాలి. ఇక్కడ Greedy విఫలమవుతుంది ఎందుకంటే బరువైన-కానీ-విలువైన అంశాన్ని వదిలేయడం రెండు తేలికైన వాటిని తీసుకోవడం కంటే అధ్వాన్నంగా ఉండవచ్చు. దీనికి dynamic programming అవసరం.

Items: (బరువు=3, విలువ=4), (బరువు=2, విలువ=3), (బరువు=2, విలువ=3)
Capacity: 4

Greedy (ఉత్తమ నిష్పత్తి ముందు): item 1 తీసుకుంటుంది (బ=3, వి=4) → 1 మిగిలింది → మిగతాది సరిపోదు → విలువ = 4
Optimal: items 2+3 తీసుకుంటుంది (బ=4, వి=6) → విలువ = 6 ✗ Greedy విఫలం!
🧠త్వరిత తనిఖీ

0/1 knapsack సమస్యకు greedy విధానం ఎందుకు విఫలమవుతుంది?

Greedy ఎప్పుడు పనిచేస్తుంది?

✅ Greedy choice property నిరూపించగలిగినప్పుడు పనిచేస్తుంది:

  • Interval scheduling, Huffman coding, minimum spanning trees, Dijkstra's algorithm, ప్రామాణిక నాణెపు విలువలతో చిల్లర

❌ స్థానిక optima సమగ్ర optima గా కలవనప్పుడు విఫలమవుతుంది:

  • 0/1 knapsack, సాధారణ graphs లో longest path, travelling salesman

Greedy సరైనదని నిరూపించడం - Exchange Argument

ప్రామాణిక పద్ధతి: greedy ఎంపిక ఉపయోగించని optimum పరిష్కారం ఉందని ఊహించండి. దాని ఎంపికలలో ఒకదాన్ని greedy ఎంపికతో మార్చినా పరిష్కారం తగ్గదని చూపించండి. ఇది greedy కనీసం అంత మంచిదని నిరూపిస్తుంది.

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

'Exchange argument' దేని కోసం ఉపయోగిస్తారు?

Greedy vs Dynamic Programming

| అంశం | Greedy | Dynamic Programming | |--------|--------|---------------------| | ఎంపికలు | ప్రతి అడుగుకు ఒక ఉత్తమ ఎంపిక | అన్ని ఉప-సమస్యలను అన్వేషించు | | గతాన్ని తిరిగి చూస్తుందా? | ఎప్పుడూ కాదు | అవును - ఉప-ఫలితాలు నిల్వ చేస్తుంది | | వేగం | సాధారణంగా వేగవంతం | State space పై ఆధారపడుతుంది | | సరైనది | నిరూపించగలిగితే మాత్రమే | ఎల్లప్పుడూ (సరిగ్గా రూపొందిస్తే) |

అనుమానం ఉంటే, greedy తో ప్రారంభించండి - నిరూపించలేకపోతే, DP కి మారండి.

🤯
Dijkstra యొక్క shortest-path algorithm greedy - ఇది ఎల్లప్పుడూ సమీపంలోని సందర్శించని node ను ప్రాసెస్ చేస్తుంది. Edge weights non-negative అయినందున ఇది పనిచేస్తుంది, greedy ఎంపిక సురక్షితంగా ఉంటుంది.
🤔
Think about it:మీకు నాణెపు విలువలు [1, 3, 4] ఇచ్చి 6 కోసం చిల్లర ఇవ్వాలి. Greedy విధానం 4+1+1=3 నాణేలు ఎంచుకుంటుంది, కానీ optimal 3+3=2 నాణేలు. ఈ విలువలలో greedy choice property ని ఏది విచ్ఛిన్నం చేస్తుంది?

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

  • NeetCode - Greedy playlist - వివరణలతో greedy సమస్యలు
  • Tech Interview Handbook - Greedy - greedy ఎప్పుడు ఉపయోగించాలి మరియు సాధారణ పాటర్న్‌లు
  • CP-Algorithms - Greedy algorithms - లోతైన సిద్ధాంతం మరియు నిరూపణలు