0
edits
Changes
no edit summary
<h4>알고리즘의 요건</h4>
<ul>
<li>입력 : 외부에서 제공되는 자료가 0개 이상 존재한다. </li>
<li>출력 : 적어도 1개 이상의 결과를 내어야 한다. </li>
<li>명확성 : 각 명령어들은 명확하고 모호하지 않아야 한다. </li>
<li>유한성 : 알고리즘의 명령어들은 유한번의 수행후에 마쳐야 한다. 이것은 수행 시간의 현실적인 유한성을 의미한다. </li>
<li>효과성 : 모든 명령어들은 원칙적으로 종이와 연필만으로 수행될 수 있는 기본적인 것이어야 한다. </li>
</ul>
<p> </p>
<h4>알고리즘의 연구분야</h4>
<ul>
<li>고안 : 완벽한 자동화를 통한 알고리즘의 개발은 거의 불가능한다. 따라서 이미 증명된 유용한 알고리즘들을 습득함으로써 보다 유용한 알고리즘을 개발하는데 그 의미가 있다. </li>
<li>검증 : 고안된 알고리즘이 합당한 입력값에 대하여 올바른 결과를 계산해 내는지를 밝히는 절차가 필요하다. 알고리즘 검증은 고안된 알고리즘이 프로그래밍 언어와는 독립적으로 올바르게 작동할 수 있음을 보여주는데 그 목적이 있다. </li>
<li>분석 : 고안된 알고리즘을 실행하기 위해 필요한 실행시간과 필요로 하는 기억장치를 결정하는 것이다. </li>
<li>테스트 : 디버깅, 성능분석 </li>
</ul>
<p> </p>
<h4>알고리즘의 분석 기준</h4>
<ul>
<li>정확성 : 적당한 입력에 대해서 유한 시간내에 올바른 답을 산출하는가를 판단. </li>
<li>작업량 : 전체 알고리즘에서 수행되는 가장 중요한 연산들만으로 작업량을 측정. 해결하고자 하는 문제의 중요 연산이 여러개인 경우에는 각각의 중요 연산들의 합으로 간주하거나 중요 연산들에 가중치를 두어 계산 </li>
<li>기억 장소 사용량 </li>
<li>단순성 </li>
<li>최적성 : 그 알고리즘보다 더 적은 중요 연산을 수행하는 알고리즘은 없는가? 최적이란 가장 <strong>잘 알려진</strong> 이 아니라 <strong>가장 좋은</strong>의 의미이다. </li>
</ul>
<p> </p>
<h4>평균과 최악의 경우 분석</h4>
<ul>
<li>1 : 입력 자료의 수에 관계없이 일정한 실행 시간을 갖는 알고리즘 </li>
<li>log N : 주로 커다란 문제를 일정한 크기를 갖는 작은 문제로 쪼갤 때 나타나는 유형 </li>
<li>N : 입력 자료에 따라 선형적으로 실행 시간이 걸리는 경우 </li>
<li>N log N : 커다란 문제를 독립적인 작은 문제로 쪼개어 각각에 대해 독립적으로 해결하고, 나중에 다시 그것들을 하나로 모으는 경우에 나타남. </li>
<li>N<sup>2</sup> : 이중 루프 내에서 입력 자료를 처리하는 경우에 나타남. </li>
<li>N<sup>3</sup> : 삼중 루프. </li>
<li>2<sup>n</sup> : 가끔씩 알고리즘을 처음 개발할 때 나타날 수 있는 수행시간.. </li>
</ul>
<ul>
<li>O 표기법 </li>
<li>Ω 표기법 </li>
<li>θ 표기법 </li>
</ul>
<div class="printfooter"><strong>[<a href="http://ko.wikipedia.org/wiki/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98">http://ko.wikipedia.org/wiki/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98</a> 출처]</strong></div>
<ul>
<li>입력 : 외부에서 제공되는 자료가 0개 이상 존재한다. </li>
<li>출력 : 적어도 1개 이상의 결과를 내어야 한다. </li>
<li>명확성 : 각 명령어들은 명확하고 모호하지 않아야 한다. </li>
<li>유한성 : 알고리즘의 명령어들은 유한번의 수행후에 마쳐야 한다. 이것은 수행 시간의 현실적인 유한성을 의미한다. </li>
<li>효과성 : 모든 명령어들은 원칙적으로 종이와 연필만으로 수행될 수 있는 기본적인 것이어야 한다. </li>
</ul>
<p> </p>
<h4>알고리즘의 연구분야</h4>
<ul>
<li>고안 : 완벽한 자동화를 통한 알고리즘의 개발은 거의 불가능한다. 따라서 이미 증명된 유용한 알고리즘들을 습득함으로써 보다 유용한 알고리즘을 개발하는데 그 의미가 있다. </li>
<li>검증 : 고안된 알고리즘이 합당한 입력값에 대하여 올바른 결과를 계산해 내는지를 밝히는 절차가 필요하다. 알고리즘 검증은 고안된 알고리즘이 프로그래밍 언어와는 독립적으로 올바르게 작동할 수 있음을 보여주는데 그 목적이 있다. </li>
<li>분석 : 고안된 알고리즘을 실행하기 위해 필요한 실행시간과 필요로 하는 기억장치를 결정하는 것이다. </li>
<li>테스트 : 디버깅, 성능분석 </li>
</ul>
<p> </p>
<h4>알고리즘의 분석 기준</h4>
<ul>
<li>정확성 : 적당한 입력에 대해서 유한 시간내에 올바른 답을 산출하는가를 판단. </li>
<li>작업량 : 전체 알고리즘에서 수행되는 가장 중요한 연산들만으로 작업량을 측정. 해결하고자 하는 문제의 중요 연산이 여러개인 경우에는 각각의 중요 연산들의 합으로 간주하거나 중요 연산들에 가중치를 두어 계산 </li>
<li>기억 장소 사용량 </li>
<li>단순성 </li>
<li>최적성 : 그 알고리즘보다 더 적은 중요 연산을 수행하는 알고리즘은 없는가? 최적이란 가장 <strong>잘 알려진</strong> 이 아니라 <strong>가장 좋은</strong>의 의미이다. </li>
</ul>
<p> </p>
<h4>평균과 최악의 경우 분석</h4>
<ul>
<li>1 : 입력 자료의 수에 관계없이 일정한 실행 시간을 갖는 알고리즘 </li>
<li>log N : 주로 커다란 문제를 일정한 크기를 갖는 작은 문제로 쪼갤 때 나타나는 유형 </li>
<li>N : 입력 자료에 따라 선형적으로 실행 시간이 걸리는 경우 </li>
<li>N log N : 커다란 문제를 독립적인 작은 문제로 쪼개어 각각에 대해 독립적으로 해결하고, 나중에 다시 그것들을 하나로 모으는 경우에 나타남. </li>
<li>N<sup>2</sup> : 이중 루프 내에서 입력 자료를 처리하는 경우에 나타남. </li>
<li>N<sup>3</sup> : 삼중 루프. </li>
<li>2<sup>n</sup> : 가끔씩 알고리즘을 처음 개발할 때 나타날 수 있는 수행시간.. </li>
</ul>
<ul>
<li>O 표기법 </li>
<li>Ω 표기법 </li>
<li>θ 표기법 </li>
</ul>
<div class="printfooter"><strong>[<a href="http://ko.wikipedia.org/wiki/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98">http://ko.wikipedia.org/wiki/%EC%95%8C%EA%B3%A0%EB%A6%AC%EC%A6%98</a> 출처]</strong></div>