본문 바로가기
세계는 변화 우리의 공감자세

알고리즘은 음식 요리 비법이다.

by c.knot 2022. 2. 26.
반응형

알고리즘은 컴퓨터를 이용하여 주어진 과제를 해결하기 위한 처리 절차이다.

각 사전에서는 어떻게 정의할까?

1. 위키백과, 우리 모두의 백과사전

  -문제 풀이에 필요한 계산 절차 또는 처리과정의 순서를 뜻한다.

   프로그램 명령어의 집합을 의미하기도 함.

2. 네이버 지식백과

  -주어진 문제를 논리적으로 해결하기 위해 필요한 절차, 방법, 명령어들을 모아놓은 것

3. 다음 백과

  -어떠한 주어진 문제를 풀기 위한 절차나 방법을 말하는데

   컴퓨터 프로그램을 기술함에 있어 실행 명령어들의 순서를 의미한다.

 

과제-음식 요리법 1) 치킨 카레 만들기 , 2) 고기 감자조림 만들기 3) 라면 만들기

 

알고리즘은 문제 해결을 위한 처리 절차이다

그렇게 생각해 보면, 컴퓨터의 데이터 처리뿐만 아니라 현실 세계의 다양한 과제의 해결에 있어서도 알고리즘의 개념이 사용되고 있음을 알게 됩니다. 대표적인 것이 음식 요리법입니다.

예를 들어보겠습니다.

 ▶라면 만들기(과제)

시작 라면을 끄리기 위한 절차
문제를 해결하기 위한 절차 라고 할수있다.
(알고리즘)
재료 준비
전원ON
물끓이기
스프야채
계란
물끓는다
전원OFF

 즉 주어진 과제(라면 만들기)를 해결할 수 있는 음식 요리법은'문제 해결을 위한 처리 절차'로 알고리즘이라고 할 수 있다.

과제 > 알고리즘 > 해결

음식의 요리 접도 일종의 알고리즘이다

라면 만들기> 알고리즘>라면

 

좋은 알고리즘이란?

1) 컴퓨터가 이 세상에 등장한 이후, 주어진 '과제'를 컴퓨터로 해결하기 위한 다양한 처리 절차가 다수 고안되어 왔다. 또한 많은 연구자들이 보다 일반적인 처리 절차는 없는지 등을 고려하여 지금까지 등장한 알고리즘들을 개량해 왔다. 알고리즘 학습은 우수한 프로그램을 작성하기 위한 이정표인 것이다

 -보다 효율적으로 , 보다 범용적으로 , 보다 빠르게

 

2) 요리법의 순서대로 요리를 만들더라도 반드시 맛있을 것이라는 보장은 없다.

라면을 만들더라도 순서에 따라 정확하게 만들더라도 맛있는 요리 맛없는 요리가 탄생한다

이처럼 알고리즘을 잘 활용하여 라면을 만들 때 물>라면> 수프 순으로 하는 사람도 있고 

반대로 물> 수프>라면 순으로 하는 사람도 있다 좋은 알고리즘은 더 맛있게 만들기 위한 지혜가 쌓인 결과

라고 할 수 있다.

 - 더 맛있게 , 더 쉽게, 더 빠르게

 

*최초의 알고리즘= 유클리드의 최대공약수 알고리즘입니다.

알고리즘을 이해하는 것은 게임을 잘하게 되는 것

1) 음식 요리법과 마찬가지로 알고리즘의 학습은 프로그래머의 프로그래밍 능력 향상과 직접 연결된다.

게임에는 공략법이 있습니다. 공략법 대로 키운다면 게임은 좋은 전략을 선택한 쪽이  승리할 확률이 커지기 마련이다.

오목을 생각해보면 오목을 하는 방법만 알고 있는 유저와 필승법을 알고 있는 유저

필승법 속 알고리즘 게임 공략법을 이해하고 승부처에서 최선의 공격과 수비 상황에서 최선의 수 를 둘 수 있습니다.

알고리즘(공략법, 정석)을 학습한 사람이 체스, 바둑, 장기, 등 다양한 게임 산업에서 고득점을 얻거나 효율적인 성과를 가져올 수 있다.

 

정당성, 정지성 정확하고 종료되야한단 뜻

정당성(correctness) -입력에 대한 출력이 확실한 것인가.라는 뜻을 가지고 있다.

-주어진 과제에 대해 올바른 결과를 반환해야 합니다.

 입력값이 지정된 조건과 일치한다면 알고리즘은 반드시 정상적인 동장(올바른 출력 값의 변환)을 보장해야 한다.

올바르게 작동하고 있는 것처럼 보이는 알고리즘도, 특별한 입력 조건에는 잘못된 답을 내놓을 수 있기 때문입니다.

정당성을 증명하는 방법-단정문(Assertion)=알고리즘의 실행 순서 중 임의의 위치에 서서 충족해야 하는 조건이 성립하는지의 여부를 체크하는 것이다.


정지성(termination) -어떤 잘못된 입력이 들어가더라도 반드시 종료가 되는 것이냐.라는 뜻을 가지고 있다.

-알고리즘은 언젠가 반드시 정지해야만 합니다.

무한루프-영원히 처리를 반복하여 답을 돌려주지 않는 것

어떠한 조건의 입력값이 주어지더라도 정해진 시간 내에 반드시 정상적인 종료를 보장하는 것으로 정의할 수 있다.

정지성을 증명하는 방법- 반복 처리의 종료 조건 체크에 사용되는 변수를 관찰하여 정해진 횟수만큼 반복하면 반드시 정지하는 것을 증명하는 방법이 있다.

 

*알고리즘을 지탱하는 정당성과 정지성

 

4가지 필수 알고리즘의 종류

1) 기술계산

 -유클리드 호제법(최대공약수) 

 -가우스 소거법(방정식)

 -사다리꼴의 법칙(정적분)

 -테이크 스트라 알고리즘(최적경로)

 -에라토스테네스의 체(소수)

 

 2) 정렬(1줄로 늘어선 데이터를 오름차순, 내림차순 정렬하는 알고리즘)

 -단순 선택 정렬

 -단순 삽입 정렬

 -단순 교환 정렬

 -셸 정렬

 -퀵 정렬

 -병합 정렬

 

3)검색(많은 양의 데이터 중에서 원하는 데이터를 찾아내기 위한 알고리즘)

 -선형 검색(리니어 서치)

 -이진 검색(바이너리 서치)

 

4) 문자열 패턴 매칭(데이터를 검색할 때 특정 패턴이 출현하는지 등을 특정하는 방법)

 -단순 문자열 일치

 -KMP 알고리즘

 -BM 알고리즘

 

알고리즘의 구조적 프로그래밍 개념

-프로그램을 효율적으로 작성하고 설계상의 오류를 최소화하는 구조적 프로그래밍

1) 순차 구조-작성된 순서대로 순차 실행한다.

2) 선택 구조-조건에 따라 작업의 흐름이 바뀐다. Yes or No

3) 반복 구조- 조건이 일치(성립)하는 동안 일정 과정을 계속 반복해서 실행한다.

 

*오늘의 핵심 알고리즘은 요리법과 같고 게임공략과도 같다

반응형

댓글