1. ホーム
  2. language-agnostic

[解決済み] 不変量とは何ですか?

2022-04-22 05:53:40

質問

この単語は様々な文脈で使われているようです。私が理解できる最善の方法は、変化しない変数を意味することです。定数や終端記号(Javaのことです!)はそのためにあるのではないでしょうか?

解き方は?

不変量は、変数よりも概念的なものです。一般的には、常に真であるプログラム状態のプロパティを指します。不変量が成立することを保証する関数やメソッドを不変量保持といいます。

例えば、二分探索木では、すべてのノードについて、そのノードの左の子のキーがそのノード自身のキーより小さいという不変量があるとする。この木に対して正しく書かれた挿入関数は、この不変量を維持する。

お分かりのように、これは変数に格納できるようなものではありません。 について プログラムです。自分のプログラムがどのような不変性を維持すべきかを考え、その不変性を実際に維持しているかどうかコードを見直すことで、コードの論理的な誤りを避けることができるのです。