public void StartDijkstraMatrix() { try { if (StartNode == null) { MessageBox.Show("Please select start node.", "Error", MessageBoxButton.OK, MessageBoxImage.Error); return; } ClearGraph(); var checkRes = CheckGraphsLinksWithMsg(true); if (checkRes == false) { return; } var mappedList = MainModel.CreateMapedList(Model.NodesSource.Cast <NodeModel>(), Model.LinksSource.Cast <LinkModel>()); var resDijkstra = DijkstraTask4.StartDijkstra(mappedList, StartNode.Key); var resWindow = new Views.DijkstraResultWindow((Dictionary <string, UniversalGraphNodeData>)resDijkstra, StartNode.Key); resWindow.Show(); } catch (Exception e) { MessageBox.Show("Oops.. something goes wrong...\n\n" + e.Message, "Error!", MessageBoxButton.OK, MessageBoxImage.Error); } }
private void FindRadiusAndDim(List <MappedNode> mapped) { var minCost = Int32.MaxValue; var minName = ""; List <UniversalGraphNodeData> minVector = null; var maxCost = 0; var maxName = ""; List <UniversalGraphNodeData> maxVector = null; foreach (var mappedNode in mapped) { _result.AllCosts.Add(mappedNode.Node.Key, new List <KeyValuePair <string, int> >()); } foreach (var mappedNode in mapped) { var djResult = DijkstraTask4.StartDijkstra(mapped, mappedNode.Node.Key); foreach (var universalGraphNodeData in djResult.Values) { if (universalGraphNodeData.Node.Node.Key != mappedNode.Node.Key) { _result.AllCosts[universalGraphNodeData.Node.Node.Key].Add(new KeyValuePair <string, int>(mappedNode.Node.Key, universalGraphNodeData.Cost)); } if (universalGraphNodeData.Node == mappedNode) { continue; } if (universalGraphNodeData.Cost > maxCost) { maxCost = universalGraphNodeData.Cost; maxName = universalGraphNodeData.Node.Node.Key; maxVector = djResult.Values.ToList(); } if (universalGraphNodeData.Cost < minCost & universalGraphNodeData.Cost != -1) { minCost = universalGraphNodeData.Cost; minName = universalGraphNodeData.Node.Node.Key; minVector = djResult.Values.ToList(); } } } if (minVector != null) { _result.RadiusData = new KeyValuePair <int, string>(minCost, UniversalGraphNodeData.GetVector(minVector, minName)); } else { _result.RadiusData = new KeyValuePair <int, string>(-1, "none"); } if (maxVector != null) { _result.DiametrData = new KeyValuePair <int, string>(maxCost, UniversalGraphNodeData.GetVector(maxVector, maxName)); } else { _result.DiametrData = new KeyValuePair <int, string>(-1, "none"); } }