본문 바로가기

Algorithm/개념4

[Algorithm] 다익스트라 알고리즘(자바) 다익스트라 : 그래프 내의 특정 정점에서 갈 수 있는 모든 정점들까지의 최단 경로를 구하는 알고리즘 특히, 다익스트라 알고리즘은 음수의 간선 가중치를 허용하지 않습니다. 한 정점에서 다른 정점으로 가는 최단 거리의 문제를 접한 경우 양의 가중치가 있으면 다익스트라 문제이다!!!! 다익스트라 과정 다음은 다익스트라 알고리즘을 통해 최단 경로를 구하는 과정입니다. 1. 초기 상태 저는 1번 정점부터 시작하겠습니다. 1 2 3 4 5 0 INF INF INF INF 1 2 3 4 5 0 4 INF INF INF distance[2] > distance[1] + 4입니다. 이는 distance[2] = distance[1] + adjMatrix[1][2]를 의미합니다. 1 2 3 4 5 0 4 INF 10 IN.. 2022. 10. 30.
[Algorithm] Union-Find 최소 신장 트리를 표현하기 위해 사용되는 알고리즘은 크루스칼 알고리즘, 프림 알고리즘이 존재합니다. 이 알고리즘을 구현하는 과정에서 Union-Find 자료구조가 사용됩니다. 특히, 사이클을 판별하는 과정에서 서로소 집합을 활용하여 사이클을 판별할 수있습니다. 서로소 집합을 표현하기 위해 Union-Find 자료구조를 사용합니다. 서로소 집합 : 공통 원소가 없는 두 집합입니다. {1}와 {2,3,4}는 서로 공통 원소가 없으므로 서로소 집합이라고 할 수 있습니다. Union Find의 연산의 종류 makeSet(x) : 자기 자신의 원소 번호 자신이 속해있는 집합으로 초기화하며, 크기가 1인 서로소 집합 생성하게 됩니다. find(x) : x가 속한 집합의 부모(대표가 되는 값)을 반환합니다. unio.. 2022. 8. 25.
[Algorithm] 비트마스크 오늘은 부분집합을 비트연산자를 통해 구현하는 방법에 대해 알아보겠습니다. bit 1인 경우, 그 위치에 맞는 집합의 숫자를 출력하는 형태를 통해 모든 부분 집합의 경우의 수를 나타낼 수 있습니다. 특히, 부분집합의 개수는 2^N으로 표현되는데, 이를 1 2022. 8. 22.
[Algorithm] 순열, 조합 구현 순열 : 서로 다른 n개의 수에서 r개를 뽑아서 정렬하는 경우의 수( nPr 로 표현된다.) 순열은 순서를 생각해서 뽑아야 한다. 예를 들어 {1,2,3,4,5} 중에서 3개의 수를 뽑아야 하는 경우 {2,3,4}와 {2,4,3} 은 다른 경우의 수로 카운트된다. 재귀를 통해 구현할 수 있다. 순열을 구현하기 위해서는 함수 안에서 현재 수를 뽑고 다음수를 뽑기 위해 재귀함수를 호출한다. 특히, 중복순열과는 다르게 순열은 중복해서 수를 뽑을 수 없기 때문에, 현재 수를 뽑았는지를 확인하기 위해 boolean배열을 사용한다. public class PermutationTest { private static int N;//총 개수 private static int R;//뽑을 개수 private static .. 2022. 8. 20.