Из списка смежных вершин получить матрицу инцидентности - 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;
- }
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д