荷兰一家软件公司开发的Bonaparte系统已成功应用在多起灾难的遗体鉴别任务中。根据其官网给出的联系方式,联系到了其技术主管Willem Burgers,向他询问Bonaparte背后的技术原理。Willem Burgers很热情地将他的新书《Interactive Collaborative Information System》发给我。遂翻译出书中关于Bonaparte背后原理的章节。

1. 前言

大型灾难不仅出现在电影里,在现实生活中也时有发生,比如世贸大厦的恐怖袭击袭击、海啸、飞机失事等等。灾难发生后,搜索遇难者遗体并鉴定死者身份非常重要。现代DNA技术大大促进了灾难遇害者鉴别(Disaster Victim Identification, DVI)。灾难后收集到的遗体残骸往往难以鉴别身份,但法医们可以从少量的遗体残骸中采录到DNA图谱,从而为DVI提供可能。鉴定方法是将身份不明的遗体残骸与报告失踪人口的亲属进行DNA匹配,因为亲属的DNA图谱与遇难者DNA是相关的,一级家庭成员的DNA有50%是相同的。
在仅有一名遇难者的案件中,DVI对法医而言是一项简单直接的任务。但随着遇难者人数的增加,DVI就变得难以手工完成,必须借助自动化程序来实现。
贝叶斯网非常适合于对家族谱系中的DNA图谱进行统计相关性建模。贝叶斯网的一个优势是它非常灵活,能适应不同的家族谱系类型,且允许合并其它因素发挥作用,比如测量误差概率、数据缺失、更高级的基因标记等。

图1. 匹配的问题。根据受害者和失踪者亲属的DNA图谱,将身份不明的受害者(右图蓝色)与报告的失踪人员(左图红色)进行比对。方代表男性,圆代表女性,实线表示可以获得DNA图谱,虚线表示不可获得。

目前,有一款叫Bonaparte的荷兰软件可用于DVI。Bonaparte的计算引擎使用了自动生成的贝叶斯网和贝叶斯推理方法,能够基于DNA图谱结合家族谱系信息进行亲属关系分析。其支持在涉及数百名遇难者的大规模数据集上进行推理。
本文将介绍Bonaparte所采用的贝叶斯网方法。首先将简要介绍DNA图谱,模型中将计算DNA图谱在不同家族谱系中的似然率。

2. 两个假设的似然率之比

假定我们已经获得一个遇难者(Missing Person, MP)的家族谱系。在该谱系中,有些家族成员(Family members, FAM)提供了DNA样本。此外,还获得了一个待鉴别身份者(Unidentified Individual, UI)的DNA。我们的问题就是UI是否等于MP?为了判断该问题,我们假设有一个关于DNA图谱的概率模型P,其中以家族成员的DNA信息作为证据变量。同时,我们提出两个假设 H p H_p Hp​和 H d H_d Hd​:

  • H p H_p Hp​:假设MP=UI,则MP是已观测到的,证据变量为 E = { D N A M P + D N A F A M } E=\{DNA_{MP}+DNA_{FAM}\} E={DNAMP​+DNAFAM​}
  • H d H_d Hd​:假设UI是一个不相关的人U,则U是已观测到的,MP是未观测到的,证据变量为 E = { D N A U + D N A F A M } E=\{DNA_U+DNA_{FAM}\} E={DNAU​+DNAFAM​}

在概率模型P中,这两个假设的似然率之比为:

L R = P ( E ∣ H p ) P ( E ∣ H d ) LR=\frac{P(E|H_p)}{P(E|H_d)} LR=P(E∣Hd​)P(E∣Hp​)​

若已知先验几率 P ( H p ) / P ( H d ) P(H_p)/P(H_d) P(Hp​)/P(Hd​),则后验几率 P ( H p ∣ E ) / P ( H d ∣ E ) P(H_p|E)/P(H_d|E) P(Hp​∣E)/P(Hd​∣E)可通过先验几率与似然率之比相乘得到:

P ( H p ∣ E ) P ( H d ∣ E ) = P ( E ∣ H p ) P ( H p ) P ( E ∣ H d ) P ( H d ) \frac{P(H_p|E)}{P(H_d|E)}=\frac{P(E|H_p)P(H_p)}{P(E|H_d)P(H_d)} P(Hd​∣E)P(Hp​∣E)​=P(E∣Hd​)P(Hd​)P(E∣Hp​)P(Hp​)​

3. DNA图谱

本节将对基于DNA的亲缘关系检测原理进行简要介绍。人类的DNA分布于细胞核中的染色体上,一个正常的人类细胞有46条(23对)染色体,每对染色体中,一份遗传自父亲,另一份遗传自母亲。其中有22对常染色体,它们有相同的长度,通常包含相同的基因(DNA功能单元);另外还有一对性染色体。男性为XY染色体,女性有两条X染色体。
任意两人的DNA有99%以上是相同的,因此大多数DNA对于身份鉴定是无用的。然而,染色体上有一些特定的点位,在这些点位上的DNA存在个体间差异,这种差异被称为基因标记。在基因学上,这些特定点位被称为基因座(复数形式loci,单数形式locus)。
在法医研究中,短串联重复序列(Short Tandem Repeat, STR)基因座是用得最多的。STR也称微卫星DNA(microsatellite DNA),通常是基因组中由1~6个碱基单元组成的一段DNA重复序列,由于核心单位重复数目在个体间呈高度变异性并且数量丰富,构成了STR基因座的遗传多态性。一般认为人类基因组平均每15kb就存在一个STR基因座。其多态性成为法医物证检验个人识别和亲子鉴定的丰富来源。不同人体基因组卫星DNA重复单位的数目是可变的,因此,形成了极其复杂的等位基因片段长度多态性。美国FBI利用13对STR基因座加性染色体位点制作一个“联合DNA索引系统(CODIS)”的全国性DNA数据库,应用到犯罪鉴定与法医学鉴定。

图2. 联合DNA索引系统

STR基因座本质上是一类变异,表现为两个或两个以上碱基对重复发生,如下:

( C A T G ) 3 = C A T G C A T G C A T G (CATG)_3=CATGCATGCATG (CATG)3​=CATGCATGCATG

碱基对的重复次数 x x x(本例中 x = 3 x=3 x=3)是存在个体差异的。有时也存在不完整重复,比如 C A T G C A T G C A T G C A CATGCATGCATGCA CATGCATGCATGCA,此时的重复次数 x = 3.2 x=3.2 x=3.2。对于法医鉴定中所使用的STR基因座, x x x的值都能精确建档。
这些STR基因座的集合构成了DNA图谱。由于染色体是成对存在的,所以一个图谱由成对的STR基因座组成。比如CODIS所使用的13对基因座可记作:

x ˉ = ( 1 x 1 , 1 x 2 ) , ( 2 x 1 , 2 x 2 ) , ⋯ , ( 13 x 1 , 13 x 2 ) \bar{x}=(^1x^1,^1x^2),(^2x^1,^2x^2),\cdots,(^{13}x^1,^{13}x^2) xˉ=(1x1,1x2),(2x1,2x2),⋯,(13x1,13x2)

其中 μ x s ^\mu x^s μxs表示在基因座 μ \mu μ处的重复次数。由于染色体成对存在,因此每一个基因座都有一对等位基因序列 μ x 1 ^\mu x^1 μx1和 μ x 2 ^\mu x^2 μx2,其中一个继承自父亲,另一个继承自母亲。然而,目前的DNA分析技术还无法鉴别等位基因来自父母哪一方。因此 ( μ x 1 , μ x 2 ) (^\mu x^1,^\mu x^2) (μx1,μx2)与 ( μ x 2 , μ x 1 ) (^\mu x^2,^\mu x^1) (μx2,μx1)无法区分。为了数学表达的一致性,我们在记录时遵守 μ x 1 ≤ ^\mu x^1\le μx1≤ μ x 2 ^\mu x^2 μx2的规范。

图3. 一个最基本的亲缘分析示例,包含父亲、母亲和子女。方框代表男性,圆圈代表女性。右图为对应的贝叶斯网络,灰色节点为观察到的节点,上标p表示来自父亲的等位基因,上标m表示来自母亲的等位基因。

染色体遗传自父母,父母双方从每对染色体中等概率地遗传其中一条给孩子。且在染色体遗传的过程中,等位基因发生突变的可能性只有约为0.1%。
最后,在DNA分析中,有时会出现某个点位的等位基因丢失,如观察值为 ( μ x 1 , ? ) (^\mu x^1,?) (μx1,?),其中?表示一个不确定项。

4. 基于贝叶斯网的亲缘分析

在本小节,我们将描述如何为DNA图谱建立贝叶斯网络。首先,各STR基因座的遗传以及我们对它们的观察都是独立的,因此对每一个基因座,我们可以建立一个独立的概率模型 P μ P_\mu Pμ​。在下文,我们只考虑对一个基因座进行建模,因此为了记录简便,我们将基因座的位置 μ \mu μ省略。

4.1 等位基因遗传模型

在一个族谱中,除了家族的创始者,其他任何一个个体 i i i都有一对父母,父亲记为 f ( i ) f(i) f(i),母亲记为 m ( i ) m(i) m(i)。由于交配后,等位基因会发生交换重组,因此DNA图谱和亲属的等位基因之间的统计相关性可以借助于该族谱进行计算。对于一个给定的基因座,个体 i i i拥有一个来自父亲的等位基因 x i f x_i^f xif​和一个来自母亲的等位基因 x i m x_i^m xim​,这对等位基因记作 x i = ( x i f , x i m ) x_i=(x_i^f,x_i^m) xi​=(xif​,xim​)。我们有时也用 x i s x_i^s xis​来记这对等位基因,其中上标 s s s的取值为 { f , m } \{f,m\} {f,m}, x i x_i xi​有 N N N种取值, N N N表示基因座上的等位基因数。

在族谱中,来自创始者的等位基因有两条,它们彼此独立同分布,我们假定这个分布是给定的,为在全体人口中的分布,记为 P ( a ) P(a) P(a)。当然,在更高级的模型中,我们可以进一步考虑这对来自创始者的等位基因存在相关性,且不同分布,比如创始者来自某个特定的子人口集,从而可提高建模的精度。但是,做这种相关性假设后,将会导致模型消耗巨大的内存和计算资源。因此,本专题我们仅在独立同分布的假设下进行考虑。

若个体 i i i在族谱中有父母,则他的等位基因的分布满足如下关系:

P ( x i ∣ x f ( i ) , x m ( i ) ) = P ( x i f ∣ x f ( i ) ) P ( x i m ∣ x m ( i ) ) P(x_i|x_{f(i)},x_{m(i)})=P(x_i^f|x_{f(i)})P(x_i^m|x_{m(i)}) P(xi​∣xf(i)​,xm(i)​)=P(xif​∣xf(i)​)P(xim​∣xm(i)​)

其中:

P ( x i f ∣ x f ( i ) ) = 1 2 ∑ s = f , m P ( x i f ∣ x f ( i ) s ) P ( x i m ∣ x m ( i ) ) = 1 2 ∑ s = f , m P ( x i m ∣ x m ( i ) s ) P(x_i^f|x_{f(i)})=\frac{1}{2}\sum_{s=f,m}P(x_i^f|x_{f(i)}^s)\\ P(x_i^m|x_{m(i)})=\frac{1}{2}\sum_{s=f,m}P(x_i^m|x_{m(i)}^s) P(xif​∣xf(i)​)=21​s=f,m∑​P(xif​∣xf(i)s​)P(xim​∣xm(i)​)=21​s=f,m∑​P(xim​∣xm(i)s​)

该公式表明,个体从其父母处各获得两条等位基因中的一条是等概率事件。其中条件概率 P ( x i f ∣ x f ( i ) s ) P(x_i^f|x_{f(i)}^s) P(xif​∣xf(i)s​)和 P ( x i m ∣ x m ( i ) s ) P(x_i^m|x_{m(i)}^s) P(xim​∣xm(i)s​)是由基因突变模型 P ( a ∣ b ) P(a|b) P(a∣b)给出的,表明遗传自父辈的等位基因是 b b b,在子女处变异为 a a a的概率。对于STR基因座中等位基因的突变机制尚不明确,但有证据表明从父亲到子女的突变率是从母亲到子女突变率的10倍。我们假定在族谱中的所有个体的性别是已知的,但为了记录简便,我们忽略父母的性别因素对基因传递过程中突变率的影响,也忽略基因位于不同基因座位置时的突变率差异。

基因突变率最简单的模型是不考虑突变。这种假设有一定合理性,因为突变的发生率很低,我们可以针对个案单独考虑突变模型。这一假设可以极大提高概率推理的算法效率。然而,一旦存在哪怕一个微小突变,都会导致基因匹配百分百被拒绝,即使其它所有基因座都能完美匹配。基因突变模型对于模型的鲁棒性很重要。我们可以设计一个简化的基因突变模型,比如平均分布模型:

P ( a ∣ b ) = { 1 − μ a = b μ / ( N − 1 ) a ≠ b P(a|b)=\begin{cases} 1-\mu \quad &a=b\\ \mu/(N-1)\quad &a\neq b \end{cases} P(a∣b)={1−μμ/(N−1)​a=ba​=b​

其中 μ \mu μ是基因突变率(不要与前文的基因座序号 μ \mu μ混淆)。该突变率 μ \mu μ包含了基因座位置、性别等所有相关影响因素。

相比于忽略基因突变的模型,该基因突变模型对算法性能影响不大。且由于应用了平均分布的突变模型,基因的概率分布也趋于平坦。有人会说这与基因突变产生的生物多样性现象一致。然而,回忆我们对族谱中创始者等位基因分布的假设,如果族谱中存在多个不同代的创始者,他们的等位基因被赋予了相同的分布,这与此处的基因突变模型存在差异,因此随着族谱中增加更多关联祖先,会导致似然率发生微小偏差。

4.2 观察模型

在族谱上,我们可观察到个体 i i i的某对等位基因,记为 x ˉ i \bar x_i xˉi​,省略下标则不指定个体。我们无法观察到等位基因来自父母哪一方,因此 x f = a , x m = b x^f=a,x^m=b xf=a,xm=b与 f f = b , x m = a f^f=b,x^m=a ff=b,xm=a是等价观察,记作 x ˉ = ( a , b ) \bar x=(a,b) xˉ=(a,b),其中约定 a ≤ b a\leq b a≤b。当发生基因缺失时,我们用?来代替缺失的基因,如 x ˉ = ( x , ? ) \bar x=(x,?) xˉ=(x,?)。我们用 L L L来对基因缺失事件进行建模: L = 1 L=1 L=1表示缺失了一个等位基因,如 x ˉ = ( x , ? ) \bar x=(x,?) xˉ=(x,?); L = 0 L=0 L=0表示不缺失,如 x ˉ = ( a , b ) \bar x=(a,b) xˉ=(a,b);当 L = 2 L=2 L=2时,我们实际上没有观察到任何信息,因此不对这种情况建模。从而,可对变量建立如下观察模型:

当 L = 0 L=0 L=0时:

P ( x ˉ ∣ ( a , b ) , L = 0 ) = { 1 i f x ˉ = ( a , b ) 0 o t h e r w i s e P(\bar x|(a,b),L=0)= \begin{cases} 1 \quad if\quad\bar x=(a,b)\\ 0 \quad otherwise \end{cases} P(xˉ∣(a,b),L=0)={1ifxˉ=(a,b)0otherwise​

当 L = 1 , a ≠ b L=1,a\neq b L=1,a​=b时:

{ P ( x ˉ = ( a , ? ) ∣ ( a , b ) , L = 1 ) = 1 2 P ( x ˉ = ( b , ? ) ∣ ( a , b ) , L = 1 ) = 1 2 \begin{cases} P(\bar x=(a,?)|(a,b),L=1)=\frac{1}{2}\\ P(\bar x=(b,?)|(a,b),L=1)=\frac{1}{2} \end{cases} {P(xˉ=(a,?)∣(a,b),L=1)=21​P(xˉ=(b,?)∣(a,b),L=1)=21​​

当 L = 1 , a = b L=1,a=b L=1,a=b时:

P ( x ˉ = ( a , ? ) ∣ ( a , a ) , L = 1 ) = 1 P(\bar x=(a,?)|(a,a),L=1)=1 P(xˉ=(a,?)∣(a,a),L=1)=1

5. 推断

将族谱上创始者的等位基因先验概率模型、基因遗传模型和观察模型相乘,我们就可以得到一个贝叶斯网,其中包含了等位基因 x x x和族谱上已观察到的等位基因 x ˉ \bar x xˉ。假定族谱上包含的个体集为 I = 1 , 2 , ⋯ , K I=1,2,\cdots,K I=1,2,⋯,K,其中的创始者组成子集 F F F,且假定各个体的等位基因缺失情况 L j L_j Lj​已知,则该贝叶斯网的联合概率分布如下:

P ( { x ˉ , x } I ) = ∏ j P ( x ˉ j ∣ x j , L j ) ∏ i ∈ I \ F P ( x i ∣ x f ( i ) , x m ( i ) ) ∏ i ∈ F P ( x i ) P(\{\bar x,x\}_I)=\prod_jP(\bar x_j|x_j,L_j)\prod_{i\in I\backslash F}P(x_i|x_{f(i)},x_{m(i)})\prod_{i\in F}P(x_i) P({xˉ,x}I​)=j∏​P(xˉj​∣xj​,Lj​)i∈I\F∏​P(xi​∣xf(i)​,xm(i)​)i∈F∏​P(xi​)

在该模型下,对于一组DNA图谱,我们可以计算其似然率。族谱上部分个体的等位基因被采集和观察到,这些个体组成的子集记为 O O O,其似然率为边缘概率分布记为 P ( { x ˉ } O ) P(\{\bar x\}_O) P({xˉ}O​):

P ( { x ˉ } O ) = ∑ x 1 ⋯ ∑ x K ∏ j ∈ O P ( x ˉ j ∣ x j , L j ) ∏ i ∈ I \ F P ( x i ∣ x f ( i ) , x m ( i ) ) ∏ i ∈ F P ( x i ) P(\{\bar x\}_O)=\sum_{x_1}\cdots\sum_{x_K}\prod_{j\in O}P(\bar x_j|x_j,L_j)\prod_{i\in I\backslash F}P(x_i|x_{f(i)},x_{m(i)})\prod_{i\in F}P(x_i) P({xˉ}O​)=x1​∑​⋯xK​∑​j∈O∏​P(xˉj​∣xj​,Lj​)i∈I\F∏​P(xi​∣xf(i)​,xm(i)​)i∈F∏​P(xi​)

在实际应用中,由于等位基因的取值空间非常庞大,这将会使得“联合树"算法变得不可行。幸运的是,我们可以通过一个叫做“值约简"的方法大大降低算法的复杂度。假设我们所观察到的等位基因值为等位基因可能取值空间的一个子集,记为 A A A, ∣ ∣ A ∣ ∣ = M ||A||=M ∣∣A∣∣=M,包含M个不同的取值点。我们将等位基因的所有其它可能取值都约简为 z z z,从而将等位基因的取值可能数约简为 M + 1 M+1 M+1。即对于 a ∈ A , L ∈ { 0 , 1 } ) a\in A,L\in\{0,1\}) a∈A,L∈{0,1}),且 b 1 , b 2 , b 3 , b 4 ∉ A b_1,b_2,b_3,b_4\notin A b1​,b2​,b3​,b4​∈/​A,有如下等式成立:

P ( a ∣ b 1 ) = P ( a ∣ b 2 ) P ( x ˉ ∣ ( a , b 1 ) , L ) = P ( x ˉ ∣ ( a , b 2 ) , L ) P ( x ˉ ∣ ( b 1 , a ) , L ) = P ( x ˉ ∣ ( b 2 , a ) , L ) P ( x ˉ ∣ ( b 1 , b 2 ) , L ) = P ( x ˉ ∣ ( b 3 , b 4 ) , L ) \begin{aligned} P(a|b_1)&=P(a|b_2)\\ P(\bar x|(a,b_1),L)&=P(\bar x|(a,b_2),L)\\ P(\bar x|(b_1,a),L)&=P(\bar x|(b_2,a),L)\\ P(\bar x|(b_1,b_2),L)&=P(\bar x|(b_3,b_4),L) \end{aligned} P(a∣b1​)P(xˉ∣(a,b1​),L)P(xˉ∣(b1​,a),L)P(xˉ∣(b1​,b2​),L)​=P(a∣b2​)=P(xˉ∣(a,b2​),L)=P(xˉ∣(b2​,a),L)=P(xˉ∣(b3​,b4​),L)​

从而,我们可以用 P ( a ∣ z ) P(a|z) P(a∣z)代替 P ( a ∣ b ) P(a|b) P(a∣b),用 P ( x ˉ ∣ ( a , z ) ) P(\bar x|(a,z)) P(xˉ∣(a,z))代替 P ( x ˉ ∣ ( a , b ) ) P(\bar x|(a,b)) P(xˉ∣(a,b)),等等。其中 z z z的条件概率可通过下式计算:

P ( z ∣ x ) = 1 − ∑ a ∈ A P ( a ∣ x ) P(z|x)=1-\sum_{a\in A}P(a|x) P(z∣x)=1−a∈A∑​P(a∣x)

其中 x ∈ A ∪ z x\in A\cup z x∈A∪z.

最终,我们的推断过程为:首先对数据进行“值约简",然后对每一个基因座调用“联合树"算法计算似然率和似然几率。

6. 波拿巴软件

波拿巴软件能处理大规模基因匹配问题,该软件为CS架构,其计算核心和内部数据库运行在服务器上,所有匹配结果也存储在内部服务器上。服务器通过XML和https接口与外界相连。用户可通过web浏览器登录系统,因此用户本地计算机上无需安装任何软件。大家可访问www.dnadvi.nl来试用它的演示版本。

图3. Bonaparte基本架构

7. 总结

波拿巴软件是基于贝叶斯网的遇难者身份鉴别系统。在该系统中,贝叶斯网被用来对族谱中不同个体的DNA图谱建立统计关系模型。通过贝叶斯推理,可以为法医提供接受假设与拒绝假设这两个假设的后验几率之比。贝叶斯网中各变量之间的概率关系是建立在遗传学第一定律“基因分离定律"上的。该系统的一个特征是能从数据中自动、实时地迭代生成模型。

Bonaparte:贝叶斯网在灾难遇难者识别(DVI)中的应用相关推荐

  1. 贝叶斯网专题2:贝叶斯网基本概念

    文章目录 第一部分:贝叶斯网基础 [1.1 信息论基础](https://blog.csdn.net/deepbodhi/article/details/119823055) 1.2 贝叶斯网基本概念 ...

  2. 贝叶斯网的R实现( Bayesian networks in R)bnlearn(4)

    贝叶斯网络的推理(inference) (1)推理问题 在了解如何构造贝叶斯网络之后,下面我们考虑如何利用贝叶斯网络来进行推理.贝叶斯网络的推理是对某些变量当给定其它变量的状态作为证据时如何推断它们的 ...

  3. 从朴素贝叶斯到贝叶斯网

    回顾 在文章<朴素贝叶斯>中,小夕为大家介绍了朴素贝叶斯模型的基本知识,并且得出了朴素贝叶斯是利用联合概率P(x1,x2,x3...xn,y)来确定某个样本为某个类别的概率,进而利用最大后 ...

  4. 贝叶斯网的R实现( Bayesian networks in R)bnlearn(3)

    4.参数学习 得到贝叶斯网的网络结构之后,可以对局部分布的参数进行参数估计了,这称作参数学习. 4.1参数学习的基本方法 bnlearn包的参数学习函数是bn.fit,其参数method给出了两种具体 ...

  5. 贝叶斯网的R实现( Bayesian networks in R)bnlearn(2)

    3.结构学习 上面我们采用一个预先设定的结构建立了一个关于marks的贝叶斯网.这种方式在某些情况下(比如存在先验的专家知识)是合适的.但是对大多数的贝叶斯网络,我们需要从数据中学习网络. 3.1贝叶 ...

  6. 贝叶斯网的R实现( Bayesian networks in R)bnlearn(1)

    1.bayesian networks的一些基本概念 贝叶斯网bayesian networks是一种有向无环图模型(DAG),可表示为G=(V,A).其中V是节点的集合,节点表示随机变量:A是弧(或 ...

  7. 机器学习--贝叶斯网

    ++Bayesian network 1-概念 2-DAG示例 3-BN结构 4-BN中3个变量之间的依赖关系 5-吉布斯采样算法 6-代码部分 0-自定义贝叶斯网络 1-搜索所有网络结构 2-启发式 ...

  8. 贝叶斯网专题4:概率推理中的变量消元方法

    文章目录 第一部分:贝叶斯网基础 [1.1 信息论基础](https://blog.csdn.net/deepbodhi/article/details/119823055) [1.2 贝叶斯网基本概 ...

  9. 贝叶斯网与链式法则的理解

    定义 首先给出贝叶斯网络的定义:贝叶斯网络是一个有向无环图(DAG: Direct Acyclic Graph),图的节点表示随机变量X1, X2, - 图中每个节点的条件概率分布(CPD: cond ...

最新文章

  1. 【 C 】对指针表达式的个人总结与思考
  2. 使用Repository informaton system查找constant定义
  3. 玩玩Xamarin Evolve 2016带来的新特性(一)-iOS Simulator(for Windows)
  4. Oracle命令--为数据文件缩容
  5. 安装篇——nginx安装ssl模块转发https请求
  6. linux内核C -- 第07课:地址对齐那些事儿
  7. 买菜201809-2
  8. php-screw 安装,liunx 下安装 php_screw 扩展 以及报错处理
  9. Flink SQL Client初探
  10. vue的axios两种写法(不知道对不对,仅供参考)
  11. python中得到26个字母
  12. 数仓4.0(三)------数据仓库系统(续)
  13. 手机文件share.php,华为P30手机怎么使用Huawei Share功能?一碰传文件
  14. 一个屌丝程序猿的人生(一百零八)
  15. 台式电脑计算机硬盘清理,怎样清理台式电脑硬盘垃圾
  16. 关于java的1234
  17. 山沟沟里的技术脱贫:阿里工程师助平武蜂农物联网养蜂...
  18. 24、Java——银行存款取款系统(对象+集合)
  19. 三只松鼠、盐津铺子:战略相似,命运迥异
  20. 3 个助你玩转正则表达式的利器

热门文章

  1. 【数据结构基础】之数组介绍,生动形象,通俗易懂,算法入门必看
  2. 国外虚拟服务器,国外虚拟主机
  3. Promtail + Loki + Grafana实现日志管理系统
  4. vue 获取后端数据
  5. 头歌:HTML——表格:第4关:表格的属性——cellspacing
  6. git 批量删除标签
  7. Jmeter核心知识点之参数化
  8. centeros 链接mysql_centeros 配置 mysql 支持远程访问
  9. android+studio数独小游戏,‎App Store 上的“益智数独-每日一题挑战题,锻炼你的大脑”...
  10. c语言保留字(关键字)汇总