반응형
1. 알고리즘
어떠한 문제를 해결하기 위해 정해놓은 일련의 절차를 말한다.
올바른 알고리즘이란 ' 어떠한 경우에도 실행 결과가 똑같이 나와는 것 ' 을 말한다. 만약 알고리즘의 실행 결과가 어떤 경우에는 맞고 어떤 경우에는 틀리면 올바른 알고리즘이라고 할 수 없다.
def max3(a,b,c):
maximum = a
if b > maximum: maximum = b
if c > maximum: maximum = c
return maximum
print(f'max3(3,2,1) = {max3(3,2,1)}')
print(f'max3(3,2,2) = {max3(3,2,2)}')
print(f'max3(3,1,2) = {max3(3,1,2)}')
print(f'max3(3,2,3) = {max3(3,2,3)}')
print(f'max3(2,1,3) = {max3(2,1,3)}')
# 어떠한 내용을 넣어도 같은 내용이 나오며
# 결과를 예측할 수 있는 알고리즘이 가장 좋은 알고리즘
2. 알고리즘의 조건
- 입력 : 알고리즘은 0 또는 그 이상의 외부에서 제공된 자료가 존재한다.
- 출력 : 알고리즘은 최소 1개 이상의 결과를 가진다
- 명확성 : 알고리즘의 각 단계는 명확하여 애매함이 없어야 한다.
- 유한성 : 알고리즘은 단계들을 유한한 횟수로 거친 후 문제를 해결하고 종료해야 한다. 알고리즘의 한 단계 이후 m의 값은 n 보다 작으며, m != 0 이면, n 의 값은 다음 번 단계에서 줄어든다
- 효과성 : 알고리즘의 모든 연산들은 사람이 종이와 연필을 이용하여 유한한 시간 안에 수행할 수 있을 정도로 충분히 단순해야 한다
3. 좋은 알고리즘의 분석 기준
- 정확성 : 적당한 입력에 대해서 유한한 시간 내에 올바른 답을 산출하는가를 판단
- 작업량 : 전체 알고리즘에서 수행되는 가장 중요한 연산들만으로 작업량을 측정, 해결하고자 하는 문제의 중요 연산이 여러개인 경우에는 각각의 중요 연산들의 합으로 간주하거나 중요 연산들에 가중치를 두어 계산
- 기억 장소 사용량 : 수행에 필요한 저장 공간
- 최적성 : 그 알고리즘보다 더 적은 연산을 수행하는 알고리즘은 없는가? 최적이란 가장 '잘 알려진 ' 이 아니라 '가장 좋은' 의 의미이다.
- 복잡도. (점근 표기법 : Big-O Notation)
4. 참고 링크
opentutorials.org/course/2471/13912
ko.wikipedia.org/wiki/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98
반응형
'Book > 자료구조와 함꼐 배우는 알고리즘 입문 - 파이썬' 카테고리의 다른 글
3. 검색 알고리즘 (0) | 2021.06.09 |
---|---|
드모르간의 법칙 간략 정리 (0) | 2021.04.02 |
1-2. 반복하는 알고리즘 (0) | 2021.03.31 |