private void BellmanFordStart(object sender, RoutedEventArgs e) { var dialog = new Dijkstra(true); dialog.ShowDialog(); int startNode = dialog.StartNode - 1; string message = ""; for (int i = 0; i < Graph.NodesNr; ++i) { if (i == startNode) { continue; } List <int> path = Directed.BellmanFord(Graph, startNode, i); message += string.Format("Node {0} : ", i + 1); if (path != null) { path.ForEach(n => message += (n + 1) + " "); } else { message += "brak sciezki"; } message += Environment.NewLine; } MessageBox.Show(message); }
private void Floyd(object sender, RoutedEventArgs e) { var john = Directed.FloydWarshall(Graph); var message = ""; for (int y = 0; y < Graph.NodesNr; ++y) { for (int x = 0; x < Graph.NodesNr; ++x) { if (john[y, x] < 20000000) { message += john[y, x]; if (john[y, x] < 10) { message += " "; } if (john[y, x] < 100) { message += " "; } message += " "; } else { message += " - "; } } message += Environment.NewLine; } MessageBox.Show(message); }
private void BellmanFord(object sender, RoutedEventArgs e) { var dialog = new Dijkstra(); dialog.ShowDialog(); int startNode = dialog.StartNode - 1; int endNode = dialog.EndNode - 1; List <int> path = Directed.BellmanFord(Graph, startNode, endNode); string message = "Znaleziona sciezka : " + Environment.NewLine; if (path != null) { path.ForEach(n => message += (n + 1) + " "); } else { message = "Nie znaleziono sciezki"; } MessageBox.Show(message); }
public Fighter(string id, ICollection<IEnumerable<ChipCell>> chips, Directed tail) { Id = id; Body = new LinkedList<Directed>(); Chips = chips; Tail = tail; }
public void CutTail() { if (Body.Count == 0) { Tail = Head; } else { Tail = Body.Last.Value; Body.RemoveLast(); } }
private void TopologicSorting(object sender, RoutedEventArgs e) { var sorted = Directed.TopologicSorting(Graph); string message = ""; foreach (var node in sorted) { message += (node + 1) + Environment.NewLine; } MessageBox.Show(message); }
private void ShowSilne(object sender, RoutedEventArgs e) { var cycles = Directed.spojne(Graph); var message = "Znalazłem takie silne spojne skladowe : "; foreach (var cycle in cycles) { message += Environment.NewLine; foreach (var node in cycle) { message += (node + 1) + " "; } } MessageBox.Show(message); }
public void Grow(Direction direction, int length = 1) { for (var i = 0; i < length; i++) { if (Body.First == null && Tail == null) continue; if (Body.First == null && Head == null) { Head = Directed.ToDirection(Tail, direction); continue; } if (Head != null) { Body.AddFirst(Head); } Head = Directed.ToDirection(Body.First.Value, direction); } }
private void BFDistance(object sender, RoutedEventArgs e) { var message = ""; for (int y = 0; y < Graph.NodesNr; ++y) { for (int x = 0; x < Graph.NodesNr; ++x) { var distList = Directed.BellmanFord(Graph, x, y); if (distList == null) { message += " - "; continue; } var dist = 0; for (int i = 1; i < distList.Count; ++i) { dist += Graph.getWeight(distList[i - 1], distList[i]); } if (dist < 20000000) { message += dist; if (dist < 10) { message += " "; } if (dist < 100) { message += " "; } message += " "; } else { message += " - "; } } message += Environment.NewLine; } MessageBox.Show(message); }
private void Johnson(object sender, RoutedEventArgs e) { var message = ""; try { var john = Directed.Johnson(Graph); for (int y = 0; y < Graph.NodesNr; ++y) { for (int x = 0; x < Graph.NodesNr; ++x) { if (john[y, x] < 20000000) { message += john[y, x]; if (john[y, x] < 10) { message += " "; } if (john[y, x] < 100) { message += " "; } message += " "; } else { message += " - "; } } message += Environment.NewLine; } } catch (Exception) { message = "Wykryto ujemny cykl (Sprawdzony za pomoca zewnetrznej metody)"; } MessageBox.Show(message); }
private void ShowCycles(object sender, RoutedEventArgs e) { var cycles = Directed.circuts(Graph); var message = "Znalazłem takie cykle : "; foreach (var cycle in cycles) { //for (int i = 1; i < cycle.Count; ++i) //{ // if(Graph.GetConnection(cycle[i-1], cycle)) //} message += Environment.NewLine; foreach (var node in cycle) { message += (node + 1) + " "; } } MessageBox.Show(message); }
private void MaxSpojna(object sender, RoutedEventArgs e) { Graph.Set(Directed.Directedmaxspojny(Graph)); Graph.OnChange(); Renderer.Displayer = new DirectedCircleDisplayer(); }
private void UjemneCykle(object sender, RoutedEventArgs e) { var test = Directed.ujemnyCykl(Graph, Graph.weights); MessageBox.Show(test ? "Jest ujemny cykl" : "Nie ma ujemnego cyklu"); }
/// <summary> GetHashCode </summary> public override int GetHashCode() { return(Vertex1.GetHashCode() ^ Vertex2.GetHashCode() ^ Directed.GetHashCode()); }