ド・モルガンの法則の解説(基本情報技術者シラバス用語)

ド・モルガンの法則の解説(基本情報技術者シラバス用語)
目次

ド・モルガンの法則とは

ド・モルガンの法則(どもるがんのほうそく)とは、論理式や集合論において、複数の条件が重なったときの「否定(〜ではない)」の形を、よりシンプルな形に書き換えることができるという重要な法則です。具体的には、「『AかつB』ではない」という否定は「『Aではない』または『Bではない』」と同じになり、同様に「『AまたはB』ではない」は「『Aではない』かつ『Bではない』」と同じになる、というルールです。プログラミングにおいて複雑になりがちな条件分岐(if文など)を整理し、コードを読みやすくしてバグを減らすために非常によく利用されるテクニックです。

具体例

「遊園地のアトラクションに乗れない人」の条件を考えてみましょう。

元の条件:
「身長が120cm以上」かつ「年齢が7歳以上」 【の両方を満たす人】 ではない人

ド・モルガンの法則で書き換えた条件:
「身長が120cm未満(ではない)」 または 「年齢が7歳未満(ではない)」 人

このように書き換えることで、入場口のスタッフは「身長が足りないか、もしくは年齢が足りないかのどちらか一方でも当てはまればお断りする」というように、判断ルールをシンプルに整理することができます。

もう少し詳しく

ド・モルガンの法則は、19世紀のイギリスの数学者オーガスタス・ド・モルガンによって定式化された、論理学および集合論における基本定理の一つです。この法則は数式で表すとより明確になります。論理否定を「NOT」、論理積を「AND」、論理和を「OR」とした場合、以下の2つの等式が成り立ちます。

1. NOT (A AND B) = (NOT A) OR (NOT B)
2. NOT (A OR B) = (NOT A) AND (NOT B)

この法則が特に有用なのは、プログラムのソースコードをリファクタリング(整理・改善)する場面です。例えば「〜でない限り、処理を実行しない」といった二重否定や複雑な条件式は、人間にとって直感的に理解しづらく、条件の記述漏れや想定外のバグを生み出す温床となります。ド・モルガンの法則を適用することで、括弧でくくられた全体の否定を個別の否定に分解したり、逆に個別の否定をまとめて全体の否定に変換したりすることができ、人間が読みやすく論理的誤りの少ないコードに修正することが可能になります。また、デジタル回路の設計においても、NANDゲート(ANDの否定)やNORゲート(ORの否定)を組み合わせて回路を最適化・単純化する際に、このド・モルガンの法則が数学的な根拠として不可欠となります。論理回路を最小の部品数で実現するためには、この法則を用いた論理式の変形が日常的に行われます。

試験でのポイント

情報処理技術者試験において、ド・モルガンの法則は論理演算や論理回路の分野で非常に高い頻度で出題される最重要テーマの一つです。試験では、複雑な論理式が提示され、「これと等価な論理式はどれか」を選択する問題が定番です。この種の問題を解く際には、ド・モルガンの法則を使って式を展開、あるいはまとめる作業が必須となります。特に、否定の記号(式の上につくオーバーラインなど)を分割したり繋げたりする際に、演算子(ANDとOR)を反転させるという操作を正確に行えるかが問われます。

また、ベン図を用いた集合の問題として出題されることもあります。この場合、「AとBの共通部分の補集合」が「Aの補集合とBの補集合の和集合」と一致することを、図形の塗りつぶし領域として視覚的に理解できているかがポイントになります。試験本番で複雑な式を見て混乱してしまった場合は、AとBにそれぞれ具体的な真(1)と偽(0)の値を当てはめた真理値表を書き出し、選択肢の式と同じ結果になるかを確認するという泥臭い手法も有効です。論理式の簡略化問題は得点源になりやすいため、過去問を繰り返し解いて法則の適用に慣れておくことが合格への近道です。

関連する用語

論理式、論理演算、真理値表

読んだ内容を10問練習と実技で確認

記事で理解した用語を、StudyQuestの演習とクラウド実技ラボで定着させます。

10問練習 実技ラボ