Из списка смежных вершин получить матрицу инцидентности - C#

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Подскажите пожалуйста в следующем вопросе. Мне необходимо получить матрицу инцидентности из списка смежных вершин. Искал долго и упорно, но найти ответ так и не смог. Понятие, что такое матрица инцидентности и список смежных вершин есть, но переход от одного к другому застал меня в ступор.Как это сделать можно? Очень хотелось бы, чтобы была подсказка , как реализовать на C++/C# . Пожалуйста помогите !!!

Решение задачи: «Из списка смежных вершин получить матрицу инцидентности»

textual
Листинг программы
  1. using System;
  2. using System.Collections.Generic;
  3. using System.Linq;
  4.  
  5. namespace ConsoleApplication173
  6. {
  7.     class Program
  8.     {
  9.         static void Main(string[] args)
  10.         {
  11.             var edges = new List<Tuple<int, int>>();
  12.             //список смежности
  13.             edges.Add(new Tuple<int, int>(1, 2));
  14.             edges.Add(new Tuple<int, int>(2, 3));
  15.             edges.Add(new Tuple<int, int>(1, 3));
  16.             edges.Add(new Tuple<int, int>(3, 4));
  17.  
  18.             //матрица инцидентности
  19.             var matrix = GetIncidenceMatrix(edges);
  20.  
  21.             for (int i = 0; i < matrix.GetLength(0); i++)
  22.             {
  23.                 Console.WriteLine();
  24.                 for (int j = 0; j < matrix.GetLength(1); j++)
  25.                     Console.Write(matrix[i, j] + " ");
  26.             }
  27.  
  28.             Console.ReadLine();
  29.         }
  30.  
  31.         private static int[,] GetIncidenceMatrix(List<Tuple<int, int>> edges, bool oriented = false)
  32.         {
  33.             var maxEdgeNumber = edges.Select(t => Math.Max(t.Item1, t.Item2)).Max();
  34.             var result = new int[maxEdgeNumber, edges.Count];
  35.  
  36.             for (int i = 0; i < edges.Count;i++)
  37.             {
  38.                 var edge = edges[i];
  39.                 result[edge.Item1 - 1, i] = oriented ? -1 : 1;
  40.                 result[edge.Item2 - 1, i] = 1;
  41.             }
  42.  
  43.             return result;
  44.         }
  45.     }
  46. }

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


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

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

9   голосов , оценка 3.889 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы