Competitive Programming Academy · Lektion

Begræns søgerummet på en intelligent måde

Fastlås én variabel, og søg i resten

Lektion 4 af 413 trin

Begræns søgerummet på en intelligent måde er en gratis Competitive Programming Academy-lektion på CoddyKit. Dette er lektion 4 af 4. Du kan læse hele lektionen gratis nedenfor — og derefter øve dig praktisk i browseren med en indbygget kodeeditor og en AI-vejleder, der er tilgængelig døgnet rundt. Den er en del af læringsforløbet i Competitive Programming Academy, og dine fremskridt synkroniseres på tværs af nettet og CoddyKit-appen. Competitive Programming Academy-kurset indeholder 4 lektioner i alt.

Mindre søgning, samme svar

Nogle gange er udtømmende søgning lige akkurat for langsom. Løsningen er at indskrænke det, du søger igennem, uden at miste noget korrekt svar. 🙂

Fastlås én variabel

Et effektivt trick er at fastlåse én variabel ved at gennemløbe dens værdier og derefter løse resten hurtigere. Du bytter en fuld søgning ud med mange små søgninger.

Fra N i anden til N log N

Fastlås det første element, og brug derefter binær søgning eller hashing til at finde dets partner. Det ændrer en gennemgang i O(n i anden) til omtrent O(n log n).

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

Skær umulige grene væk

Stop tidligt på enhver sti, der ikke kan slå dit bedste svar indtil videre. En gren, du springer over, koster ingen gennemgangstid.

Sortér for at kunne afbryde

Hvis du sorterer først, kan du ofte afbryde en loop tidligt. Når værdierne overskrider en grænse, ved du, at resten ikke kan hjælpe.

Udnyt symmetri

Hvis det giver samme resultat at bytte to elementer, skal du kun søge i én rækkefølge. Når du tæller hvert tilfælde én gang, kan du halvere arbejdet eller mere.

Mød hinanden på midten

Del elementerne i to halvdele, gennemgå hver af dem, og kombinér derefter resultaterne. Det reducerer en søgning i 2^n tilfælde til omkring 2^(n/2) arbejde.

Gem gentaget arbejde

Hvis det samme delproblem opstår igen, skal du gemme resultatet og genbruge det. Memoisering fjerner hele gentagne grene fra søgningen.

Beregn en grænse før forgreningen

Beregn en optimistisk grænse for en gren. Hvis selv det bedst mulige resultat dér er dårligere, skal du springe den helt over og spare tiden.

Bevar korrektheden

Hver afskæring skal være sikker: Fjern kun stier, der reelt ikke kan vinde. Test mod en enkel udtømmende søgning for at bekræfte, at du ikke har mistet nogen svar.

Indskrænk, og søg derefter

Brug disse tricks, når udtømmende søgning er lige ved at være hurtig nok, men stadig for langsom. Fastlås en variabel, skær grene væk, eller del problemet, så passer søgningen ofte inden for tidsgrænsen.

Hurtigt tjek

En fuld gennemgang af 2^n delmængder er for langsom, men du kan dele elementerne i to halvdele.

Opsummering

Indskrænk søgningen ved at fastlåse en variabel, skære håbløse grene væk, udnytte symmetri eller mødes på midten. Sørg for, at hver afskæring er sikker. 🚀

Gratis at komme i gang

Lær Python med en AI-underviser — gratis

Skriv og kør rigtig kode i din browser, få øjeblikkelig hjælp fra en AI-underviser døgnet rundt, og fortsæt, hvor du slap, på web eller i appen.

Kurser
30
Lektioner
120

Ofte stillede spørgsmål

Er lektionen “Begræns søgerummet på en intelligent måde” gratis?

Ja — hele teksten til “Begræns søgerummet på en intelligent måde” kan læses gratis her på nettet. Hvis du vil øve dig interaktivt med en indbygget kodeeditor og en AI-vejleder døgnet rundt og få adgang til resten af Competitive Programming Academy-kurset, skal du opgradere til CoddyKit PRO. Competitive Programming Academy-kurset indeholder 4 lektioner i alt.

Hvad lærer jeg i “Begræns søgerummet på en intelligent måde”?

Fastlås én variabel, og søg i resten Du øver dig i Competitive Programming Academy med praktisk kode, som du kører direkte i browseren, og en AI-vejleder døgnet rundt besvarer dine spørgsmål, mens du arbejder dig gennem lektionen.

Skal jeg have erfaring for at begynde på Competitive Programming Academy?

Der kræves ingen tidligere erfaring. Competitive Programming Academy på CoddyKit er tilrettelagt for både begyndere og øvede, så du kan starte her eller fra begyndelsen og lære i dit eget tempo. Dette er lektion 4 af 4.

Hvor lang tid tager lektionen “Begræns søgerummet på en intelligent måde”?

De fleste CoddyKit-lektioner tager cirka 5–10 minutter. Hver lektion er kort og interaktiv, så du gør løbende fremskridt og kan fortsætte, hvor du slap – på både web og app.

Kan jeg skrive og køre kode i denne Competitive Programming Academy-lektion?

Ja. Alle Competitive Programming Academy-lektioner har en indbygget kodeeditor, så du kan skrive og køre rigtig kode direkte i din browser og få øjeblikkelig feedback fra AI – uden lokal opsætning.

Alle lektioner i dette kursus

  1. Brute force er en gyldig strategi
  2. Enumerér med itertools
  3. Enumerering af delmængder med bitmasker
  4. Begræns søgerummet på en intelligent måde
← Tilbage til Competitive Programming Academy