/// <summary> /// Получить словарь всех смежных вершин. /// </summary> /// <param name="vertex">Объект на вершину.</param> /// <returns>Возвращает словарь всех смежных вершин.</returns> public Dictionary <GraphVertex, int> GetVertexAllRelations(GraphVertex vertex) { var result = new Dictionary <GraphVertex, int>(); foreach (var edge in edges) { if (edge.From.Equals(vertex)) { result.Add(edge.To, edge.Weight); } } return(result); }
/// <summary> /// Получить список смежных вершин. /// </summary> /// <param name="vertex">Объект на вершину.</param> /// <returns>Возвращает список смежных вершин.</returns> public List <GraphVertex> GetVertexRelations(GraphVertex vertex) { var result = new List <GraphVertex>(); foreach (var edge in edges) { if (edge.From.Equals(vertex)) { result.Add(edge.To); } } return(result); }
/// <summary> /// Проверяет на существование связи. /// </summary> /// <param name="start">Объект на начальную вергину.</param> /// <param name="finish">Объект на конечную вершину.</param> /// <returns>Возвращает true, если существует иначе, false.</returns> public bool IsWave(GraphVertex start, GraphVertex finish) { var vertices = new List <GraphVertex> { start }; for (int index = 0; index < vertices.Count; index++) { var vertex = vertices[index]; foreach (var current in GetVertexRelations(vertex)) { if (!vertices.Contains(current)) { vertices.Add(current); } } } return(vertices.Contains(finish)); }
/// <summary> /// Добавить ребро. /// </summary> /// <param name="from">Объект вершины из.</param> /// <param name="to">Объект вершины в.</param> /// <param name="weight">Вес.</param> public void AddEdge(GraphVertex from, GraphVertex to, int weight = 1) { var edge = new GraphEdge(from, to, weight); edges.Add(edge); }
/// <summary> /// Добавить вершину. /// </summary> /// <param name="vertex">Вершина.</param> public void AddVertex(GraphVertex vertex) { vertices.Add(vertex); }