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

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

9   голосов , оценка 3.889 из 5
Похожие ответы