[칼럼] 컴퓨터 공학적 방법론
게시글 주소: 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를 선물하세요.
-
test 0 0
test
-
test 1 0
test
-
오르비문학 1화 0 0
오르비문학 1화
-
Test 0 0
Tetsteyey
-
수학 4등급만 받으면 2 0
쫀득하게 인서울 할 수 있는데
-
엘든링 왜 자꾸 멈추지 1 0
컴퓨터 좋은건데 씨발
-
목 졸라줘 5 1
켁켁켁 숨막혀 ㅜㅜ
-
시험지에 따라서 난이도가 가장 극단적으로 달라지는 번호같음....
-
개쉽게 풀리는데 이거 맞나
-
정시로 갑시다 8 0
내신반영을 노려서 내신 깡패 정시러
-
나왔어 12 0
다시감 근데 저게 왜 이륙햇냐
-
갑자기생각난썰 1 1
고1 2학기 학급회장선거때 후보가 2명이엇는데 그 친구들 둘이 합의하고 한명이...
-
그만하고 잘까 1 0
흐름이 끊겨버렷네
-
세기말 수능 1 1
2000학년도 대학수학능력시험
-
강은양t 0 0
현역 고3이고 작년까지 모고 3~4등급 나왔는데 지금부터 강은양t 들으려고 합니다....
-
2시열차 1 0
출발
-
지금 강민철 현강 다니고 있는데 저랑 너무 안맞는 느낌이 심하게 들어서...
-
뭘 해야하나요 0 0
이번에 고등학교 2학년 된 이공계 지망하는 지방 일반고학생입니다. 생기부를 제대로...
-
이게 오르비를 재밌게 오래하려면 10 4
수험생활을 지속해야 함
-
에ㅔㅔㅔㅔㅔㅔㄴ들리스레인ㄴㄴ 0 1
폴온마이헐트 코코로노 키즈니ㅣㅣㅣ
-
내 이상형 중단발에 속눈썹 1 0
-
우와 보추야동 많이떴다 2 2
보다자야지
-
심심한데 무물보 5 0
응애 나 아가학생
-
본인 물1 점수 꼬라지 0 1
3모 48점 (99) 5더프 47점인가였는데 시험이 어려웠어서 전국석차 30등쯤...
-
오후8시부터자다가깼더니 1 0
다시잠이안오네.. 비상..!!
-
생각나는구나
-
ㅇㄴ근데 0학점 패논패과목을 오ㅑㄹ케 빡세게시켜 0 0
그냥 좀 봐주면 안되나
-
시발점 한 다음 스블 0 0
고2이고대수 개념원리, 쎈, 고쟁이 했습니다개정 시발점 사놓은 게 있어서...
-
러셀 외부생 더프 성적표 0 0
문자로 발송되나요?? 아님 직접 찾으러 가야햐나요??
-
원래 사람은 별을 쫓아 달려갈 때 가장 빛나는 법이여설령 닿지 못할지라도적어도 내...
-
저걸 어케 함 진짜 와.. 원과목 중 생1만 수능공부로 안해봤는데 안하길잘한듯
-
시발 나 개폐급임 2 1
조별과제 하는족족 내것만 교수님 피드백 나오고 술처먹다 팀원들한테 자료 제출 개늦게하고 자퇴마렵다
-
딱 한 마디만 하고 자러감 9 3
미쿠 ㅈㄴ 예뻐어~~~~~~~~~~~~
-
중앙대 가기 59일차 3 1
안녕하세요 중앙대29학번 부산사나이 이동현입니다 음 오늘이 벌써 59일차군요...
-
이제 좀 자보실까 11 1
음음
-
리젠존나느리네 1 0
오르비망함?
-
너무멍청해짐 1 0
ㅜㅜㅜㅜㅜ
-
생윤 진짜 1도 모르는 쌩노베인데 누구 듣는 게 좋을가여
-
15살과 엄마 그 사이는 2 0
뭐라함 급함
-
대신 연세대 가겠다 선언
-
작년 10모 20번 0 0
이렇게 푸는거 맞나..?
-
위키하우 도움 ㅈㄴ 안되네 6 0
ㅗㅗㅗㅗㅗㅗ
-
새르비 할수록 4 0
헛소리가 늘어가는듯
-
아니 난 신라면 쳐돌이라 5 0
신라면만 먹는데….
-
내가사실은생명과학을좋아함 1 0
수능말고 그냥생명과학
-
. 11 1
-
님들 최애 과목 말해보셈 7 0
난 국어
첫번째 댓글의 주인공이 되어보세요.