컴퓨터 프로그래밍과 알고리즘
- 부울 대수(Boolean Algebra)
사람의 생각은 조립되는 것이므로, 복잡한 생각도 단순한 생각의 조립으로 구성된다는 논리수학.
인간의 표현을 기호(AND, OR, NOT 등의 논리연산자)를 사용하여 대수적으로 취급하도록 한 것.
- 전기 스위치 회로를 표현하는 데 부울 대수가 적합하다는 클로드 섀넌의 논문(1937)은 전기 회로 기술을 디지털 논리 회로 분야로 발전시킴.
- 튜링 기계 (Turing machine)
앨런 튜링이 “모든 수학 문제를 풀 수 있는 알고리즘이 있는가?” 라는 질문에 답하기 위해 1936년에 소개한 개념.
튜링은 모든 수학 문제는 기계로 형상화 할 수 있고, 가장 기본적인 동작의 합으로 표현 할 수 있다고 생각했다.
- 튜링 기계의 작동 순서
테이프에서 읽고
이전 입출력 헤드의 값을 읽은 후에
제어 장치의 규칙에 따라 연산을 하고
연산 내용이 테이프와 입출력 헤드에 영향을 준다.
=> 이는 현대 컴퓨터의 작동 순서와 완전히 같다.
컴퓨터 프로그래밍이란?
- 프로그래밍이란 컴퓨터 용어가 아니며, 일반적으로 사용되는 용어이다.
- 프로그래밍은 프로그램을 기획하고 작성하는 과정을 말한다.
- 컴퓨터 프로그래밍이란, 컴퓨터로 수행해야 하는 작업을 단위 작업으로 분류하고 처리 순서(알고리즘)을 정하는 과정을 말한다.
- 단위 작업이란 개발자가 프로그래밍을 위하여 사용할 수 있는 최소 단ㅁ위로, 더 이상 쪼개면 의미가 없는 작업이다.
- 코딩이란, 알고리즘(단위 작업의 처리 절차)을 컴퓨터가 알 수 있는 언어로 바꾸어 작성하는 것이다.
알고리즘이란?
- 주어진 문제를 해결하기 위한 절차. 주어진 문제를 단위 작업으로 나누어, 문제를 해결하기 위한 처리 순서
알고리즘의 종류
- 정렬(Sort) : 한 줄로 모여있는 데이터를 어떤 기준으로 배치하는 방법. (단순/선택/쉘/퀵 정렬 알고리즘)
- 검색(Search) : 데이터 중 원하는 것을 찾아내는 방법. (순차/이진 검색 알고리즘)
- 문자열 패턴 매칭(SPM; String Pattern Matching) : 주어진 문자열에서 지정한 문자열과 일치하는 부분을 찾아내는 방법 (문자열 검색 / KMP 검색 / BM 검색 알고리즘)
- 계산(Calculation) : 수학이나 공학의 문제 해결을 위한 방법. (데이크스트라 알고리즘=최단 경로 찾기 / 가우스 소거법=방정식 풀기)
알고리즘의 구조화
- 전체를 부분으로 나누어 구조화한 후에 알고리즘을 구성하는 요령.
- 클래스 안에 여러개의 메소드가 있는 것과 마찬가지.
출처 : 그림으로 정리한 알고리즘과 자료구조