Для перевода матрицы смежности в матрицу инцидентности можно использовать следующий алгоритм:
1. Создать матрицу с размерностью (количество вершин) x (количество рёбер).
2. Для каждой вершины i и каждого ребра j проверить, является ли вершина i началом или концом ребра j в матрице смежности. Если вершина i соединена ребром j, то в соответствующий элемент матрицы инцидентности записать -1 (если вершина i начало ребра) или 1 (если вершина i конец ребра). Если вершина i не соединена с ребром j, то в элемент матрицы инцидентности записать 0.
3. Полученная матрица и будет матрицей инцидентности.
Реализация данного алгоритма на Python:
```python
def adjacency_to_incidence(adjacency_matrix):
num_vertices = len(adjacency_matrix)
num_edges = sum(sum(row) for row in adjacency_matrix) // 2
incidence_matrix = [[0]*num_edges for _ in range(num_vertices)]
edge_idx = 0
for i in range(num_vertices):
for j in range(i+1, num_vertices):
if adjacency_matrix[i][j] == 1:
incidence_matrix[i][edge_idx] = -1
incidence_matrix[j][edge_idx] = 1
edge_idx += 1
return incidence_matrix
adjacency_matrix = [
[0, 1, 1],
[1, 0, 1],
[1, 1, 0]
]
incidence_matrix = adjacency_to_incidence(adjacency_matrix)
for row in incidence_matrix:
print(row)
```
Этот код преобразует матрицу смежности, представленную в виде списка списков (adjacency_matrix), в матрицу инцидентности и выводит её на экран.