-
[중급-3]비선형구조의 탐색, 그래프의 구현강의 2016. 5. 11. 02:31반응형
비선형 구조의 탐색:
비선형 구조 : i번째 원소를 탐색한다음 그 원소와 연결된 다른 원소를 탐색하려고 할 때, 다음에 탐색할 수 있는 원소가 여러개 존재하는 구조.
일반적으로 트리나 그래프 형태로 자료를 구성할 수 있을 때에 해당
비선형 구조는 단순한 반복으로 탐색할 수 없어서 스택이나 큐같은 자료구조를 통해 탐색방법과 순서를 만들어 탐색한다.
비선형 구조의 대표적인 예 : 트리, 그래프
어떤 임의의 정점에서 다른 정점까지 이동한다고 가정할때, 사용한 간선들의 순서로 만들어지는 집합을 경로라고 하며, 그 경로에 순환이 생기는 경우를 회로라고 한다.
자기자신을 연결 : 자기간선
동일한 정점과 연결 : 다중간선
모든 간선의 수 : 차수
그래프의 구현 :
그래프 형태로 표현되는 문제 상황 또는 데이터 구조
인접 행렬 :
각 정점들의 연결관계를 표현하기 위해 배열구조를 사용하는 인접행렬이나 리스트 구조를 사용하는 인접리스트로 구현할 수 있다.
이차원 배열을 이용해 그래프를 인접행렬 형태로 저장하는 코드의 예
123456789101112#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구조 활용
장점 : 인접행렬보다 탐색시간을 줄일 수 있다.
반응형'강의' 카테고리의 다른 글
[고급-3] 재귀함수의 활용 (0) 2016.11.27 [고급-2] 재귀함수의 설계 (0) 2016.11.27 [중급-2] Lower bound, Upper bound (0) 2016.05.08 [고급-1] 관계기반 알고리즘 설계 (0) 2016.03.29 [중급-1] 정보과학과 문제, 선형구조의 탐색 (0) 2016.03.29