Skip to main content

fractional_knapsack

Function fractional_knapsack 

Source
pub fn fractional_knapsack(items: &[Item], capacity: f64) -> f64
Expand description

Bo’linadigan xalta masalasi (fractional knapsack).

Buyumlarni bo’lish mumkin (masalan, un, shakar, oltin kukuni). Sig’imi capacity bo’lgan xaltaga maksimal qiymat joylang.

Ochko’z qoida: qiymat / og'irlik nisbati eng katta buyumdan boshlang. Bu yerda ochko’zlik isbotlangan optimal — chunki buyumni bo’lish mumkin.

  • Time: O(n log n), Space: O(n).

§Misol

use rust_algorithms::greedy::{fractional_knapsack, Item};

let buyumlar = vec![
    Item::new(60.0, 10.0),  // nisbat 6.0
    Item::new(100.0, 20.0), // nisbat 5.0
    Item::new(120.0, 30.0), // nisbat 4.0
];
let qiymat = fractional_knapsack(&buyumlar, 50.0);
assert!((qiymat - 240.0).abs() < 1e-9); // 60 + 100 + 120*(20/30)