Влад Павлов

21.04.2025

Программная реализация графа в виде матрицы смежности

Граф представлен в виде матрицы смежности ниже. Можете пожалуйста привести пример как в программе отобразить данный граф для дальнейшей работы с ним, буду признателен, спасибо.

Операционная система: Другое
Статус: вопрос решён

screenshot1

Вячеслав

клиент

21.04.2025

Влад Павлов, под вашу задачу может в качестве примера подойти эта реализация:
class GraphMatrix
{
// Матрица смежности
private readonly bool[,] adjacencyMatrix;

// Количество вершин
private readonly int vertexCount;

// Конструктор для задания размера матрицы
public GraphMatrix(int size)
{
this.vertexCount = size;
this.adjacencyMatrix = new bool[size, size];
}

// Заполнение матрицы смежности
public void SetEdge(int fromVertex, int toVertex, bool hasEdge)
{
adjacencyMatrix[fromVertex, toVertex] = hasEdge;
}

// Печать матрицы смежности
public void PrintAdjacencyMatrix()
{
for (int i = 0; i < vertexCount; i++)
{
for (int j = 0; j < vertexCount; j++)
Console.Write(adjacencyMatrix[i, j] ? "1 " : "0 ");
Console.WriteLine();
}
}
}

class Program
{
static void Main()
{
// Создаем граф с пятью вершинами
GraphMatrix graph = new GraphMatrix(5);

// Задание значений матрицы смежности
graph.SetEdge(0, 1, true); // 0->1
graph.SetEdge(0, 3, true); // 0->3
graph.SetEdge(0, 4, true); // 0->4
graph.SetEdge(1, 0, true); // 1->0
graph.SetEdge(1, 2, true); // 1->2
graph.SetEdge(2, 0, true); // 2->0
graph.SetEdge(2, 1, true); // 2->1
graph.SetEdge(2, 4, true); // 2->4
graph.SetEdge(3, 0, true); // 3->0
graph.SetEdge(3, 4, true); // 3->4

// Вывод матрицы смежности
graph.PrintAdjacencyMatrix();
}
}

Влад Павлов

клиент

21.04.2025

Вячеслав, скажите, а если необходимо реализовать динамическое расширение или уменьшение матрицы, как это можно сделать?

Вячеслав

клиент

21.04.2025

Влад Павлов, если я правильно понял вопрос, то для этой задачи необходимо использование списков и динамических структур данных. В реальных приложениях, где граф постоянно изменяется, эффективнее применять списки соседних вершин.

Чтобы комментировать, необходимо авторизоваться или зарегистрироваться.

Все советы и рекомендации, размещённые на форуме, носят исключительно информационный характер и не являются официальной инструкцией.
Перед применением любых советов убедитесь в их актуальности и безопасности для вашей конкретной ситуации. Правила форума.

Нужна удалённая помощь?