일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- MVC
- 코딩
- 자바
- 페이징
- Intellj
- Spring
- Spring Boot
- Kafka
- retry
- DP
- 운영체제
- 클라우드
- Jenkins
- db
- 디자인 패턴
- aws
- MST
- 자료구조
- 백준
- feign
- 오라클
- 알고리즘
- 데이터베이스
- Spring Cloud Feign
- Spring Cloud
- 쿼리
- PL/SQL
- SQL
- JPA
- golang
- Today
- Total
목록IT/알고리즘 (29)
justgo_developer
Greedy Alg.경우의 수가 존재할 경우, 경우를 선택해야할 때 최선이라고 생각하는 경우를 선택하는 알고리즘이다. §해를 구하는 일련의 선택 과정마다 §그 단계에서 ‘가장 최선’이라고 여겨지는 국부적인 최적해를 선택해 나가면 §결과적으로 전체적인 최적해를 구할 수 있을 것이라고 희망적인 전략을 취하는 방법 –희망적 à 각 단계마다 선택한 최적해가 전체 최적해를 만들어 내지 못할 수 있음을 의미 §동작 과정 1.해 선택: 현재 상태에서 부분 문제의 최적해를 구한 뒤, 이를 부분해 집합(solution set)에 추가 2.실행 가능성 검사: 새로운 부분해 집합이 실행 가능한지 확인, 문제의 제약 조건을 위반하지 않는지 검사 3.해 검사: 새로운 부분해 집합이 문제의 해가 되는지 확인; 아직 전체 문제의 ..
크루스칼 알고리즘(Kruskal's Algorithm) - 에지들을 가중치의 오름차순으로 정렬한다.- 에지들을 그 순서대로 하나씩 선택해간다. 단, 이미 선택된 에지들과 사이클을 형성하면 선택하지 않는다.- n-1개의 에지가 선택되면 종료한다.노드가 9개이므로 에지가 8개까지만 하면 된다. 더하면 사이클이 생김.◆ 사이클 검사- 초기 상태 : 선택된 에지 없음- 각각의 연결요소를 하나의 집합으로 표현{a} {b} {c} {d} {e} {f} {g} {h} {i} MST-KRUSKAL(G, w)A
최소 스패닝 트리(Minimum Spanning Tree, MST)란? 최소 스패닝 트리의 정의는 그래프에서 그래프의 모든 정점을 연결하되, 사이클이 존재하지 않도록 모든 정점을 간선으로 연결하는 것을 의미한다. 이때, 간선의 가중치 합을 최소로 하며 연결하여야 한다. 이때 생성되는 최소 스패닝 트리는 무조건 하나의 그래프에서 하나만 생성된다고는 보장하지 못한다. Generic MST 알고리즘- 어떤 MST의 부분집합 A에 대해서 A∪{(u,v)}도 역시 어떤 MST의 부분집합이 될경우 에지(u,v)는 A에 대해서 안전하다(safe)고 한다.- Generic MST 알고리즘1. 처음에는 A는 공집합이다.2. 집합 A에 대해서 안전한 에지를 하나 찾은 후 이것을 A에 더한다.3. 에지의 개수가 n-1개가 ..
플로이드 워셜 알고리즘(Floyd-Warshall) All-pairs 문제 그래프에서 모든 정점 사이의 최단경로 및 최단거리를 구하는 알고리즘 동적계획법 접근으로, 그래프 상의 모든 두 정점을 잇는 경로의 최단거리를 구한다.여기에 경유지를 기록하면 최단거리 경로까지 구할 수있다.- 두 정점을 잇는 최소 비용 경로는 경유지를 거치거나 거치지 않는 경로 중 하나에 속한다.- 만약 경유지를 거친다면 그것을 이루는 부분 경로 역시 최소 비용 경로여야 한다. 음수사이클이 없는 그래프라면 음수 가중치가 있어도 동작
벨만-포드 알고리즘(Bellman-Ford Algorithm) single source 문제 음수 가중치가 있고, 음수 사이클이 없는 그래프에서 한정점에서 다른 모든 정점까지의 최단경로 및 거리를 구하는 알고리즘음수사이클이 있으면 무한히 사이클을 루프할수 있어서 최단경로를 구할수 없다.단 벨만포드알고리즘의 장점은 그래프내에 음수사이클이 있음을 판단할수 있다. 1. 시작점을 제외한 모든 정점들을 최단거리를 무한대로 설정2. 그래프 모든 간선에 대해3. 정점 A에서 B로의 방향을 가지고 있는 각 간선에 대해현재 정점 B까지의 거리가 정점 A까지의 거리 + 현재 간선의 거리의 합보다 클경우정점 B의 경로와 거리를 갱신해준다.4. 이들 경로와 거리의 갱신이 일어나지 않을때까지 반복한다.만약 정점의 수 만큼의 시..
최단경로(shortest path problem)- 가중치(방향) 그래프 G=(V,E), 즉 모든 에지에 가중치가 있음- 경로 p=(v0,v1,...vk)의 길이는 경로상의 모든 에지의 가중치의 합- 노드 u에서 v까지의 최단경로의 길이를 S(u,v)라고 표시하자. 최단경로문제의 유형- Single-source(one-to-all) : 하나의 출발 노드 s로부터 다른 모든 노드까지의 최단 경로를 찾아라. ex)Dijkstra의 알고리즘- Single-destination : 모든 노드로부터 하나의 목적지 노드까지의 최단 경로를 찾아라./ single-source문제와 동일- Single-pair(one-to-one) : 주어진 하나의 출발 노드 s로부터 하나의 목적지 노드 t까지의 최단 경로를 찾아라- ..
위상정렬: 그래프를 정렬하는 것/ 정렬기준은 진입 차수의 비 내림차순 순서즉, 진입차수가 0개->N개 순으로 탐색하고정렬하면서 진입차수가 0인 노드들은 제거하고, 진입차수가 0이 아닌 노드들은 0으로 수정한 뒤 제거해가며 정렬진입차수란? 해당 노드로 들어오는 간선의 개수 위상정렬은 DAG그래프여야 한다.DAG란 Directed Acyclic Graph 방향성이 있고 사이클이 없는 그래프위상정렬은 DFS 방법과 진입차수(Indegree)를 이용한 방법이 있다.
힙 정렬(Heap Sort): 힙 자료구조를 이용한 정렬 방법: 힙에서 항상 가장 큰 원소가 루트노드가 되고 삭제 연산을 수행하면 항상 루트노드의 원소를 삭제하여 반환 힙 정렬 수행 방법1. 정렬한 원소들을 입력하여 최대 힙 구성2. 힙에 대하여 삭제 연산을 수행하여 얻은 원소를 마지막 자리에 배치3. 나머지 원소에 대해서 다시 최대 힙으로 재구성 (원소의 개수만큼 반복 수행) 정렬되지 않은 [69,10,30,2,16,8,31,22]의 자료들을 힙정렬-> 정렬할 원소가 8개 이므로 노드가 8개인 완전 이진 트리를 만들고 최대 힙으로 구성1. 힙에 삭제 연산을 수행하여 루트 노드의 원소 69를 구해서 배열의 마지막 자리에 저장한다. 그리고 나머지 원소들에 대해서 최대 힙으로 재구성 평균 시간복잡도 : O(..
knapsack problem- n개의 아이템과 배낭- 각각의 아이템은 무게 Wi와 Vi를 가짐- 배낭의 용량 W- 목적 : 배낭의 용량을 초과하지 않으면서 가격이 최대가 되는 부분집합예Greedy - 가격이 높은 것부터 선택- 무게가 가벼운 것부터 선택- 단위 무게당 가격이 높은것부터 선택->불가능 순환식bottom-up