알고리즘

박우진·2021년 7월 11일
0

알고리즘

목록 보기
1/1

요즘 도서관은 전자도서관으로 모바일로 볼수있다.
도서 종류가 적긴하지만 수학 공부할때 문제집 여러개 푼 것처럼
여러가지 계속 읽으면 될 것 같다.

알고리즘

알고리즘은 기원전 3세기경에 수학자 유클리드가 편찬한 책에서 발견할 수 있었다고 한다.(어원은 아니다 어원은 8~9세기 알 콰리즈 이다)
외우진 않을꺼지만 흥미롭다!! 기원전이라니!!

뜻은 '문제를 풀기 위한 절차'라고 한다.

조건

알고리즘이라 정의하기 위한 조건이 있다.

  • 범용성

    어떤 환경(작업자 포함)에서도 같은 결과를 낼 수 있어야 한다.
    알고리즘에 추상적인 표현이 있다면, 그것은 작업자마다 다른 해석의 여지가 있기에 알고리즘이라 할 수 없다.
  • 정당성

    주어진 문제에 대한 올바른 출력을 얻어야한다.
  • 결정성

    같은 입력을 했을때 같은 결과가 나와야한다.
  • 유한성

    과정이 무한하다면 결과를 얻을 수 없다. 즉, 문제를 풀 수가 없다. 목적을 달성 못한 것이다.
  • 정지성

    알고리즘은 언젠가 정지해야한다는데 유한성이랑 다를 바 없어보인다.

계산량

알고리즘의 실행 시간을 판단하기 위해 '계산량'이라는 지표를 사용한다.
계산량은 시간 계산량공간 계산량으로 나눌 수 있다.

  • 시간 계산량 : 필요 처리시간 양
  • 공간 계산량 : 필요 메모리 양
    통상적으로 시간 계산량을 의미한다.

프로그래밍에서 시간은 실행 환경(컴퓨터, 통신상태)에 따라 달라지기 때문에 시간이 아니라, 스탭(명령)의 개수를 기준으로 한다. 이는 실행 환경에 영향을 받지 않는 절대값이기 때문이다.

조합적 확산(combinatorial explosion)
처리할 데이터의 조합이 너무 방대하여 스텝의 개수가 너무 많아지는 경우를 뜻한다.

big O 표기법

시간 계산량 표기방법중 하나이다.
나중에 한번 정리할꺼긴 한데 일단 나왔으니 정리한다.

기법정의
O(1)데이터 개수와 상관없이 스텝의 개수가 일정
O(n)데이터 개수가 n일때 스텝의 개수가 데이터 개수에 비례
O(log n)스탭의 개수가 2를 스텝의 개수만큼 제곱한 갑의 정수 배
O(n2)스탭의 개수가 데이터 개수의 제곱에 비례
profile
다 하고 싶은 개발자

0개의 댓글