ユーザーロールと権限のマッピングにおける関数の性質
情報システムにおけるユーザーの役割割り当てと、それに紐づくアクセス権限のマッピングを題材に、関数の概念(単射、全射、全単射、合成関数)を学びます。これにより、システムの設計や分析において、データ間の関係性を数学的に正確に表現し、その性質を理解する能力を養います。
関数
情報システムにおけるユーザーの役割割り当てと、それに紐づくアクセス権限のマッピングを題材に、関数の概念(単射、全射、全単射、合成関数)を学びます。これにより、システムの設計や分析において、データ間の関係性を数学的に正確に表現し、その性質を理解する能力を養います。
ユーザーロールと権限のマッピングにおける関数の性質
ある情報システムにおいて、ユーザー、ロール、そして各ロールに紐づくアクセス権限の管理を考えます。
以下の集合と関数を定義します。
- ユーザーIDの集合
U = {user1, user2, user3, user4} - ロール(役割)IDの集合
R = {admin, editor, viewer} - アクセス権限セットの集合
P = {{read, write, delete}, {read, write}, {read}, {execute}}
ユーザーにロールを割り当てる関数 f: U → R は以下のように定義されます。
f(user1) = adminf(user2) = editorf(user3) = editorf(user4) = viewer
ロールにアクセス権限セットを紐づける関数 g: R → P は以下のように定義されます。
g(admin) = {read, write, delete}g(editor) = {read, write}g(viewer) = {read}
以下の問いに答えなさい。
(1) 関数 f は単射、全射、全単射のいずれであるか、それぞれ理由を添えて答えなさい。
(2) 関数 g は単射、全射、全単射のいずれであるか、それぞれ理由を添えて答えなさい。
(3) 合成関数 g ∘ f : U → P を定義域の各要素について具体的に書き出し、それが単射、全射、全単射のいずれであるか、それぞれ理由を添えて答えなさい。
(4) 関数 g の逆関数 g⁻¹ は存在しますか?存在する場合、それを具体的に示し、存在しない場合、その理由を述べなさい。
解答を見る
(1) 関数 f: U → R について
- 単射性: 単射ではありません。
理由:
f(user2) = editorかつf(user3) = editorであり、user2 ≠ user3であるにもかかわらず、f(user2) = f(user3)となるためです。異なる定義域の要素が同じ終域の要素に写像されています。 - 全射性: 全射です。
理由: 終域
R = {admin, editor, viewer}のすべての要素に対して、それぞれ対応する定義域Uの要素が存在します。 具体的には、adminにはuser1、editorにはuser2またはuser3、viewerにはuser4が対応しています。 - 全単射性: 全単射ではありません。 理由: 単射ではないため、全単射でもありません。
(2) 関数 g: R → P について
- 単射性: 単射です。
理由:
Rの異なる要素が、Pの異なる要素に写像されています。g(admin) = {read, write, delete}g(editor) = {read, write}g(viewer) = {read}すべての出力値が異なっています。 - 全射性: 全射ではありません。
理由: 終域
P = {{read, write, delete}, {read, write}, {read}, {execute}}の要素{execute}に対応する定義域Rの要素が存在しません。すなわち、{execute}はgの値域に含まれません。 - 全単射性: 全単射ではありません。 理由: 全射ではないため、全単射でもありません。
(3) 合成関数 g ∘ f : U → P について
合成関数 (g ∘ f)(x) = g(f(x)) は以下のようになります。
-
(g ∘ f)(user1) = g(f(user1)) = g(admin) = {read, write, delete} -
(g ∘ f)(user2) = g(f(user2)) = g(editor) = {read, write} -
(g ∘ f)(user3) = g(f(user3)) = g(editor) = {read, write} -
(g ∘ f)(user4) = g(f(user4)) = g(viewer) = {read} -
単射性: 単射ではありません。 理由:
(g ∘ f)(user2) = {read, write}かつ(g ∘ f)(user3) = {read, write}であり、user2 ≠ user3であるにもかかわらず、(g ∘ f)(user2) = (g ∘ f)(user3)となるためです。 -
全射性: 全射ではありません。 理由: 終域
Pの要素{execute}に対応する定義域Uの要素が存在しません。合成関数の値域は{{read, write, delete}, {read, write}, {read}}となり、Pと一致しません。 -
全単射性: 全単射ではありません。 理由: 単射でも全射でもないため、全単射でもありません。
(4) 関数 g の逆関数 g⁻¹ は存在しますか?
関数 g の逆関数 g⁻¹ は存在しません。
理由: 逆関数が存在するためには、元の関数が全単射である必要があります。関数 g は(2)で示したように単射ではありましたが、全射ではありませんでした。g の終域 P の要素 {execute} は g の値域に含まれないため、g⁻¹({execute}) を定義することができません。
(もし g の終域を g の値域である {{read, write, delete}, {read, write}, {read}} に制限すれば、その関数は全単射となり逆関数が存在しますが、元の定義 g: R → P のままでは存在しません。)