πŸ”Ž Как пСрСвСсти ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ смСТности Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ инцидСнтности Π½Π° Python

Как пСрСвСсти ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ смСТности Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ инцидСнтности Π² Python?

Для Ρ‚ΠΎΠ³ΠΎ Ρ‡Ρ‚ΠΎΠ±Ρ‹ пСрСвСсти ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ смСТности Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ инцидСнтности Π² Python, ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰ΠΈΠΉ ΠΊΠΎΠ΄:

# ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»Π°Π³Π°Π΅ΠΌ, Ρ‡Ρ‚ΠΎ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° смСТности ΡƒΠΆΠ΅ ΠΎΠΏΡ€Π΅Π΄Π΅Π»Π΅Π½Π°
matrix = [[0, 1, 0], [1, 0, 1], [0, 1, 0]]

# ΠžΠΏΡ€Π΅Π΄Π΅Π»ΡΠ΅ΠΌ количСство Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΈ Ρ€Π΅Π±Π΅Ρ€
num_vertices = len(matrix)
num_edges = sum(sum(row) for row in matrix) // 2

# Π˜Π½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ инцидСнтности
inc_matrix = [[0] * num_edges for _ in range(num_vertices)]

# ЗаполняСм ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ инцидСнтности
edge_counter = 0
for i in range(num_vertices):
    for j in range(i+1, num_vertices):
        if matrix[i][j] == 1:
            inc_matrix[i][edge_counter] = 1
            inc_matrix[j][edge_counter] = 1
            edge_counter += 1
  
# Π’Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ инцидСнтности
for row in inc_matrix:
    print(row)

Как Π²Ρ‹ Π²ΠΈΠ΄ΠΈΡ‚Π΅, ΠΌΡ‹ сначала опрСдСляСм количСство Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΈ Ρ€Π΅Π±Π΅Ρ€ Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ смСТности. Π—Π°Ρ‚Π΅ΠΌ ΠΈΠ½ΠΈΡ†ΠΈΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ инцидСнтности, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΈΠΌΠ΅Ρ‚ΡŒ Ρ€Π°Π·ΠΌΠ΅Ρ€Π½ΠΎΡΡ‚ΡŒ "количСство Π²Π΅Ρ€ΡˆΠΈΠ½ x количСство Ρ€Π΅Π±Π΅Ρ€". Π—Π°Ρ‚Π΅ΠΌ ΠΌΡ‹ ΠΏΠ΅Ρ€Π΅Π±ΠΈΡ€Π°Π΅ΠΌ ΠΏΠ°Ρ€Ρ‹ Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΈ провСряСм, Π΅ΡΡ‚ΡŒ Π»ΠΈ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ Ρ€Π΅Π±Ρ€ΠΎ. Если Π΄Π°, ΠΌΡ‹ ΠΏΠΎΠΌΠ΅Ρ‡Π°Π΅ΠΌ ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΠ΅ элСмСнты Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ инцидСнтности. Π’ ΠΊΠΎΠ½Ρ†Π΅ Π²Ρ‹Π²ΠΎΠ΄ΠΈΠΌ ΠΏΠΎΠ»ΡƒΡ‡Π΅Π½Π½ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ инцидСнтности.

Π”Π΅Ρ‚Π°Π»ΡŒΠ½Ρ‹ΠΉ ΠΎΡ‚Π²Π΅Ρ‚

Как пСрСвСсти ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ смСТности Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ инцидСнтности Π² Python

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° смСТности ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° инцидСнтности - это Π΄Π²Π° Π²Π°ΠΆΠ½Ρ‹Ρ… прСдставлСния Π³Ρ€Π°Ρ„ΠΎΠ², ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΌΠΎΠΆΠ½ΠΎ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ для Π°Π½Π°Π»ΠΈΠ·Π° связСй ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ. Если Ρƒ вас Π΅ΡΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° смСТности Π³Ρ€Π°Ρ„Π° ΠΈ Π²Ρ‹ Ρ…ΠΎΡ‚ΠΈΡ‚Π΅ пСрСвСсти Π΅Π΅ Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ инцидСнтности, Π²Π°ΠΌ потрСбуСтся Π½Π΅ΠΌΠ½ΠΎΠ³ΠΎ программирования Π½Π° Python. Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим, ΠΊΠ°ΠΊ это ΠΌΠΎΠΆΠ½ΠΎ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ.

ΠŸΡ€Π΅Π΄ΠΏΠΎΠ»ΠΎΠΆΠΈΠΌ, Ρƒ нас Π΅ΡΡ‚ΡŒ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π°Ρ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° смСТности:

adjacency_matrix = [
    [0, 1, 0, 0],
    [1, 0, 1, 1],
    [0, 1, 0, 0],
    [0, 1, 0, 0]
]

Наша Ρ†Π΅Π»ΡŒ - ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ инцидСнтности, которая Π±ΡƒΠ΄Π΅Ρ‚ ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡ‚ΡŒ всС Ρ€Π΅Π±Ρ€Π° Π³Ρ€Π°Ρ„Π°. ΠœΡ‹ ΠΌΠΎΠΆΠ΅ΠΌ Π½Π°Ρ‡Π°Ρ‚ΡŒ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΏΡƒΡΡ‚ΡƒΡŽ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ инцидСнтности с Π½ΡƒΠ»Π΅Π²Ρ‹ΠΌΠΈ значСниями:

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_index = 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_index] = 1
            incidence_matrix[j][edge_index] = 1
            edge_index += 1

ΠœΡ‹ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠ΅ΠΌ Π΄Π²Π° Ρ†ΠΈΠΊΠ»Π° для ΠΏΠ΅Ρ€Π΅Π±ΠΎΡ€Π° ΠΊΠ°ΠΆΠ΄ΠΎΠΉ ΠΏΠ°Ρ€Ρ‹ Π²Π΅Ρ€ΡˆΠΈΠ½. Если Π΅ΡΡ‚ΡŒ Ρ€Π΅Π±Ρ€ΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ, ΠΌΡ‹ устанавливаСм значСния Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π΅ инцидСнтности Π² Π΅Π΄ΠΈΠ½ΠΈΡ†Ρƒ для ΡΠΎΠΎΡ‚Π²Π΅Ρ‚ΡΡ‚Π²ΡƒΡŽΡ‰ΠΈΡ… Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΈ Ρ€Π΅Π±Ρ€Π°.

ПослС выполнСния этого ΠΊΠΎΠ΄Π°, Ρƒ нас Π±ΡƒΠ΄Π΅Ρ‚ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π° инцидСнтности, ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²Π»ΡΡŽΡ‰Π°Ρ Π³Ρ€Π°Ρ„, исходя ΠΈΠ· ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ смСТности. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Ρ€Π°ΡΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ это, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡƒΠ±Π΅Π΄ΠΈΡ‚ΡŒΡΡ:

for row in incidence_matrix:
    print(row)

Π’ΠΎΡ‚ ΠΏΠΎΠ»Π½Ρ‹ΠΉ ΠΊΠΎΠ΄:

adjacency_matrix = [
    [0, 1, 0, 0],
    [1, 0, 1, 1],
    [0, 1, 0, 0],
    [0, 1, 0, 0]
]

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_index = 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_index] = 1
            incidence_matrix[j][edge_index] = 1
            edge_index += 1

for row in incidence_matrix:
    print(row)

Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ пСрСвСсти ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ смСТности Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ инцидСнтности с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python. Π­Ρ‚ΠΎ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ способ прСдставлСния Π³Ρ€Π°Ρ„ΠΎΠ² ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использован Π² Ρ€Π°Π·Π»ΠΈΡ‡Π½Ρ‹Ρ… Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°Ρ… ΠΈ Π·Π°Π΄Π°Ρ‡Π°Ρ… Π°Π½Π°Π»ΠΈΠ·Π° сСтСй.

Π’ΠΈΠ΄Π΅ΠΎ ΠΏΠΎ Ρ‚Π΅ΠΌΠ΅

Как ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ смСТности?

Как Π½Π°ΠΉΡ‚ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ инцидСнтности

ΠœΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ Π½Π° ΠΏΠ°Π»ΡŒΡ†Π°Ρ…. ΠžΡΠ½ΠΎΠ²Π½Ρ‹Π΅ ΠΎΠΏΠ΅Ρ€Π°Ρ†ΠΈΠΈ с ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Π°ΠΌΠΈ Π² Python [ΠœΠ°Ρ‚Π΅ΠΌΠ°Ρ‚ΠΈΠΊΠ° для машинного обучСния]

ΠŸΠΎΡ…ΠΎΠΆΠΈΠ΅ ΡΡ‚Π°Ρ‚ΡŒΠΈ:

Как ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ ΠΎΠΊΠΎΠ½Π½Ρ‹Π΅ прилоТСния Π½Π° Python: ΠΏΠΎΠ»Π΅Π·Π½Ρ‹Π΅ совСты ΠΈ инструкции

Пайплайн Python: всС, Ρ‡Ρ‚ΠΎ Π²Ρ‹ Ρ…ΠΎΡ‚Π΅Π»ΠΈ Π·Π½Π°Ρ‚ΡŒ

Как ΡƒΠ·Π½Π°Ρ‚ΡŒ, ΠΊΠ°ΠΊΠΈΠ΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ установлСны Π² Python 🐍

πŸ”Ž Как пСрСвСсти ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ смСТности Π² ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρƒ инцидСнтности Π½Π° Python

Как Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅ ΠΏΠ΅Ρ‡Π°Ρ‚Π°Ρ‚ΡŒ Π² ΠΎΠ΄Π½Ρƒ строку: Π»ΡƒΡ‡ΡˆΠΈΠ΅ способы ΠΈ совСты

πŸ”₯ Как ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ json Ρ„Π°ΠΉΠ» python: ПолноС руководство для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ… πŸ”₯

🎡 Как Π½Π°ΠΏΠΈΡΠ°Ρ‚ΡŒ ΠΌΡƒΠ·Ρ‹ΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ ΠΏΠ»Π΅Π΅Ρ€ Π½Π° ΠΏΠΈΡ‚ΠΎΠ½Π΅? Π¨Π°Π³ Π·Π° шагом руководство