ฟังก์ชันทั่วถึง

ในทางคณิตศาสตร์ ฟังก์ชัน f  จากเซต X ไปหาเซต Y เป็นฟังก์ชันทั่วถึง () เมื่อเรนจ์กับโคโดเมนของ f เป็นเซตเดียวกัน นั่นคือ f มีสมบัติว่าสำหรับทุกสมาชิก y ใน Y มี x ใน X ที่ f(x) = y ซึ่งสำหรับ y แต่ละตัวอาจมี x หลายตัวก็ได้ (แต่ถ้ามี x เพียงตัวเดียวสำหรับ y ทุกตัว f จะเป็นฟังก์ชันหนึ่งต่อหนึ่งทั่วถึง)

นิยามของฟังก์ชันทั่วถึงอาจเขียนเป็นสัญลักษณ์ว่า

ตัวอย่าง 

 สำหรับเซต X ใด ๆ กำหนดฟังก์ชันเอกลักษณ์ idx จาก X ไปยัง X นิยามโดย idx (x) = x ฟังก์ชันนี้เป็นฟังก์ชันทั่วถึง
 ฟังก์ชัน f : Z → {0,1} นิยามโดย f(n) = n mod 2 (นั่นคือ ฟังก์ชันที่แสดงภาวะคู่หรือคี่ของจำนวนเต็ม) เป็นฟังก์ชันทั่วถึง
 ฟังก์ชัน f : R → R นิยามโดย f(x) = 2x + 1 เป็นฟังก์ชันทั่วถึง เพราะสำหรับ y ใด ๆ ใน R x = (y - 1)/2 เป็นจำนวนจริงที่ทำให้ f(x) = y
 ฟังก์ชัน f : R → R นิยามโดย f(x) = x3 − 3x  เป็นฟังก์ชันทั่วถึง แต่ไม่เป็นฟังก์ชันหนึ่งต่อหนึ่ง เพราะสำหรับ −2 ≤ y ≤ 2 มี x หลายตัวที่ f(x) =  y เช่น f(-1) = f(2) = 2
 ฟังก์ชันกำลังสอง g : R → R นิยามโดย g(x) = x2 ไม่เป็นฟังก์ชันทั่วถึง เพราะไม่มี x ที่ทำให้ g(x) = -1 แต่หากพิจารณาฟังก์ชัน g : R → R0+ ซึ่งมีโคโดเมนต่างกันแต่ใช้นิยามเดียวกันจะเป็นฟังก์ชันทั่วถึง
 จากตัวอย่างด้านบน หากมีฟังก์ชัน f ใด ๆ เราสามารถสร้างฟังก์ชัน f* ที่ทั่วถึงและให้ค่าเดียวกับ f (นั่นคือ f(x) = f*(x))โดยการเปลี่ยนโคโดเมนให้ตรงกับเรนจ์ของ f

สมบัติ 

 ฟังก์ชันทั่วถึงมีอินเวอร์สขวา นั่นคือ ถ้า f : X → Y เป็นฟังก์ชันทั่วถึงแล้วจะมี g : Y  → X ที่ทำให้ f(g(y)) = y สำหรับทุก y ใน Y
 ถ้า f : X → Y เป็นฟังก์ชันทั่วถึงแล้ว |Y| ≤ |X| 
 ถ้า g : X → Y และ f : Y → Z เป็นฟังก์ชันทั่วถึงแล้ว f o g เป็นฟังก์ชันทั่วถึง
 ในทางกลับกันถ้า  f o g เป็นฟังก์ชันทั่วถึง แล้ว f เป็นฟังก์ชันทั่วถึง (แต่ g อาจไม่เป็น)

ฟังก์ชันและการจับคู่
ประเภทของฟังก์ชัน
ทฤษฎีเซต