프로그래밍-학습기록/알고리즘 & 자료구조

책 없이 배우는 자료구조와 알고리즘

leesche 2020. 7. 6. 23:05

좋은 알고리즘의 특징

  1. 정밀성 : 변하지 않는 명확한 작업 단계를 가져야 한다.
  2. 유일성 : 각 단계마다 명확한 다음 단계를 가져야 한다.
  3. 타당성 : 구현할 수 있고 실용적이어야 한다.
  4. 입력 : 정의된 입력을 받아들일 수 있어야 한다.
  5. 출력 : 답으로 출력을 내보낼 수 있어야 한다.
  6. 유한성 : 특정 수의 작업 이후에 정지해야 한다.
  7. 일반성 : 정의된 입력들에 일반적으로 적용할 수 있어야 한다.

알고리즘 개발의 정형적인 단계

문제 정의 → 모델 고안 → 명세 작성 → 설계 → 검증 → 분석 (복잡도 등) → 구현 → 테스트 → 문서화

분류

  1. 구현 : 재귀적 알고리즘, 연역적 알고리즘, 결정론적 알고리즘, 근사 알고리즘, 양자 알고리즘 등.
  2. 설계 : 무차별 대입 공격, 분할 정복 알고리즘, 그래프 순회, 분기 한정법, 확률적 알고리즘, 리덕션, 백트래킹 등.
  3. 최적화 문제 : 선형 계획법, 동적 계획법, 탐욕 알고리즘, 휴리스틱 함수 등.
  4. 이론적 분야 : 검색 알고리즘, 정렬 알고리즘, 수치 알고리즘, 그래프 알고리즘, 문자열 알고리즘, 암호학적 알고리즘, 기계 학습, 데이터 압축 등.\
출처