wolffd@0
|
1
|
wolffd@0
|
2 % profile clear;
|
wolffd@0
|
3 % profile on;
|
wolffd@0
|
4
|
wolffd@0
|
5 clear eval;
|
wolffd@0
|
6 N = 20;
|
wolffd@0
|
7 for ci = 1:N
|
wolffd@0
|
8 order = ci;
|
wolffd@0
|
9 % connectivity = ceil(rand(1) * order)
|
wolffd@0
|
10 % E = mk_rnd_dag(order, connectivity);
|
wolffd@0
|
11 E = rand(order) > exp(1) * rand(1);
|
wolffd@0
|
12
|
wolffd@0
|
13 G = DiGraph(ones(order,1), E);
|
wolffd@0
|
14 eval.G(ci) = G;
|
wolffd@0
|
15
|
wolffd@0
|
16 eval.res_naive(ci) = acyclic(E);
|
wolffd@0
|
17
|
wolffd@0
|
18 eval.res_myfun(ci) = G.isAcyclic;
|
wolffd@0
|
19
|
wolffd@0
|
20 Gstob = ClipSimGraphStober(G);
|
wolffd@0
|
21
|
wolffd@0
|
22 eval.res_stober(ci) = Gstob.isAcyclic;
|
wolffd@0
|
23 end
|
wolffd@0
|
24 eval
|
wolffd@0
|
25
|
wolffd@0
|
26
|
wolffd@0
|
27 figure
|
wolffd@0
|
28 plot([eval.res_naive' eval.res_myfun'+0.1 eval.res_stober'+0.2],'*')
|
wolffd@0
|
29 legend naive myfun stober
|
wolffd@0
|
30 axis([0 N -1 2 ])
|
wolffd@0
|
31 % profile viewer;
|
wolffd@0
|
32
|
wolffd@0
|
33 %%
|
wolffd@0
|
34 % ---
|
wolffd@0
|
35 % Comparison of implementations on magnatagatune dataset
|
wolffd@0
|
36 % ---
|
wolffd@0
|
37
|
wolffd@0
|
38 % Stober Graph
|
wolffd@0
|
39 Gstob = ClipSimGraphStober();
|
wolffd@0
|
40
|
wolffd@0
|
41 % Cast into matlab Graph
|
wolffd@0
|
42 GstobG = Gstob.to_DiGraph;
|
wolffd@0
|
43
|
wolffd@0
|
44 % My Multigraph reimplementation
|
wolffd@0
|
45 Gm = ClipSimGraphMulti(comparison, comparison_ids);
|
wolffd@0
|
46
|
wolffd@0
|
47 GstobG == Gm % TRUE - the converted Graph exactly resembles my extracted one
|
wolffd@0
|
48
|
wolffd@0
|
49 Gm.isAcyclic % FALSE
|
wolffd@0
|
50 GstobG.isAcyclic % FALSE
|
wolffd@0
|
51
|
wolffd@0
|
52 Gstob.isAcyclic % TRUE (this is wrong, there are a lot of length-2-cycles)
|
wolffd@0
|
53
|
wolffd@0
|
54 % ---
|
wolffd@0
|
55 % Ok, now remove length 2 cycles
|
wolffd@0
|
56 % ---
|
wolffd@0
|
57 Gm.remove_cycles_length2 % matlab cycle remover
|
wolffd@0
|
58 Gstob.remove_cycles_length2 % stober cycle remover
|
wolffd@0
|
59
|
wolffd@0
|
60 GstobGnocycles = Gstob.to_DiGraph();
|
wolffd@0
|
61
|
wolffd@0
|
62 GstobGnocycles == Gm % TRUE - we remove the same edges
|
wolffd@0
|
63
|
wolffd@0
|
64 % ---
|
wolffd@0
|
65 % NOTE: There are no cycles left
|
wolffd@0
|
66 % after removing length 2 cycles
|
wolffd@0
|
67 % ---
|
wolffd@0
|
68 GstobGnocycles.isAcyclic % TRUE
|
wolffd@0
|
69
|
wolffd@0
|
70 Gstob.isAcyclic % FALSE inconsistent wrong result(compare with above)
|
wolffd@0
|
71
|
wolffd@0
|
72
|
wolffd@0
|
73 %% Finds the actual defective cycle
|
wolffd@0
|
74
|
wolffd@0
|
75 Gstob = ClipSimGraphStober();
|
wolffd@0
|
76 Gstob.remove_cycles_length2
|
wolffd@0
|
77
|
wolffd@0
|
78 GstobG = Gstob.to_DiGraph();
|
wolffd@0
|
79 Gstob.isAcyclic
|
wolffd@0
|
80
|
wolffd@0
|
81 N = GstobG.node('227:45936');
|
wolffd@0
|
82
|
wolffd@0
|
83 [Gs] = GstobG.connected_components(N);
|
wolffd@0
|
84 Gs.visualise
|
wolffd@0
|
85
|
wolffd@0
|
86 % ---
|
wolffd@0
|
87 % Search same node in my Multigraph reimplementation
|
wolffd@0
|
88 % ---
|
wolffd@0
|
89 Gm = ClipSimGraphMulti(comparison, comparison_ids);
|
wolffd@0
|
90 Gm.remove_cycles_length2
|
wolffd@0
|
91 Nm = Gm.node(227,45936);
|
wolffd@0
|
92
|
wolffd@0
|
93 [Gsm] = Gm.connected_components(Nm);
|
wolffd@0
|
94 Gsm.visualise |