Bird
Raised Fist0
DSA Typescriptprogramming~5 mins

Fractional Knapsack Problem in DSA Typescript - Cheat Sheet & Quick Revision

Choose your learning style10 modes available
Recall & Review
beginner
What is the main goal of the Fractional Knapsack Problem?
To maximize the total value of items placed in a knapsack with a fixed capacity, allowing fractions of items to be taken.
Click to reveal answer
beginner
Why can we take fractions of items in the Fractional Knapsack Problem but not in the 0/1 Knapsack Problem?
Because the problem assumes items are divisible, like liquids or materials, allowing partial amounts to be taken, unlike 0/1 Knapsack where items are indivisible.
Click to reveal answer
intermediate
What is the greedy strategy used in the Fractional Knapsack Problem?
Sort items by their value-to-weight ratio in descending order and take as much as possible from the highest ratio items first.
Click to reveal answer
intermediate
In the Fractional Knapsack Problem, what happens if the knapsack capacity is less than the weight of the current item?
We take only the fraction of the item that fits into the remaining capacity to maximize value.
Click to reveal answer
intermediate
What is the time complexity of the Fractional Knapsack Problem when using sorting?
O(n log n) due to sorting the items by value-to-weight ratio, where n is the number of items.
Click to reveal answer
What is the key difference between Fractional Knapsack and 0/1 Knapsack?
ABoth allow fractions of items
B0/1 Knapsack allows fractions, Fractional Knapsack does not
CNeither allows fractions of items
DFractional Knapsack allows taking parts of items, 0/1 Knapsack does not
Which greedy criterion is used to select items in Fractional Knapsack?
AHighest value-to-weight ratio first
BLowest value first
CHighest weight first
DRandom selection
If the knapsack capacity is 50 and the next item weighs 70, what fraction of the item is taken?
A0.5
B1
C0.714
D0.7
What is the first step in solving the Fractional Knapsack Problem?
ASort items by value-to-weight ratio descending
BSort items by value descending
CSort items by weight ascending
DPick items randomly
What is the overall time complexity of the Fractional Knapsack algorithm?
AO(n)
BO(n log n)
CO(n^2)
DO(log n)
Explain the greedy approach used in the Fractional Knapsack Problem and why it works.
Think about choosing the most valuable parts first to fill the knapsack.
You got /5 concepts.
    Describe how to handle an item that cannot fit fully into the remaining knapsack capacity in the Fractional Knapsack Problem.
    Partial items are allowed, so take only what fits.
    You got /4 concepts.

      Practice

      (1/5)
      1. What is the main goal of the Fractional Knapsack Problem?
      easy
      A. Maximize total value by taking fractions of items within weight limit
      B. Minimize total weight of items selected
      C. Select only whole items to maximize value
      D. Sort items by weight only

      Solution

      1. Step 1: Understand problem goal

        The fractional knapsack problem allows taking parts of items to maximize value within a weight limit.
      2. Step 2: Compare options

        Maximize total value by taking fractions of items within weight limit correctly states maximizing total value by taking fractions. Others focus on minimizing weight or whole items only, which is incorrect.
      3. Final Answer:

        Maximize total value by taking fractions of items within weight limit -> Option A
      4. Quick Check:

        Fractional knapsack = maximize value with fractions [OK]
      Hint: Remember: fractional means partial items allowed [OK]
      Common Mistakes:
      • Thinking only whole items can be taken
      • Confusing minimization with maximization
      • Ignoring fractional parts of items
      2. Which TypeScript syntax correctly declares an array of objects representing items with weight and value for the fractional knapsack?
      easy
      A. var items = weight: 10, value: 60; weight: 20, value: 100;
      B. let items = (weight: 10, value: 60), (weight: 20, value: 100);
      C. items = [{10, 60}, {20, 100}];
      D. const items = [{weight: 10, value: 60}, {weight: 20, value: 100}];

      Solution

      1. Step 1: Check array and object syntax

        const items = [{weight: 10, value: 60}, {weight: 20, value: 100}]; uses correct array of objects syntax with curly braces and key-value pairs.
      2. Step 2: Identify syntax errors in other options

        Options A, B, and D have invalid TypeScript syntax for arrays or objects.
      3. Final Answer:

        const items = [{weight: 10, value: 60}, {weight: 20, value: 100}]; -> Option D
      4. Quick Check:

        Array of objects syntax = const items = [{weight: 10, value: 60}, {weight: 20, value: 100}]; [OK]
      Hint: Use square brackets for arrays and curly braces for objects [OK]
      Common Mistakes:
      • Using parentheses instead of square brackets for arrays
      • Missing key names in objects
      • Incorrect object literal syntax
      3. What is the output of this TypeScript code snippet for fractional knapsack?
      const items = [
        {weight: 10, value: 60},
        {weight: 20, value: 100},
        {weight: 30, value: 120}
      ];
      const capacity = 50;
      
      function fractionalKnapsack(items, capacity) {
        items.sort((a, b) => (b.value / b.weight) - (a.value / a.weight));
        let totalValue = 0;
        let remaining = capacity;
        for (const item of items) {
          if (item.weight <= remaining) {
            totalValue += item.value;
            remaining -= item.weight;
          } else {
            totalValue += item.value * (remaining / item.weight);
            break;
          }
        }
        return totalValue;
      }
      
      console.log(fractionalKnapsack(items, capacity));
      medium
      A. 200
      B. 220
      C. 240
      D. 180

      Solution

      1. Step 1: Sort items by value/weight ratio

        Ratios: 60/10=6, 100/20=5, 120/30=4. Sorted order: item1, item2, item3.
      2. Step 2: Add items until capacity 50

        Take item1 fully (weight 10, value 60), remaining 40.
        Take item2 fully (weight 20, value 100), remaining 20.
        Take 20/30 fraction of item3: value = 120 * (20/30) = 80.
        Total value = 60 + 100 + 80 = 240.
      3. Step 3: Check options

        Matches 240.
      4. Final Answer:

        240 -> Option C
      5. Quick Check:

        Sum values with fractions = 240 [OK]
      Hint: Sort by value/weight ratio, take full items first [OK]
      Common Mistakes:
      • Not sorting items by value/weight ratio
      • Taking items without fractions
      • Incorrect fraction calculation
      4. Identify the bug in this TypeScript function for fractional knapsack:
      function fractionalKnapsack(items, capacity) {
        items.sort((a, b) => (a.value / a.weight) - (b.value / b.weight));
        let totalValue = 0;
        let remaining = capacity;
        for (const item of items) {
          if (item.weight <= remaining) {
            totalValue += item.value;
            remaining -= item.weight;
          } else {
            totalValue += item.value * (remaining / item.weight);
            break;
          }
        }
        return totalValue;
      }
      medium
      A. Using 'let' instead of 'const' for totalValue
      B. Sorting order is ascending instead of descending by value/weight
      C. Missing return statement
      D. Incorrect fraction calculation in else block

      Solution

      1. Step 1: Analyze sorting function

        The sort compares (a.value/a.weight) - (b.value/b.weight), which sorts ascending by ratio.
      2. Step 2: Understand impact on knapsack

        Fractional knapsack requires descending order to pick highest value/weight first. Ascending order causes wrong selection.
      3. Final Answer:

        Sorting order is ascending instead of descending by value/weight -> Option B
      4. Quick Check:

        Sort descending by ratio [OK]
      Hint: Sort descending by value/weight ratio, not ascending [OK]
      Common Mistakes:
      • Sorting ascending instead of descending
      • Ignoring sorting impact on result
      • Confusing variable declarations
      5. Given items with weights and values: [{weight: 5, value: 30}, {weight: 10, value: 40}, {weight: 20, value: 140}], and a knapsack capacity of 15, what is the maximum value achievable using the fractional knapsack approach?
      hard
      A. 105
      B. 90
      C. 120
      D. 100

      Solution

      1. Step 1: Calculate value/weight ratios and sort descending

        Ratios: 30/5=6, 40/10=4, 140/20=7.
        Sorted order: item3 (7), item1 (6), item2 (4).
      2. Step 2: Fill knapsack capacity 15

        Take item3 partially: since 20 > 15, value = 140 * (15/20) = 105.
        Total value = 105.
        Remaining capacity 0, stop.
      3. Final Answer:

        105 -> Option A
      4. Quick Check:

        Fractional knapsack max value = 105 [OK]
      Hint: Sort by ratio, take full items, then fraction of next [OK]
      Common Mistakes:
      • Not sorting by value/weight ratio
      • Trying to take full items exceeding capacity
      • Miscomputing fractional values
      Recommended

      Ready to prove it?

      Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

      10 questions~5 mineasy hard