Skip to content

problem

문제를 해결한다는 것

TL; DR

  • 잘 정의된 문제는 명확한 목적과 그를 달성하기위한 솔루션이 존재한다.
  • 문제라는 것은 어떠한 목적을 달성하기 위한 과정에서 목적의 달성을 방해하는 것 을 의미한다.
  • 컴퓨터 과학에서 정의하는 문제와 비즈니스에서 정의하는 문제 모두 상태(State)Action 을 통해서 목적(Goal) 을 달성하는 것으로 이해할 수 있다.
  • 문제를 해결한다는 것은 다음과 같은 과정이라고 결론을 내리자.
    1. 궁극적인 목적에 대한 파악과 ( Objective & Goal )
    2. 방해 요인의 근본적인 원인 파악을 명확히하고 ( Analysis )
    3. 해결가능한 솔루션을 찾고, 결정하여 ( Strategy & Decision Making or Search of Action Space )
    4. 목적 달성을 위한 솔루션을 수행 ( 실행 ) 하는 것을 의미한다. ( Project Management )

생각의 시작

  • 스타트업은 "스스로 문제를 정의해서 풀어내는 조직"
    • 크게는 시장의 문제부터 조직의 운영 문제, 효과적인 코드를 작성하는 문제 등 다양한 층위의 문제를 정의하고 우선순위를 정해서 실행함.
    • 스타트업을 다니는 이유는 현실 세계의 복잡한 문제를 해결하면서 성장할 수 있다는 믿음이 있기 때문
  • 이때 “문제”란 무엇이고 그것은 어떻게 정의할 것인지 그리고 잘 정의되는 문제란 무엇인지에 대해서 생각을 기록해둔다.
  • 문제란 무엇인가 ?
    • 문제는 크게 두 종류로 나뉘는데 잘 정의된 문제와 그렇지 않은 문제이다.
    • 잘 정의된 문제는 구체적인 목적 ( Specific end goal ) 과 명확히 기대되는 해 ( Clearly expected solution ) 을 가지는 것을 의미
    • 잘 정의되지 않은 문제는 앞서 말한 두 가지가 명확하게 정의되지 않은 것이다.
  • 그렇다면 목적 ( Goal ) 과 해 ( Solution ) 을 더 구체화하면 어떤 형태로 나타낼 수 있을까 ?

컴퓨터 과학적 관점

잘 정의된 문제란, 다음과 같은 요소들을 가지는 것을 의미한다.

  1. Initial state 가 주어진다. ( initial state )
  2. 각 상태에 대해서 수행할 수 있는 actions 들에 대한 묘사가 주어진다. ( actions )
  3. action 으로 인한 transition model 이 주어진다. 이때 어떤 state s 에서 action a 를 통해서 도달할 수 있는 다음 상태들의 집합을 successor 라고 한다. ( transition model / successor )
  4. 어떤 상태가 goal 과 일치하는 지 판단할 수 있는 goal test 가 존재한다. 경우에 따라서는 복수개의 goal state 존재할 수 있다. ( goal test )
  5. initital state / actions / transition model 은 암묵적으로 state space of problem 을 정의한다. 이때 state space 는 사실상 node 가 state 이고 edge 가 action 인 directed graph 구성한다고 생각할 수 있다. 이때 sequence of actions 를 경로(path) 라고 한다.( state space )
  6. 각 경로 ( sequence of actions ) 에 대한 path cost 함수가 주어진다. problem solving agent 는 각 경로에 대한 performance measure function 를 통해서 cost 를 계산한다. ( path cost / step cost )

Problem 에 대한 Solution 은 initial state 에서 goal state 까지 도달할 수 있는 an action sequence 로 생각할 수 있다. 이때 quality of solution 은 path cost function ( with performance measure function ) 을 통해서 측정할 수 있으며 최소 path cost 를 가지는 solution 을 optimal solution 이라고 한다.

구체적인 예시를 몇 가지 생각해보자

예시 1 - 8-Queen Problem

8개의 퀸을 서로 공격 불가능한 체스보드 위의 위치에 배치하는 문제를 8-Queen 문제라고한다. 이 문제 위에서 언급한 요소들을 다음과 같이 정의할 수 있다.

8Queen

  1. States : 0 ~ 8 개의 퀸이 8 by 8 체스 보드 위에 존재할 수 있는 모든 상태
  2. Initital State : 0개의 퀸이 배치되어 있는 상태
  3. Action : 체스 판 위에 하나의 퀸을 추가하는 것
  4. Transition model : 퀸 하나를 추가 배치하면 추가 배치된 체스판의 상태를 반환
  5. Goal test : 8 개의 퀸이 배치되어 있고 & 서로가 공격이 불가능한 상태

예시 2 - Knuths Conjuecture

Knuths Conjuecture 자연수 4로 시작해서 [ factorial, square root, floor ] 연산을 통해서 원하는 숫자를 획득할 수 있다는 추측이다. 예를들어 5를 획득하기 위해서 다음과 Sequence of Operation 를 수행할 수 있다.

\[ \lfloor\sqrt{\sqrt{\sqrt{\sqrt{\sqrt{(4!)}!}}}}\rfloor = 5 \]
  1. States : 모든 양수
  2. Initial State : 4
  3. Action : [ factorial, square root, floor ] 연산 중 하나를 적용 ( factorial 의 경우는 정수일 경우에만 )
  4. Transition model : 주어진 수학적 연산을 수행한 결과
  5. Goal test : State 가 원하는 목표 숫자와 동일한지 판단하는 것

Knuths Conjuecture 문제에서 9를 획득하는 것을 목표로 한다면, 아래와 같은 Tree Expansion 을 통해서 Factorial → Square Root → Square Root → Floor 를 통해서 9를 획득 할 수 있음을 알 수 있고, 이 경우의 하나의 Solution 은 Factorial → Square Root → Square Root → Floor 인 Sequence of Actions 라고 할 수 있다.

Tree

정리해보면 잘 정의된 문제는

  1. 상태의 공간이 정의되어 있고 초기 상태가 주어져 있다.
  2. 명확한 목적이 정의되어 있고, 현재 상태와 최종 상태를 비교하여 목표 달성 여부를 알 수 있는 방법이 존재한다.
  3. 어떤 상태에서 수행할 수 있는 action 이 주어지고, 특정 상태 S 에서 A 라는 액션을 수행한 한 후 다음 상태에 대한 정보를 결정하는 State transition model 이 주어진다.
  4. 초기 상태에서 연속적인 Action 을 수행하여 상태를 확장해 나가면서 최종 목적 상태까지 도달했을 때 그 Sequence of actions 를 Solution 이라고 할 수 있겠다.

비즈니스 관점

  • 비즈니스 세계에서 어떤 문제를 정의하고 해결하기 위한 과정을 “비즈니스 전략”을 세운다고 표현한다.
  • 전략을 세운다는 것 → 주어진 기간 동안 한정된 자원으로 어떻게 목적을 달성할 것인가 ?
  • 보통 다음과 같은 과정을 거친다.
    1. 상황 파악 ( Analyzing the context in which you’re operating )
    2. 전략적 선택지 찾기 ( Identify strategic options )
    3. 선택지 평가 및 선택하기 ( Evaluating and selecting the best options )
    4. 실행하기

비즈니스 문제를 해결하기 위한 도구

  1. 내가 속한 조직 분석 ( Analyze Your Organization , Internal Environment )

  2. 내가 처한 환경에 대한 분석 ( Analyze Your Environment, External Environment )

  3. 경쟁자에 대한 분석 ( Analyze Your Competitors )

  4. 전략적 선택지 찾기 ( Identify strategic options )

    • BrainStorming
  5. 선택지 평가 및 선택하기 ( Evaluating and selecting the best options )

위 과정을 컴퓨터 과학적 관점의 문제로서 다시 생각해보면 다음과 같이 해석해볼 수 있다.

  1. 상황을 파악한다는 것 → 현재 내가 존재하는 판은 어떤 곳인지 / 내가 가진 것은 무엇인지 등을 조사함을 통해서 “주어진 초기 상태” 와 “가능한 상태들”의 집합들에 대한 정의를 내리는 과정
  2. 전략적 선택지를 찾는다는 것 → 주어진 상태에서 가능한 “행동들의 집합”을 찾아내는 과정
  3. 선택지 평가 및 선택하기 → 찾아낸 “행동들의 집합” 중 어떤 것을 선택하고 실행할 것인지 평가하는 과정. 이 과정에서 조직에서 특정 행위가 다른 행위보다 “낫다”는 것은 조직이 추구하는 가치를 반영하게 된다.
  4. 실행하기 → 조직적 관점에서 프로젝트를 실행하기 위해서 실행 가능한 형태의 더 작은 문제로 나눈 후 작은 문제를 해결하는 과정

스타트업을 다니면서

스타트업에서 문제를 해결한다는 것을 번역해보면 다음과 같다.

  1. 회사의 비전과 미션과 정렬되는 기준에서 [목적에 대한 파악] 하고
  2. 목적을 달성하는데 [방해가 되는 요인]을 여러 방식을 통해서 ( 데이터 분석이나 유저 인터뷰 ) 찾고
  3. [ 고객이 겪는 특정한 문제 ] 를 해결하기 위해 세부 문제를 정의 하여 솔루션을 찾는다. 그리고 그 하위 레이어에서는 다시 반복적으로 “목적” / “원인” / “해결” 을 위한 과정으로서 프로젝트가 정의된다.
  4. 최하단의 실행 Layer 에서는 상위 Layer 에서의 문제를 해결하기 위해 Project Management 과정을 통해서 프로젝트를 실행하여 각자의 문제를 해결한다고 생각할 수 있겠다.