[index-ja] [finite-set-ja] Algebra::Map
写像クラス
写像を表現するクラスです。
::[[x0 => y0, [x1 => y1, [x2 => y2, ...]]]]x0 の時 y0, x1 の時 y1, x2 の時 y2,.. という値を持つ写像を返します。
例:
require "finite-map"
include Algebra
p Map[0 => 10, 1 => 11, 2 => 12] #=> {0 => 10, 1 => 11, 2 => 12}
p Map[{0 => 10, 1 => 11, 2 => 12}] #=> {0 => 10, 1 => 11, 2 => 12}
p Map.new(0 => 10, 1 => 11, 2 => 12) #=> {0 => 10, 1 => 11, 2 => 12}
p Map.new({0 => 10, 1 => 11, 2 => 12}) #=> {0 => 10, 1 => 11, 2 => 12}
p Map.new_a([0, 10, 1, 11, 2, 12]) #=> {0 => 10, 1 => 11, 2 => 12}::new([x0 => y0, [x1 => y1, [x2 => y2, ...]]])::new_a(a)::phi([t])空写像(定義域が空集合である写像)を返します。集合 t を 引数にすると、それを定義域 target にします。
例:
p Map.phi #=> {}
p Map.phi(Set[0, 1]) #=> {}
p Map.phi(Set[0, 1]).target #=> {0, 1}::empty_set::singleton(x, y){x} 上で定義された y という
値を取る関数を返します。target=(s)codomain=(s)targetcodomainsource写像の定義域を返します。
例:
require "finite-map"
include Algebra
m = Map[0 => 10, 1 => 11, 2 => 12]
p m.source #=> {0, 1, 2}
p m.target #=> nil
m.target = Set[10, 11, 12, 13]
p m.target #=> {10, 11, 12, 13}domainphi([t])empty_setnullcall(x)act[]eachすべての [原像, 像] について繰り返すイテレータです。
例:
require "finite-map" include Algebra Map[0 => 10, 1 => 11, 2 => 12].each do |x, y| p [x, y] #=> [1, 11], [0, 10], [2, 12] end
compose(other)self と other の合成写像を返します。
例:
require "finite-map"
include Algebra
f = Map.new(0 => 10, 1 => 11, 2 => 12)
g = Map.new(10 => 20, 11 => 21, 12 => 22)
p g * f #=> {0 => 20, 1 => 21, 2 => 22}*dupappend!(x, y)x で y という値を取るように設定します。
例:
require "finite-map"
include Algebra
m = Map[0 => 10, 1 => 11]
m.append!(2, 12)
p m #=> {0 => 10, 1 => 11, 2 => 12}[x] = yappend(x, y)include?(x)contains?(x)member?(a)a を配列 [x, y] としたとき、x における値が
y となるとき、真を返します。
例:
require "finite-map" include Algebra m = Map[0 => 10, 1 => 11] p m.include?(1) #=> true p m.member?([1, 11]) #=> true
has?image([s])inv_image(s)map_s写像の各 [原像, 像] のペアについて繰り返し、ブロックで得た 値の集合を返します。
例:
require "finite-map"
include Algebra
p Map.new(0 => 10, 1 => 11, 2 => 12).map_s{|x, y| y - 2*x}
#=> Set[10, 9, 8]map_m写像の各 [原像, 像] のペアについて繰り返し、ブロックで得た 値の配列で構成される写像を返します。
例:
require "finite-map"
include Algebra
p Map.new(0 => 10, 1 => 11, 2 => 12).map_m{|x, y| [y, x]}
#=> {10 => 0, 11 => 1, 12 => 2}inverseinv_coset各像に逆像の集合を対応させる写像を返します。
例:
require "finite-map"
include Algebra
m = Map[0=>0, 1=>0, 2=>2, 3=>2, 4=>0]
p m.inv_coset #=> {0=>{0, 1, 4}, 2=>{2, 3}}
m.codomain = Set[0, 1, 2, 3]
p m.inv_coset #=> {0=>{0, 1, 4}, 1=>{}, 2=>{2, 3}, 3=>{}}indentity?surjective?injective?bijective?