Competitive Programming Academy · Lektion

Minska sökrymden på ett smart sätt

Fixera en variabel och sök bland resten

Lektion 4 av 413 steg

Minska sökrymden på ett smart sätt är en gratis lektion i Competitive Programming Academy på CoddyKit. Detta är lektion 4 av 4. Ni kan läsa hela lektionen gratis nedan och sedan öva praktiskt i webbläsaren med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt. Den ingår i lärvägen för Competitive Programming Academy, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Competitive Programming Academy innehåller totalt 4 lektioner.

Mindre sökning, samma svar

Ibland är brute force precis lite för långsamt. Lösningen är att minska det du söker igenom utan att förlora något korrekt svar. 🙂

Fixera en variabel

Ett kraftfullt knep är att fixera en variabel genom att iterera över den och sedan lösa resten snabbare. Du byter ut en fullständig sökning mot många mindre sökningar.

Från N i kvadrat till N log N

Fixera det första elementet och använd sedan binärsökning eller hashning för att hitta dess partner. Då omvandlas en genomsökning i O(n i kvadrat) till ungefär O(n log n).

for a in arr:
    if (target - a) in seen:
        return True
    seen.add(a)

Beskär omöjliga grenar

Stoppa tidigt på varje väg som inte kan slå ditt bästa svar hittills. En överhoppad gren kräver ingen ytterligare undersökning.

Sortera för att möjliggöra avbrott

Om du sorterar först kan du ofta avbryta en loop tidigt. När värdena passerar en tröskel vet du att resten inte kan hjälpa.

Utnyttja symmetri

Om det ger samma resultat att byta plats på två element behöver du bara söka igenom en ordning. Genom att räkna varje fall en gång kan du halvera eller mer än halvera arbetet.

Mötas på mitten

Dela elementen i två halvor, räkna upp varje halva och kombinera sedan resultaten. Då minskar en sökning över 2^n möjligheter till ungefär 2^(n/2) arbete.

Cacha upprepat arbete

Om samma delproblem dyker upp igen sparar du resultatet och återanvänder det. Memoisering tar bort hela upprepade grenar från sökningen.

Beräkna en gräns före förgrening

Beräkna en optimistisk gräns för en gren. Om inte ens det bästa möjliga fallet där räcker till, hoppar du över grenen helt och sparar tid.

Behåll korrektheten

Varje beskärning måste vara säker: beskär bara vägar som verkligen inte kan vinna. Testa mot vanlig brute force för att bekräfta att du inte har förlorat några svar.

Beskär och sök sedan

Använd de här knepen när brute force är nära men för långsamt. Fixera en variabel, beskär eller dela upp sökningen, så ryms den ofta inom tidsgränsen.

Snabb kontroll

En fullständig uppräkning av 2^n delmängder är för långsam, men du kan dela elementen i två halvor.

Sammanfattning

Beskär sökningen genom att fixera en variabel, beskära hopplösa grenar, utnyttja symmetri eller mötas på mitten. Se till att varje beskärning är säker. 🚀

Gratis att börja

Lär dig Python med en AI-lärare – gratis

Skriv och kör riktig kod i webbläsaren, få omedelbar hjälp av en AI-lärare dygnet runt och fortsätt där du slutade – på webben eller i appen.

Kurser
30
Lektioner
120

Vanliga frågor

Är lektionen ”Minska sökrymden på ett smart sätt” gratis?

Ja – hela texten till ”Minska sökrymden på ett smart sätt” kan läsas gratis här på webben. Om Ni vill öva interaktivt med en inbyggd kodredigerare och en AI-handledare som är tillgänglig dygnet runt och låsa upp resten av kursen i Competitive Programming Academy, kan Ni uppgradera till CoddyKit PRO. Kursen i Competitive Programming Academy innehåller totalt 4 lektioner.

Vad lär jag mig i ”Minska sökrymden på ett smart sätt”?

Fixera en variabel och sök bland resten Ni övar på Competitive Programming Academy med praktisk kod som körs direkt i webbläsaren, medan en AI-handledare som är tillgänglig dygnet runt svarar på Era frågor under lektionen.

Behöver jag någon erfarenhet för att börja lära mig Competitive Programming Academy?

Du behöver inga förkunskaper. Utbildningen i Competitive Programming Academy på CoddyKit är upplagd för allt från nybörjare till avancerade elever, så att du kan börja här eller från början och gå fram i din egen takt. Detta är lektion 4 av 4.

Hur lång tid tar lektionen ”Minska sökrymden på ett smart sätt”?

De flesta CoddyKit-lektioner tar cirka 5–10 minuter. Varje lektion är kort och interaktiv, så att du gör stadiga framsteg och kan fortsätta precis där du slutade – på webben eller i appen.

Kan jag skriva och köra kod i den här Competitive Programming Academy-lektionen?

Ja. Varje Competitive Programming Academy-lektion innehåller en inbyggd kodredigerare, så att du kan skriva och köra riktig kod direkt i webbläsaren och få omedelbar AI-feedback – utan lokal installation.

Alla lektioner i den här kursen

  1. Brute force är en giltig strategi
  2. Enumerera med itertools
  3. Enumerering av delmängder med bitmasker
  4. Minska sökrymden på ett smart sätt
← Tillbaka till Competitive Programming Academy