メモ編に対してですが、id:sumiiさんから、「アルゴリズム」という言葉の意味と使い方に関して、以下のコメントをいただきました:
通常の定義では、「アルゴリズム」といったら(特に断らなければ)任意の有効な入力について停止せねばならず、停止しない(かもしれない)場合は「セミアルゴリズム」といいます。もしそれ以外の理解をしている「プログラマ」がいるとしたら、単なる誤りか、少なくとも通常の定義とは異なるかと。
とまー、「プログラマ/技術者」ならば、「アルゴリズム」という言葉を、上記のごとく理解している(べき)だろう、ということです。
僕は週に何回か、プログラマ/技術者の方々と打ち合わせをします。そのときよく、「そこのロジックはどうなっているの?」とか「アルゴリズムはもう決まっています。」なんて会話になります。そんな打ち合わせの出席メンバーのような人々が「プログラマ/技術者」であり、今のような会話に出現する「ロジック」「アルゴリズム」がプログラマ的な意味での「ロジック」「アルゴリズム」だと僕は認識していました。
「任意の有効な入力について停止せねばならず」だとすると、処理手順とは別に、停止性の保証(暗黙でも明示的にでも)が必要ですね。それを含めてアルゴリズムと呼ぶとすると、日常会話での「アルゴリズム」(という用語)の使用の相当部分は誤りだったと思います(僕自身と周辺の使用例)。
統計的データは何もないし、アンケートをとる気もありませんが、「アルゴリズム」と口にする(あるいは書く)とき停止性を意識し、かつ停止する保証がないときは「セミアルゴリズム」と呼ぶプログラマ/技術者はむしろ少数派な気がするんですが --- あれあれ、待てよ、「アルゴリズム」って言葉の前に、どうも「プログラマ/技術者」って言葉で既に食い違い/認識の相違があるような気がしてきました。
この対偶をとると… あなたはプログラマ?