[세호/week6] 그래프의 개념과 정의, 탐색 방법
그래프 그래프는 유한하고, 하나 이상의 원소를 갖는 Vertex 집합과 Vertex의 부분집합의 순서있는 쌍으로 이루어진 Edge의 집합으로 이루어진다. Edge는 Vertex의 쌍 (v1, v2)와 같이 나타내고, 방향그래프에서 순서는 유의미하다 헷갈리는 그래프 관련 ...
동적 계획법은 큰 의미에서 분할 정복과 같은 접근 방식이다. 다만, 동적 계획법에서의 어떤 부분문제는 두 개 이상의 문제를 푸는데 사용될 수 있다. 그래서 그 부분문제의 답을 한번만 계산하고 저장해 두었다가, 나중에 같은 부분 문제를 풀 때 사용한다. 이때 결과 값을 저장해 두는 장소를 캐시(Cache)라고 한다.
nCr = n-1Cr-1 + n-1Cr 과 같이 표현될 수 있다.
5C3 = 4C2 + 4C3 이고 4C2 = 3C1 + 3C2 3C1 = 2C0 + 2C1 3C2 = 2C1 + 2C2 2C1 = 1C0 + 1C1; 2C2 = 1 4C3 = 3C2 + 3C3 3C2 = 2C1 + 2C2 2C1 = 1C0 + 1C1; 2C2 = 1 3C3 = 1
위 계산 과정에서 보듯이 같은 이항계수의 계산이 여러번 호출되는 것을 알 수 있다. 따라서 각 이항 계수를 계산한 뒤에 캐시에 저장하였다가 다음 호출시에는 캐시에서 바로 꺼내어 사용하는 방식으로 속도향상을 기대할 수 있다. 이러한 기법을 **메모이제이션(memoization)** 이라고 한다.
이러한 메모이제이션은 **참조적 투명성(referencial transparency)** 을 갖는 경우에만 적용할 수 있다는 것에 유의해야한다. 참조적 투명성이란 함수의 반환값이 입력 값에만 영향을 받는 성질을 말한다. 입력값이 같은데 결과가 다른 경우라면 당연히 값을 저장해두어도 의미가 없을 것이기 때문이다.
LIS 문제는 매우 유명한 동적 계획법 연습문제 중 하나이다.
새로운 배열 D를 정의하자. D[i]의 정의는 다음과 같다. D[i] : A[i]를 마지막 값으로 가지는 가장 긴 증가부분수열의 길이 A[i]가 어떤 증가부분수열의 마지막 값이 되기 위해서는 A[i]가 추가되기 전 증가부분수열의 마지막 값이 A[i]보다 작은 값이여야 한다.
따라서 A[i]를 마지막 값으로 가지는 '가장 긴' 증가부분수열의 길이는 A[i]가 추가될 수 있는 증가부분수열 중 가장 긴 수열의 길이에 1을 더한 값이 된다.
예시 출처 : 나무 위키 이 알고리즘은 N개의 수들에 대해 자기 자신 전의 모든 수를 다 훑어봐야 하므로 O(N2)의 시간복잡도를 가지는 알고리즘이 된다.
그래프 그래프는 유한하고, 하나 이상의 원소를 갖는 Vertex 집합과 Vertex의 부분집합의 순서있는 쌍으로 이루어진 Edge의 집합으로 이루어진다. Edge는 Vertex의 쌍 (v1, v2)와 같이 나타내고, 방향그래프에서 순서는 유의미하다 헷갈리는 그래프 관련 ...
그래프(Graph)의 개념 단순히 노드(N, node)와 그 노드를 연결하는 간선(E, edge)을 하나로 모아 놓은 자료 구조
트리의 개념
트리의 구현과 순회
자료구조란? 자료구조(data structure)는 전산학에서 자료를 효율적으로 이용할 수 있도록 컴퓨터에 저장하는 방법이다. 신중히 선택한 자료구조는 보다 효율적인 알고리즘을 사용할 수 있게 한다.
동적 계획법
동적 계획법 - Dynamic Programming ; DP
분할 정복이란 문제를 둘 이상의 부분으로 나누어, 부분 문제에 대한 답을 재귀 호출을 이용해 계산하는 알고리즘 디자인. 분할 정복을 적용하기 위해서는 .. 문제를 둘 이상의 부분 문제로 나누는 자연스러운 방법이 있어야하고 부분 분제의 답을 조...
분할 정복(Divide and Conquer)이란?
분할 정복 이란? 분할정복 알고리즘은 문제를 나눌 수 없을 떄까지 나누어서 각각을 풀면서 다시 합병하여 문제의 답은 얻는 알고리즘이다.
분할정복이란
모든 경우에 있어서 항상 우월한 성능을 보이는 자료구조와 알고리즘은 없다. 그래서 자료구조와 알고리즘을 분석하고 평가할 수 있어야 한다.
Algorithm Study Week1 일자 : 2019년 10월 7일 월요일 Member : 이세호, 김범철, 이지연, 이지혜 “프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략” 2, 3, 4장 키워드 : 시간복잡도와 Big-O 표기 Algospot 튜토리...
Algorithm Study Week1 일자 : 2019년 10월 7일 월요일 Member : 이세호, 김범철, 이지연, 이지혜 “프로그래밍 대회에서 배우는 알고리즘 문제 해결 전략” 2, 3, 4장 키워드 : 시간복잡도와 Big-O 표기 Algospot 튜토리...