public void CriarFila(FleuryNode nodoA) { //Enqueue final da lista //Dequeue Remover int aux = 0; FleuryNode nodoArvore; nodoA.Nivel = aux; Arvore.Add(new FleuryNode(nodoA.Name)); F.Enqueue(nodoA); while (F.Count > 0) { aux++; FleuryNode nd = F.Dequeue(); nodoArvore = Arvore.First(c => c.Name.Equals(nd.Name)); foreach (var item in nd.Adjacencias) { if (!Arvore.Any(c => c.Name.Equals(item.Name))) { FleuryNode nodoFilho = new FleuryNode(item.Name); nodoFilho.Nivel = aux; nodoArvore.Adjacencias.Add(nodoFilho); Arvore.Add(nodoFilho); F.Enqueue(item); } } } }
public void AddAdjascenciaVertice(string nodeName, string nodeAdjacente) { FleuryNode node = GetNodeFromVertice(nodeName); var adjascencia = GetNodeFromVertice(nodeAdjacente); node.Adjacencias.Add(adjascencia); }
public void Fleury() { FleuryNode vertice; if (nodosImpar.Count > 0) { vertice = G.First(c => c.Name.Equals(nodosImpar.First().Name)); } else { vertice = G.First(); } Caminho.Add(vertice); IList <string> C1 = new List <string>(); while (G.Sum(c => c.Grau) > 0) { var vi = Caminho.Last(); FleuryNode ai = new FleuryNode(); if (vi.Grau == 1) { ai = vi.Adjacencias.First(); } else { foreach (var item in vi.Adjacencias.OrderBy(c => c.Grau)) { var a = Arvore.First(c => c.Name.Equals(item.Name)); var viG = Arvore.First(c => c.Name.Equals(vi.Name)); if (a.Nivel < viG.Nivel) { ai = item; continue; } else { ai = item; break; } } } RemoveAresta(G, vi, ai); RemoveAresta(G, ai, vi); Caminho.Add(ai); } }
public void CriarArvore(FleuryNode nodoA) { FleuryNode nodoPai = new FleuryNode(nodoA.Name); Arvore.Add(nodoPai); foreach (var item in nodoA.Adjacencias) { if (!Arvore.Any(c => c.Name.Equals(item.Name))) { FleuryNode nodoFilho = new FleuryNode(item.Name); nodoPai.Adjacencias.Add(nodoFilho); CriarArvore(item); } } }
public void RemoveAresta(IList <FleuryNode> grafo, FleuryNode vertice, FleuryNode adjacencia) { var verticeGrafo = G.First(c => c.Name.Equals(vertice.Name)); verticeGrafo.Adjacencias.Remove(adjacencia); }