본문 바로가기
개발기본지식/ETC

알고리즘이란

by GeekCode 2022. 2. 25.
반응형

알고리즘의 정의

어떠한 문제를 해결하기 위한 여러 동작들의 모임을 말합니다.

위키백과에서는 아래와 같이 정의합니다.

수학과 컴퓨터 과학, 언어학 또는 관련분야에서 어떠한 문제를 해결하기 위해 정해진 일련의 절차나 방법을 공식화한 형태로 표현한 것.

요약하자면 어떠한 일을 해결하려는 방법과 절차 라는 말입니다.

  • 언제가는 끝나야한다는 유한성
  • 작동이 일어나게 하는 단계적 집합
  • → 연산, 데이터 진행 또는 자동화된 추론을 형성

알고리즘의 단계별 설명

  1. 문제정의 : 현실세계의 문제를 컴퓨터를 이용하여 풀 수 있도록 입력과 출력의 형대로 정의
  2. 알고리즘 설명 : 문제를 해결하기 위한 단계를 차례대로 설명
  3. 정확성 증명 : 항상 올바른 답을 내고 정상적으로 종료되는지 증명
  4. 성능 분석 : 수행시간이나 사용공간에 대한 알고리즘의 성능을 비교하기 위한 분석

알고리즘의 조건

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

알고리즘의 구조(요소)

  1. Sequence: 순차적으로 수행한다.
  2. Decision(Selection): 특정 조건에 따라 수행을 달리한다.
  3. Repetition: 수행을 1회 이상 반복한다.

알고리즘의 표현방법

  1. 자연어
  2. 프로그래밍 언어
  3. 순서도
    • 순서도 예시

좋은 알고리즘의 조건

  • 낮은 공간 복잡도 (Space Complexity) → 총 저장공간의 양
  • 낮은 시간 복잡도 (Time Complexity) → 총 소요시간

알고리즘의 질적인 차이는 수행시간과 리소스 사용량에 많은 차이를 만듭니다.

알고리즘은 결코 완벽하지 않음

워싱턴대 컴퓨터과학교수인 페드로 도밍고는 알고리즘은 인간과 같은 결함이 숨어있다고 지적합니다.

그 큰 요인중 하나는 편견입니다. 인간과 달리 기계학습을 이용한 알고리즘은 편견이 없다고 생각하기 쉽지만, 현실은 그 반대로 학습에 사용된 데이터 자체에 편견이 포함되었을 경우, 목적점이 이미 지정된 환경이 설정되어 버릴 수 있다고 합니다. 예를 들어, 미국의 의료시스템은 인종에 대한 정보가 포함되어 있지 않았지만, 시스템이 참조하는 의료비의 데이터가 한쪽으로 치우쳐 있었기 때문에 결과적으로 인종 편견을 제거하는 것이 불가능할 정도로 인종 차별이 발생했던 것이 문제가 되었습니다.

 

 

순서도 그리기

대표적인 기호

단말 기호 : 순서도의 시작과 끝을 알려주는 기호

처리 기호 : 함수외에 다른문장은 처리 기호로 표시 ex ) 연산

입출력 기호 : scanf 처럼 입력받는 함수 혹은 print 처럼 출력하는 함수

준비 기호 : 코딩할때 int num; 이런식으로 변수를 선언하고 초기화값을 설정 할때 사용

의사 결정 : if문과 switch 등 변수의 Bool 혹은 Value 에따라 다른 조건처리를 실행시 사용

for문 : for문을 요걸 쓰시면되요, 다른방법도 있지만 요게 편리해요.

 


순서도를 웹으로 그릴수 있는 사이트

https://www.draw.io

반응형

'개발기본지식 > ETC' 카테고리의 다른 글

개발공부하기  (0) 2021.11.27