Well-defined computational procedures that takes a set of values as ''inputs'' and produces some set of values as ''outputs''. 잘 정의된 문제해결의 과정. DataStructure와 함께 ComputerScience에서 HowToSolveIt의 과정이다. 알고리즘개발에 있어서 중요한것은 ComputationalComplexity, AlgorithmicComplexity의 효과적인 감소에 있다. 알고리즘의 평가는 주로 worst-case analysis를 한다. 그 이유는 * 많은 알고리즘이 대부분의 실행에서 최악의 조건에 놓여진다. * 최상의 경우에는 똑같은 성능을 보인다. * 평균을 명확히 정의하는것조차 어렵다. * 최악보다 더 나쁘게 실행되지는 않을것이다. 가끔은 최악분석보다는 평균분석을 하는 경우도 있다. (QuickSort등의 무작위 알고리즘) 기본적인 알고리즘의 설계방법 * RandomizedAlgorithm * DivideAndConquer * DynamicProgramming * [[Recursion]] * GreedyAlgorithm * HeuristicAlgorithm * EvolutionaryAlgorithm [[Bioinformatics]] concerned Algorithms * BackwardAlgorithm * BaumWelchAlgorithm * ForwardAlgorithm * GeneticAlgorithm * MetropolisAlgorithm * NeedlemanWunschAlgorithm * NussinovRnaFoldingAlgorithm * ScfgNussinovRnaFoldingAlgorithm * SmithWatermanAlgorithm * ViterbiAlgorithm * ZukerAlgorithm * SpectralAlignment DataEncryption * [[MD5]] * [[RSA]] 추천도서 * MasteringAlgorithmWithCee * IntroductionToAlgorithms * ProgrammingPearls * DisciplineOfProgramming * ProgrammingChallenges 관련자료 * [[Python]]으로 만들어진 각종 알고리즘들 http://aspn.activestate.com/ASPN/Cookbook/Python?kwd=Algorithms * AlgorithmQuiz * [[http://www.ece.uci.edu/~chou/py02/python.html|Algorithm education in python]] * [[https://github.com/nryoung/algorithms|module of algorithms for Python]] ---- See also HowToStudyForProgrammer, EstimateOrderOfAlgorithm, SortAlgorithm