public DataVertexMinti Search(List <DataVertexMinti> Vertex, int vert) { DataVertexMinti rezult = null; foreach (DataVertexMinti p in Vertex) { if (p.vert.ID == vert) { rezult = p; } } return(rezult); }
public Method_Minti(GraphExample graph, List <int[]> matrix) { baseGraph = graph; var listV = graph.Vertices.ToList(); foreach (DataVertex t in listV) { var p = new DataVertexMinti(t); list_Vert_I.Add(p); } Matrix = matrix; var listE = graph.Edges.ToList(); foreach (DataEdge t in listE) { var p = new DataEdgeMinti(t); list_Edges.Add(p); } }
public GraphExMinti find_the_way() { //int[,] matr_dist = Distanse_Matr(); DataVertexMinti temp = Search(list_Vert_I, 1); list_Vert_I.Remove(Search(list_Vert_I, 1)); list_Vert_J.Add(temp); while (list_Vert_I.Count > 0) { int min_dist = int.MaxValue; DataEdgeMinti EdgeForLabel = null; foreach (DataVertexMinti i in list_Vert_J) { //var tmp = list_Edges.Select(p => p.Source == i.vert && !p.Label); TRASH foreach (DataEdgeMinti j in list_Edges) { if (!j.Label && j.Edges.Source == i.vert && list_Vert_I.Contains(Search(list_Vert_I, Convert.ToInt32(j.Edges.Target.ID)))) { var dist = Convert.ToInt32(j.Edges.Weight) + Search(list_Vert_J, Convert.ToInt32(j.Edges.Source.ID)).dist; if (min_dist > dist) { min_dist = dist; EdgeForLabel = j; } } } } DataVertexMinti vetrexToDel = Search(list_Vert_I, Convert.ToInt32(EdgeForLabel.Edges.Target.ID)); vetrexToDel.dist = min_dist; list_Vert_I.Remove(Search(list_Vert_I, Convert.ToInt32(EdgeForLabel.Edges.Target.ID))); list_Vert_J.Add(vetrexToDel); EdgeForLabel.Label = true; } Graph = new GraphExMinti(list_Edges, list_Vert_J); return(Graph); }