[칼럼] 컴퓨터 공학적 방법론
게시글 주소: https://dev.orbi.kr/00029576314
컴퓨터 공학과 방법론, 그렇다 알고리즘이다.
알고리즘이 무엇인지와 중요성, 특징들을 알아보고 공부에 적용시켜보는 것이 이 글의 목적이다.
What is Algorithm?
알고리즘이 뭔가? 작동원리? 코딩? 인공지능? 등 별별 어중간한 답들을 할 것이라 예상한다.
일반적으로 다음과 같은 세 조건을 만족시켜야 한다.
1. 알고리즘은 모호하지않은 일련의 절차나 명령의 집합이다
2. 알고리즘의 모든 절차는 컴퓨터에 의하여 수행 가능해야 한다.
3. 알고리즘은 반드시 종결하는 절차여야 한다.
항상 만족시키는 것은 아니다. 가령 CCTV용 컴퓨터의 경우 3번의 반례라고 들 수 있다.
다시 돌아와서, 알고리즘은 예외적인 경우를 제외하고 저 조건을 만족시켜야 한다고 말했다.
그렇다면, 과연 저 조건들이 전부일까? 아니다.
주어진 문제를 해결하는 방법은 여러 가지가 존재할 수 있다.
예를 들어, 수능 수학 문제의 기하적인 풀이라던지, 대수적인 풀이 등을 생각해보자.
알고리즘처럼 모호하지 않은 일련의 풀이 과정, 반드시 종결한다는 공통점을 가진다.
(2번은 주로 컴퓨터에서 다루는 경우에만 적용하니 따지지 않는다.)
하지만 이러한 문제의 해결 방법이 알고리즘이기 위해서는 다른 방법에 비해 상대적으로 효율성을 가져야한다.
즉, 알고리즘은 효율성을 요구한다.
문제를 해결하기 위해 효율적인 일련의 절차나 명령이 알고리즘이다.
결국, 우리가 문제를 해결하기 위해 알고리즘을 찾아야 한다.
알고리즘은 '잘 정의된 기본절차'들을 이용하여 실현된다.
수학의 경우에는 기본 개념이라고 생각하면 된다.
국어의 경우는 명료하지 않으나, 개념어와 문장의 구조 등이라고 생각된다.
이해하기 쉽게 비유를 들어보겠다.

라는 책을 인용했다. 이처럼 기호로 특정 행동들을 정의 해두었다.
이 기호들이 지시하는 것에 익숙해지면, 복잡한 종이 3장으로 용접기 등등을 할 수 있다.
위와 같이 기본 절차들이 잘 정의된 경우, 누구라도 같은 결과를 낼 수 있다.
기본 절차들이 잘 정의되어야 다른 응용의 경우라도 알고리즘을 쉽게 적용시킬 수 있는 것이다.
컴퓨터 공학에서는, 알고리즘을 프로그램 언어로 표현한 결과물이 프로그램이고 따라서 프로그램 언어는 알고리즘을 표현하기 위한 수단으로 이해한다.
마치, 구조 독해 방법론을 기호로 표시하며 읽는 것이 구조 독해가 되고 따라서 기호는 구조 독해의 수단이 된다는 것과 비슷하다.
How to find Algorithm
구조 독해, 그거 누가 가르쳐줘요?
알고리즘은 어떻게 찾는가
문제를 해결하는 방법에 대해서는 오~래전 부터 연구되어 왔다.
1945년 수학자 조지 폴야(George Polya)는 "폴야의 문제 해결 과정(Polya's Problem Solving Problem Steps)"을 발표했다.
1. 주어진 문제의 이해
2. 주어진 문제를 해결하기 위한 구체적 방법
3. 찾은 방법에 따라 실현
4. 해결 방법의 신뢰성 검증
2번의 경우가 우리가 찾는 알고리즘이다. 그런데 폴야의 문제 해결 과정이 항상 순서대로 수행되는 것은 아니다.
종종 수학에서 대충 때려넣어 보고 대략적인 그래프 전개나 방향성을 잡는 경우가 그러하듯이 주어진 문제를 이해하기 위해 3번과 4번을 거칠 수도 있다.
위에서 말했듯, 수학 문제의 풀이가 다양한 것처럼 알고리즘의 문제 해결 방식도 다양하다.
하지만, 알고리즘은 정확하게 해결할 수 있고, 목적에 맞고, 효율적이어야 한다.
알고리즘의 시간 복잡도와 공간 복잡도를 분석해 상대적으로 더 효율적인 알고리즘을 고를 수 있다.
시간의 경우에는, 어떤 알고리즘이 수행하는데 걸리는 평균 시간과 최악 시간을 생각해 볼 수 있다.
정말 쉬운 문제에서는 5초컷 내지만, 어려운 문제에서는 10분이 걸리는 극단적인 경우와
평균 시간과 최악 시간의 차가 크지않은 무난한 경우를 생각해보자.
두 경우를 비교해서 유리한 쪽으로 번갈아 가며 사용하는 것이 이득이다.
공간의 경우, 21 29 30 혹은 준킬러 문제에서 풀이과정이 얼마나 여백을 잡아 먹는가 또는 독해 표시가 얼마나 지저분한가 등등을 고려해볼 수 있다.
그렇다면 문제를 해결하는 알고리즘을 응용하여 유용한 풀이로 써먹어 보자.
1. 분할 정복 알고리즘
주어진 문제의 입력을 분할이 불가능할 때까지 분할하여 나온 부분문제를 해결하여, 얻은 부분해를 취합하여 원래의 문제의 해를 얻는 알고리즘이다.
대표적인 예로 파급효과 책에는 다음과 같은 내용이 적혀있다.
'킬러 같은 경우 문제를 한꺼번에 다 읽고 풀려고 하지 말고 한 문장씩 끊어 가면서 해줄 수 있는 행동을 취해야 한다.'
2.그리디 알고리즘 & 동적 계획 알고리즘
Greed, 욕심이라는 뜻에 맞게 데이터 간 관계를 고려하지 않고 가능한 해들 중에서 '욕심내어' 최소 혹은 최댓값을 가진 데이터를 선택한다.
쉽게 말해, 분기 별로 그때마다 최적인 선택을 한다. 구하기 쉬운 조건들부터 처리하는 것이라고 생각할 수 있다.
만약, 어려운 조건 하나를 해결하면 모두 풀리는 문제라고 하면 효율성이 떨어진다.
동적 계획 알고리즘의 경우도 비슷하나, 작은 부분문제를 해결하여 큰 부분문제를 해결하는데 이용하는 방식의 차이가 있다. 최적화된 풀이를 찾는데 쓸 수 있다.
3. 백트래킹 기법
간단하다. 답을 찾는 중 막히면 되돌아가서 다시 찾는다.
미로에서 노빠꾸로 오른쪽만 가다가 막히면 다시가서 길을 찾는 것으로 생각할 수 있다.
대부분의 길을 탐색하기에 이러한 방법으로 사고과정을 정립해 나간다면 매우 튼튼할 것이다.
하지만 그만큼의 시간과 노력이 필요하기에 효율성은 떨어질 수 있다.
한 번쯤은 어떻게 하면 효율적으로 내가 문제를 풀 수 있을까, 시간을 쓸 수 있을까, 공부할 수 있을까 등을
고민해 본다면, 혁신을 느낄 수 있을지 모르겠다.
올해 개정된 국어의 기술 뒷부분에도 있을지 모르겠으나, 오르비 설립자 라끄리님의 칼럼인 '어떻게 3억 연봉을 받는 사람이 될 것인가?'를 한 번 읽어보자. (본인 칼럼을 읽지 않더라도 읽는 걸 추천한다. 100배 더 좋은 글이다)
https://orbi.kr/0003806708
0 XDK (+0)
유익한 글을 읽었다면 작성자에게 XDK를 선물하세요.
-
내가사실은생명과학을좋아함 1 0
수능말고 그냥생명과학
-
. 11 1
-
님들 최애 과목 말해보셈 7 0
난 국어
-
님들 최애 라면 말해보셈 10 0
난 신라면
-
라면이랑 과자 안먹은지 6일차 2 0
후후
-
자지 버섯 4 0
나는 자연인이다에 나온 버섯입니다
-
통합사회 미녀 선생님 0 0
최성주 쌤 보고 의대 가겠습니다
-
잘생긴 남자 돼서 꿀빨고싶다 3 1
존예부자여친이랑 결혼해서 기둥서방하고싶어
-
님들 최애 애니 캐릭터 말해보셈 12 0
본인은 페이트 스테이 나이트의 아처임.
-
이상형월드컵 주작은 뭐야 0 0
뭐긴 뭐야 사랑이지
-
님들아 ㅃㄹ 정상적인 플러팅 17 0
입술크기 키갈 ㅇㅈㄹ말고 ㅈㅂ
-
크큭 선이 보인다 3 0
아무튼 선이 보임
-
살면서 여자가 헤어지고 2 1
자기가 문제였다고 말하는걸 못봄 심지어 자기가 바람폈을 때도 상대 욕하기도 함
-
와따시와 헤르메스노 토리 0 0
헬싱 아카드
-
수험의 진리를 알려드리죠 2 0
The one who's in love always wins. 공부에 순수하게...
-
뿌셔뿌셔 최애 과자임
-
메디컬 여러분들에게 질문? 10 1
(서연고정도 제외하고) 메디컬은 동아리를 따로한다는데 맞나요 굳이 왜그러는 건가요
-
플러팅 알려줘 17 0
-
대학 3주차 0 3
아무도 모르고 아무것도 모르면 개추
-
그냥 역사는 몰라도 2 2
수능역사는 오르비에서 나보다 잘하는 사람 얼마없을거야
-
아니 근데 3 0
글 쓸게 없는데 자야하나.
-
방학동안 4 1
수1 수2 미적 기하 확통 다 나갔는데 (학원 커리큘럼이 그래서..) 물론 그냥 쭉...
-
반수러 언매하면 0 0
강기분 언매부터 아니면 강e분 언매부터 뭐부터 듣지? 개념많이 휘발된고같은데...
-
아침 7시 전에는 0 0
내가 시킨 문제집들이 와있겠지???? ㅎㅎ
-
미쿠다요~ 0 0
미쿠가 모니터링처럼 집착해줬으면 좋겟당
-
밥약 같은 거 11 1
어떻게 거는 거임 그냥 술자리에서 친해진 선배한테 “저랑 밥약해주세요” 이렇게 말하고 잡는 거임?
-
골든아워 읽어봐야지 2 0
이국종교수님 수필이라니
-
애니프사역거움 7 1
그래서안함 다시돌아올땐 사기리로돌아올게 알아봐줘
-
잔다 7 1
내일 밥약이 이써... 이제 자야해...
-
종강하면 살찌고 2 0
개강하면 살 빠지는 몸을 가지고 있음
-
큰일남 반대 0 1
작은 나태 녀
-
어? 23렙이네 1 0
자야게따.
-
대학을 제미나이가 다니는중 13 0
생성형 AI 쓰지말라고? 알빠노.
-
거짓말 ㄴ 11 1
순애라는게 존재할리가 없잖음
-
에이징커브는 무서운것이야
-
와 큰일남 4 0
대칭성 판단하는 방법 까먹음 f(x)+f(-x+2a)=0이면 (a,0)대칭 이런거
-
순애는 살아있다 2 0
이 세상 어딘가에
-
홍준용T 0 1
22개정 내신도 하시려나..?
-
좀 그런 느낌이 드네요 충분조건과 필요조건을 묻는 선지며 .. 여튼
-
사랑? 웃기지마 2 0
이젠 돈으로 사겠어
-
지금 잔다는 것은 별개지.
-
라면 추천점여 5 0
올만에 매운게 땡기네
-
라면에 닭가슴살 넣고 4 0
친구한테 보내줬는데 누렁아 밥먹자~ 이러네;
-
도 이제 잘 시간이 곧 되어가는 군..
-
벨런스 게임 하고 가라 4 0
진짜 ㅈㄴ 골때리네
-
내신 2.4 정시로 돌릴까요? 2 0
고2모고가 3중2후2중(국영수) 나왔기에 별 생각없이 수시로 가야겠다 생각하고...
-
토요일에 고대가서 5 1
옵붕이랑 밥먹고 옵붕이 문항검토하고 옵붕이랑 데이트하고 옵붕이랑 술먹을 예정
-
오늘화장 짱잘먹엏어 8 1
맘에들어서 지우ㅜ기싫어..
첫번째 댓글의 주인공이 되어보세요.