일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- dfs
- Algorithm
- data structure
- dbms
- 알고리즘
- 코딩테스트
- 자료구조
- 크루스칼
- python
- 코테
- 암호학
- 공개키 암호화
- DB
- MVC
- generic class
- JPA
- 클라우드 컴퓨팅
- 가상컴퓨팅
- 생성자
- sql
- jsp
- JDBC
- spring
- Queue
- 자바의정석
- BFS
- javascript
- cloud computing
- Stack
- Java
- Today
- Total
목록2024/08/04 (3)
PLOD
위상정렬위상정렬은 정렬 알고리즘의 일종이다. 이상 정렬은 순서가 정해져 있는 일련의 작업을 차례대로 수행해야 할 때 사용 할 수 있는 알고리즘이다. 즉, 위상정렬은 방향 그래프의 모든 노드를 방향성에 거스르지 않도록 순서대로 나열하는 것이다. 위상 정렬 알고리즘을 사용하기 위해서는 진입 차수(degree) 부터 알아야한다. 진입차수란 특정한 노드로 들어오는 간선의 개수를 의미한다. 진입차수를 이용하여 위상정렬을 하는 방법은 다음과 같다.1. 진입차수가 0인 노드를 queue에 넣는다.2. 큐가 빌 때까지 다음의 과정을 반복한다.Ⅰ. 큐에서 원소를 꺼내 해당 노드에서 출발하는 간선을 그래프에서 제거한다.Ⅱ. 새롭게 진입차숙 0이 된 노드를 queue에 넣는다.위상 정렬의 시간 복잡도는 O(V+E)이다. ..
MST하나의 그래프가 있을 때 모든 노드를 포함하면서 사이클이 존재하지 않는 부분 그래프를 의미한다. 이때 모든 노드가 포함되어 서로 연결되면서 사이클이 존재하지 않는다는 조건은 트리의 성립 조건이기도 하다. 최소 길이의 간선으로 모든 노드들을 연결해야 되는 문제가 나올 때 최소 신장 트리 알고리즘을 사용 할 수 있다.Kruskal Algorithm크루스칼 알고리즘은 대표 적인 최소 신장 트리 알고리즘이다. 크루스칼 알고리즘은 greedy algorithm(탐욕 기법)에 속한다. 먼저 모든 간선에 대하여 정렬을 수행한 뒤에 가장 거리가 짧은 간선부터 집합에 포함시키면 된다. Kruskal 알고리즘은 간선을 정렬하는데 시간이 가장 오래 걸리기 때문에 간선의 개수가 E 일때, O(ElogE)의 시간 복잡도..