알고리즘 기법

Algorithmic technique

수학과 컴퓨터 과학에서 알고리즘 기법[1] 프로세스나 계산을 구현하기 위한 일반적인 접근법이다.[2]

일반기법

알고리즘을 설계하고 구성하는 검증된 방법이나 프로세스를 제공하는 몇 가지 널리 알려진 알고리즘 기법이 있다. 목적에 따라 다른 기법을 사용할 수 있으며, 여기에는 검색, 정렬, 수학 최적화, 제약 조건 만족도, 분류, 분석예측이 포함될 수 있다.[3]

폭력

브루트 포스는 해결책을 찾기 위해 가능한 모든 결과를 평가하는 간단하고 철저한 기술이다.[4]

분열시켜 정복하다.

분열과 정복 기술은 복잡한 문제들을 반복적으로 더 작은 하위 문제들로 분해한다. 그런 다음 각 하위 문제를 해결하고 이러한 부분적인 해결책을 재조합하여 전체적인 해결책을 결정한다. 이 기술은 종종 검색과 분류에 사용된다.[5]

동적

동적 프로그래밍은 복잡한 문제가 반복적으로 더 작고 중복되는 해결 하위 문제로 분해되는 체계적인 기법이다. 동적 프로그래밍은 메모화라는 최적화 기법을 사용하여 겹치는 하위 문제의 결과를 로컬로 저장한다.[6]

진화론

진화적 접근방식은 후보 솔루션을 개발한 다음 생물학적 진화와 유사한 방식으로 이들 솔루션의 일련의 무작위 수정 또는 조합을 수행하고 피트니스 기능에 대해 새로운 결과를 평가한다. 추가 반복에 가장 적합하거나 유망한 결과를 선택하여 전체 최적 솔루션을 달성한다.[7]

그래프 통과

그래프 통과그래프로 나타낼 수 있는 문제에 대한 해결책을 찾는 기법이다. 이 접근방식은 광범위하며 깊이 우선 검색, 너비 우선 검색, 나무 통과 및 지역 최적화를 포함할 수 있는 많은 특정 변형을 포함하며, 최소가 아니거나 불가능하다고 판단할 수 있는 검색 공간을 제외한다. 이러한 기법은 최단 경로와 제약 만족도 문제를 포함한 다양한 문제를 해결하기 위해 사용될 수 있다.[8]

탐욕스러운

탐욕스러운 접근법은 가능한 결과 집합에서 가능한 한 결과를 평가하는 것으로 시작하고, 그 결과에 대한 개선을 현지에서 검색한다. 지역적 개선이 발견되면 이 과정을 반복하고 이 지역적 최적화에 가까운 추가 개선사항을 현지에서 다시 검색한다. 탐욕스러운 기법은 일반적으로 구현이 간단하며, 이러한 일련의 결정들은 검색이 시작된 장소에 따라 지역적 최적점을 찾는 데 사용될 수 있다. 그러나 탐욕스러운 기법은 가능한 결과의 전체 집합에 걸쳐 전지구적 최적점을 식별하지 못할 수 있다.[9]

휴리스틱

경험적 접근법은 최적화가 보장되지 않는 즉각적인 해결책에 도달하기 위한 실용적인 방법을 사용한다.[10]

학습

학습 기법은 명시적 프로그래밍 없이 분류와 분석을 수행하기 위해 통계적 방법을 사용한다. 감독형 학습, 무감독형 학습, 강화학습, 딥러닝 기법이 이 범주에 포함된다.[11]

수학적 최적화

수학적 최적화는 함수를 최소화하거나 최대화하여 수학적 최적값을 계산하는 데 사용할 수 있는 기법이다.[12]

모델링.

모델링은 실제 문제를 해결책의 도움을 주는 프레임워크나 패러다임으로 추상화하는 일반적인 기술이다.[13]

재귀

재귀(recursion)는 정의된 결과를 가진 하나 이상의 기본 사례로 작업에서 점진적으로 단순한 부분으로 자신을 호출하는 알고리즘을 설계하기 위한 일반적인 기법이다.[14][15]

참고 항목

메모들

  1. ^ "technique Definition of technique in English by Oxford Dictionaries". Oxford Dictionaries English. Retrieved 2019-03-23.
  2. ^ Cormen, Thomas H.; Leiserson, Charles E.; Rivest, Ronald L.; Stein, Clifford (2001). Introduction To Algorithms. MIT Press. p. 9. ISBN 9780262032933.
  3. ^ Skiena, Steven S. (1998). The Algorithm Design Manual: Text. Springer Science & Business Media. ISBN 9780387948607.
  4. ^ "What is brute force? Webopedia Definition". www.webopedia.com. 30 March 1998. Retrieved 2019-03-23.
  5. ^ Bentley, Jon Louis; Shamos, Michael Ian (1976). "Divide-and-conquer in Multidimensional Space". Proceedings of the Eighth Annual ACM Symposium on Theory of Computing. STOC '76. New York, NY, USA: ACM: 220–230. doi:10.1145/800113.803652. S2CID 6400801.
  6. ^ Bellman, Richard (1966-07-01). "Dynamic Programming". Science. 153 (3731): 34–37. Bibcode:1966Sci...153...34B. doi:10.1126/science.153.3731.34. ISSN 0036-8075. PMID 17730601. S2CID 220084443.
  7. ^ Coello Coello, Carlos A. (1999-08-01). "A Comprehensive Survey of Evolutionary-Based Multiobjective Optimization Techniques". Knowledge and Information Systems. 1 (3): 269–308. doi:10.1007/BF03325101. ISSN 0219-3116. S2CID 195337963.
  8. ^ Kumar, Nitin; Wayne, Kevin (2014-02-01). Algorithms. Addison-Wesley Professional. ISBN 9780133799101.
  9. ^ "greedy algorithm". xlinux.nist.gov. Retrieved 2019-03-23.
  10. ^ "heuristic". xlinux.nist.gov. Retrieved 2019-03-23.
  11. ^ Witten, Ian H.; Frank, Eibe; Hall, Mark A.; Pal, Christopher J. (2016-10-01). Data Mining: Practical Machine Learning Tools and Techniques. Morgan Kaufmann. ISBN 9780128043578.
  12. ^ Marler, R.T.; Arora, J.S. (2004-04-01). "Survey of multi-objective optimization methods for engineering". Structural and Multidisciplinary Optimization. 26 (6): 369–395. doi:10.1007/s00158-003-0368-6. ISSN 1615-1488. S2CID 14841091.
  13. ^ Skiena, Steven S. (1998). The Algorithm Design Manual: Text. Springer Science & Business Media. ISBN 9780387948607.
  14. ^ "recursion". xlinux.nist.gov. Retrieved 2019-03-23.
  15. ^ "Programming - Recursion". www.cs.utah.edu. Retrieved 2019-03-23.

외부 링크