Begræns søgerummet på en intelligent måde
Fastlås én variabel, og søg i resten
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. 🚀
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
- Brute force er en gyldig strategi
- Enumerér med itertools
- Enumerering af delmængder med bitmasker
- Begræns søgerummet på en intelligent måde