알고리즘(Algorithm)

프최's log·2020년 9월 20일
0

study

목록 보기
9/59
post-thumbnail
post-custom-banner

1.알고리즘(algorithm)

  • 문제를 해결하기 위한 여러 동작들의 모임
  • 어떤 기능이 일어나기 위해 내재된/독립된 단계적 명령어들의 집합

1) 알고리즘의 조건

  • 입력 : 외부에서 제공되는 자료가 0개 이상 존재
  • 출력 : 적어도 2개 이상의 서로 다른 결과 도출
  • 명확성 : 모호하지 않은 명령어로 구성되며 수행 과정이 명확해야 함 (→ 정밀/유일성)
  • 유한성(종결성) : 유한 번의 명령어를 수행 후(유한 시간 내) 종료
  • 효율성 : 모든 과정은 명백하게 실행가능(검증가능) 한 것이어야 한다. (=타당성)

2) 알고리즘 전략세우기(Pseudo-code)

  • 일반적인 알고리즘 순서
    ① 문제 정의 → ② 모델 고안 → ③ 명세 작성 → ④ 설계 → ⑤ 검증 → ⑥ 분석(복잡도 등) → ⑦ 구현 → ⑧ 테스트 → ⑨ 문서화

  • 자연어 ↔ 프로그래밍 언어 사이의 방식을 단계별로 기록

    ⅰ. 프로그램의 진행 과정에 조금이라도 관심이 있는 사람이라면, 이 의사 코드를 읽고 이해할 수 있을까?
    ⅱ. 이 의사 코드는 실제 코드로 쉽게 바뀔 수 있을까?
    ⅲ. 과정을 진행하는데 필요한 단계 중, 빠뜨린 것은 없나?
    ⅳ. 의사 코드를 읽는 사람들이 이해할 수 있는 용어들을 사용했는가?

작성 Tip

  • 한 줄에 하나의 명령만 적습니다.
  • 어떻게 코드로 표현할지 적지 말고, 하고 싶은 이야기가 뭔지 기록합니다.
  • 어떤 것도 상상에 맡기지 않고 기재합니다.
  • 표준적인 프로그래밍 구조를 따릅니다.

wikiHow 에서 소개하는 의사코드
Why is pseudocode useful to programmers?

3) 좋은 알고리즘의 분석 기준

Correctness : 문제를 해결하는가
Efficiency : 이를 효과적으로 하는가

  • 정확성
  • 작업량
  • 기억 장소 사용량
  • 최적성
  • 복잡도(빅O 표기법=점근표기법)

출처
오픈튜토리얼스-알고리즘
위키디피아-알고리즘
MDN-알고리즘

profile
차곡차곡 쌓아가는 나의 개발 기록
post-custom-banner

0개의 댓글