파이썬 그래프 예제

사용자가 find_graph()를 세 개의 인수로 호출하는 동안 네 번째 인수인 이미 트래버스된 경로로 자신을 호출합니다. 이 인수의 기본값은 빈 목록인 `[]`로, 아직 트래버스된 노드가 없음을 의미합니다. 이 인수는 사이클을 피하기 위해 사용됩니다 (`for` 루프 내부의 첫 번째 `if`). `path` 인수가 수정되지 않습니다: 할당 “path = path + [시작]”은 새 목록을 만듭니다. 대신 “path.append(시작)”를 작성했다면 호출자의 변수 `path`를 수정하여 비참한 결과를 초래했을 것입니다. (튜플을 사용하면 “(시작)”이 단일 튜플이 아니기 때문에 “path = path + (시작)”를 작성해야하는 비용으로 이런 일이 발생하지 않을 것이라고 확신 할 수 있었습니다. Matplotlib는 파이썬 프로그래밍 언어에 대한 플로팅 라이브러리입니다. 그것은 코드의 몇 줄에서 품질 차트를 만들 수 있습니다. 다른 파이썬 플로팅 라이브러리의 대부분은 Matplotlib 위에 빌드됩니다. 그것은 기본적인 이해를 만든다 그러나 많은 응용 프로그램에서 우리는 문자열이나 튜플에 의해 정점의 이름을 지정하고자하는, 오히려 식별자보다. 예제는 다음 섹션에 제공됩니다.

이를 위해 정점 이름과 정점 식별자 간의 매핑을 유지할 수 있는 클래스 그래프를 사용할 것을 제안합니다. 파이썬 사전 데이터 형식을 사용하여 그래프를 쉽게 표시 할 수 있습니다. 정점을 사전의 키로 나타내고 정점 간의 연결은 가장자리라고도 하는 정점을 사전의 값으로 나타냅니다. 두 노드 사이의 경로를 결정하는 간단한 함수를 작성해 보겠습니다. 그래프와 시작 및 끝 노드를 인수로 합니다. 경로를 포함하는 노드(시작 및 종료 노드 포함)의 목록을 반환합니다. 경로를 찾을 수 없는 경우 없음을 반환합니다. 반환된 경로에서 동일한 노드가 두 번 이상 발생하지 않습니다(즉, 주기를 포함하지 않음). 알고리즘은 역추적이라는 중요한 기술을 사용합니다.

그래프 정점을 표시하려면 그래프 사전의 키를 간단하게 찾습니다. 우리는 키 () 방법을 사용합니다. 메서드 add_edge(name_u, name_v, weight_uv=None)는 그래프에 새 가장자리를 추가하여 끝점을 이름으로 식별합니다. 그런 다음 최적의 모서리 가중치를 모서리에 부착합니다. 내부적으로 무방향 그래프는 모든 가장자리(u,v)가 두 개의 호(u,v) 및 (v,u)를 생성하는 방향 그래프로 표시됩니다. 유사한 방법 add_arc는 단일 호만 추가할 수 있습니다. 전제 조건 – 그래프 내장 된 라이브러리를 사용하여 그래프를 그릴 – 파이썬에서 그래프 플로팅 그러나 tryalgo 라이브러리에서 우리는 정수 식별자와 함께 작동하도록 선택합니다. 그 이유 중 하나는 효율성이며 다른 하나는 결과 코드가 C ++로 쉽게 번역 될 수 있기 때문입니다.

따라서 n 노드가 있는 그래프의 정점에는 0에서 n-1로 번호가 매겨집니다. 이러한 번호 매기기를 사용하면 위의 그래프에 다음 식별자가 있을 수 있습니다. 위의 예의 그래픽 표현: defaultdict: 일반적으로 파이썬 사전은 현재 사전에 없는 키가 있는 항목을 얻으려고 하면 KeyError를 throw합니다. defaultdict는 사전에 키가 없는 경우 KeyError가 throw되는 대신 새 항목이 만들어집니다. 이 새 항목의 형식은 defaultdict의 인수에 의해 제공됩니다. 그래프를 생성하는 Python 함수: 다시 말하지만, 가장자리 가중치는 사전과 동일한 구문으로 별도의 데이터 구조에 저장되며, 이러한 가중치[u][v]는 가장자리의 가중치입니다(u,v). 이번에는 Python에서 2차원 배열을 나타내므로 가장자리 가중치를 목록 목록으로 나타낼 수 있습니다.

This entry was posted in Uncategorized. Bookmark the permalink.