ฟังก์ชันหนึ่งต่อหนึ่งทั่วถึง
**ฟังก์ชันหนึ่งต่อหนึ่งทั่วถึง** (อังกฤษ: bijection, bijective function) คือฟังก์ชัน *f* จากเซต *X* ไปยังเซต *Y* ด้วยสมบัติที่ว่า จะมีสมาชิก *x* ใน *X* เพียงหนึ่งเดียวสำหรับทุก ๆ สมาชิก *y* ใน *Y* นั่นคือ *f* (*x*) = *y* และไม่มีสมาชิกเหลือทั้งใน *X* และ *Y*

หรือกล่าวได้อีกทางหนึ่งคือ *f* จะเป็นฟังก์ชันหนึ่งต่อหนึ่งทั่วถึง ถ้าหากมีความสัมพันธ์แบบสมนัยหนึ่งต่อหนึ่ง (one-to-one correspondence) ระหว่างเซตทั้งสอง นั่นคือเป็นทั้งฟังก์ชันหนึ่งต่อหนึ่ง (one-to-one) และฟังก์ชันทั่วถึง (onto)

ยกตัวอย่างฟังก์ชันหนึ่งต่อหนึ่งทั่วถึงเช่น ฟังก์ชัน succ นิยามจากเซตของจำนวนเต็ม **Z** ไปยัง **Z** โดยมีความสัมพันธ์สำหรับสมาชิก *x* เป็น succ (*x*) = *x* + 1 อีกตัวอย่างหนึ่งคือ ฟังก์ชัน sumdif ที่สมาชิกคู่อันดับ (*x*, *y*) ของจำนวนจริง โดยมีสัมพันธ์กับคู่อันดับเป็น sumdif (*x*, *y*) = (*x* + *y*, *x* − *y*) เป็นต้น

ฟังก์ชันหนึ่งต่อหนึ่งทั่วถึงที่นิยามขึ้นจากเซตหนึ่งไปยังเซตเดิม อาจเรียกได้ว่าเป็นการเรียงสับเปลี่ยน

เซตของฟังก์ชันหนึ่งต่อหนึ่งทั่วถึงทั้งหมดที่เกิดจากเซต *X* ไปยัง *Y* เขียนแทนด้วย *X* ↔ *Y*

ฟังก์ชันหนึ่งต่อหนึ่งทั่วถึงมีบทบาทเป็นหลักการพื้นฐานของความรู้ในหลายสาขาของคณิตศาสตร์ ดังเช่นในนิยามของสมสัณฐาน (isomorphism) รวมทั้งแนวคิดอื่น ๆ ที่เกี่ยวข้องเช่น สมานสัณฐาน (homeomorphism) และอนุพันธสัณฐาน (diffeomorphism), กรุปเรียงสับเปลี่ยน (permutation group), การแปลงเชิงภาพฉาย (projective map) และอื่น ๆ อีกมากมาย

ฟังก์ชันประกอบและฟังก์ชันผกผัน
------------------------------

ฟังก์ชันหนึ่งต่อหนึ่งทั่วถึง ที่ประกอบด้วยฟังก์ชันหนึ่งต่อหนึ่ง (ซ้าย) และฟังก์ชันทั่วถึง (ขวา)
ฟังก์ชัน *f* จะเป็นฟังก์ชันหนึ่งต่อหนึ่งทั่วถึง ก็ต่อเมื่อความสัมพันธ์ผกผัน *f* −1 เป็นฟังก์ชัน ซึ่งในกรณีนี้ *f* −1 ก็จะเป็นฟังก์ชันหนึ่งต่อหนึ่งทั่วถึงด้วย

กำหนดให้ฟังก์ชัน *f* : *X* ↔ *Y* และ *g* : *Y* ↔ *Z* เป็นฟังก์ชันหนึ่งต่อหนึ่งทั่วถึง ฟังก์ชันประกอบ *g* ∘ *f* ก็จะเป็นฟังก์ชันหนึ่งต่อหนึ่งทั่วถึงด้วย และมีฟังก์ชันผกผันเป็น (*g* ∘ *f*) −1 = *f* −1 ∘ *g* −1

ในทางตรงข้าม ถ้าหากการประกอบของฟังก์ชันทั้งสอง *g* ∘ *f* เป็นฟังก์ชันหนึ่งต่อหนึ่งทั่วถึง เราสามารถสรุปได้เพียงว่า *f* เป็นฟังก์ชันหนึ่งต่อหนึ่งและ *g* เป็นฟังก์ชันทั่วถึง (ดูภาพ)

ความสัมพันธ์ *f* จาก *X* ไป *Y* จะเป็นฟังก์ชันหนึ่งต่อหนึ่งทั่วถึง ก็ต่อเมื่อมีความสัมพันธ์ *g* จาก *Y* ไป *X* อันหนึ่ง ที่ทำให้ *g* ∘ *f* เป็นฟังก์ชันเอกลักษณ์บน *X* และทำให้ *f* ∘ *g* เป็นฟังก์ชันเอกลักษณ์บน *Y* จึงส่งผลให้ทั้งสองเซตมีจำนวนสมาชิกเท่ากัน

ถ้า *X* และ *Y* เป็นเซตจำกัดแล้ว จะมีฟังก์ชันหนึ่งต่อหนึ่งทั่วถึงระหว่างสองเซตจาก *X* ไปยัง *Y* ก็ต่อเมื่อ *X* และ *Y* มีจำนวนสมาชิกเท่ากัน จากภาวะ "จำนวนสมาชิกที่เท่ากัน" นี้เองที่นำไปสู่การนิยามภาวะเชิงการนับของเซตอนันต์ในเรื่องของทฤษฎีเซตเชิงสัจพจน์ ซึ่งเป็นแนวทางหนึ่งในการพิจารณาขนาดของเซตอนันต์ที่แตกต่างกัน

ตัวอย่างและการโต้แย้ง
---------------------

* สำหรับเซต *X* ใด ๆ กำหนดฟังก์ชันเอกลักษณ์ id*x* จาก *X* ไปยัง *X* นิยามโดย id*x* (*x*) = *x* ฟังก์ชันนี้เป็นฟังก์ชันหนึ่งต่อหนึ่งทั่วถึง
* ฟังก์ชัน *f* บนเส้นจำนวนจริง **R** ไปยัง **R** นิยามโดย *f* (*x*) = 2*x* + 1 เป็นฟังก์ชันหนึ่งต่อหนึ่งทั่วถึง เนื่องจากค่า *y* แต่ละตัวมีค่า *x* = (*y* − 1) / 2 เพียงตัวเดียวที่ทำให้ *f* (*x*) = *y*
* ฟังก์ชันเลขชี้กำลัง *g* : **R** → **R** ซึ่งนิยามโดย *g* (*x*) = e*x* ไม่เป็นฟังก์ชันหนึ่งต่อหนึ่งทั่วถึง เพราะว่าไม่มีค่า *x* ใดใน **R** ที่ทำให้ *g* (*x*) = −1 ซึ่งแสดงว่า *g* ไม่เป็นฟังก์ชันทั่วถึง อย่างไรก็ตาม ถ้าหากเปลี่ยนโคโดเมนจากจำนวนจริงไปเป็นจำนวนจริงบวก **R**+ = (0, +∞) แล้ว *g* จะกลายเป็นฟังก์ชันหนึ่งต่อหนึ่งทั่วถึงทันที ซึ่งฟังก์ชันผกผันคือฟังก์ชันลอการิทึมธรรมชาติ *g*−1 (*x*) = ln *x*
* ฟังก์ชัน *h* : **R** → [0, +∞) ซึ่งนิยามโดย *h* (*x*) = *x*2 ไม่เป็นฟังก์ชันหนึ่งต่อหนึ่งทั่วถึง เพราะว่า *h* (−1) = *h* (+1) = 1 ซึ่งแสดงว่า *h* ไม่เป็นฟังก์ชันหนึ่งต่อหนึ่ง อย่างไรก็ตาม ถ้าหากเปลี่ยนโดเมนไปเป็น [0, +∞) แล้ว *h* จะกลายเป็นฟังก์ชันหนึ่งต่อหนึ่งทั่วถึงทันที ซึ่งฟังก์ชันผกผันคือฟังก์ชันรากที่สองที่เป็นบวก *h*−1 (*x*) = √*x*
* **R** → **R** : *x* ↦ (*x* − 1) (*x*) (*x* + 1) = *x*3 − *x* ไม่เป็นฟังก์ชันหนึ่งต่อหนึ่งทั่วถึง เพราะว่าโดเมน −1, 0 และ +1 จับคู่ไปยัง 0 ตัวเดียวกัน
* **R** → [−1, 1] : *x* ↦ sin *x* ไม่เป็นฟังก์ชันหนึ่งต่อหนึ่งทั่วถึง เพราะว่าโดเมน π/3 และ 2π/3 จับคู่ไปยัง √3/2 ตัวเดียวกัน

สมบัติ
------

* ฟังก์ชัน *f* จากบนเส้นจำนวนจริง **R** ไป **R** จะเป็นฟังก์ชันหนึ่งต่อหนึ่งทั่วถึง ก็ต่อเมื่อกราฟของฟังก์ชันมีจุดตัดกับเส้นตรงใด ๆ ในแนวนอนหรือแนวตั้งเพียงจุดเดียว
* ถ้า *X* เป็นเซตหนึ่ง ฟังก์ชันหนึ่งต่อหนึ่งทั่วถึงจาก *X* ไปยังเซตตัวเอง ซึ่งเกิดจากการดำเนินการประกอบของฟังก์ชัน จะทำให้เกิดกรุปสมมาตรของ *X* เขียนแทนได้หลายเช่น *S* (*X*), *SX* หรือ *X*! (สัญลักษณ์สุดท้ายคือแฟกทอเรียล)
* สำหรับเซตย่อย *A* ซึ่งเป็นโดเมนของ *f* และมีภาวะเชิงการนับ | *A* | และเซตย่อย *B* ซึ่งเป็นโคโดเมนของ *f* และมีภาวะเชิงการนับ | *B* | จะได้ความเท่ากันดังต่อไปนี้
| *f* (*A*) | = | *A* | และ | *f* −1 (*B*) | = | *B* |
* ถ้า *X* และ *Y* เป็นเซตจำกัดที่มีภาวะเชิงการนับเท่ากัน และ *f* : *X* → *Y* ดังนั้นประโยคต่อไปนี้จะมีความหมายเทียบเท่ากัน
	1. *f* เป็นฟังก์ชันหนึ่งต่อหนึ่งทั่วถึง
	2. *f* เป็นฟังก์ชันหนึ่งต่อหนึ่ง
	3. *f* เป็นฟังก์ชันทั่วถึง
* สำหรับเซตจำกัด *S* จะมีฟังก์ชันหนึ่งต่อหนึ่งทั่วถึงอย่างน้อยหนึ่งฟังก์ชัน ระหว่างเซตของอันดับทุกส่วน (total order) ที่เป็นไปได้ของสมาชิก ไปยังฟังก์ชันหนึ่งต่อหนึ่งทั่วถึงจาก *S* ไปยัง *S* หรือกล่าวอีกทางหนึ่งคือ จำนวนของการเรียงสับเปลี่ยน (อีกชื่อหนึ่งของฟังก์ชันหนึ่งต่อหนึ่งทั่วถึง) ของสมาชิกของ *S* จะเท่ากับจำนวนของอันดับทุกส่วนของเซตนั้น นั่นก็คือ *n*!