Jumping Bytes and Hopping Bits
the church of tech
Menu

python networkx 예제 August 2, 2019

이러한 복잡한 네트워크를 만들고 조작하고 통과하는 방법에 대한 자세한 내용은 NetworkX 설명서를 확인하는 데 주저하지 마십시오. 문서는 예제의 좋은 숫자와 자습서의 시리즈와 함께 포괄적이다. 가중치, 레이블, 색상 또는 원하는 Python 개체와 같은 특성을 그래프, 노드 또는 가장자리에 첨부할 수 있습니다. 다음은 21 (7 선택 2) 가장자리가있는 7 노드 전체 그래프의 위키 백과에서 기본 예입니다 : 기존 노드 또는 가장자리를 추가 할 때 불만이 없습니다. 예를 들어 모든 노드와 가장자리를 제거한 후 Python의 None 개체는 선택적 함수 인수가 여러 함수에 할당되었는지 여부를 결정하기 때문에 노드로 사용해서는 안 됩니다. 이것은 실제 계산을 포함하는 첫 번째 단계입니다. 다행히 networkx는 두 노드 사이의 최단 경로를 계산하는 Dijkstra의 알고리즘을 편리하게 구현합니다. 이 함수는 odd_node_쌍에서 위에서 계산한 모든 쌍(모든 630)에 적용됩니다. 다음은 노드 목록의 마지막 행의 예입니다: itertools 조합 함수를 사용하여 홀수 정도 노드의 가능한 모든 쌍을 계산합니다. 그래프는 방향이 정해지지 않았기 때문에 순서에 신경 쓰지 않습니다: 예를 들어 (a,b) == (b,a). 이 수의 쌍이 아래 의 조합으로 올바른지 확인해 보겠습니다. 다행히도 걱정할 것은 630쌍뿐입니다. 이 CPP 예제를 해결하는 계산 시간은 사소한 것입니다(몇 초).

노드 목록은 일반적으로 에지 목록의 처음 두 열에 노드 이름이 제공되므로 에지 목록이 제공될 때 networkx 및 기타 그래프 라이브러리에서 선택 사항입니다. 그러나 이 경우 추가하려는 몇 가지 노드 특성이 있습니다: X, 노드의 Y 좌표(트레일 교차점)를 사용하여 트레일 맵과 동일한 레이아웃으로 그래프를 플롯할 수 있습니다. Networkx는 최대 1,000만 개의 행과 약 1억 개의 가장자리가 있는 그래프에서 작동할 수 있지만 지금은 작은 예제 그래프만 만들 것입니다. 이 자습서에서는 중국 우체부 문제라는 그래프 이론에서 확립된 문제를 해결할 수 있습니다. 알고리즘의 일부 구성 요소는 개념적으로 간단하지만 계산적으로 엄격한 것으로 판명됩니다. 그러나이 자습서에서는 엄격한 수학, 컴퓨터 과학 또는 그래프 이론 배경이 필요하지 않습니다. 아직 존재하지 않는 노드로 에지를 만들려고 하면 networkx가 해당 노드를 만듭니다. 즉, 다음 코드로 간단한 networkx 예제를 만들 수 있습니다. NetworkX는 주로 그래프 드로잉 패키지가 아니라 Matplotlib을 사용한 기본 드로잉과 오픈 소스 Graphviz 소프트웨어 패키지를 사용하는 인터페이스가 포함되어 있습니다. 이러한 모듈은 networkx.drawing 모듈의 일부이며 가능하면 가져올 것입니다.

NetworkX 라이브러리에 대해 자세히 알아보려면 파이썬에서 DataCamp의 네트워크 분석(1부) 과정을 수강하십시오. (다음은 개인 노트입니다 : 파이썬에서 그래프 최적화를 학습하기 위해 치즈, 건방진 100 % 필요하지 않습니다) NetworkX는 그래프를 조작하고 분석하는 데 가장 인기있는 파이썬 패키지입니다. 여러 패키지는 동일한 기본 수준의 그래프 조작을 제공하며, 특히 Igraph에는 R 및 C++에 대한 바인딩이 있습니다. 그러나 NetworkX에는 CPP를 해결하는 데 필요한 가장 강력한 그래프 알고리즘이 있다는 것을 알게되었습니다. 나는 graphviz와 도트 그래프 설명 언어를 사용하여 파이썬 패키지 postman_problem에서 솔루션을 시각화했습니다. NetworkX 그래프 구조를 도트 그래프로 변환하는 데는 약간의 노력이 걸렸지만 시각화에 대한 향상된 품질 과 제어의 잠금을 해제합니다. 이제 에지 목록과 노드 목록을 사용하여 networkx에서 그래프 개체를 만듭니다. 이제 우리는 앞으로 이동하고 networkx를 사용하여 그래프를 만드는 방법을 볼 수 있습니다. 일례로, n1 및 n2는 RCSB 단백질 데이터 뱅크의 단백질 개체일 수 있으며, x는 그들의 상호작용에 대한 실험적 관찰을 상세히 설명하는 간행물의 XML 기록을 참조할 수 있다.

Categories: Uncategorized