Я путаю, как определить программу, которая найдет матрицу ребра в графе. Проблема в том, что если ввести значение матрицы смежности, которое дает информацию о соединении вершин в графе, например: существует 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 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 всегда имеет место в неориентированном графе). Возможный алгоритм для этого - всего лишь двойной цикл в вашем представлении матрицы (обычно два вектора/списки/массивы).