The Knapsack Problem and Portfolio Optimization are fundamental combinatorial optimization problems with wide applications in finance, procurement, and resource allocation. Both are computationally challenging and are promising test cases for quantum and hybrid methods — on the right formulations and instances.
What is the Knapsack Problem?
The Knapsack Problem asks: _Given a set of items with weights and values, and a knapsack with a weight capacity, which items should be selected to maximize total value without exceeding the capacity?_
Problem Variants
0/1 Knapsack
- Constraint: Each item can be selected at most once
- Applications: Investment selection, project portfolio
- Complexity:
- Decision variant is NP-complete
- Weakly NP-hard; admits pseudopolynomial DP O(nW)
- FPTAS exists: (1+ε)-approximation in polynomial time
Fractional Knapsack
- Constraint: Items can be divided (take partial amounts)
- Applications: Resource allocation; solved exactly by a greedy algorithm (sort by value/weight)
- Complexity: O(n log n) due to sorting
Multiple Knapsack
- Constraint: Multiple knapsacks with different capacities
- Applications: Multi-warehouse inventory, distributed systems
- Complexity: NP-hard
Bin Packing
- Constraint: Minimize number of knapsacks needed
- Applications: Shipping containers, memory allocation
- Complexity: Strongly NP-hard; related but not the same as knapsack
Portfolio Optimization: Financial Knapsack
Modern Portfolio Theory (MPT)
Portfolio optimization extends the knapsack concept to financial markets:
Objective Function
Maximize: Expected Return - λ × Risk
Subject to: Σ(w_i) = 1, w_i ≥ 0
Where:
w_i = weight of asset i in portfolioλ = risk aversion parameter- Risk = portfolio variance/covariance
Constraints
- Budget constraint: Total investment = available capital
- Long-only: No short selling (w_i ≥ 0)
- Sector limits: Maximum exposure per sector
- Liquidity constraints: Minimum trade sizes
- Transaction costs: Bid-ask spreads, commissions
Real-World Complexity
Market Constraints
- Cardinality constraints: Maximum number of assets
- Turnover limits: Maximum change from current portfolio
- Regulatory constraints: Sector concentration limits
- ESG requirements: Environmental, social, governance filters
Dynamic Factors
- Market volatility: Changing risk parameters
- Liquidity changes: Asset availability varies
- Transaction costs: Market impact, bid-ask spreads
- Rebalancing frequency: Monthly, quarterly, or event-driven
Why portfolios get hard in practice
In practice, teams do not only balance return and risk. They also face cardinality limits (max number of assets), sector and liquidity limits, and transaction costs or buy-in thresholds. These discrete constraints are what make the problem computationally difficult — not the classical Markowitz core itself.
Computational Complexity Analysis
Classical Complexity
0/1 Knapsack
- Time complexity: O(n × W) for dynamic programming (pseudopolynomial)
- Space complexity: O(W) with 1-row DP optimization
Portfolio Optimization
- Dense convex QP (Markowitz): solved efficiently by standard QP methods (e.g., Cholesky factorization), often O(n³) for dense problems
- With cardinality/thresholds/transaction costs: becomes MIQP or non-convex QCQP; scalability depends on solver cuts, formulations, and heuristics
Why These Problems Are Hard
1. Exponential Solution Space
Illustrative combinatorial growth:
n items: 2^n possible combinations
10 items: 1,024 combinations
20 items: 1,048,576 combinations
50 items: ~1.1 × 10^15 combinations
2. Constraint Interactions
- Budget constraint: Affects all asset selections
- Risk constraint: Non-linear, affects multiple assets
- Sector limits: Couples related assets
- Transaction costs: Makes problem non-convex
3. Multi-Objective Optimization
- Return maximization: Higher expected returns
- Risk minimization: Lower portfolio volatility
- Cost minimization: Lower transaction costs
- Diversification: Spread risk across assets
Classical Algorithms and Limitations
Exact Algorithms
Dynamic Programming (0/1 Knapsack)
def knapsack_dp(items, capacity):
n = len(items)
dp = [[0 for _ in range(capacity + 1)] for _ in range(n + 1)]
for i in range(1, n + 1):
for w in range(capacity + 1):
if items[i-1].weight <= w:
dp[i][w] = max(
dp[i-1][w],
dp[i-1][w-items[i-1].weight] + items[i-1].value
)
else:
dp[i][w] = dp[i-1][w]
return dp[n][capacity]
Limitations:
- Memory: O(W) with 1-row optimization; otherwise O(n × W)
- Time: O(n × W) pseudopolynomial time
Branch-and-Bound
- How it works: Systematically explores solution space
- Advantages: Can find optimal solutions
- Limitations: Exponential worst-case time; performance is instance-dependent
Heuristic Algorithms
Genetic Algorithms
def genetic_algorithm_knapsack(items, capacity, population_size=100):
# Initialize random population
population = [random_solution(items, capacity) for _ in range(population_size)]
for generation in range(max_generations):
# Evaluate fitness
fitness = [evaluate(solution, items, capacity) for solution in population]
# Selection, crossover, mutation
new_population = []
for _ in range(population_size):
parent1 = tournament_selection(population, fitness)
parent2 = tournament_selection(population, fitness)
child = crossover(parent1, parent2)
child = mutate(child)
new_population.append(child)
population = new_population
return best_solution(population, items, capacity)
Advantages: Good solutions for large problems Limitations: No optimality guarantee, slow convergence
Simulated Annealing
- Principle: Accept worse solutions probabilistically
- Advantages: Can escape local optima
- Limitations: Requires careful parameter tuning
- Performance: Good for medium-sized problems
Commercial Solvers
CPLEX (IBM)
- Capabilities: Mixed-integer programming
- Performance: Strong performance on many mixed-integer problems
- Limitations: Expensive, classical algorithms
Gurobi
- Capabilities: Advanced MIP solver
- Performance: Fast for many problem types
- Limitations: Commercial license required
OR-Tools (Google)
- Capabilities: Constraint programming, linear programming
- Performance: Good for medium-sized problems
- Limitations: Classical algorithms, limited scalability
Quantum Computing Approaches
Quantum Annealing (D-Wave)
Problem Mapping
Schematic QUBO/Ising formulation with a quadratic capacity penalty:
maximize Σ v_i x_i subject to Σ w_i x_i ≤ W, x_i ∈ {0,1}
→ minimize - Σ v_i x_i + λ (Σ w_i x_i - W)^2
The quadratic penalty yields linear and pairwise terms for QUBO/Ising.
Choose λ large enough to discourage violations. See D-Wave docs for details.
Notes
- Natural binary mapping via penalties in QUBO/Ising
- Hybrid workflows: annealing with classical pre/post-processing
- Hardware: D-Wave Advantage systems provide >5,000 annealing qubits with higher connectivity than 2000Q
Status
- Embedding, scaling, and parameterization materially affect outcomes
- Results are instance- and model-dependent; benchmark against strong classical baselines
Variational Quantum Algorithms (QAOA)
Quantum Circuit Design
Schematic description: QAOA prepares a parameterized circuit alternating cost and mixer operators derived from the objective and constraints. A classical optimizer tunes parameters to minimize expected energy. Active research explores warm starts, tailored mixers, and problem-specific structure.
Perspective
- Hybrid: parameters optimized classically; circuits run on quantum hardware/simulators
- Research status: promising on some instances; no broadly accepted practical quantum advantage yet for knapsack/portfolio
Recommendation
Use hybrid methods and always measure against a strong classical baseline.
Quantum Machine Learning
Quantum Neural Networks
- Principle: Quantum circuits as neural networks
- Applications: Learn optimal portfolio strategies
- Advantages: Can incorporate market data
- Status: Early research stage
Benchmarking and Evaluation
Performance is strongly data- and model-dependent. We publish customer-specific benchmark reports and run dual-canary experiments: a strong classical baseline vs. an alternative backend (including quantum/hybrid). Backends are selected based on measured cost, quality, and latency — not on fixed assumptions.
Real-World Applications
Financial Portfolio Optimization
Investment Management
- Asset allocation: Optimal mix of stocks, bonds, alternatives
- Risk management: Portfolio volatility control
- Rebalancing: Periodic portfolio adjustments
- ESG investing: Environmental, social, governance constraints
Hedge Fund Strategies
- Long-short equity: Optimal long and short positions
- Market neutral: Risk-adjusted returns
- Multi-strategy: Allocation across strategies
- Risk parity: Equal risk contribution from assets
Procurement and Supply Chain
Vendor Selection
- Supplier optimization: Best vendors for different products
- Cost minimization: Lowest total procurement cost
- Quality constraints: Minimum quality requirements
- Delivery constraints: Time-based requirements
Inventory Management
- Stock optimization: Optimal inventory levels
- Warehouse allocation: Product distribution
- Demand forecasting: Future inventory needs
- Cost optimization: Holding vs. ordering costs
QuantFenix Approach to Knapsack/Portfolio Optimization
Hybrid Optimization Strategy
1. Problem Classification
- Size assessment: Determine optimal algorithm
- Constraint analysis: Identify problem complexity
- Cost estimation: Calculate expected compute costs
2. Backend Selection
- Small problems: Dynamic programming (local)
- Medium problems: Hybrid classical-quantum
- Large problems: Quantum-optimized algorithms
3. Continuous Optimization
- Canary runs: Test multiple backends
- Performance monitoring: Track solution quality
- Adaptive routing: Switch backends based on results
Expected Results
We target measurable improvements validated by benchmarks rather than fixed KPIs. Typical goals include:
- Lower compute cost without sacrificing solution quality
- Improved solution quality on challenging discrete instances
- Faster time-to-first-feasible and robust convergence for large problems
Implementation Examples
Portfolio Optimization Configuration
QuantFenix YAML
problem:
type: portfolio_optimization
objective: maximize_sharpe_ratio
constraints:
- budget
- sector_limits
- transaction_costs
- cardinality
backends:
- name: ortools
type: classical
cost_weight: 0.7
- name: aws_braket
type: quantum
cost_weight: 0.3
experimental: true
policy:
cost_weight: 0.6
quality_weight: 0.3
latency_weight: 0.1
prefer_classical_by_default: true
Input Data Format
asset_id,symbol,expected_return,volatility,sector,market_cap
1,AAPL,0.12,0.25,Technology,3000000000000
2,MSFT,0.11,0.22,Technology,2800000000000
3,JNJ,0.08,0.15,Healthcare,450000000000
...
Knapsack Problem Configuration
QuantFenix YAML
problem:
type: knapsack
objective: maximize_value
constraints:
- weight_limit
- cardinality
backends:
- name: ortools
type: classical
cost_weight: 0.8
- name: dwave
type: quantum
cost_weight: 0.2
experimental: true
policy:
cost_weight: 0.5
quality_weight: 0.4
latency_weight: 0.1
prefer_classical_by_default: true
Future Outlook
Quantum Computing Evolution
Near-term (1-3 years)
- Improved qubit count: 1,000+ qubits
- Better error correction: Reduced noise
- Hybrid algorithms: Classical-quantum optimization
Medium-term (3-5 years)
- Fault-tolerant quantum computers: Reliable computation
- Quantum advantage: Clear speedup for knapsack problems
- Commercial availability: Quantum portfolio optimizers
Long-term (5+ years)
- Large-scale quantum computers: 100,000+ qubits
- Potential performance breakthroughs: Quantum systems may outperform classical methods on specific tasks
- New algorithms: Quantum-native optimization methods
Industry Impact
Financial Services
- Portfolio optimization: Better risk-adjusted returns
- Risk management: More accurate risk models
- Algorithmic trading: Faster execution strategies
- Compliance: Better regulatory constraint handling
Supply Chain Management
- Procurement optimization: Lower costs, better quality
- Inventory management: Optimal stock levels
- Vendor selection: Best supplier combinations
- Logistics: Efficient resource allocation
Conclusion
Knapsack and portfolio optimization include formulations that are provably hard in general, especially once discrete constraints enter the picture. Classical methods remain state of the art for many instances; quantum and hybrid approaches are promising on some formulations but should be benchmarked rigorously.
QuantFenix's hybrid approach emphasizes intelligent backend selection, continuous measurement, and audit-ready reports. We default to strong classical baselines, explore hybrid alternatives where appropriate, and choose what wins on cost, quality, and latency.
The future of optimization is measurement-driven: selective backend choice, continuous performance monitoring, and adaptive algorithms that leverage both classical and quantum resources.
Get Started with Knapsack/Portfolio Optimization
Ready to optimize your investment portfolio or resource allocation? QuantFenix provides:
- Multi-backend optimization across classical and quantum solvers
- Cost-aware approach with target savings shown in benchmarks
- Cost-aware approach with savings and quality gains demonstrated in benchmarks
- Audit-ready reports for full traceability
- Easy integration via API, CLI, or web interface
_Upload your asset data and constraints to get instant optimization results with detailed cost analysis and performance metrics._
References
- Kellerer, Pferschy, Pisinger. “Knapsack Problems.” Monograph (book): DP, FPTAS, advanced algorithms.
- Wikipedia: “Knapsack problem” — DP O(nW), FPTAS, references.
- Duke CS course notes — Fractional knapsack greedy O(n log n) and correctness proof.
- MOSEK Portfolio Cookbook — Markowitz as convex QP; efficient solvers.
- Optimization Online notes/surveys — Cardinality-constrained portfolios and NP-hardness (Bienstock et al.).
- Thierry Roncalli — Transaction costs/buy-in thresholds; mixed-integer formulations.
- D-Wave documentation — QUBO/Ising modeling, penalties, hybrid workflows.
- D-Wave Advantage overview — >5,000 annealing qubits and topology notes.
- QAOA surveys — status, limitations, and application considerations.