Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- ORM
- 백엔드공부
- 백엔드스쿨
- 데이터베이스 연동
- 엔티티 설계
- DAO 연동 컨트롤러 서비스 설계
- JPA
- 제로베이스 #백엔드 #Java #Spring #개발자 #백엔드공부 #백엔드 스쿨
- Swagger
- 유효성검사
- 스프링 부트 핵심 가이드
- 스프링부트실전가이드
- Java
- 제로베이스
- #devops #terraform #state
- MariaDB
- auditing
- 프로젝트 생성
- 개발자
- DAO 설계
- 인텔리제이
- spring
- 리포지토리 인터페이스
- 백엔드
- validated
Archives
- Today
- Total
JeongJin's Blog
그래프의 개념과 자바로 구현해보기 본문
1. 그래프란?
- 정점과 간선으로 이루어진 자료구조(Cyclic)
- 연결된 정잠간의 관계를 표현할 수 있는 자료구조
- 용도
- 지하철 노선도, 통신 네트워크 등
- 정점(Vertex) : 각 노드
- 간선(Edge) : 노드와 노드를 연결하는 선 (link, branch)
- 인접 정점(Adjacent vertex) : 간선 하나를 두고 바로 연결된 정점
- 정점의 차수(Degree)
- 무방향 그래프에서 하나의 정점에 인접한 정점의 수
- 무방향 그래프 모든 정점 차수의 합 = 그래프 간선의 수 2배 - 진입 차수(In-degree) : 방향 그래프에서 외부에서 오는 간선의 수
- 진출 차수(Out-degree) : 방향 그래프에서 외부로 나가는 간선의 수
- 경로 길이 (Path length) : 경로를 구성하는데 사용된 간선의 수
- 단순 경로 (Simple path) : 경로 중에서 반복되는 정점이 없는 경우
- 사이클 (Cycle) : 단순 경로의 시작 정점과 끝 정점이 동일한 경우
2. 그래프의 종류
- 무방향 그래프
- 간선에 방향이 없는 그래프 (양방향 이동 가능)
- 정점 A - B 간선의 표현 : (A,B) = (B,A)
- 방향 그래프
- 간선에 방향이 있는 그래프 (해당 방향으로만 이동 가능)
- 정점 A → B 간선의 표현 : <A,B> ≠ <B,A>
- 가중치 그래프
- 간선에 값이 있는 그래프 (이동 비용)
- 완전 그래프
- 모든 정점이 서로 연결되어 있는 그래프
- 정점이 N개일 경우, 간선의 수는 n(n-1)/2 개
3. 그래프 탐색
- DFS (Depth First Search)
- 깊이 우선 탐색이라고 하며 각 노드에 방문했는지 여부를 체크할 때 배열과 스택 이용하여 구현
- BFS (Breath First Search)
- 너비 우선 탐색이라고 하며 각 노드에 방문했는지 여부를 체크할 배열과 큐 이용하여 구현
4. 그래프의 구현
- 인접 행렬 (Adjacency Matrix)
- 2차원 배열 이용
- 인접 행렬의 장단점
- 간선 정보의 확인과 업데이트가 빠름 O(1)
- 인접 행렬을 위한 메모리 공간 차지
'1일1공부 > 비선형자료구조' 카테고리의 다른 글
Red-Black 트리 개념 보기 (0) | 2023.09.22 |
---|---|
균형 이진 탐색 트리 개념과 자바로 구현해보기 (0) | 2023.09.22 |
이진 탐색 트리 개념과 자바로 구현해보기 (0) | 2023.09.20 |
트리의 개념과 자바로 구현해보기 (0) | 2023.09.15 |