파이썬 그래프 예제 속시원내과 | 2019년 8월 3일

메서드 add_edge(name_u, name_v, weight_uv=None)는 그래프에 새 가장자리를 추가하여 끝점을 이름으로 식별합니다. 그런 다음 최적의 모서리 가중치를 모서리에 부착합니다. 내부적으로 무방향 그래프는 모든 가장자리(u,v)가 두 개의 호(u,v) 및 (v,u)를 생성하는 방향 그래프로 표시됩니다. 유사한 방법 add_arc는 단일 호만 추가할 수 있습니다. Matplotlib는 파이썬 프로그래밍 언어에 대한 플로팅 라이브러리입니다. 그것은 코드의 몇 줄에서 품질 차트를 만들 수 있습니다. 다른 파이썬 플로팅 라이브러리의 대부분은 Matplotlib 위에 빌드됩니다. 그것은 기본적인 이해이 우리의 클래스를 사용하여 그래프를 구축 할 수있는 방법입니다. 전제 조건 – 그래프 내장 된 라이브러리를 사용하여 그래프를 그리는 다. – 파이썬의 그래프 플로팅 또 다른 변형은 더 많은 데이터 추상화를 추가하는 것입니다 : 그 방법은 다양한 알고리즘을 구현하는 그래프를 나타내는 클래스를 만들 수 있습니다. 이것은 구조화 된 프로그래밍에 대한 욕구를 호소하지만 반대로 코드를 더 효율적으로 만들지는 않습니다. 노드 또는 호에 다양한 레이블을 추가하고 해당 레이블을 고려하는 알고리즘을 쉽게 추가할 수 있습니다(예: 맵에서 두 도시 간의 최단 경로를 찾기).

이 것 역시 다른 열의 주제가 됩니다. 이 표현의 장점은 사전 대신 목록을 사용하고 액세스 시간을 얻을 수 있다는 것입니다. 사전에 대한 액세스가 최악의 경우 선형 시간에 있더라도(거의 발생하지 않는 경우) 실제 액세스 시간은 일정합니다. 그러나이 상수는 파이썬 목록의 요소에 대한 액세스보다 큽니까. 정점 레이블은 정점 식별자를 레이블에 연결하여 별도의 테이블에 저장해야 합니다. 다음 Python 데이터 구조로 나타낼 수 있습니다. 이 사전은 키가 그래프의 노드인 사전입니다. 각 키에 대해 해당 값은 이 노드에서 직접 호로 연결된 노드를 포함하는 목록입니다. 이 그래프 표현은 매우 우아한 코드로 이어집니다. 그래프의 모든 노드를 반복하는 것은 G의 v에 의해 수행되고 G [v]에서 당신을 위해 단순히 모든 이웃을 통해 반복합니다. 모서리 가중치는 에지(v,u)의 가중치가 되도록 별도의 구조에 저장해야 합니다. 이러한 구조는 단순히 사전의 사전이 될 것입니다.

다시 말하지만, 에지 가중치는 사전과 동일한 구문을 가진 별도의 데이터 구조에 저장되며, 이러한 가중치[u][v]는 에지(u,v)의 가중치입니다. 이번에는 Python에서 2차원 배열을 나타내므로 가장자리 가중치를 목록 목록으로 나타낼 수 있습니다. 그래프가 희소한 경우 사전 목록을 사용하여 가장자리 가중치를 저장할 수도 있습니다. 기존 그래프에 모서리를 추가하려면 새 정점을 튜플로 처리하고 가장자리가 이미 있는 경우 유효성을 검사해야 합니다. 그렇지 않으면 가장자리가 추가됩니다. 일부 라이브러리는 클래스를 사용하여 그래프를 나타냅니다. 예를 들어 매우 완전한 파이썬 라이브러리 NetworkX는 방향 그래프(DiGraph) 및 무방향 그래프(그래프)에 대한 클래스를 제공합니다. 각 클래스에는 노드(add_node) 및 모서리(각각 호)(add_edge)를 추가하는 메서드와 정점(이웃)의 모든 인접을 반복하는 메서드가 있으며, 인장 또는 발신 호(이전 호) 끝점을 반복하는 방향 그래프가 있습니다. 후속)을 참조하십시오. 매트플롯리브의 사용법. 그것은 당신의 제목을 사용자 지정하는 방법을 보여주는 예를 제공합니다, 차트의 색상, 그것을 추가하는 방법 등.