О матрице ребра в графе с использованием c ++

0

Я путаю, как определить программу, которая найдет матрицу ребра в графе. Проблема в том, что если ввести значение матрицы смежности, которое дает информацию о соединении вершин в графе, например: существует 3 вершины, затем V1 подключен к V2, но не с V3, а затем V2, подключенный к V3, он дает:

0 1 0
1 0 1
0 1 0

теперь, с этой информацией, я хочу сделать программу, которая найдет соединение края с краем, например, есть 3 ребра: 1-2 edge, 2-3 edge и его выход:

0 1
1 0

Я знаю, чтобы сделать первый вывод "Adjacency matrix", но второй. Заранее спасибо.

  • 0
    1. «Тогда V1 соединен с V2, но не с V3» - не должен ли первый ряд матрицы быть «0 1 0», а не «0 1 1»?
  • 0
    2. Вы имеете в виду, что ребра связаны, если они имеют общую вершину? Это может помочь, если вы сделаете другой пример, где количество вершин не равно числу ребер.
Показать ещё 1 комментарий
Теги:
graph
graph-theory

1 ответ

0

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

0 1 1
1 0 1
1 1 0

Это означает, что ваш график завершен. Если вы прочтете это с указанием чисел на своей матрице:

X 1 2 3
1 0 1 1
2 1 0 1
3 1 1 0

Ты это видишь:

V1 подключается к V2 и V3
V2 подключается к V1 и V3
V3 подключается к V1 и V2

Читая строку n, вы видите, к какой вершине Vn подключается, и, читая столбец n, вы можете видеть, какие вершины связаны с Vn.

В вашем примере ваш график не ориентирован, потому что ваша матрица диагональна.

Если ваша цель - найти, каковы края вашего графика, у вас уже есть информация в матрице смежности. Если вы хотите увидеть, какие вершины "двойные", вам нужно найти, если для вершин Vi и Vj M [i] [j], а члены M [j] [i] вашей матрицы имеют значение 1 (It всегда имеет место в неориентированном графе). Возможный алгоритм для этого - всего лишь двойной цикл в вашем представлении матрицы (обычно два вектора/списки/массивы).

Ещё вопросы

Сообщество Overcoder
Наверх
Меню