Förberedelse inför kodningsintervjuer · Lektion

Fraktionell ryggsäck efter kvot

Välj högst värde per vikt först

Lektion 3 av 413 steg

Fraktionell ryggsäck efter kvot är en gratis lektion i Förberedelse inför kodningsintervjuer på CoddyKit. Detta är lektion 3 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 Förberedelse inför kodningsintervjuer, och Era framsteg synkroniseras mellan webben och CoddyKit-appen. Kursen i Förberedelse inför kodningsintervjuer innehåller totalt 4 lektioner.

Ryggsäcksproblemet

Ni har objekt med ett värde och en vikt samt en väska med begränsad kapacitet. Målet är att bära så stort sammanlagt värde som möjligt. 🎒

Fraktionell betyder delbar

I den fraktionella varianten får ni ta en del av ett objekt, till exempel en halv säck spannmål. Det är denna frihet som gör att en girig algoritm fungerar här.

Värde per vikt

Det viktiga måttet är varje objekts kvot mellan värde och vikt. En hög kvot innebär att mycket värde ryms på väldigt liten plats.

ratio = value / weight

Sortera efter bästa kvot

Sortera objekten efter värde per vikt, med högst kvot först. Den giriga planen är att hela tiden välja det tillgängliga objektet med högst värdetäthet.

items.sort(key=lambda i: i[0] / i[1], reverse=True)

Ta hela objektet så länge det får plats

Gå igenom den sorterade listan och ta varje objekt helt om det fortfarande får plats i den återstående kapaciteten. Lägg till hela dess värde i totalsumman.

if weight <= cap:
    total += value
    cap -= weight

Fyll den sista luckan

När ett objekt är för stort tar ni den andel som exakt fyller det återstående utrymmet. Därefter är väskan full och ni slutar.

total += value * (cap / weight)

Därför fungerar kvotordningen

Varje kapacitetsenhet bör innehålla så mycket värde som möjligt, så objektet med högst värdetäthet måste väljas först. Att byta in lägre täthet minskar bara värdet.

0/1-ryggsäcken skiljer sig

Om objekt inte kan delas upp fungerar det inte att vara girig utifrån kvoten. 0/1-versionen kräver dynamisk programmering, inte den här enkla sorteringen.

Körtiden

Att sortera efter kvot kostar O(n log n), och ifyllnadsslingan är linjär. Det är mer än tillräckligt snabbt för typiska tävlingsgränser.

Var uppmärksam på den sista bråkdelen

Använd flyttal eller exakta rationella tal för den del av objektet som tas delvis. Om värdet trunkeras för tidigt kan en del av värdet gå förlorad och ge fel svar.

Tillämpningar

Tänk på att lasta frakt, blanda bränslen eller dela upp resurser. När delar kan delas upp är den giriga kvotmetoden rätt verktyg.

Snabb kontroll

Ni fyller en väska i problemet med den fraktionella ryggsäcken.

Sammanfattning

Sortera objekten efter värde per viktenhet, ta hela objekt så länge de får plats och fyll sedan på med en del av nästa objekt. Den här giriga metoden är bara optimal när objekten kan delas upp. 🚀

Gratis att börja

Lär dig Förberedelse inför kodningsintervjuer 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
90
Lektioner
360

Vanliga frågor

Är lektionen ”Fraktionell ryggsäck efter kvot” gratis?

Ja – hela texten till ”Fraktionell ryggsäck efter kvot” 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 Förberedelse inför kodningsintervjuer, kan Ni uppgradera till CoddyKit PRO. Kursen i Förberedelse inför kodningsintervjuer innehåller totalt 4 lektioner.

Vad lär jag mig i ”Fraktionell ryggsäck efter kvot”?

Välj högst värde per vikt först Ni övar på Förberedelse inför kodningsintervjuer 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 Förberedelse inför kodningsintervjuer?

Du behöver inga förkunskaper. Utbildningen i Förberedelse inför kodningsintervjuer 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 3 av 4.

Hur lång tid tar lektionen ”Fraktionell ryggsäck efter kvot”?

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 Förberedelse inför kodningsintervjuer-lektionen?

Ja. Varje Förberedelse inför kodningsintervjuer-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. Det giriga tankesättet
  2. Aktivitetsurval efter tidigast slut
  3. Fraktionell ryggsäck efter kvot
  4. Upptäck när greedy misslyckas
← Tillbaka till Förberedelse inför kodningsintervjuer