hdu4865Peter's Hobby马尔科夫过程

#include<iostream>
#include<string>
#include<cmath>
#include<map>
#include<vector>
using namespace std;
double p1[3][4]={0.6,0.2,0.15,0.05,0.25,0.3,0.2,0.25,0.05,0.1,0.35,0.5};
double p2[3][3]={0.5,0.375,0.125,0.25,0.125,0.625,0.25,0.375,0.375};
double fu[50][3]={log(0.63),log(0.17),log(0.2)},pre[50][3];
map<string,int>m1;
map<int,string>m2;
void init()
{
	m1.insert(make_pair("Dry",0));
	m1.insert(make_pair("Dryish",1));
	m1.insert(make_pair("Damp",2));
	m1.insert(make_pair("Soggy",3));
	m2.insert(make_pair(0,"Sunny"));
	m2.insert(make_pair(1,"Cloudy"));
	m2.insert(make_pair(2,"Rainy"));
}
void work()
{
	double t,tt,ttt;
	int n,i,j,k,x,y,r;
	string s;
	cin>>n;

	cin>>s;
	i=m1[s];
	for(j=0;j<3;j++)
		fu[0][j]=fu[0][j]+log(p1[j][i]);

	for(i=1;i<n;i++)
	{
		cin>>s;
		y=i-1;
		j=m1[s];
		for(k=0;k<3;k++)
		{
			t=log(0);
			for(x=0;x<3;x++)
			{
				tt=fu[y][x]+log(p2[x][k])+log(p1[k][j]);
				if(t<tt)
				{
					t=tt;
					r=x;
				}
			}
			pre[i][k]=r;
			fu[i][k]=t;
		}
	}

	t=log(0);
	i=n-1;
	for(j=0;j<3;j++)
		if(t<fu[i][j])
		{
			t=fu[i][j];
			r=j;
		}

	vector<int>v;
	v.push_back(r);
	for(i=n-1;i>0;i--)
	{
		v.push_back(pre[i][r]);
		r=pre[i][r];
	}
	for(i=n-1;i>-1;i--)
		cout<<m2[v[i]]<<endl;
}
int main()
{
	int exp,i;
	init();
	cin>>exp;
	for(i=1;i<=exp;i++)
	{
		printf("Case #%d:\n",i);
		work();
	}
}

hdu4865Peter's Hobby马尔科夫过程,布布扣,bubuko.com

hdu4865Peter's Hobby马尔科夫过程

时间: 2024-11-10 01:33:24

hdu4865Peter's Hobby马尔科夫过程的相关文章

Markov过程(马尔科夫过程)

导入 赌徒甲有资本a元,赌徒乙有资本b元,两人进行赌博,每赌一局输者给赢者1元,没有和局,直赌至两人中有一人输光为止.设在每一局中,甲获胜的概率为p,乙获胜的概率为q=1-p,求甲先输光的概率. 这个实际上是Markov过程(马尔科夫过程),解题过程如下: 解:先设c=a+b:  r=q/p; 应用 hdu1204 糖果大战 AC代码 1 #include <stdio.h> 2 #include <math.h> 3 #define M 1e-12 4 5 int main()

隐马尔科夫过程

在马尔科夫模型中,每个状态代表了一个可观察事件,所以,马尔科夫模型有时又称作可是马尔科夫(visible markov model, VMM),这在某种成都航限制了适应性.在隐马尔科夫模型(VMM)中,我们不知道模型所经过的状态序列,只知道状态的概率函数,也就是说,观察到的时间是状态的随机函数,因此,改模型是一个双重的随机过程.(统计自然语言处理(第二版)) (不懂马尔科夫过程的朋友请先了解一下马尔科夫过程) 书中用暗室里的袋子举例,我这里就简短说明一下,有一个暗室,暗室里有比方说10个袋子,每

[定理证明]正态随机过程又是马尔科夫过程的充要条件

必要性的证明 充分性的证明 参考 参考1:<概率论与数理统计教材>(茆诗松,第二版) 参考2:[公式推导]用最简洁的方法证明多元正态分布的条件分布 参考3:<线性统计模型-线性回归与方差分析>(王松桂) 参考3:百度文库--<随机过程-正态马尔科夫过程>. 后续更新: 在定理1的基础上证明的定理2: 定理2就很有实用价值,由于平稳序列具有遍历性,所以就可以用样本自协方差函数来代替总体协方差函数,从而来根据函数是否为指数函数来判别序列是否具有马尔科夫性. --------

从随机过程的熵率和马尔科夫稳态过程引出的一些思考 - 人生逃不过一场马尔科夫稳态

1. 引言 0x1:人生就是一个马尔科夫稳态 每一秒我们都在做各种各样的选择,要吃青菜还是红烧肉.看电影还是看书.跑步还是睡觉,咋一看起来,每一个选择都是随机的,而人生又是由无数个这样的随机选择组成的结果.从这个前提往下推导,似乎可以得出一个结论,即人生是无常的,未来是不可预测的.但事实真的是如此吗? 以前的老人流行说一句话,三岁看小,七岁看老.这似乎是一句充满迷信主义色彩的俗语,但其实其中暗含了非常质朴而经典的理论依据,即随机过程不管其转移概率分布如何,随着时序的增大,最终会收敛在某个稳态上.

马尔科夫链和隐马尔可夫模型(转载)

马尔可夫模型是由Andrei A. Markov于1913年提出的 ?? 设 SS是一个由有限个状态组成的集合 S={1,2,3,-,n?1,n}S={1,2,3,-,n?1,n} 随机序列 XX 在 tt时刻所处的状态为 qtqt,其中 qt∈Sqt∈S,若有: P(qt=j|qt?1=i,qt?2=k,?)=P(qt=j|qt?1=i)P(qt=j|qt?1=i,qt?2=k,?)=P(qt=j|qt?1=i) aij≥0∑jnaij=1aij≥0∑jnaij=1 则随机序列 XX构成一个一

炎热天气看书还是钓鱼?隐马尔科夫模型教你预测!

高温天气与行为概率 夏季是一年最热的时候,气温普遍偏高,一般把日最高气温达到35℃以上的天气叫作高温天气,但是一般情况下高温天气分为两类.  (1)干热型高温.一般是指气温较高.太阳辐射强而且空气的湿度较小的高温天气.  (2)闷热型高温.一般是指水汽丰富,但是气温相对而言并不算太高,给人感受闷热.  小张在不同类型下的高温天气下会有不同的行为,但是归纳起来为主要为散步.垂钓.看书三类,分别在干热型高温和闷热型高温下对应行为的概率见下表.  假设干热型高温和闷热型高温之间会进行相互转变,每天可能

隐马尔科夫模型HMM

隐马尔科夫模型HMM 作者:樱花猪 摘要: 本文为七月算法(julyedu.com)12月机器学习第十七次课在线笔记.隐马尔可夫模型(Hidden Markov Model,HMM)是统计模型,它用来描述一个含有隐含未知参数的马尔科夫过程.其难点是从可观察的参数中确定该过程的隐含参数,然后利用这些参数来作进一步的分析.在早些年HMM模型被非常广泛的应用,而现在随着机器学习的发展HMM模型的应用场景越来越小然而在图像识别等领域HMM依然起着重要的作用. 引言: 隐马尔科夫模型是马尔科夫链的一种,它

隐马尔科夫模型的来龙去脉

作为应用广泛的一种统计模型(尤其是在自然语言处理(NLP)中),隐马尔科夫模型是非常值得一说的,本文就隐马尔科夫模型的原理和应用介绍进行说明.由于隐马尔科夫模型有着很多不同的具体算法实现,本文暂时跳过这部分内容,算法部分会另外写成一篇博文. 马尔科夫链 在语言模型及其实现中,我曾经简单地提到过马尔科夫链,这里将会全面详细的说明. 其实马尔科夫链是一种离散的随即过程,可以将其看成是一种有限自动机,但是其状态之间的转移并不是依赖于外界的输入,而是依赖于每个状态之间的转移概率. 如下图所示: 上图中每

PGM学习之七 MRF,马尔科夫随机场

之前自己做实验也用过MRF(Markov Random Filed,马尔科夫随机场),基本原理理解,但是很多细节的地方都不求甚解.恰好趁学习PGM的时间,整理一下在机器视觉与图像分析领域的MRF的相关知识. 打字不易,转载请注明.http://blog.csdn.net/polly_yang/article/details/9716591 在机器视觉领域,一个图像分析问题通常被定义为建模问题,图像分析的过程就是从计算的观点来求解模型的过程.一个模型除了可以表达成图形的形式外,通常使用一个目标函数