강의
[중급-3]비선형구조의 탐색, 그래프의 구현
Mosu(정종인)
2016. 5. 11. 02:31
반응형
비선형 구조의 탐색:
비선형 구조 : i번째 원소를 탐색한다음 그 원소와 연결된 다른 원소를 탐색하려고 할 때, 다음에 탐색할 수 있는 원소가 여러개 존재하는 구조.
일반적으로 트리나 그래프 형태로 자료를 구성할 수 있을 때에 해당
비선형 구조는 단순한 반복으로 탐색할 수 없어서 스택이나 큐같은 자료구조를 통해 탐색방법과 순서를 만들어 탐색한다.
비선형 구조의 대표적인 예 : 트리, 그래프
어떤 임의의 정점에서 다른 정점까지 이동한다고 가정할때, 사용한 간선들의 순서로 만들어지는 집합을 경로라고 하며, 그 경로에 순환이 생기는 경우를 회로라고 한다.
자기자신을 연결 : 자기간선
동일한 정점과 연결 : 다중간선
모든 간선의 수 : 차수
그래프의 구현 :
그래프 형태로 표현되는 문제 상황 또는 데이터 구조
인접 행렬 :
각 정점들의 연결관계를 표현하기 위해 배열구조를 사용하는 인접행렬이나 리스트 구조를 사용하는 인접리스트로 구현할 수 있다.
이차원 배열을 이용해 그래프를 인접행렬 형태로 저장하는 코드의 예
1 2 3 4 5 6 7 8 9 10 11 12 | #include <stdio.h> int n, m, G[101][101]; int main(){ int a, b, w, i; scanf("%d %d", &n, &m); for(i=0; i<m; ++i){ scanf("%d %d %d", &a, &b, &w); G[a][b]=G[b][a]=w; } } | cs |
인접 리스트 :
std::vector구조 활용
장점 : 인접행렬보다 탐색시간을 줄일 수 있다.
반응형