สารจากผู้เขียน
วันนี้เราจะพาทุกคนมาดูกันว่าพื้นฐานที่สำคัญของคณิตศาสตร์ไม่ต่อเนื่อง (Discrete Math) สำหรับสาย Programming นั้นมีเรื่องอะไรที่ควรเรียนรู้บ้าง
เขียนโดย
Papatsiri Apipaiboon
Internship @ borntoDev
บทความนี้ตีพิมพ์ และ เผยแพร่เมื่อ 30 สิงหาคม 2566
Discrete mathematics คือ
คณิตศาสตร์ไม่ต่อเนื่อง หรือบางครั้งเรียกว่าคณิตศาสตร์จำกัด เป็นการศึกษาโครงสร้างทางคณิตศาสตร์ซึ่งมีลักษณะเป็นค่าเฉพาะเจาะจง และไม่ต่อเนื่อง เป็นพื้นฐานสำคัญในการพัฒนาและวิเคราะห์อัลกอริทึม การออกแบบโครงสร้างข้อมูล การเขียนโปรแกรม และอื่น ๆ อีกมากมาย ส่วนพื้นฐานที่ควรรู้มีอะไรบ้าง และใช้งานในสายคอมยังไง ไปดูกันเลย !!!
1. เซต
เซต คือกลุ่มของสมาชิก (element) ของสิ่งที่สนใจ เช่น เซตของวันในหนึ่งสัปดาห์ หมายถึง กลุ่มของ วันจันทร์ อังคาร พุธ พฤหัสบดี ศุกร์ เสาร์ และอาทิตย์ เป็นต้น ซึ่งคำว่าเซตนั้นมีคุณสมบัติที่สำคัญคือต้องสามารถระบุได้ว่าอะไรอยู่ในเซต ซึ่งมีการใช้เซต กับการเขียนโปรแกรมเยอะมาก ๆ ตั้งแต่ระดับ Basic ไปจนถึงการทำ AI/Machine Learning เลยแหละ ยกตัวอย่างง่าย ๆ เช่น การหาผลการดำเนินการระหว่างเซต
list1 = [3, 5, 7, 9, 11]
list2 = [5, 7, 10, 12, 14]
set1 = set(list1)
set2 = set(list2)
union_result = set1.union(set2)
print("Union:", union_result)
intersection_result = set1.intersection(set2)
print("Intersection:", intersection_result)
2. ความสัมพันธ์ (Domain & Range)
“Domain” คือช่วงของค่าที่สามารถใช้เป็นอาร์กิวเมนต์ (input) หรือข้อมูลนำเข้าให้กับฟังก์ชันได้ ส่วน “Range” คือช่วงของค่าที่สามารถเป็นผลลัพธ์หรือเอาต์พุต (output) จากฟังก์ชันได้ สำหรับตัวอย่างการนำไปใช้ในงานสายคอม เช่น เราจะใช้ lambda function ในการคำนวณค่าฟิโบนัชชี (Fibonacci) ของจำนวนเต็มบวกที่รับมาเป็น Input
fibonacci = lambda n: n if n <= 1 else fibonacci(n - 1) + fibonacci(n - 2)
input_value = int(input("Enter a positive integer: "))
result = fibonacci(input_value)
print("The Fibonacci value of", input_value, "is:", result)
ในตัวอย่างนี้:
- Domain คือจำนวนเต็มบวกที่เราป้อนเข้าไปในฟังก์ชัน fibonacci
- Range คือค่าฟิโบนัชชีที่คำนวณขึ้นโดยใช้ฟังก์ชัน fibonacci และคืนค่ากลับมา
3. ฟังก์ชัน
ฟังก์ชัน คือ ความสัมพันธ์รูปแบบหนึ่งที่สมาชิกในโดเมนแต่ละตัวจับคู่กับสมาชิกในเรนจ์ของความสัมพันธ์เพียงตัวเดียวเท่านั้น
ซึ่งในการเขียนโปรแกรม ฟังก์ชันมีบทบาทสำคัญหลายอย่างมากๆ ไม่ว่าจะเป็นการแบ่งโปรแกรมออกเป็นส่วนเล็ก ๆ เพื่อให้จัดการได้ง่ายขึ้น และสามารถเรียกกลับมาใช้ใหม่ได้ ช่วยให้เราไม่ต้องเขียนโค้ดซ้ำ ๆ เช่น การสร้างฟังก์ชันที่คำนวณพื้นที่ของสี่เหลี่ยมผืนผ้าตามความยาวและความกว้าง
def calculate_rectangle_area(length, width):
area = length * width
return area
length = 5
width = 3
result = calculate_rectangle_area(length, width)
print("The area of the rectangle is:", result)
ในตัวอย่างนี้เรากำหนดฟังก์ชันที่รับพารามิเตอร์สองตัว คือความยาวและความกว้าง และนำทั้งสองตัวมาคูณกันเพื่อคำนวณพื้นที่ ซึ่งผลลัพธ์จะถูกส่งกลับโดยใช้คำสั่ง return ส่วนภายนอกฟังก์ชัน ก็มีการเรียกฟังก์ชันนี้ด้วยค่าเฉพาะสำหรับความยาวและความกว้าง จากนั้นพื้นที่ที่คำนวณได้จะถูกพิมพ์ออกมา
4. ความน่าจะเป็น
ความน่าจะเป็น (Probability) เป็นจำนวนที่ใช้เพื่อบอกโอกาสที่เหตุการณ์หนึ่ง ๆ จะเกิดขึ้น ซึ่งมี 3 ลักษณะ คือ
- ไม่เกิดขึ้นอย่างแน่นอน จะมีค่าความน่าจะเป็นเท่ากับ 0
- อาจจะเกิดขึ้นหรือไม่ก็ได้ จะมีค่าความน่าจะเป็นอยู่ระหว่าง 0 กับ 1
- และเกิดขึ้นอย่างแน่นอนจะมีค่าความน่าจะเป็นเท่ากับ 1
ความน่าจะเป็นคือหลักการทางคณิตศาสตร์ที่มีบทบาทสำคัญในสายงานเทคโนโลยีมาก ๆ ทั้งถูกใช้ในการประมวลผลข้อมูลเพื่อวิเคราะห์และทำนายข้อมูลต่าง ๆ การวิเคราะห์ข้อมูลการใช้งานและตลาด ระบบแนะนำสินค้า ไปจนถึงการทำ Deep Learning ยกตัวอย่างง่าย ๆ เช่น จำลองการโยนเหรียญ
def calculate_rectangle_area(length, width):
area = length * width
return area
length = 5
width = 3import random
num_simulations = 1000
num_heads = 0
for _ in range(num_simulations):
if random.random() < 0.5:
num_heads += 1
probability_heads = num_heads / num_simulations
print("Simulated Probability of Getting Heads:", probability_heads)
โดยมีความน่าจะเป็นที่จะได้หัวเท่ากับ 0.5 และสำหรับการจำลองแต่ละครั้ง เราจะสร้างตัวเลขสุ่มระหว่าง 0 ถึง 1 โดยใช้ random.random() หากจำนวนที่สร้างขึ้นน้อยกว่า 0.5 เราจะนับเป็น “หัว”
หลังจากดำเนินการจำลองแล้ว เราจะคำนวณความน่าจะเป็นที่จะได้หัวโดยการหารจำนวน “หัว” ทั้งหมดด้วยจำนวนการจำลอง
ตัวอย่างนี้ให้ความเข้าใจพื้นฐานเกี่ยวกับวิธีการใช้ความน่าจะเป็นและการจำลองในการวิเคราะห์สถานการณ์อย่างง่าย
5. ตรรกศาสตร์
ตรรกศาสตร์(Logic) คือ ศาสตร์แห่งวิธีการให้เหตุผลและหาข้อสรุป หรือเป็นวิชาเกี่ยวกับการใช้เหตุผล เพื่อวิเคราะห์ค่าความจริง ซึ่งถูกนำไปใช้ในด้านเทคโนโลยีและการเขียนโปรแกรมเยอะมาก ๆ ทั้งใช้ในการออกแบบระบบฐานข้อมูล ใช้ในการควบคุมตรวจสอบข้อมูลบนเว็บไซต์หรือแอปพลิเคชัน รวมไปถึงการใช้ตรรกศาสตร์ในการเขียนเงื่อนไขในการทำงานของเครือข่ายคอมพิวเตอร์ ไปดูตัวอย่างง่าย ๆ กันเลย
def is_even(number):
if number % 2 == 0:
return True
else:
return False
num = 6
if is_even(num):
print(f"{num} is even.")
else:
print(f"{num} is odd.")
ในตัวอย่างนี้ ฟังก์ชันจะรับตัวเลขเป็นอินพุต และใช้คำสั่งแบบมีเงื่อนไข (if) เพื่อตรวจสอบว่าตัวเลขหารด้วย 2 ลงตัวโดยไม่มีเศษหรือไม่ หากตรงตามเงื่อนไข ฟังก์ชันจะส่งกลับ True เพื่อระบุว่าตัวเลขเป็นเลขคู่ ถ้า False จะส่งกลับค่าเท็จ
หลังจากกำหนดฟังก์ชันแล้ว เราจะทดสอบด้วยตัวเลข (ในกรณีนี้คือ num = 6) และมีการแสดงผลว่าตัวเลขนั้นเป็นเลขคู่หรือคี่ตามเอาต์พุตของฟังก์ชัน
ในบทความนี้เราได้นำเสนอพื้นฐานเกี่ยวกับ Discrete Math ที่เป็นพื้นฐานที่สำคัญสำหรับนักพัฒนาและผู้ที่มีความสนใจในการเขียนโปรแกรมและเทคโนโลยีต่างๆ แน่นอนว่านี่ยังไม่ใช่ทั้งหมด! พื้นฐานและเรื่องที่น่าสนใจใน Discrete Math ยังมีอีกมากมาย เราหวังว่าบทความนี้จะเป็นจุดเริ่มต้นที่ดีสำหรับการเรียนรู้เพิ่มเติมของทุก ๆ คน
ระบบฝึกทักษะ การเขียนโปรแกรม
ที่พร้อมตรวจผลงานคุณ 24 ชั่วโมง
- โจทย์ปัญหากว่า 200 ข้อ ที่รอท้าทายคุณอยู่
- รองรับ 9 ภาษาโปรแกรมหลัก ไม่ว่าจะ Java, Python, C ก็เขียนได้
- ใช้งานได้ฟรี ! ครบ 20 ข้อขึ้นไป รับ Certificate ไปเลย !!