f_
frhyme.code
•python-libs•โฑ ์•ฝ 3๋ถ„ ์†Œ์š”

NetworkX: swap - double edge swap

๐Ÿ“‘ ๋ชฉ์ฐจ (Contents)

1-line summary

  • Before: (u, v) and (x, y)
  • AFter : (u, x) and (v, y)

network - double edge swap

  • network์˜ ์œ ํ˜•, ํŠน์„ฑ๋“ค์„ ํŒ๋‹จํ•˜๋Š” ์ง€ํ‘œ๋“ค์˜ ์œ ํšจํ•จ์„ ๋ณด์ด๊ธฐ ์œ„ํ•ด์„œ๋Š” ๋ณดํ†ต reference network๋ฅผ ์ •์˜ํ•˜๊ณ  ์ฐจ์ด๋ฅผ ๋ณด์ด๋Š” ์‹์œผ๋กœ ์ง„ํ–‰๋˜์ฃ .
  • ์ด ๋•Œ, ๋งŽ์ด ์“ฐ์ด๋Š” reference network๋Š” โ€œdegree distribution์„ ๋™์ผํ•˜๊ฒŒ ์œ ์ง€ํ•˜๊ณ , edge๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ๋ฐ”๊พผ ๋„คํŠธ์›Œํฌโ€์ž…๋‹ˆ๋‹ค. ํ”ํžˆ equivalent random network๋ผ๊ณ  ํ•˜์ฃ .
  • ์ด ๋•Œ, ํ•œ๋ฒˆ ๋ฐ”๊พธ์–ด์ฃผ๋Š” edge swap์ด ๋ฐ”๋กœ networkx.algorithms.swap.double_edge_swap์ด๋ฉฐ, ๊ทธ๋ฆผ์œผ๋กœ ๋ณด๋ฉด ๋‹ค์Œ๊ณผ ๊ฐ™์ฃ .
  • ์ด๋ฅผ ์—ฌ๋Ÿฌ๋ฒˆ ๋ฐ˜๋ณตํ•˜๋ฉด, degree distribution์€ ๋™์ผํ•˜๋”๋ผ๋„ ๋‹ค๋ฅธ ํ˜•ํƒœ์˜ G๊ฐ€ ๋‚˜์˜ค๊ฒŒ ๋ฉ๋‹ˆ๋‹ค.
  • ๋”ฐ๋ผ์„œ, ์ด๋Ÿฐ equivalent network์— ๋Œ€ํ•ด์„œ๋„ ์ฐจ์ด์ ์ด ๋ช…ํ™•ํ•˜๊ฒŒ ๋“œ๋Ÿฌ๋‚˜๋ฉด, ๊ทธ network๋Š” ํ™•์‹คํ•œ ์ฐจ๋ณ„์ ์„ ๊ฐ€์ง€๊ณ  ์žˆ๋‹ค, ๋ผ๊ณ  ํ•  ์ˆ˜ ์žˆ๋Š” ๊ฒƒ์ด์ฃ .
u--v            u  v
       becomes  |  |
x--y            x  y

do it.

  • ์ฝ”๋“œ๋Š” ๊ฐ„๋‹จํ•ฉ๋‹ˆ๋‹ค.
import networkx as nx 

G = nx.Graph()
G.add_edges_from([
    (0, 1), 
    (2, 3)
])
print(f"Before: {G.edges()}")
# nswap: ๋ช‡ ๊ฐœ์˜ edge๋ฅผ ๋ฐ”๊ฟ€ ๊ฒƒ์ธ์ง€, 
# maxtries: 1๋ฒˆ swapํ•  ๋•Œ, ์‹œ๋„๋ฅผ ๋ช‡ ๋ฒˆ์ธ๋‚˜ ํ• ๊ฒƒ์ธ์ง€?
nx.double_edge_swap(G, nswap=1, max_tries=100, seed=0)
print(f"After : {G.edges()}")
Before: [(0, 1), (2, 3)]
After : [(0, 3), (1, 2)]

reference

๐Ÿ’กRELATED ARTICLES ยท ํ•จ๊ป˜ ์ฝ์œผ๋ฉด ์ข‹์€ ์—ฐ๊ด€ ํฌ์ŠคํŠธ

๊ธ€ ์ฃผ์†Œ๊ฐ€ ํด๋ฆฝ๋ณด๋“œ์— ๋ณต์‚ฌ๋˜์—ˆ์Šต๋‹ˆ๋‹ค.