Competitive Programming Academy · leksjon

Reduser søkerommet på en smart måte

Fastsett én variabel og søk gjennom resten

Leksjon 4 av 413 trinn

Reduser søkerommet på en smart måte er en gratis leksjon i Competitive Programming Academy på CoddyKit. Dette er leksjon 4 av 4. Du kan lese hele leksjonen gratis nedenfor – og deretter øve praktisk i nettleseren med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt. Den er en del av læringsløpet i Competitive Programming Academy, og fremdriften din synkroniseres mellom nettet og CoddyKit-appen. Kurset i Competitive Programming Academy inneholder totalt 4 leksjoner.

Mindre søk, samme svar

Noen ganger er brute force akkurat litt for tregt. Løsningen er å redusere det du søker gjennom uten å miste noe korrekt svar. 🙂

Fastsett én variabel

Et kraftig triks er å fastsette én variabel ved å gå gjennom mulighetene for den, og deretter løse resten raskere. Du bytter ut ett fullstendig søk med mange små søk.

Fra n² til n log n

Fastsett det første elementet, og bruk deretter binærsøk eller hashing for å finne partneren. Da blir et søk på O(n i andre) omtrent til O(n log n).

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

Beskjær umulige grener

Stopp tidlig på enhver vei som ikke kan slå det beste svaret ditt så langt. En gren du hopper over, koster ingenting å utforske.

Sorter for å muliggjøre avbrudd

Hvis du sorterer først, kan du ofte bryte ut av en løkke tidlig. Når verdiene har passert en terskel, vet du at resten ikke kan hjelpe.

Utnytt symmetri

Hvis det gir samme resultat å bytte om på to elementer, trenger du bare å søke gjennom én rekkefølge. Ved å telle hvert tilfelle én gang kan du halvere eller redusere arbeidet enda mer.

Møt på midten

Del elementene i to halvdeler, gå gjennom begge, og kombiner resultatene. Da reduseres et søk på 2^n til omtrent 2^(n/2) arbeid.

Mellomlagre gjentatt arbeid

Hvis det samme delproblemet dukker opp igjen, lagrer du resultatet og bruker det på nytt. Memoisering fjerner hele gjentatte grener fra søket.

Beregn en grense før du forgrener

Beregn en optimistisk grense for en gren. Hvis selv det beste mulige utfallet der taper, kan du hoppe over grenen helt og spare tid.

Bevar korrektheten

Hver begrensning må være trygg: Beskjær bare stier som faktisk ikke kan vinne. Test mot ren brute force for å bekrefte at du ikke har mistet noen svar.

Reduser, og søk deretter

Bruk disse triksene når brute force er nær grensen, men fortsatt for tregt. Fastsett en variabel, beskjær grener eller del opp søket, så passer det ofte innenfor tidsgrensen.

Hurtigsjekk

En full gjennomgang av 2^n delmengder er for treg, men du kan dele elementene i to halvdeler.

Oppsummering

Reduser søket ved å fastsette en variabel, beskjære håpløse grener, utnytte symmetri eller møtes på midten. Sørg for at hver begrensning er trygg. 🚀

Gratis å komme i gang

Lær deg Python med en AI-veileder – gratis

Skriv og kjør ekte kode i nettleseren, få umiddelbar hjelp fra en AI-veileder som er tilgjengelig døgnet rundt, og fortsett der du slapp – på nettet eller i appen.

Kurs
30
Leksjoner
120

Ofte stilte spørsmål

Er leksjonen «Reduser søkerommet på en smart måte» gratis?

Ja – hele teksten i «Reduser søkerommet på en smart måte» er gratis å lese her på nettet. For å øve interaktivt med en innebygd kodeeditor og en AI-veileder som er tilgjengelig døgnet rundt, og for å låse opp resten av Competitive Programming Academy-kurset, kan du oppgradere til CoddyKit PRO. Kurset i Competitive Programming Academy inneholder totalt 4 leksjoner.

Hva lærer jeg i «Reduser søkerommet på en smart måte»?

Fastsett én variabel og søk gjennom resten Du øver på Competitive Programming Academy med praktisk kode som du kjører direkte i nettleseren, mens en AI-veileder som er tilgjengelig døgnet rundt, svarer på spørsmålene dine mens du jobber deg gjennom leksjonen.

Trenger jeg erfaring for å begynne med Competitive Programming Academy?

Ingen tidligere erfaring er nødvendig. Competitive Programming Academy på CoddyKit er lagt opp for både nybegynnere og viderekomne, så De kan begynne her eller helt fra start og lære i Deres eget tempo. Dette er leksjon 4 av 4.

Hvor lang tid tar leksjonen «Reduser søkerommet på en smart måte»?

De fleste CoddyKit-leksjoner tar omtrent 5–10 minutter. Hver leksjon er kort og interaktiv, slik at De gjør jevne fremskritt og kan fortsette akkurat der De slapp – både på nettet og i appen.

Kan jeg skrive og kjøre kode i denne Competitive Programming Academy-leksjonen?

Ja. Alle Competitive Programming Academy-leksjoner har en innebygd kodeeditor, slik at De kan skrive og kjøre ekte kode direkte i nettleseren og få umiddelbar tilbakemelding fra AI – uten lokal konfigurering.

Alle leksjonene i dette kurset

  1. Brute force er en gyldig strategi
  2. Enumerer med itertools
  3. Enumerering av delmengder med bitmasker
  4. Reduser søkerommet på en smart måte
← Tilbake til Competitive Programming Academy