123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108 |
- namespace DrawGraph
- {
- public class Matrix
- {
- public static int[,] AdjacencyCreate(Vertex[] vertices, Edge[] edges)
- {
- int length = vertices.Length;
- int[,] matrix = new int[length, length];
- for (int i = 0; i < vertices.Length; i++)
- {
- var vertex1 = vertices[i];
- for (int j = 0; j < vertices.Length; j++)
- {
- if (i != j)
- {
- var vertex2 = vertices[j];
- for (int k = 0; k < edges.Length; k++)
- {
- var edge = edges[k];
- if (edge.IsFocused)
- {
- if (Vertex.Compare(edge.FinishVertex, vertex1) &&
- Vertex.Compare(edge.StartVertex, vertex2))
- if (edge.Weight > 0)
- matrix[i, j] = (int) edge.Weight;
- else
- matrix[i, j] = 1;
- else if (Vertex.Compare(edge.StartVertex, vertex1) &&
- Vertex.Compare(edge.FinishVertex, vertex2))
- if (edge.Weight > 0)
- matrix[i, j] = (int) edge.Weight;
- }
- else
- {
- if (Vertex.Compare(edge.FinishVertex, vertex1) &&
- Vertex.Compare(edge.StartVertex, vertex2))
- if (edge.Weight > 0)
- {
- matrix[i, j] = (int) edge.Weight;
- InvertElement(matrix, i, j);
- }
- else
- {
- matrix[i, j] = 1;
- InvertElement(matrix, i, j);
- }
- else if (Vertex.Compare(edge.StartVertex, vertex1) &&
- Vertex.Compare(edge.FinishVertex, vertex2))
- if (edge.Weight > 0)
- {
- matrix[i, j] = (int) edge.Weight;
- InvertElement(matrix, i, j);
- }
- else
- {
- matrix[i, j] = 1;
- InvertElement(matrix, i, j);
- }
- }
- }
- }
- else
- {
- matrix[i, j] = 0;
- }
- }
- }
- return matrix;
- }
- public static int[,] InvertElement(int[,] matrix, int indexX, int indexY)
- {
- matrix[indexY, indexX] = matrix[indexX, indexY];
- return matrix;
- }
- public static int[,] IncidenceCreate(Vertex[] vertices, Edge[] edges)
- {
- var rows = vertices.Length;
- var cols = edges.Length;
- var matrix = new int[rows, cols];
- for (var i = 0; i < rows; i++)
- {
- var vertex = vertices[i];
- for (var j = 0; j < cols; j++)
- {
- var edge = edges[j];
- if (Vertex.Compare(vertex, edge.FinishVertex) && edge.IsFocused)
- matrix[i, j] = -1;
- else
- {
- if (Vertex.Compare(vertex, edge.FinishVertex) || Vertex.Compare(vertex, edge.StartVertex))
- if (edge.Weight > 0)
- matrix[i, j] = (int)edge.Weight;
- else
- matrix[i, j] = 1;
- else
- matrix[i, j] = 0;
- }
- }
- }
- return matrix;
- }
- }
- }
|