高斯消元+矩阵的逆

来自popoqqq大神

求矩阵的逆:把I-T放在左边,P/Q*S放在右边,这样就形成了一个n*2n的矩阵,然后把左边高斯消元,右边就是求完逆的矩阵,其实就是ans,矩阵的逆跟乘法逆元是一样的,只不过是矩阵的逆元

然后输出a[i][n+1],事实上矩阵只有n*(n+1)

构造转移概率矩阵是a[u][v]=1.0/d[v]*(1-p/q),就是v->u的概率乘上在v不爆炸的概率,我们想一想,假设我们从1->n,1->2,有1/d[1]的概率转移,并且不能爆炸才能走过去,要乘上(1-p/q),然后2->3,要乘上1/d[2]的概率走过去,再乘上(1-p/q),不爆炸才能走过去,这就是转移的概率,每次矩阵自乘,就是b[i][j] += a[i][k]*a[k][j],求出又走一步的概率,最先开始S便是行向量,表示从1开始,还没走就爆炸的概率就是自己在这里爆炸,就是乘T^0,第一次转移就是乘上T,

#include<bits/stdc++.h>
using namespace std;
const double eps = 1e-;
const int N = ;
int n, m;
double a[N][N];
double p, q, t;
vector<int> G[N];
void gauss_jordan()
{
a[][n + ] = t;
for(int i = ; i <= n; ++i)
{
a[i][i] += 1.0;
for(int j = ; j < G[i].size(); ++j)
{
int u = G[i][j];
a[i][u] -= (1.0 - t) / (double)(G[u].size());
}
}
for(int now = ; now <= n; ++now)
{
int x = now;
for(int i = now; i <= n; ++i) if(fabs(a[i][now]) > fabs(a[x][now])) x = i;
for(int i = ; i <= n + ; ++i) swap(a[now][i], a[x][i]);
double t = a[now][now];
for(int i = ; i <= n + ; ++i) a[now][i] /= t;
for(int i = ; i <= n; ++i) if(fabs(a[i][now]) > eps && now != i)
{
t = a[i][now];
for(int j = ; j <= n + ; ++j) a[i][j] -= t * a[now][j];
}
}
for(int i = ; i <= n; ++i) printf("%.9f\n", a[i][n + ]);
}
int main()
{
scanf("%d%d%lf%lf", &n, &m, &p, &q);
t = p / q;
for(int i = ; i <= m; ++i)
{
int u, v;
scanf("%d%d", &u, &v);
G[u].push_back(v);
G[v].push_back(u);
}
gauss_jordan();
return ;
}

最新文章

  1. codeIgniter怎么实现对input type=text对话框blur事件的监听以及传值?
  2. DIV与SPAN的区别
  3. ruby-thread/process
  4. 【转载】从 LinkedIn 的数据处理机制学习数据架构
  5. 安装配置 redis
  6. 三个入侵的必备小工具-lcx.exe、nc.exe、sc.exe
  7. SpriteFrameCache 精灵帧缓存
  8. thinkphp 杂乱笔记(1)
  9. 来自投资银行的20个Java面试题
  10. 关于ViewPager被嵌套在ScrollView中不显示的问题
  11. Xamarin.forms 自定义tabview控件
  12. React学习笔记(一)- 入门笔记
  13. windows7安装MySQL-python遇到的坑
  14. python2 with open(path,&quot;&quot;,) as f:
  15. python数据结构之栈
  16. Fire Net ZOJ - 1002
  17. React 中 keys 的作用是什么?
  18. ES Log4J配置信息
  19. 排序算法之快速排序(Quicksort)解析
  20. JS判断时特殊值与boolean类型的转换

热门文章

  1. django-3 admin开启后台配置并展示表内容
  2. django 使用框架下auth.models自带的User进行扩展增加字段
  3. python爬虫(三)
  4. Unix网络编程 — 头文件解析
  5. Spring &amp; Java
  6. [OJ#39]左手右手
  7. BZOJ 3754 Tree之最小方差树 MST
  8. Ftp启动与关闭
  9. 18.9.23 PION模拟赛
  10. Servlet实现国际化