Algorithm? ¶
In mathematics and computer science an algorithm (the word is derived from the name of the Persian mathematician Al-Khwarizmi) is a finite set of well-defined instructions for accomplishing some task which, given an initial state, will terminate in a corresponding recognizable end-state (contrast with heuristic). Algorithms can be implemented by computer programs, although often in restricted forms; mistakes in implementation and limitations of the computer can prevent a computer program from correctly executing its intended algorithm.
The concept of an algorithm is often illustrated by the example of a recipe, although many algorithms are much more complex; algorithms often have steps that repeat (iterate) or require decisions (such as logic or comparison) until the task is completed. Correctly performing an algorithm will not solve a problem if the algorithm is flawed or not appropriate to the problem. For example, a hypothetical algorithm for making a potato salad will fail if there are no potatoes present, even if all the motions of preparing the salad are performed as if the potatoes were there.
Different algorithms may complete the same task with a different set of instructions in more or less time, space, or effort than others. For example, given two different recipes for making potato salad, one may have peel the potato before boil the potato while the other presents the steps in the reverse order, yet they both call for these steps to be repeated for all potatoes and end when the potato salad is ready to be eaten.
Certain countries, such as the USA, controversially allow some algorithms to be patented, provided a physical embodiment is possible (for example, a multiplication algorithm may be embodied in the arithmetic unit of a microprocessor).
수학그리고 컴퓨터공학에서 알고리즘(페르시아의 수학자 Al-Khwarizmi의 이름에서 유래된 단어이다.)은 어떤 문제를 해결하는데 있어서 잘 정의된 유한개의 명령어들의 집합을 말한다.
여기서 문제라는 것은 초기상태가 주어지고 그에 상응하는 인지가능한 종료상태에서 종료되는 문제를 말한다.
알고리즘은 컴퓨터 프로그램으로 구현이 될수있다. (비록 종종 제한적인 형태이지만) 구현상의 실수와 컴퓨터 자체의 한계가 컴퓨터 프로그램이 본래 의도된 알고리즘을 올바로 수행할 수 없게한다.알고리즘의 개념은 자주 레시피를 예로 묘사되곤한다. (비록 많은 알고리즘은 굉장히 더 복잡하지만;;) 알고리즘은 일이 끝날때까지 계산이나 비교와 같은 판단의 과정을 반복하거나 필요로한다. 만약 알고리즘에 결함이 있거나 문제에 맞지 않는다면 올바른 알고리즘을 수행하는 것이 문제를 해결하는 것은 아니다. 예를 들어 감자 샐러드를 만드는 가설 알고리즘은 현재 감자가 없다면 수행될 수 없다. 비록 감자가 그곳에 있는 것 처럼 샐러드를 준비하는 모든 행위를 했다 하더라도 말이다.
다른 알고리즘은 동일한 일은 다른 것 보다 시간, 공간, 노력이라는 측면에서 더욱 적거나 많은 명령들을 통해서 처리한다.
스터디 ¶
알고리즘 대회 ¶
- https://www.facebook.com/hackercup/ (1월)
- https://code.google.com/codejam (3월)
- http://codesprint.skplanet.com/ (7월)
- http://icpckorea.org/ (10월)
- https://www.codeground.org/ (10월)
- https://www.lgcodechallenger.com/ (11월)
- https://codeforces.com/ (매 주)
- https://www.topcoder.com/ (매 주)
- https://algospot.com/ (비정기)