@@ -36,8 +36,8 @@ public MRFTree(Tree arvore, Dataset tfiber) { // arvore provem do MST do Weighte
3636 // adicionamos o primeiro no a fila
3737 q .add (e [0 ]);
3838
39- // adicionamos as arestas segundo a direcao definida pelo no fixado
4039
40+ // adicionamos as arestas segundo a direcao definida pelo no fixado
4141 boolean [] visited = new boolean [n ];
4242
4343 // usamos uma condicao para fazer um passo especial a primeira vez que encontra um filho ou pai deste no que foi fixado
@@ -67,6 +67,47 @@ public MRFTree(Tree arvore, Dataset tfiber) { // arvore provem do MST do Weighte
6767 }
6868 visited [o ] = true ;
6969 }
70+
71+
72+ // para melhorar
73+ // este algoritmo nao e mais eficiente pois implica o uso do remove num arraylist que nao sabe que o numero e limitado...
74+ // seria mais eficiente se a remocao fosse O(log(n))
75+
76+
77+ /*
78+ // adicionamos as arestas segundo a direcao definida pelo no fixado
79+ ArrayList<Integer> notvisited = new ArrayList<Integer>();
80+
81+ for (int i = 0; i < n; i++) notvisited.add(i);
82+
83+ // usamos uma condicao para fazer um passo especial a primeira vez que encontra um filho ou pai deste no que foi fixado
84+ boolean especial = true;
85+ while (!q.isEmpty()) {
86+ int o = q.remove();
87+ // TODO podemos aumentar a eficiencia ao nao ver os nos que ja foram vistos
88+ for (int i : notvisited) { // para cada no da arvore
89+ if (arvore.EdgeQ(i, o)) { // se o no i e filho do no o
90+ if (especial) {
91+ // fixa-se a aresta especial como a aresta que liga o no definido anteriormente ao no de menor ordem (que esteja ligado)
92+ e[1] = i;
93+ especial = false;
94+ }
95+
96+ // adiciona-se esta aresta a lista de arestas
97+ E.add(new int[] {o, i});
98+
99+ // e adiciona-se este no a queue
100+ q.add(i);
101+
102+ // calcula-se o phi para esta aresta
103+ // e guarda-se os resultados deste calculo numa matriz
104+ // com os diferentes valores de phi(xi,xj) nesta aresta da arvore
105+ markovtree.Add(o, i, phi(o,i));
106+ }
107+ }
108+ notvisited.remove(Integer.valueOf(o));
109+ }
110+ */
70111 }
71112
72113
0 commit comments