动态规划和中文分词

本文介绍了动态规划在解决装配线调度问题和中文分词中的应用。通过Python代码展示了如何使用动态规划解决装配线调度问题,并引用《数学之美》和《算法导论》进行深入解释。对于中文分词,文章基于词频表,使用动态规划算法实现概率最高的分词策略,以‘其中最简单的就是最大匹配的中文分词’为例进行详细说明。
摘要由CSDN通过智能技术生成
动态规划dynamical programming,简称dp。了解它请参考《数学之美》第12章和《算法导论》第2版第15章,这里就不重复了。

《算法导论》第15章的“装配线调度”问题是非常好的dp学习算法,用数学语言包装之后有点难懂,我用python写了个简化版,只需要看图15-2,再看下面的代码,就知道dp是怎么回事了。

-----------------------------------------------------
#!/usr/bin/env python
#!-*- coding:utf-8 -*-

#底盘进入装配线需要的时间
e1 = 2
e2 = 4

#底盘离开装配线需要的时间
s1 = 3
s2 = 2

#底盘在装配线上每个装配站的处理时间
a1 = [7, 9, 3, 4, 8, 4]
a2 = [8, 5, 6, 4, 5, 7]

#底盘在装配件之间移动时需要的时间。
t1 = [2, 3, 1, 3, 4]
t2 = [2, 1, 2, 2, 1]

#初始化f1和f2,也就是用进入装配线时间和第一个装配站用时之和
f1 = [e1 + a1[0]
f2 = [e2 + a2[0]

#这一块,就是用dp的方式,分别计算两条装配线的最短时间装配时间
i = 1
l1 = []
l2 = []
while i < 6:
    if (f1[i-1] + a1[i] < f2[i-1]+a1[i]+t2[i-1]):
        f1.append(f1[i-1] + a1[i])
        l1.append(1)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值