본문

160809(화) - 알고리즘 for Java

알고리즘 for Java


알고리즘에 대해서 학부생일 때 보다 아주 쬐끔이라도 더 깊게 공부해보기 위하여 정리한다.

이미 알고있는 개념들에 대해서는 스킵하고 모르는것 위주로 나열되어 있다.




추상 데이터형(ADT : Abstract Data Type)

원시 데이터 : 시스템이 기본연산(덧셈, 뺄셈 등) 지원


사용자 정의 데이터 : 우리가 연산을 정의해야 한다.

- 실제로 사용될 때 구현될 수 있다.

- 보통의 사용자 정의 데이터형은 연산과 함께 정의된다.

- 문제를 푸는 과정을 단순화 시키기 위하여 "데이터구조 + 연산" 인 것을 "추상 데이터형"이라고 한다.



구성

1. 데이터의 선언

2. 연산의 선언


ex) 연결리스트, 스택, 큐, 우선순위 큐, 이진트리, 딕셔너리, Union, Find, 해시 테이블, 그래프 등



알고리즘

알고리즘은 주어진 문제를 풀기 위한 단계별 지시사항들이다.



수행시간 분석

문제의 크기(input의 크기)가 증가함에 따라 처리 시간이 얼마나 증가하는지를 분석



이상적인 알고리즘간의 분석

실행시간 : 컴퓨터에 따라서 실행 시간이 달라짐

실행된 구문의 수 : 언어나 개발자 스타일에 따라서 달라짐


※ 주어진 알고리즘의 수행 시간을 입력크기 n에 따른 함수 f(n)으로 표현하고 수행시간에 따라서 이 함수들을 비교



증가율

입력하는 값에 따라 수행시간이 증가하는 비율


※ 차수가 낮은 항들은 무시하고 가장 큰 증가율을 갖는 항을 근사치로 잡는다.



빅-오 표기법

- tight한 상한

- f(n) = O(g(n)) : n의 값이 클 때, f(n)의 상한이 g(n)

    n의 값이 클 때, f(n)에서 최대의 증가율이 g(n)


※ 목표는 "f(n)과 크거나 같은 최소의 증가율 g(n)을 찾는 것" !!!



'Architecture > 자료구조 및 알고리즘' 카테고리의 다른 글

161203(토) - 알고리즘 문제해결 전략  (0) 2016.12.03
160817(수) - 알고리즘 for Java [빅-오]  (0) 2016.08.17
160112P(화)  (0) 2016.01.12
160110P(일)  (0) 2016.01.11
160109P(토)  (0) 2016.01.10

공유

댓글