#P1130. 2023.03.26-第三题-KL散度

2023.03.26-第三题-KL散度

No testdata at current.

ps:

不太懂这些公式怎么算,有懂哥可以写一份标答给塔子哥,塔子哥来出数据

题目内容

KLKL 散度是机器学习,深度学习等领域中关于分布距离度量的重要的方法。

对于两个给定连续分布 PPQQ ,他们的 KLKL 散度定义为 DKL(pq)=p(x)logq(x)p(x)dxD_{KL(p||q)} = \int p(x) \log^{p(x)} _{q(x)} dx

对于两个正态分布 N(μp,Σp)N(\mu_p,\Sigma _p)N(μq,Σq)N(\mu_q,\Sigma _q) ,可以通过简单的运算得知他们的 KLKL 散度为

$D_{KL(p||q)} = \frac{1}{2} [log\frac{\sum_q}{ \sum_p} - k +(\mu_p -\mu_q)^T\Sigma^{-1}_{q}(\mu_p - \mu_q)+tr\{\Sigma^{-1}_q \Sigma_p\}]$

其中 |·| 表示矩阵的行列式, tr()tr(·) 表示矩阵对角线元素求和, loglog 以自然对数 ee 为底。

现在给定其中一个正态分布 qqN(0,I)N(0,I) ,另一个分布 ppN(0,Σp)N(0,\Sigma^{'}_p)Σp\Sigma^{'}_p 是一个 kk 阶对角阵,试判断这两个正态分布的 KLKL 散度 DKL(pq)D_{KL(p||q)} 是否大于给定闻值 tt ,若大于则输出 11 ,否则输出 00

输入描述

第一行表示为测试数据组数 TT ,接下来每一组有 22 行,

一组的第一行为 kktt ,矩阵 Σp\Sigma^{'}_p 的维度是 k×kk \times ktt 为给定阈值。其中 1k1031\le k \le 10^31t1051\le t \le 10^5

一组的第二行有有 kk 个浮点数,为矩阵 Σp\Sigma^{'}_p 的对角元。

输出描述

这两个正态分布的 KLKL 散度是否大于给定阈值 tt ,若大于则输出 11 ,否则输出 00

样例

输入

2
3 10.5
4.5 3.4 6.5
3 2.2
4.5 3.4 6.5

输出

0
1