The Bijective Function

Mutinan Phaohing
3 min readJul 21, 2017

--

สวัสดีผู้อ่านทุกท่าน บทความนี้จะแปะอธิบายเกี่ยวกับ ลักษณะของ function หนึ่งที่เรียกว่า bijective ซึ่งในบทความอนาคตๆๆ (อันไกลมั้ง) มีโอกาสสูงที่จะหยิบเอาบทความนี้ไปอ้าง ดังนั้นนี่เป็นความรู้พื้นฐานที่อยากให้ทราบเอาไว้ ไครรู้แล้วข้ามๆไปได้~ (มันพื้นฐานจริงๆนะเออ)

ฟังก์ชัน function

ฟังก์ชันคือกล่องดำที่เราไม่จำเป็นต้องรู้ว่าข้างในมันคืออะไร รู้แค่ว่าถ้าใส่ของเข้าไป(input) แล้ว เราจะได้ของใหม่(หรืออาจจะเป็นชิ้นเดิมก็ได้)กลับออกมา(output) ด้วยความจีเนียสของมนุษย์ผู้ชำนานในเรื่องการทำสัญลักษณ์ เลยออกแบบหน้าตามันประมาณนี้

ฟังก์ชัน

ข้างต้นคือฟังก์ชันชื่อว่า f รับ input เป็นค่า x และคาย y ออกมาเป็น output (ง่ายมะ)

แต่โลกนี้ไม่มีอะไรได้มาง่ายๆ ไม่ใช่ว่าเขียนแบบนี้แล้วทุกอย่างจะเป้นฟังก์ชัน เรามีกฎเล็กๆเสริมเข้าไปว่า เฮ้ เอ้งอะจะเป็นฟังก์ชันได้ก็ต่อเมื่อ….
ถ้าใส่ของแบบเดียวกันเข้าไปในฟังก์ชัน จะได้ของหน้าตาเหมือนกันออกมาเสมอ

เช่น ถ้า f(1) = 9999 ไม่มีทางที่ f(1) จะเป็นค่าอื่นได้อีกตราบเท่าที่ input ยังเป็น 1

บางครั้งเราก็เลยวาด function เหมือนการจับคู่ของสองกลุ่ม(เซ็ต)เข้าด้วยกัน

แบบนี้คือฟังก์ชัน
แบบนี้ไม่ใช่ฟังก์ชัน

ส่วนภาพนี้จะไม่ใช่ฟังก์ชัน เพราะ input ค่าเดียว ให้ output ออกมาสองตัว ซึ่งศรีทนไม่ได้~ จึงได้ขับไล่การจับคู่แบบนี้ออกจากวงตระกูลฟังก์ชัน

Injective Function

ฟังก์ชันก็เหมือนคน มีคุณสมบัติพิเศษแตกต่างกันไป อันแรกสุดที่น่าสนใจ(หรอ) คือคุณสมบัติ injective

Injective function คือฟังก์ชันเหมือนเดิม เพิ่มเติมคือคุณสมบัติเข้าไปอีกหนึ่งขอ(เริ่มเยอะ) คือ output ใดๆก็ตามที่ฟังก์ชันพ่นออกมา จะเกิดจาก input ได้แค่หน้าตาแบบเดียวเท่านั้น เช่น ถ้าเรารู้ว่า

f(1) = 10

output คือ 10 เกิดจากการใส่ input เลข 1 เข้าไปในฟังก์ชัน f และถ้ามี

f(2) = ?

ถ้าเกิด f มีคุณสมบัติ injective ค่า output จะไม่มีทางเป็น 10 ได้ชัวร์ๆ เพราะ output 10 น่ะ เฮีย input 1 จองไปแล้วเรียบร้อย(ช่างรักเดียวใจเดียว)

มาดูเป็นแผนภาพบ้าง

แบบนี้เรียก injective

ภาพข้างต้นเป็น injective function เพราะไม่ว่า output จะเป็นค่าไหน ล้วนสร้างได้จากการใส่ input เข้าไปใน function ได้เพียงแบบเดียวเท่านั้น

แบบนี้เรียกไม่ injective

แบบนี้ไม่เป็น injective เพราะ output ดันเสร่อมีค่านึงที่สามารถสร้างจาก input ได้สองแบบ ถึงแบบนี้จะไม่เป็น injective(คุณคือจุดอ่อนของทีม เชิญค่ะ!) แต่ก็ยังเป็น function อยู่ดี

ตอนเรียนเด็กๆเขาเรียกแบบนี้ว่า one-to-one อ่ะ คุ้มแม๊ะ?

Surjective Function

Surjective อีกคุณสมบัตินึงที่มีกฎ(อีกและ) ว่า ทุกๆ output ที่เป็นไปได้จะหา input ที่สร้างมันขึ้นมาได้เสมอ ลองสมมติคร่าวๆว่า

f(?) = 10

เราจะสามารถหา ? ออกมาได้แน่ๆ คุณสมบัตินี้ทำให้เราเชื่ออย่างสุดหััวในว่า ถ้า 10 เป็น output ที่ถูกต้องตามกฎหมาย จะต้องมี input ที่สร้าง 10 ออกมาได้แน่นอน

Surjective แบบรูปภาพสวยงาม

จะเห็นว่า output ทุกๆตัวถูกสร้างได้จาก input สักตัวเสมอ(จะถูกสร้างด้วย input กี่แบบก็ได้ ไม่ขี้เหนียวเหมือน injective)

แบบนี้คือไม่เซอร์นะจ๊ะ

ภาพนี้ function ไม่เป็น surjective เพราะมี output ตัวนึงที่ลอยเคว้งอยู่ ไม่มี input มาจับคู่(วงวารน้องเขานะ)

อันนี้ตอนเรียกสมัยเด็กๆเขาเรียกกันว่า onto

Bijective Function

และแล้วก็มาถึงคุณสมบัติพระเอกของเรา bijection นั่นเอองงงง กฎอันนี้ง่ายมาก(หรอ) คือถ้าฟังก์ชันเป็นทั้ง injective และ surjective ก็เป็น bijective ไปเลยยยย~~

คราวนี้หน้าตามันเป็นยังไงถ้ามันมีสองคุณสมบัติโผล่มาพร้อมๆกัน…

พระเอก bijective ของเรา

ก็ประมาณนี้แหละ คือเป็นการรวมสองกฎอันแสนวุ่นวายเข้าด้วยกันแล้ว ข้อสังเกตคือ ถ้ามี bijection function ส่งผ่าน input เซ็ต A ไปยัง output เซ็ต B จะได้ว่าจำนวนสมาชิกของเซ็ต A และ B จะต้องเท่ากันไปโดยปริยาย

อันนี้ตอนเรียนเรียกว่า one-to-one onto function ได้เหมือนกันแหละ แต่ในหนังสือเขาเขียน bijection กันหมดนะ

--

--