Fractional knapsack op basis van verhouding
Eerst de hoogste waarde per gewicht nemen
Fractional knapsack op basis van verhouding is een gratis Voorbereiding op programmeerinterviews-les op CoddyKit. Dit is les 3 van 4. Je kunt de volledige les hieronder gratis lezen en daarna in de browser praktisch oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is. Deze les maakt deel uit van het leertraject Voorbereiding op programmeerinterviews. Je voortgang wordt gesynchroniseerd op het web en in de CoddyKit-app. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.
De opzet van het knapzakprobleem
Je hebt items met een waarde en een gewicht, plus een tas met beperkte capaciteit. Het doel is om zoveel mogelijk totale waarde mee te nemen. 🎒
Fractioneel betekent deelbaar
In de fractionele variant mag je een deel van een item meenemen, bijvoorbeeld een halve zak graan. Die vrijheid zorgt ervoor dat greedy hier werkt.
Waarde per gewicht
De belangrijkste maatstaf is de verhouding tussen de waarde en het gewicht van elk item. Een hoge verhouding betekent veel waarde in weinig ruimte.
ratio = value / weightSorteren op de beste verhouding
Sorteer items op waarde per gewicht, van hoog naar laag. De greedy-aanpak blijft steeds de beschikbare waarde met de hoogste dichtheid nemen.
items.sort(key=lambda i: i[0] / i[1], reverse=True)Neem het hele item zolang het past
Doorloop de gesorteerde lijst en neem elk item volledig mee als het nog in de resterende capaciteit past. Tel de volledige waarde ervan op bij je totaal.
if weight <= cap:
total += value
cap -= weightDe laatste ruimte vullen
Als een item te groot is, neem je een deel dat de resterende ruimte precies vult. Daarna is de tas vol en stop je.
total += value * (cap / weight)Waarom de volgorde op verhouding werkt
Elke capaciteitseenheid moet zoveel mogelijk waarde bevatten, dus het item met de hoogste dichtheid moet eerst komen. Een lagere dichtheid inruilen kost alleen maar waarde.
0/1-rugzakprobleem werkt anders
Als voorwerpen niet kunnen worden opgesplitst, werkt de gulzige methode op basis van de verhouding niet. Voor de 0/1-versie heb je dynamisch programmeren nodig, niet deze eenvoudige sortering.
De uitvoeringstijd
Sorteren op verhouding kost O(n log n) en de vul-lus is lineair. Dat is ruim snel genoeg voor gebruikelijke limieten bij programmeerwedstrijden.
Let op de laatste fractie
Gebruik zwevende komma's of exacte rationale getallen voor het gedeeltelijke voorwerp. Vroeg afkappen kan waarde verloren laten gaan en een fout antwoord veroorzaken.
Waar je dit tegenkomt
Denk aan het laden van vracht, het mengen van brandstoffen of het verdelen van grondstoffen. Zodra onderdelen deelbaar zijn, is de gulzige methode op basis van de verhouding je gereedschap.
Korte controle
Je vult een tas in het fractionele rugzakprobleem.
Samenvatting
Sorteer voorwerpen op waarde per gewicht, neem hele voorwerpen zolang ze passen en neem daarna een fractie om de tas helemaal te vullen. Deze gulzige methode is alleen optimaal als je voorwerpen kunt opsplitsen. 🚀
Leer Voorbereiding op programmeerinterviews met een AI-tutor — gratis
Schrijf echte code en voer die uit in je browser, krijg direct hulp van een AI-tutor die 24/7 beschikbaar is en ga verder waar je gebleven bent op het web of in de app.
- Cursussen
- 90
- Lessen
- 360
Veelgestelde vragen
Is de les “Fractional knapsack op basis van verhouding” gratis?
Ja — de volledige tekst van “Fractional knapsack op basis van verhouding” kun je hier gratis op het web lezen. Als je interactief wilt oefenen met een ingebouwde code-editor en een AI-begeleider die 24/7 beschikbaar is, en de rest van de cursus Voorbereiding op programmeerinterviews wilt ontgrendelen, kun je upgraden naar CoddyKit PRO. De cursus Voorbereiding op programmeerinterviews bevat in totaal 4 lessen.
Wat leer ik in “Fractional knapsack op basis van verhouding”?
Eerst de hoogste waarde per gewicht nemen Je oefent met Voorbereiding op programmeerinterviews door code rechtstreeks in de browser uit te voeren. Een AI-begeleider die 24/7 beschikbaar is beantwoordt je vragen terwijl je de les doorwerkt.
Heb ik ervaring nodig om met Voorbereiding op programmeerinterviews te beginnen?
Ervaring vooraf is niet nodig. Voorbereiding op programmeerinterviews op CoddyKit is opgebouwd voor beginners tot gevorderden, zodat je hier of bij het begin kunt starten en in je eigen tempo kunt leren. Dit is les 3 van 4.
Hoe lang duurt de les “Fractional knapsack op basis van verhouding”?
De meeste lessen van CoddyKit duren ongeveer 5–10 minuten. Elke les is kort en interactief, zodat je gestaag vooruitgaat en op het web en in de app precies verdergaat waar je was gebleven.
Kan ik code schrijven en uitvoeren in deze les over Voorbereiding op programmeerinterviews?
Ja. Elke les over Voorbereiding op programmeerinterviews bevat een ingebouwde code-editor, zodat je rechtstreeks in je browser echte code kunt schrijven en uitvoeren en direct feedback van AI krijgt — lokale installatie is niet nodig.
Alle lessen in deze cursus
- De greedy-denkwijze
- Activiteiten selecteren op vroegste eindtijd
- Fractional knapsack op basis van verhouding
- Herkennen wanneer greedy faalt