今回の内容は論理的な思考が要求されるっすから、そういうのが苦手な人は苦労するかもっすね。
じゃあ僕は苦手だ。動物みたいに論理的思考できないねってよく言われる。ぼくは人間なのに。
プログラミングやアルゴリズムなどの分野にもつながる内容っすから頑張るっすよ。
集合とは
ある条件に基づいてグループ化されたデータの集まりのことを集合といいます。
積集合 | 集合Aと集合Bを掛け合わせた共通の部分のこと。 |
和集合 | 集合Aと集合Bを足し合わせた集合のこと。 |
う~ん。ちょっと何言ってるかわかりません。
集合は言葉で説明してもわかりづらく相手に伝わりにくいため、集合の関係を視覚的にわかりやすく表現するためにベン図が用いられます。
集合Aの要素が、集合Bの全部または一部となっているとき、「集合Aは集合Bの部分集合である」といいます。
論理演算
前回にも書きましたが、コンピューターは「0」か「1」の2通りしか判断できません。そのため、この2種類の数字を使って様々な条件や結果を表す必要があります。この時に用いられる演算方式が論理演算です。
論理演算では、条件に沿う結果となる場合を「1」(真)、そうではない場合を「0」(偽)で表します。また、この結果を一覧表にしたものを真理値表といいます。
AND(論理積)
2つの条件が両方とも「1」(真)のときのみ、結果が「1」(真)になる演算です。
A | B | A AND B |
---|---|---|
0(偽) | 0(偽) | 0(偽) |
0(偽) | 1(真) | 0(偽) |
1(真) | 0(偽) | 0(偽) |
1(真) | 1(真) | 1(真) |
例えば「日本人のうち、65歳以上でかつ男性の人」といった条件を表す場合に用いられます。
OR(論理和)
2つの条件のどちらか一方または両方とも「1」(真)のときに、結果が「1」(真)になる演算です。
A | B | A OR B |
---|---|---|
0(偽) | 0(偽) | 0(偽) |
0(偽) | 1(真) | 1(真) |
1(真) | 0(偽) | 1(真) |
1(真) | 1(真) | 1(真) |
例えば「日本人のうち、65歳以上または男性の人」といった条件を表す場合に用いられます。
XOR・EOR(排他的論理和)
2つの条件のどちらか一方だけが「1」(真)のとき、結果が「1」(真)になり、両方とも「1」(真)あるいは「0」(偽)のとき、結果が「0」(偽)になる演算です。
A | B | A XOR B |
---|---|---|
0(偽) | 0(偽) | 0(偽) |
0(偽) | 1(真) | 1(真) |
1(真) | 0(偽) | 1(真) |
1(真) | 1(真) | 0(偽) |
例えば「日本人のうち、65歳以上または男性の人。ただし、65歳以上の男性は除く」といった条件を表す場合に用いられます。
つまり、「65歳以上の日本人女性」または「65歳未満の日本人男性」という意味っすね。
NOT(否定)
条件が「1」(真)のとき、結果は「0」(偽)になり、条件が「0」(偽)のとき、結果は「1」(真)になる演算です。
A | NOT A |
---|---|
0(偽) | 1(真) |
1(真) | 0(偽) |
例えば「日本人のうち、65歳以上でない人(つまり65歳未満の人)」といった条件を表す場合に用いられます。
確認○×問題
以下の1~4の記述中、二つの集合AとBについて、常に成立する関係を記述したものは2つある。ここで、(X∩Y)は、XとYの両方に属する部分(積集合)、(X∪Y)は、XまたはYの少なくとも一方に属する部分(和集合)を表す。
- (A∩B)は、Aでない集合の部分集合である。
- (A∩B)は、Aの部分集合である。
- (A∪B)は、(A∩B)の部分集合である。
- (A∪B)は、Aの部分集合である。
(出典:平成22年度春期分 問69一部改変)
答え:×
まずベン図を描いて、積集合(A∩B)と和集合(A∪B)の関係を把握しましょう。
1.の記述:(A∩B)は、「Aでない集合」の部分集合とはなっていないため誤りです。
2.の記述:(A∩B)は、Aの部分集合となっているため、正しい記述です。
3.の記述:集合の関係が逆になっているため誤りです。「(A∩B)は、(A∪B)の部分集合である。」であれば正しい記述となります。
4.の記述:(A∪B)は、Aよりも広い集合であるため、Aの部分集合とはいえません。よって誤りです。
次の真理値表に対応する論理演算は AND である。
入力A | 入力B | 出力 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
(出典:平成24年度秋期分 問82一部改変)
答え:〇
入力A | 入力B | 出力 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
入力A | 入力B | 出力 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
入力A | 入力B | 出力 |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
入力A | 出力 |
---|---|
0 | 1 |
1 | 0 |
次の真理値表で示される入力x、yに対する出力zが得られる論理演算式は NOT(x AND y)である。
x | y | z |
---|---|---|
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 0 |
(出典:平成25年度秋期分 問64一部改変)
答え:×
NOT(否定)は入力値の逆を出力する演算なので、 NOT(x AND y)はANDの出力結果を反転したもの(0と1を逆にしたもの)となります。
x | y | z |
---|---|---|
0 | 0 | 0 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 1 |
x | y | z |
---|---|---|
0 | 0 | 1 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 0 |
よって、誤りとなります。ちなみに、 NOT(x OR y)だと正しい記述となります。
x | y | z |
---|---|---|
0 | 0 | 0 |
0 | 1 | 1 |
1 | 0 | 1 |
1 | 1 | 1 |
x | y | z |
---|---|---|
0 | 0 | 1 |
0 | 1 | 0 |
1 | 0 | 0 |
1 | 1 | 0 |
次のベン図の網掛けした部分の検索条件は(not A)and(B or C)である。
(出典:平成29年度秋期分 問98一部改変)
答え:〇
8ビットの2進データXと00001111について、ビットごとの論理積をとった結果は「上位4ビットが全て0になり、Xの下位4ビットがそのまま残る」。ここでデータの左方を上位、右方を下位とする。
(出典:平成30年度秋期分 問79一部改変)
答え:〇
論理積は、2つの条件が両方とも「1」のときのみ、結果が「1」になる演算です。設問で与えられている「00001111」は上位4ビットがすべて「0」であるため、相手が「0」でも「1」でも、結果は必ず「0」となります。
また、下位4ビットはすべて「1」であるため、相手が「0」の時は結果が「0」、相手が「1」の時は結果が「1」となります。すなわち、相手の下位4ビットがそのまま残ることになります。
図1のように二つの入力に対し、一つの出力を行うボックスがある。このボックスへの入力は”賛成”か”反対”のいずれかであり、入力が二つとも”賛成”のときだけ”賛成”と出力し、その他のときは”反対”と出力する。図2のように、三つの入力を二つのボックスに入力した場合を考えたとき、「入力が三つとも”賛成”のときだけ、”賛成”と出力する。」
(出典:平成26年度春期分 問57一部改変)
答え:〇
最終的な出力が”賛成”となるためには、「入力1と入力2の出力結果」および「入力3」が”賛成”となる必要があります。また、入力1と入力2の出力結果が”賛成”となるためには、入力1と入力2の両方が”賛成”である必要があります。
よって、3つの入力がすべて”賛成”のときだけ、最終的な出力が”賛成”となります。逆に言うと、入力に1つでも”反対”があれば、最終的な出力結果は”反対”となります。