카테고리 없음
[바킹독의 실전 알고리즘] 0x18 그래프
Unagi_zoso
2022. 8. 1. 23:27
정의
그래프 = 정점과 간선으로 이루어진 자료구조
간선 = Edge, 정점(Vertex/Node), 차수 (degree) = 3
차수는 각 정점에 대해서 간선으로 연견될 이웃한 정점의 갯수
원소사이의 관계를 나타낼 때 잘 쓰이는 자료구조
그래프의 간선에는 방향성 존재
방향이 없다면 무방향 그래프, 있따면 방향 그래프
나가면 outdegree 진출차수
들어오면 indegree 진입차수
사이클, 임의의 한 점에서 출발해 자기 자신으로 돌아올 수 있는
경로를 사이클이라 한다. 하나라도 있으면 순환 그래프
없으면 비순환 그래프.
모든 서로 다른 두 정점 쌍이 간선으로 연결된 그래프가 완전 그래프
임의의 두 저점 사이에 경로가 항상 존재하는 그래프는 연결 그래프
단순 그래프 : 두 정점 사이의 간선이 1개 이하이고 루프가 존재하지 않는 그래프
한 저엄에서 출발해 그 정점으로 돌아오는걸 루프라고 한다. 연결되어 있다.
두 정점 사이의 간선은 최대 1개 존재한다. 같은 간선은 한 번만 주어진다.
간선의 두 정점 서로다르다, 등등 엄밀하게 주어진다. 이런 조건 없으면 여러 그래프에서 성립되게 만들어야 해
표현법 - 인접 행렬
표현법 - 인접 리스트
공간을 절약하 ㄹ수 있으며 인접 행렬 못 쓸 때 유용할 수 있어
1에서 갈 수 있는거
인접 행렬 | 인접 리스트 | |
공간 복잡도 | O(V^2) | O(V+E) |
정점 u, v가 연결되어 있는지 확인하는 시간 복잡도 | O(1) | O(min(deq(u), deq(v)) |
정점 v와 견결된 모든 정점을 확인하는 시간 복잡도 | O(V) | O(deq(v)) |
효율적인 상황 | 두 점의 연결여부를 자주 확인할 때 E가 V^2에 가까울 때 |
특정 정점에 연결된 모든 정점을 자주 확인 할 때 E가 V2보다 훨씬 작을 떄 |
BFS = 그래프에서 너비를 우선으로 방문하는 알고리즘