본문 바로가기

반응형

알고리즘

(2)
최적화 - 동적 알고리즘(Dynamic programming) 이번에는 동적 알고리즘과 이것을 통해 0-1 knapsack problem (배낭 채우기)를 다루려고 합니다. 우선적으로 동적 알고리즘에 대해 알아보자면 사전적 의미로서 복잡한 문제를 간단한 여러 개의 문제로 나누어 푸는 방법이라고 되어 있습니다. 그리고 그 대표적인 예로 재귀 함수 형태의 피보나치 수열이 떠오를 텐데요. 예를 들어 f(1)을 넣게 되면 1, f(2)를 넣게 되면 f(1) + f(0) = 2, f(3) = f(1) + f(2) = 3, f(4) = f(3) + f(2) =5...... 이렇게 됩니다. 하지만 이 함수를 메모리 관리적인 차원에서 본다면 매우 비효율적이라고 할 수 있습니다. f(7)을 컴퓨터에서 컴파일했을때 f(7)을 구하기 위해서 f(7) = f(6) + f(5) 를 호출하..
최적화 Optimisation 글을 올리기 앞서 저는 인공지능을 대해 뛰어난 지식을 갖추진 못했지만 제가 학교 다닐 때 배웠던 인공지능에 대해 조금 더 제대로 알고 싶은 마음에 제가 공부한 것을 같이 공유하고 싶어 블로그를 개설했습니다. 단순히 사전적 내용을 덧붙이기보다는 제가 이해한 내용을 알기 쉽게 표현하려 노력하겠습니다. 오류나 부족한 부분들이 존재할 수 있으니 미리 양해 부탁드리고 혹시 제가 잘못 알고 있는 부분이 있다면 겸허히 받아들여 더 발전할 수 있도록 노력하겠습니다. 일단 최적화의 사전적 의미란 주어진 범위 안에서 최댓값 또는 최솟값을 찾아 자원 또는 비용의 효율성을 추구하는 것입니다. 이것이 인공지능에서는 어떤 의미로 씌는지 알아보도록 하겠습니다. 수학 문제를 풀게 될 때 우리는 단 하나의 정답을 찾아야 합니다. 수많..

반응형