Greedy(탐욕) Algorithm?

정종화·2021년 12월 22일
0

Greedy Algorithm이 뭐야?

  • 선택의 순간마다 당장 눈앞에 보이는 최적의 상황만을 쫓아 최종적인 해답에 도달하는 방법이다.

  • 예를 들어 편의점 알바를 할때 손님이 4040원 어치의 물건을 사려고 하고 5000원을 주면서 거스름돈(동전)은 최소한으로 해서 거슬러 달라고 했다 치자.

  • 그럴때 최소한의 동전으로 거슬러 주려면 우선 거스름돈 960원의 값에서 가장 큰 값의 동전인 500원을 하나 선택하고 생각을 해보는거다. 500원짜리 동전 하나를 더 선택할 순 없나? 만약 500원짜리 동전을 하나 더 선택하게 되면 거스름돈인 960원보다 금액이 커지기 때문에 적합하지 않다 라고 판단을 내리고 그 다음으로 넘어가 500원보다 그 다음으로 큰 동전인 100원짜리 동전을 4개 선택을 한다. 그리고 또 생각을 하는거다. 100원짜리 동전 하나를 더 선택할 순 없는지, 만약 100원짜리 동전을 하나 더 선택하게 된다면 금액이 또 거스름돈보다 커지기 때문에 적합하지 않다고 판단 내리고 다음으로 큰 동전으로 또 넘어가고 넘어가고 계속 그런식으로 해서 적절하게 금액에 맞게 최소한의 동전수거스름돈을 거슬러 주는것이다.

  • 위와같은 방식으로 문제를 해결하게 된다면 비교적 빠른 시간내에 어느정도 합리적인 결과를 도출해낼 수 있지만 항상, 가장 최적의 결과를 도출하진 못하게 된다.

  • 한가지 예를 더 들자면 내가 도둑이딱 35kg만 들어갈 수 있는 가방이 있다고 했을때, 내가 훔칠 수 있는 물건들이 아래와 같다고 해보자.

    ㄴ 그림작품 30kg, 3000 달러의 값어치.
    ㄴ 티비 25kg, 2500 달러의 값어치.
    ㄴ 컴퓨터 20kg, 2000 달러의 값어치.
    ㄴ 다이아 반지 15kg, 1500 달러의 값어치.
  • 위와 같은 물건들이 있을때 Greedy Algorithm을 적용해물건을 훔치게 된다면 우선 가장 비싼 물건을 선택해 가방에 담아야 하는데, 가장 비싼 물건인 그림작품을 가방에 넣게 되면 35kg 중 30kg가 차기 때문다음 물건을 넣을 수 없게 되고 그렇게 되면 내가 훔치는 물건의 값은 3000 달러에 그치게 된다.

  • 위와같은 방법이 최적의 방법이라고 할 수 없는게, 만약 컴퓨터 20kg와, 다이아반지 15kg을 훔치게 되면 총 35kg의 가방도 꽉 채울 수 있고 물건들의 값어치도 3500 달러가 되기때문에 가장 최적의 방법으로 물건을 훔지는게 가능하다.

  • 때문에 Greedy Algorithm항상 최적의 결과를 도출해낼 수 없다고 하는것이다.

profile
Hello?

0개의 댓글