主要参考书目:
- 最优化方法及其应用/郭科,陈聆,魏友华.-北京:高等教育出版社,2007.7(2013.7重印)
基本原理
这一部分的描述比较数学化,这里完全照搬书本。
实例一、楼梯问题
- 问题描述
一个人爬楼梯,每次只能爬一个或两个台阶,假设有n个台阶,那么这个人有多少种不同的爬楼梯方法。 - 思路分析
该问题并不涉及优化,而是方法计数。
逆序考虑该问题,要上到第n层,一定是从第n-1层爬一级或者从n-2层爬两级。
则可得到上n层台阶的方法 f(n)=f(n−1)+f(n−2),n>2 f ( n ) = f ( n − 1 ) + f ( n − 2 ) , n > 2
而 f(1)=1,f(2)=2. f ( 1 ) = 1 , f ( 2 ) = 2. 代码实现
Pythondef ladder(n): if n==1: return [1] elif n==2: return [1,2] rel= [0]*(n+1) rel[0]=0 rel[1]=1 rel[2]=2 for i in range(3,n+1): rel[i]=rel[i-1]+rel[i-2] return rel[1:] print(ladder(5)) input()
实例二、背包问题
- 问题描述
某人拥有一个容量为V的背包,有一天他找到了一个宝藏,该宝藏有n个,其价值为v[n],所需容量为w[n],求该人如何选择带走的东西能使利益最大化? 思路分析
不妨把问题具体化:
V=120;n=5;w=[40,50,70,40,20]