728x90
Rookiss님의 [c#과 유니티로 만드는 mmorpg 게임 개발 시리즈] part2 : 자료구조와 알고리즘 강의 내용을 정리했습니다.
Rookiss님의 [c++과 유니티로 만드는 mmorpg 게임 개발 시리즈] part3 : 자료구조와 알고리즘 강의 내용을 정리했습니다.
개념
- [현실 세계의 사물이나 추상적인 개념] 간의 [연결 관계]를 표현한다.
- 정점(데이터, 사물 개념)과 간선(정점을 연결)로 이루어진다.
종류
- 일반 그래프
- 방향 그래프
- 가중치 그래프
구현방법
- 노드 정의
: 정점이 간선 정보를 포함하는 형태.
struct Vertex
{
vector<Vertex*> edges;
}
vector<Vertex> v;
v.resize(6);
v[0].edges.push_back(&v[1]);
v[0].edges.push_back(&v[3]);
v[1].edges.push_back(&v[0]);
v[1].edges.push_back(&v[2]);
v[1].edges.push_back(&v[3]);
v[3].edges.push_back(&v[4]);
v[5].edges.push_back(&v[4]);
- 리스트
: 메모리는 절약. 접근 속도 느림. 정점수가 많고 간선이 적은 경우 유리.
List<int>[] nodes = new List<int>[]
{
new List<int>() { 1, 3},
new List<int>() { 0, 2, 3},
new List<int>() { 1 },
new List<int>() { 0, 1},
new List<int>() { 5 },
new List<int>() { 4 },
};
- 행렬 사용
: 메모리는 많이 사용하게 됨. 접근 속도 빠름. 정점수가 적고 간선이 많은 경우 유리.
int[,] nodes = new int[6, 6]
{
{0, 1, 0, 1, 0, 0 },
{1, 0, 1, 1, 0, 0 },
{0, 1, 0, 0, 0, 0 },
{1, 1, 0, 0, 0, 0 },
{0, 0, 0, 0, 0, 1 },
{0, 0, 0, 0, 1, 0 },
};
728x90
'DataStructure > Concepts' 카테고리의 다른 글
선형자료구조,배열,동적배열,연결리스트(양방향),스택,큐 (0) | 2021.08.18 |
---|---|
자료구조 종류 (0) | 2021.08.15 |
우선순위큐,PriorityQueue (0) | 2021.08.11 |
이진트리(BinaryTree), 힙트리(BinaryheapTree) (0) | 2021.08.11 |
트리(tree) (0) | 2021.08.11 |