blob: 455037c918dc8e4c29005914224c7881289b5501 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
function [n_dags, dag_list] = Markov_equivalent_dags(dag)
%
% [n_dags, dag_list] = Markov_equivalent_dags(dag)
%
% generates a cell array of all Markov equivalent DAGs
% corresponding to the input DAG.
%
% YOU NEED TO HAVE THE STRUCTURE LEARNING PACKAGE IN PLACE TO USE THIS FUNCTION!
%
% Input: DAG (in standard format, i.e. dag(a,b)=1 if and only if a->b)
%
% Output: Number of DAGs generated and
% Cell array of all Markov-equivalent DAGs (in same format as input)
%
% Sample Use:
%
% Example 1:
% % Find all DAGs equivalent to DAG of Asia Network
% BN = mk_asia_bnet();
% dag = BN.dag;
% [n_dags, dag_list] = Markov_equivalent_dags(dag);
% n_dags % Answer should be: 6
% dag_list{1} % displays the first DAG, etc.
%
% Example 2:
% % Find all DAGs equivalent to random DAG
% dag = mk_rnd_dag(4);
% [n_dags, dag_list] = Markov_equivalent_dags(dag);
%
% Imme Ebert-Uphoff (ebert@tree.com), 2007
%
% find completed PDAG corresponding to DAG
cpdag = dag_to_cpdag(dag);
% convert to our notation, i.e. directed edge has (-1) instead of (1)
signed_pdag = pdag_unsigned_to_signed(cpdag);
% find all corresponding DAGs
[n_dags,dag_list] = pdag_to_all_dags( signed_pdag );
|