πŸ“Š Как ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π³Ρ€Π°Ρ„Ρ‹ Π² Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простой ΠΈ понятной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NetworkX

Как ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π³Ρ€Π°Ρ„Ρ‹ Π² Python?

Для построСния Π³Ρ€Π°Ρ„ΠΎΠ² Π² Python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ NetworkX. Π’ΠΎΡ‚ ΠΊΠ°ΠΊ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π½Π°Ρ‡Π°Ρ‚ΡŒ:


        # Π¨Π°Π³ 1: УстановитС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ NetworkX
        pip install networkx
    
        # Π¨Π°Π³ 2: Π˜ΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ
        import networkx as nx
    
        # Π¨Π°Π³ 3: Π‘ΠΎΠ·Π΄Π°ΠΉΡ‚Π΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π³Ρ€Π°Ρ„Π°
        G = nx.Graph()
    
        # Π¨Π°Π³ 4: Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹
        G.add_nodes_from([1, 2, 3])
    
        # Π¨Π°Π³ 5: Π”ΠΎΠ±Π°Π²ΡŒΡ‚Π΅ Ρ€Π΅Π±Ρ€Π°
        G.add_edge(1, 2)
        G.add_edge(2, 3)
    
        # Π¨Π°Π³ 6: Π’ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠΉΡ‚Π΅ Π³Ρ€Π°Ρ„
        nx.draw(G, with_labels=True)
    

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ использовали Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ NetworkX для создания ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π° Π³Ρ€Π°Ρ„Π°, добавлСния Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΈ Ρ€Π΅Π±Π΅Ρ€, Π° Ρ‚Π°ΠΊΠΆΠ΅ для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π³Ρ€Π°Ρ„Π°. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΠΌΠ΅Π½ΡΡ‚ΡŒ структуру ΠΈ внСшний Π²ΠΈΠ΄ Π³Ρ€Π°Ρ„Π° Π² зависимости ΠΎΡ‚ Π²Π°ΡˆΠΈΡ… Π½ΡƒΠΆΠ΄.

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

Как ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π³Ρ€Π°Ρ„Ρ‹ Π² Python

Π“Ρ€Π°Ρ„Ρ‹ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π°ΠΆΠ½ΠΎΠΉ структурой Π΄Π°Π½Π½Ρ‹Ρ…, которая позволяСт ΠΏΡ€Π΅Π΄ΡΡ‚Π°Π²ΠΈΡ‚ΡŒ связи ΠΌΠ΅ΠΆΠ΄Ρƒ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Π°ΠΌΠΈ Π² Π²ΠΈΠ΄Π΅ Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΈ Ρ€Π΅Π±Π΅Ρ€. Π’ Python сущСствуСт нСсколько способов создания ΠΈ Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„Π°ΠΌΠΈ. Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрим нСсколько ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² построСния Π³Ρ€Π°Ρ„ΠΎΠ² ΠΈ ΠΏΠΎΠΊΠ°ΠΆΠ΅ΠΌ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°.

1. Бписок смСТности

Один ΠΈΠ· самых простых способов прСдставлСния Π³Ρ€Π°Ρ„Π° Π² Python - использованиС списка смСТности. Бписок смСТности прСдставляСт Π³Ρ€Π°Ρ„ Π² Π²ΠΈΠ΄Π΅ словаря, Π³Π΄Π΅ ΠΊΠ»ΡŽΡ‡Π°ΠΌΠΈ ΡΠ²Π»ΡΡŽΡ‚ΡΡ Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ Π³Ρ€Π°Ρ„Π°, Π° значСниями - списки смСТных Π²Π΅Ρ€ΡˆΠΈΠ½.

graph = {
    'A': ['B', 'C'],
    'B': ['A', 'C', 'D'],
    'C': ['A', 'B', 'D'],
    'D': ['B', 'C']
}

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создали Π³Ρ€Π°Ρ„ с Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ A, B, C ΠΈ D, ΠΈ ΡƒΠΊΠ°Π·Π°Π»ΠΈ ΠΈΡ… смСТныС Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹.

2. ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° смСТности

Π”Ρ€ΡƒΠ³ΠΎΠΉ способ прСдставлСния Π³Ρ€Π°Ρ„Π° - это использованиС ΠΌΠ°Ρ‚Ρ€ΠΈΡ†Ρ‹ смСТности. ΠœΠ°Ρ‚Ρ€ΠΈΡ†Π° смСТности прСдставляСт Π³Ρ€Π°Ρ„ Π² Π²ΠΈΠ΄Π΅ Π΄Π²ΡƒΠΌΠ΅Ρ€Π½ΠΎΠ³ΠΎ массива, Π³Π΄Π΅ элСмСнт i, j Ρ€Π°Π²Π΅Π½ 1, Ссли ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ i ΠΈ j Π΅ΡΡ‚ΡŒ Ρ€Π΅Π±Ρ€ΠΎ, ΠΈ 0 Π² ΠΏΡ€ΠΎΡ‚ΠΈΠ²Π½ΠΎΠΌ случаС.

graph = [
    [0, 1, 1, 0],
    [1, 0, 1, 1],
    [1, 1, 0, 1],
    [0, 1, 1, 0]
]

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создали Π³Ρ€Π°Ρ„ с Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ A, B, C ΠΈ D, ΠΈ ΡƒΠΊΠ°Π·Π°Π»ΠΈ Π½Π°Π»ΠΈΡ‡ΠΈΠ΅ Ρ€Π΅Π±Π΅Ρ€ ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

3. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° NetworkX

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

import networkx as nx

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ пустого Π³Ρ€Π°Ρ„Π°
graph = nx.Graph()

# Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅Ρ€ΡˆΠΈΠ½
graph.add_node('A')
graph.add_node('B')
graph.add_node('C')
graph.add_node('D')

# Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅Π±Π΅Ρ€
graph.add_edge('A', 'B')
graph.add_edge('A', 'C')
graph.add_edge('B', 'D')
graph.add_edge('C', 'D')

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ использовали Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ NetworkX для создания Π³Ρ€Π°Ρ„Π° с Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ A, B, C ΠΈ D, ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Ρ€Π΅Π±Ρ€Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

4. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° igraph

Π•Ρ‰Π΅ ΠΎΠ΄Π½Π° популярная Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„Π°ΠΌΠΈ Π² Python - это igraph. Она Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт мноТСство Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„Π°ΠΌΠΈ, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ созданиС Π³Ρ€Π°Ρ„ΠΎΠ², Π΄ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΈ Ρ€Π΅Π±Π΅Ρ€, Π° Ρ‚Π°ΠΊΠΆΠ΅ Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΡ‹ для поиска ΠΏΡƒΡ‚Π΅ΠΉ ΠΈ Ρ†ΠΈΠΊΠ»ΠΎΠ² Π² Π³Ρ€Π°Ρ„Π°Ρ….

from igraph import Graph

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„Π°
graph = Graph()

# Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅Ρ€ΡˆΠΈΠ½
graph.add_vertices(4)

# Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅Π±Π΅Ρ€
graph.add_edges([(0, 1), (0, 2), (1, 3), (2, 3)])

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ использовали Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ igraph для создания Π³Ρ€Π°Ρ„Π° с 4 Π²Π΅Ρ€ΡˆΠΈΠ½Π°ΠΌΠΈ ΠΈ Π΄ΠΎΠ±Π°Π²ΠΈΠ»ΠΈ Ρ€Π΅Π±Ρ€Π° ΠΌΠ΅ΠΆΠ΄Ρƒ Π½ΠΈΠΌΠΈ.

Π—Π°ΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅

Π’ этой ΡΡ‚Π°Ρ‚ΡŒΠ΅ ΠΌΡ‹ рассмотрСли нСсколько способов построСния Π³Ρ€Π°Ρ„ΠΎΠ² Π² Python. ΠœΡ‹ ознакомились с использованиСм списков смСТности ΠΈ ΠΌΠ°Ρ‚Ρ€ΠΈΡ† смСТности, Π° Ρ‚Π°ΠΊΠΆΠ΅ прСдставили Π΄Π²Π΅ популярныС Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ - NetworkX ΠΈ igraph - для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„Π°ΠΌΠΈ. ΠšΠ°ΠΆΠ΄Ρ‹ΠΉ ΠΈΠ· этих ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈΠΌΠ΅Π΅Ρ‚ свои прСимущСства ΠΈ ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ Π²Ρ‹Π±Ρ€Π°Π½ Π² зависимости ΠΎΡ‚ ΠΊΠΎΠ½ΠΊΡ€Π΅Ρ‚Π½Ρ‹Ρ… Ρ‚Ρ€Π΅Π±ΠΎΠ²Π°Π½ΠΈΠΉ ΠΈ Π·Π°Π΄Π°Ρ‡ΠΈ.

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΎΠ² Π² Python являСтся Π²Π°ΠΆΠ½Ρ‹ΠΌ Π½Π°Π²Ρ‹ΠΊΠΎΠΌ для Ρ€Π°Π·Ρ€Π°Π±ΠΎΡ‚Ρ‡ΠΈΠΊΠΎΠ², Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‰ΠΈΡ… с Π°Π»Π³ΠΎΡ€ΠΈΡ‚ΠΌΠ°ΠΌΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·ΠΎΠΌ Π΄Π°Π½Π½Ρ‹Ρ…. НадСюсь, эта ΡΡ‚Π°Ρ‚ΡŒΡ ΠΏΠΎΠΌΠΎΠ³Π»Π° Π²Π°ΠΌ ΠΏΠΎΠ½ΡΡ‚ΡŒ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Ρ€Π°Π±ΠΎΡ‚Π°Ρ‚ΡŒ с Π³Ρ€Π°Ρ„Π°ΠΌΠΈ Π² Python.

Π£Π΄Π°Ρ‡ΠΈ Π² ΠΈΠ·ΡƒΡ‡Π΅Π½ΠΈΠΈ программирования!

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

Python Networkx. Π‘Π°Π·ΠΎΠ²Ρ‹Π΅ понятия Π³Ρ€Π°Ρ„Π°, Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹, Ρ€Π΅Π±Ρ€Π°, Π²ΠΈΠ΄Ρ‹ Π³Ρ€Π°Ρ„ΠΎΠ² (простыС, цикличСский, ΠΏΠΎΠ»Π½Ρ‹ΠΉ)

#3. Алгоритм ДСйкстры (Dijkstra’s algorithm) | Алгоритмы Π½Π° Python

ЛСкция "Π“Ρ€Π°Ρ„Ρ‹ ΠΈ Python"

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

Как ΠΏΠΎΠ½ΡΡ‚ΡŒ, Ρ‡Ρ‚ΠΎ Π³ΠΎΠ΄ високосный: Ρ„ΠΎΡ€ΠΌΡƒΠ»Π° Π² ΠŸΠΈΡ‚ΠΎΠ½

🐍 Как ΠΎΡ‚ΠΊΡ€Ρ‹Ρ‚ΡŒ ΠΏΠΈΡ‚ΠΎΠ½ Π½Π° Виндовс 7: ПолноС руководство πŸ–₯️

Как Ρ€Π°Π·Π±ΠΈΡ‚ΡŒ Ρ„Π°ΠΉΠ» Π½Π° нСсколько частСй с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Python: простой Π³ΠΈΠ΄ для Π½Π°Ρ‡ΠΈΠ½Π°ΡŽΡ‰ΠΈΡ…

πŸ“Š Как ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π³Ρ€Π°Ρ„Ρ‹ Π² Python с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ простой ΠΈ понятной Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ NetworkX

πŸ”₯ Как ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Python Ρ‡Π΅Ρ€Π΅Π· ΠΊΠΎΠΌΠ°Π½Π΄Π½ΡƒΡŽ строку Windows Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ [ΠŸΡ€ΠΎΡΡ‚ΠΎΠΉ ΠΈ понятный способ] πŸ”₯

Как построчно ΡΡ‡ΠΈΡ‚Π°Ρ‚ΡŒ Ρ„Π°ΠΉΠ» Π² Python ΠΈ ΡΡ‚Π°Ρ‚ΡŒ настоящим мастСром программирования ⌨️

Как ΠΈΠ·ΠΌΠ΅Π½ΠΈΡ‚ΡŒ Π·Π½Π°Ρ‡Π΅Π½ΠΈΠ΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½ΠΎΠΉ Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Python: простоС руководство с ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π°ΠΌΠΈ