이 블로그는 개념의 요점을 파악하고 엉뚱한 생각을 하지 않으려는 개발자를 위한 것입니다. 이번 포스팅에서는 그래프 데이터 구조에 대해 알아보겠습니다. 시작합시다.
그래프는 모서리와 노드라는 두 가지 구성요소로 구성된 비선형 데이터 구조입니다.
노드: -
가장자리는:-
두 가지 방법이 있습니다.
인접 행렬은 그래프 데이터 구조를 나타내는 2차원 행렬입니다. 행과 열은 노드를 나타내고 행렬의 값은 가장자리를 나타냅니다.
위 이미지에서는 4개의 노드가 모서리로 연결되어 있습니다. 노드 A는 모든 노드에 연결되어 있으므로 A(행 또는 열)가 다른 노드의 행 또는 열과 교차하는 셀에는 값이 1로 추가됩니다. 노드 B는 노드 A에만 연결되어 노드 B가 노드 A와 교차하는 셀에서는 값이 1이 되고 다른 셀은 값이 0이 됩니다.
인접 행렬에 대한 간선을 추가하거나 삭제하는 시간 복잡도는 O(1)입니다. 다음과 같은 경우에 사용할 수 있습니다: -
인접 목록은 여러 연결된 목록이나 배열을 사용하여 그래프를 저장합니다. 행은 노드를 나타내고(아래 이미지 확인) 행에 있는 값은 이웃을 나타냅니다.
위 이미지에는 5개의 노드가 있습니다. 노드 A는 노드 B와 노드 D에 연결되어 있으므로 첫 번째 배열에 해당 값이 있습니다. 마찬가지로 노드 B는 노드 A, 노드 C, 노드 D 및 노드 E에 연결되므로 두 번째 어레이는 두 번째 어레이에 해당 노드를 갖습니다.
간선을 검색하거나 삭제하는 데 드는 시간 복잡도는 O(n)이고 간선을 추가하는 데 걸리는 시간 복잡도는 O(1)입니다. 인접 목록은 다음과 같은 경우에 사용할 수 있습니다: -
그래프 데이터 구조의 인기 있는 예 중 하나는 다음과 같습니다. 축구 분야에서 각 선수는 노드로 간주될 수 있으며 이들의 상호 작용은 가장자리를 나타냅니다.
그래프는 다음과 같이 이전 예와 유사한 시나리오에서 사용됩니다. -
위 내용은 여기에서 그래프 데이터 구조의 요지를 알아보세요...의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!