2016-11-21 7 views
3

私はPseudocode/Algorithmsでテストを行いました。アルゴリズムには必ず出力が必要ですか?

真/偽の文がありました:An Algorithm must always have an output.

私は私の答えとしてFを置くが、先生は間違ってそれをマーク。

Iは[パイソン]考える:

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)は実行にかかる時間に過ぎないと言う人もいます。それで、いいえ、出力が必要ないと思います。 – Jiminion

答えて

10

"アルゴリズムには、1つまたは複数の出力、つまり入力と特定の関係を持つ量があります"(Knuth 1973:5)。

--Reference

1

これは、アルゴリズムは直感的に定義されているという単純な事実のために、かなり複雑なトピックです。たとえば、Turing-Machineとして実装できるものはアルゴリズムであるともいえます。しかし、Turing-Machinesの言語は再帰的に列挙できます。あるいは、別の言い方をすると、Turing-Machineは終了する必要がなく、出力を生成しません(マシンが終了した後に出力をテープに記録すると定義した場合)。

一方、提示されたアルゴリズムは何かを出力します。アルゴスのポイントは、出力が変数(xまたはy)に直接格納されていることです。アルゴリズムは、終了時、またはプロセス中でさえ、何かを出力します。しかし、必ずしも出力が生成されたり、コンソールに書き込まれたりする必要はありません。

これを要約すると:アルゴリズムが終了し、同様に直接どこか別の変数に格納したりすることができ、出力を生成し、どちらか
- でも void -functionにおける副作用かもしれません。アルゴリズムは終了せず、出力を生成しません。しかし、私はその点は疑問点をかなり超えていると思います。

関連する問題