2016-11-21 2 views
3

그래서 Pseudocode/Algorithms에 대한 테스트를 수행했습니다. 알고리즘에 반드시 출력이 있어야합니까?

은 참/거짓 진술이 있었다 :

An Algorithm must always have an output. 내가 내 대답으로 F을 추가하는 듯했으나 선생님은 잘못을 표시했다.

나는 [파이썬] 생각 :

x = 100/4

위의 코드는 x을 정의합니다. 아무것도 출력하지 않습니다. (? 그것은 알고리즘으로 간주 될 수 없습니다)

내가 생각하는 또 다른 예였다

for x in x: y = 9999999999^9999999999/9999999

뭐 그런^가능하면 컴퓨터를 가열하고, 사용자 또는 무엇인가 등에 온기를 생산할 수 그. 정확히 아무것도 출력하지 않습니다.

+0

'x = 100/4'의 결과는'100/4'의 결과입니다. '알고리즘'은 나눗셈입니다. 'x'는 입력 및 출력 인수이기 때문에 할당의 결과는 흐리다. 출력은'x'이지만 값은 변경됩니다. – AndyG

+2

당신이 보여주는 것은 알고리즘이 아니라 단순한 문장입니다. 네 선생님이 다른 것을 의미했다고 생각해. 당신이 알고리즘을 디자인/개발할 때, 그것은 항상 목적을 위해, 즉 알고리즘 밖에서 보여줄 뭔가를하는 것을 의미합니다. 그것은 그것의 출력이 될 것입니다, 그것의 세계에 알고리즘의 효과. – FDavidov

+0

sleep (1)은 실행하는 데 걸리는 시간이라고 말하는 것의 'ouput'을 주장 할 수 있습니다. 따라서 출력이 필요하지 않습니다. – Jiminion

답변

10

"알고리즘에는 하나 이상의 출력, 즉 입력에 대해 지정된 관계가있는 양"이 있습니다 (Knuth 1973 : 5).

--Reference

1

이 알고리즘은 직관적으로 정의 단순한 사실에 대한 매우 복잡한 주제이다. 예를 들어 Turing-Machine으로 구현 될 수있는 모든 것이 알고리즘이기도합니다. 그러나 Turing-Machines의 언어는 재귀 적으로 열거 가능합니다. 또는 달리 말하면 Turing-Machine은 종료 할 필요가 없으므로 출력을 생성하지 않아도됩니다 (기계가 종료 된 후에 출력을 테이프에 표시하는 것으로 정의한 경우).

한편, 제시된 알고리즘은 결과를 출력합니다. 알 고스의 포인트는 출력이 변수 (x 또는 y)에 직접 저장된다는 것입니다. 알고리즘은 종료 될 때 또는 프로세스 중에 출력됩니다. 그러나 산출물이 반드시 콘솔에 쓰여지거나 쓰여질 필요는 없습니다.

이것을 요약하자면, 알고리즘은 종료하고도 직접적으로 어딘가에 변수에 저장하거나 할 수있는 출력을 생성하거나
- 심지어 void α- 함수에서 부작용이있을 수있다. 알고리즘이 종료되지 않아 출력을 생성하지 못할 수도 있습니다. 그러나 그 점은 질문의 요점을 훨씬 뛰어 넘는 것 같습니다.