简介:viterbi算法其实就是多步骤每步多选择模型的最优选择问题,其在每一步的所有选择都保存了前续所有步骤到当前步骤当前选择的最小总代价(或者最大价值)以及当前代价的情况下前继步骤的选择。依次计算完所有步骤后,通过回溯的方法找到最优选择路径。符合这个模型的都可以用viterbi算法解决。用以下例子加以说明:1.题目背景:从前有个村儿,村里的人的身体情况只有两种可能:健康或者发烧。假设这个村儿的人
单链表:#-*-coding:utf-8-*-classNode(object):"""节点"""def__init__(self,elem):self.elem=elemself.next=NoneclassSingleLinkList(object):"""单链表"""#头结点def__init__(self,node=None):self._head=nodedefis_empty(self
栈:#-*-coding:utf-8-*-classStack(object):def__init__(self):self.__list=[]defpush(self,item):returnself.__list.append(item)defpop(self):returnself.__list.pop()defpeek(self):"""返回栈顶元素"""ifself.__list:ret
搜索常见算法:顺序查找,二分法查找,哈希查找,下面是二分查找的实现方式#coding:utf-8#二分查找的前提:只能对有序列进行查找defbinary_search(alist,item):"""二分查找---递归实现"""n=len(alist)ifn>0:mid=n//2ifitem==alist[mid]:returnTrueelifitem<alist[mid]:return
#-*-codding:utf-8-*-classNode(object):"""节点"""def__init__(self,item):self.elem=itemself.lchild=Noneself.rchild=NoneclassTree(object):"""二叉树"""def__init__(self):self.root=Nonedefadd(self,item):node=Nod
4.希尔排序#-*-coding:utf-8-*-defshell_sort(alist):"""希尔排序"""n=len(alist)gap=n//2whilegap>=1:forjinrange(gap,n):i=jwhilei>0:ifalist[i]<alist[i-gap]:alist[i],alist[i-gap]=alist[i-gap],alist[i]i-=ga
排序算法有很多种,下面列举几种:1.冒泡排序2.选择排序3.插入排序4.希尔排序5.快速排序6.归并排序1.冒泡排序#-*-coding:utf-8-*-defbubble_sort(alist):"""冒泡排序"""forjinrange(len(alist)-1):foriinrange(0,len(alist)-1-j):ifalist[i]>alist[i+1]:alist[i],a
Copyright © 2005-2024 51CTO.COM 版权所有 京ICP证060544号