Я использую QuickGraph для создания направленного ациклического графа. Мне нужно найти все вершины, степень вхождения которых равна нулю. Я не вижу такой поддержки в коллекции Vertices
графа или способа фильтрации с помощью LINQ.
Вот пример структуры данных, которую я составляю:
var componentGraph = new AdjacencyGraph<Component, Edge<Component>>();
var serverOnMachineA = new TalismaServerComponent("CLTDEPAPI10");
var serverOnMachineB = new TalismaServerComponent("CLTDEPAPI11");
var appServerOnMachineB = new TalismaAppServerComponent("CLTDEPAPI11");
var webComponentsOnMachineC = new TalismaWebComponentsComponent("CLTDEPFE1");
componentGraph.AddVertex(serverOnMachineA);
componentGraph.AddVertex(serverOnMachineB);
componentGraph.AddVertex(appServerOnMachineB);
componentGraph.AddVertex(webComponentsOnMachineC);
componentGraph.AddEdge(new Edge<Component>(appServerOnMachineB, serverOnMachineA));
componentGraph.AddEdge(new Edge<Component>(webComponentsOnMachineC, appServerOnMachineB));
componentGraph.AddEdge(new Edge<Component>(webComponentsOnMachineC, serverOnMachineB));
Мне просто нужен список вершин в этом графе, у которых нет "внутренних" ребер (inстепень = 0).
Vertex
что-то вроде свойстваIncomingEdges
или хотя бы что-то вроде свойстваAdjacentEdges
? Тогда, конечно, вы можете фильтровать, используяcomponentGraph.Vertices.Where(v => !v.IncomingEdges.Any()
или аналогичный. Однако я считаю, что вам нужна реализация определенного алгоритма, чтобы сделать его более производительным... - person chiccodoro   schedule 01.09.2014OutEdges
, но нетInEdges
. Это первое, что я искал. - person Mark Richman   schedule 01.09.2014