Из списка смежных вершин получить матрицу инцидентности - C#
Формулировка задачи:
Здравствуйте. Подскажите пожалуйста в следующем вопросе.
Мне необходимо получить матрицу инцидентности из списка смежных вершин. Искал долго и упорно, но найти ответ так и не смог. Понятие, что такое матрица инцидентности и список смежных вершин есть, но переход от одного к другому застал меня в ступор.Как это сделать можно? Очень хотелось бы, чтобы была подсказка , как реализовать на C++/C# .
Пожалуйста помогите !!!
Решение задачи: «Из списка смежных вершин получить матрицу инцидентности»
textual
Листинг программы
using System; using System.Collections.Generic; using System.Linq; namespace ConsoleApplication173 { class Program { static void Main(string[] args) { var edges = new List<Tuple<int, int>>(); //список смежности edges.Add(new Tuple<int, int>(1, 2)); edges.Add(new Tuple<int, int>(2, 3)); edges.Add(new Tuple<int, int>(1, 3)); edges.Add(new Tuple<int, int>(3, 4)); //матрица инцидентности var matrix = GetIncidenceMatrix(edges); for (int i = 0; i < matrix.GetLength(0); i++) { Console.WriteLine(); for (int j = 0; j < matrix.GetLength(1); j++) Console.Write(matrix[i, j] + " "); } Console.ReadLine(); } private static int[,] GetIncidenceMatrix(List<Tuple<int, int>> edges, bool oriented = false) { var maxEdgeNumber = edges.Select(t => Math.Max(t.Item1, t.Item2)).Max(); var result = new int[maxEdgeNumber, edges.Count]; for (int i = 0; i < edges.Count;i++) { var edge = edges[i]; result[edge.Item1 - 1, i] = oriented ? -1 : 1; result[edge.Item2 - 1, i] = 1; } return result; } } }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д