자료구조, 알고리즘

AL01 - 알고리즘의 이해

0verc10ck 2018. 5. 7. 16:29
반응형

알고리즘(Algorithm)의 이해         

   알고리즘(Algorithm)은 문제를 해결하는 절차나 방법을 뜻한다.

즉, 어떠한 문제를 해결하는 방법이나 절차는 모두 알고리즘이라고 할 수 있는 것이다.

간단하게 예를 들어보자면 요리의 레시피, 프로그램의 설치 과정설명서, 가구 조립 설명서 등도 전부 

알고리즘이라고 말할 수 있다.


  알고리즘은 이하의 조건을 만족해야한다.

  • 입력(Input) - 알고리즘은 0 또는 그 이상의 외부에서 제공된 자료가 존재한다.

  • 출력(Output) - 알고리즘은 최소 1개 이상의 결과를 가진다.

  • 명확성(Definiteness) - 알고리즘의 각 단계는 명확하여 애매함이 없어야 한다.

  • 유한성(Finiteness) - 알고리즘은 단계들을 유한한 횟수로 거친 후 문제를 해결하고 종료해야 한다. 알고리즘의 한 단계 이후 m의 값은 n 보다 작으며, m!=0이면 n의 값은 다음 번 단계에서 줄어든다.

  • 효과성(Effectiveness) - 알고리즘의 모든 연산들은 사람이 종이와 연필을 이용하여 유한한 시간 안에 정확하게 수행할 수 있을 정도로 충분히 단순해야 한다.


알고리즘(Algorithm)의 표현 방법   

   알고리즘 표현방법에는 크게 4가지가 있다.

1. 자연어(Natural Language)를 이용한 서술적 표현

natural language에 대한 이미지 검색결과

  알고리즘(Algorithm)을 사람이 사용하는 자연어(Natrual Language)로 표현하는 방법이다.

자연어는(Natural Language)는 서술적이며, 사용하는 사람에 따라 표현이나 의미가 달라져 일관성이나 명확성을 유지하기 어렵다. 따라서 누구라도 이해하고 쓸수 있어야하는 알고리즘(Algorithm)을 표현하는데에는 한계가 있다.



2. 순서도(Flow Chart)를 이용한 도식화

flow chart에 대한 이미지 검색결과

  알고리즘(Algorithm)을 순서도(Flow Chart)를 이용하여 도식화 하는 방법이다. 순서도를 이용하면 명령의 흐름을 쉽게 파악할 수 있지만 복잡한 알고리즘을 표현하는 데는 한계가 있다.



3. 프로그래밍 언어(Programming Language)를 이용한 구체화


관련 이미지


  알고리즘(Algorithm)을 프로그램을 작성하는 C/C++, Java, Python등의 프로그래밍 언어(Programming Language)를 이용하여 표현하는 방법이다. 이방법을 이용하면 알고리즘(Algorithm)자체가 코드가 되기 때문에

알고리즘을 구체화 할 필요가 없다. 하지만 특정 프로그래밍 언어(Programming Language)로 작성하기 때문에 해당 언어를 알지 못하면 이해하기 어렵다. 또한 특정 언어를 사용함으로서 보편성이 떨어진다는 단점이 있다.



4. 의사코드(Pseudo Code)를 이용한 추상화

  3번 방법의 단점을 보완한 방법이다. 특정 언어로 표현하였을 때 보편성이 떨어지는 문제를 해결하기 위해 완전한 프로그래밍 언어(Programming Language)는 아니지만 언어의 형태를 갖춘 의사코드(Pseudo Code)를 사용하여 알고리즘을 표현한다

의사코드(Pseudo)는 프로그래밍 언어(Programming Language)가 아니기에 직접 실행 할 수는 없지만 형태가 일반적인 프로그래밍 언어와 유사하기 때문에 원하는 특정 언어로 변환(구제화)하기 용이하다

반응형

'자료구조, 알고리즘' 카테고리의 다른 글

DS04 - 포인터  (0) 2018.05.13
DS03 - 배열(Array)  (0) 2018.05.12
AL02 - 알고리즘의 성능 분석  (0) 2018.05.07
DS02 - 다양한 자료의 표현  (0) 2018.05.07
DS01 - 자료구조의 정의와 분류  (0) 2018.04.28