Ugrás a tartalomhoz

continuous knapsack problem

A Wikiszótárból, a nyitott szótárból


Főnév

continuous knapsack problem (tsz. continuous knapsack problems)

  1. (informatika) = fractional knapsack problem

A continuous knapsack problem (magyarul: folytonos hátizsák probléma) egy optimalizálási probléma, amelyben a tárgyakat tetszőleges mennyiségben lehet bepakolni a hátizsákba, amíg annak kapacitása ki nem merül. Ez szemben áll a 0-1 hátizsák problémával, ahol minden tárgyból vagy az egészet visszük, vagy semmit.



📦 Probléma megfogalmazása

Adott:

  • db tárgy
  • Minden tárgynak van egy:
    • értéke
    • súlya
  • A hátizsák maximális súlya:

Cél: válaszd meg a frakciókat úgy, hogy:



✅ Folytonos megoldás tulajdonságai

  • A probléma mindig megoldható és polinomidőben megoldható.
  • Nincs szükség dinamikus programozásra: egy egyszerű greedy algoritmus adja az optimális megoldást.



⚙️ Greedy algoritmus lépései

  1. Számítsd ki minden tárgyra az érték/súly arányt:
  2. Rendezd a tárgyakat csökkenő sorrendbe ezen arány szerint.
  3. Menj végig a tárgyakon ebben a sorrendben:
    • Ha még elfér a teljes tárgy, tedd bele ()
    • Ha csak egy része fér bele, akkor részarányosan tedd bele ()
    • Ha betelt a hátizsák, fejezd be



🧮 Példa

Tárgy Érték Súly Arány
A 60 10 6.0
B 100 20 5.0
C 120 30 4.0

Hátizsák kapacitása:

Lépések:

  • Vesszük A-t (teljesen): 10 egység → érték: 60
  • Vesszük B-t (teljesen): +20 → érték: 100
  • C-ből már csak 20 egység fér: → érték:

Összérték: 60 + 100 + 80 = 240



🧠 TL;DR

A continuous knapsack problem egy optimalizálási probléma, ahol a tárgyakat tetszőleges (folytonos) részarányban lehet bepakolni. A megoldás greedy algoritmussal történik: a legnagyobb érték/súly arányú tárgyakat pakoljuk először, akár tört részben is.