알고리즘(algorithm)

김성훈·2022년 1월 27일

개념

목록 보기
6/8

알고리즘

어떠한 문제를 해결하기 위한 여러 동작들의 모임
간단히 말하자면 알고리즘이란 어떤 일을 해결하려는 방법과 절차이다
또한 알고리즘은 유한성을 가지며 언젠가는 끝나야 하는 속성을 가지고 있다.

알고리즘의 조건

  • 입력: 외부에서 제공되는 자료가 0개 이상 존재해야 한다.
  • 출력: 적어도 2개 이상의 서로 다른 결과를 내어야 한다.
  • 명확성: 수행과정은 무엇을 하기위한 것인지 명확하게 정의되어야 한다.
  • 유한성: 알고리즘의 명령어대로 수행했을 때 처리된 종료되어야 한다.
  • 효율성: 모든 과정은 명백하게 실행가능한 것이어야 하며, 시간적 공간적 효율성을 가져야 한다.

알고리즘 생성 단계

상향식 설계:

  • 부품을 자세히 설계하고 그것들을 조합하여 전체 시스템 구성
  • 시스템 요소들을 먼저 제작하고 요소들을 결합하는 과정을 통해, 목표로 하는 전체 시스템에 접근해감

하향식 설계:

  • 단계적으로 상세해짐
  • 전체 시스템 개요을 정하고 점차 상세화 시킨다
  • 시스템 주요 요소를 정의하고 상세화를 반복한다

알고리즘의 표현/기술 방법

알고리즘은 크게 일상 언어, 의사 코드(Pseudo code), 순서도의 세 가지 방법으로 표현할 수 있다.

의사코드(슈도코드,pseudocode)는 프로그램을 작성할 때 각 모듈이 작동하는 논리를 표현하기 위한 언어. 특정 프로그램 언어의 문법에 따라 쓰인 것이 아니라, 일반적인 언어로 코드를 흉내 내어 알고리즘을 써놓은 코드를 말한다.

좋은 알고리즘?

알고리즘을 작성할 때는 효율성을 항상 고려해야 한다
알고리즘의 성능을 분석할 때에는 공간복잡도시간복잡도를 계산하게 된다

잡도의미
공간복잡도(space complexity)총 저장공간의 양
시간복잡도(time complexity)총 소요시간

공간복잡도는 알고리즘 실행에 필요한 메모리의 양을 말하고,
시간복잡도는 알고리짐의 수행시간을 말한다.

좋은 알고리즘은 공간복잡도와 시간복잡도가 작게 나온다!
하지만 요즘 두가지중 좀 더 중요하게 두고 보는것은 시간복잡도 이다.
공간에 대한 부분은 하드웨어의 발달로 인해 상대적으로 비중이 줄었기 때문이다

<출처>

탄탄이의 세상읽기
[알고리즘] 알고리즘의 개념과 기본 자료구조

profile
화이팅

0개의 댓글