πŸ“ˆ Как ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π³Ρ€Π°Ρ„ python: простой руководство ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°

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

Для построСния Π³Ρ€Π°Ρ„Π° Π² Python Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΠΎΠ²Π°Ρ‚ΡŒ Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΡƒ NetworkX. Π’ΠΎΡ‚ нСбольшой ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΏΠΎΠΊΠ°Π·Ρ‹Π²Π°ΡŽΡ‰ΠΈΠΉ, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ простой Π½Π΅ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ Π³Ρ€Π°Ρ„:


import networkx as nx

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

# Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅Ρ€ΡˆΠΈΠ½
G.add_node(1)
G.add_node(2)
G.add_node(3)

# Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅Π±Π΅Ρ€
G.add_edge(1, 2)
G.add_edge(2, 3)

# Визуализация Π³Ρ€Π°Ρ„Π°
nx.draw(G, with_labels=True)

Π’ этом ΠΏΡ€ΠΈΠΌΠ΅Ρ€Π΅ ΠΌΡ‹ создаСм ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ Π³Ρ€Π°Ρ„Π°, добавляСм Π²Π΅Ρ€ΡˆΠΈΠ½Ρ‹ ΠΈ Ρ€Π΅Π±Ρ€Π°, Π° Π·Π°Ρ‚Π΅ΠΌ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΡƒΠ΅ΠΌ Π³Ρ€Π°Ρ„ с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ `draw`. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ большС Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΈ Ρ€Π΅Π±Π΅Ρ€, ΡƒΠΊΠ°Π·Π°Π² ΠΈΡ… Π² Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ `add_node` ΠΈ `add_edge` соотвСтствСнно.

NetworkX Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт мноТСство Π΄Ρ€ΡƒΠ³ΠΈΡ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„Π°ΠΌΠΈ. Π’Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΈΠ·ΡƒΡ‡ΠΈΡ‚ΡŒ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΡŽ для получСния Π±ΠΎΠ»Π΅Π΅ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠΉ ΠΈΠ½Ρ„ΠΎΡ€ΠΌΠ°Ρ†ΠΈΠΈ ΠΎ возмоТностях этой Π±ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠΈ.

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

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

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„ΠΎΠ² являСтся Π²Π°ΠΆΠ½ΠΎΠΉ Π·Π°Π΄Π°Ρ‡Π΅ΠΉ Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ ΠΈ Π½Π°ΡƒΠΊΠ΅ ΠΎ Π΄Π°Π½Π½Ρ‹Ρ…. Π’ Python сущСствуСт нСсколько способов создания ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π³Ρ€Π°Ρ„ΠΎΠ². Π”Π°Π²Π°ΠΉΡ‚Π΅ рассмотрим нСсколько ΠΈΠ· Π½ΠΈΡ….

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

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° NetworkX - ΠΌΠΎΡ‰Π½Ρ‹ΠΉ инструмСнт для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„Π°ΠΌΠΈ Π² Python. Она прСдоставляСт ΡˆΠΈΡ€ΠΎΠΊΠΈΠΉ Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΈ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ для создания, ΠΎΡ€Π³Π°Π½ΠΈΠ·Π°Ρ†ΠΈΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π³Ρ€Π°Ρ„ΠΎΠ².

import networkx as nx

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

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

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

# Визуализация Π³Ρ€Π°Ρ„Π°
nx.draw(G, with_labels=True)

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

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° igraph Ρ‚Π°ΠΊΠΆΠ΅ прСдоставляСт Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΎΠ½Π°Π»ΡŒΠ½ΠΎΡΡ‚ΡŒ для Ρ€Π°Π±ΠΎΡ‚Ρ‹ с Π³Ρ€Π°Ρ„Π°ΠΌΠΈ. Она ΠΈΠΌΠ΅Π΅Ρ‚ Π±ΠΎΠ³Π°Ρ‚Ρ‹ΠΉ Π½Π°Π±ΠΎΡ€ ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² для создания, ΠΌΠΎΠ΄ΠΈΡ„ΠΈΠΊΠ°Ρ†ΠΈΠΈ ΠΈ Π°Π½Π°Π»ΠΈΠ·Π° Π³Ρ€Π°Ρ„ΠΎΠ².

from igraph import Graph, plot

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

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

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

# Визуализация Π³Ρ€Π°Ρ„Π°
plot(G, bbox=(300, 300))

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

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° matplotlib ΠΌΠΎΠΆΠ΅Ρ‚ Π±Ρ‹Ρ‚ΡŒ использована для Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π³Ρ€Π°Ρ„Π° Π² Π²ΠΈΠ΄Π΅ Π΄ΠΈΠ°Π³Ρ€Π°ΠΌΠΌΡ‹. Π‘ ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Π½Π΅ΡΠΊΠΎΠ»ΡŒΠΊΠΈΡ… ΠΌΠ΅Ρ‚ΠΎΠ΄ΠΎΠ² ΠΌΠΎΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ΅Π½ΠΈΠ΅ Π²Π΅Ρ€ΡˆΠΈΠ½ ΠΈ Ρ€Π΅Π±Π΅Ρ€ Π³Ρ€Π°Ρ„Π°.

import matplotlib.pyplot as plt
import networkx as nx

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

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

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

# Визуализация Π³Ρ€Π°Ρ„Π°
nx.draw(G, with_labels=True)
plt.show()

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

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pygraphviz прСдоставляСт Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎΡΡ‚ΡŒ создания ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·Π°Ρ†ΠΈΠΈ Π³Ρ€Π°Ρ„ΠΎΠ² с ΠΏΠΎΠΌΠΎΡ‰ΡŒΡŽ Graphviz - инструмСнта для рисования графичСских структур.

import pygraphviz as pgv

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π³Ρ€Π°Ρ„Π°
G = pgv.AGraph()

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

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

# Визуализация Π³Ρ€Π°Ρ„Π°
G.layout(prog="dot")
G.draw("graph.png")  # сохранСниС Π³Ρ€Π°Ρ„Π° Π² Ρ„Π°ΠΉΠ»

5. Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pydot

Π‘ΠΈΠ±Π»ΠΈΠΎΡ‚Π΅ΠΊΠ° pydot Ρ‚Π°ΠΊΠΆΠ΅ позволяСт ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ ΠΈ Π²ΠΈΠ·ΡƒΠ°Π»ΠΈΠ·ΠΈΡ€ΠΎΠ²Π°Ρ‚ΡŒ Π³Ρ€Π°Ρ„Ρ‹ с использованиСм Graphviz.

import pydot

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

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Π²Π΅Ρ€ΡˆΠΈΠ½
node_a = pydot.Node("A")
node_b = pydot.Node("B")
node_c = pydot.Node("C")

# Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Π²Π΅Ρ€ΡˆΠΈΠ½ Π² Π³Ρ€Π°Ρ„
graph.add_node(node_a)
graph.add_node(node_b)
graph.add_node(node_c)

# Π‘ΠΎΠ·Π΄Π°Π½ΠΈΠ΅ Ρ€Π΅Π±Π΅Ρ€
edge_ab = pydot.Edge("A", "B")
edge_bc = pydot.Edge("B", "C")

# Π”ΠΎΠ±Π°Π²Π»Π΅Π½ΠΈΠ΅ Ρ€Π΅Π±Π΅Ρ€ Π² Π³Ρ€Π°Ρ„
graph.add_edge(edge_ab)
graph.add_edge(edge_bc)

# Визуализация Π³Ρ€Π°Ρ„Π°
graph.write_png("graph.png")

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

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

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

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

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

ΠŸΠΎΡΡ‚Ρ€ΠΎΠ΅Π½ΠΈΠ΅ ΠΎΡ€ΠΈΠ΅Π½Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠ³ΠΎ Π³Ρ€Π°Ρ„Π° ΠΏΠΎ ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ ΠšΠΎΠ»Π»Π°Ρ‚Ρ†Π° ΠΈΡΠΏΠΎΠ»ΡŒΠ·ΡƒΡ pyvis Π½Π° python // 7

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

πŸ”ΠšΠ°ΠΊ Π½Π°ΠΉΡ‚ΠΈ n-ΡƒΡŽ Ρ†ΠΈΡ„Ρ€Ρƒ числа Π² ΠŸΠΈΡ‚ΠΎΠ½Π΅?

Как Π·Π°ΠΏΡƒΡΡ‚ΠΈΡ‚ΡŒ ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΡƒ Π² ΠΏΠΈΡ‚ΠΎΠ½Π΅ пошагово: ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Ρ‹ΠΉ Π³ΠΈΠ΄ с понятными инструкциями ΠΈ смайликами πŸ”₯

πŸ”§ Как ΡƒΡΡ‚Π°Π½ΠΎΠ²ΠΈΡ‚ΡŒ Π±ΠΎΠ»Π΅Π΅ ΡΡ‚Π°Ρ€ΡƒΡŽ Π²Π΅Ρ€ΡΠΈΡŽ ΠΏΠΈΡ‚ΠΎΠ½ Π½Π° ΠΊΠΎΠΌΠΏΡŒΡŽΡ‚Π΅Ρ€ πŸ–₯️

πŸ“ˆ Как ΠΏΠΎΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ Π³Ρ€Π°Ρ„ python: простой руководство ΠΈ ΠΏΡ€ΠΈΠΌΠ΅Ρ€Ρ‹ ΠΊΠΎΠ΄Π°

🐍 Как Π΄ΠΎΠ±Π°Π²ΠΈΡ‚ΡŒ ΠŸΠΈΡ‚ΠΎΠ½ Π² Π’ΠΈΠ·ΡƒΠ°Π» Π‘Ρ‚ΡƒΠ΄ΠΈΠΎ: ΠŸΠΎΠ΄Ρ€ΠΎΠ±Π½ΠΎΠ΅ руководство

Π§Ρ‚ΠΎ ΠΎΠ·Π½Π°Ρ‡Π°Π΅Ρ‚ main Π² Python? Π“Π»Π°Π²Π½Ρ‹Π΅ ΠΏΡ€ΠΈΠ½Ρ†ΠΈΠΏΡ‹ ΠΈ использованиС основного main Π² ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠΈΡ€ΠΎΠ²Π°Π½ΠΈΠΈ Π½Π° Python

πŸ”₯Как Π±Π΅Π· ΠΏΡ€ΠΎΠ±Π»Π΅ΠΌ ΡƒΠ΄Π°Π»ΠΈΡ‚ΡŒ Π½Π΅Π½ΡƒΠΆΠ½Ρ‹Π΅ ΠΏΡ€ΠΎΠ±Π΅Π»Ρ‹ Π² Python?🧹