Monoid คืออะไร? คำจำกัดความ ตัวอย่าง และการประยุกต์
โมโนอยด์เป็นโครงสร้างทางคณิตศาสตร์ที่ประกอบด้วยชุดขององค์ประกอบและการดำเนินการที่รวมองค์ประกอบเหล่านั้นในลักษณะที่เป็นไปตามคุณสมบัติบางอย่าง ซึ่งสามารถเป็นอะไรก็ได้ (ตัวเลข สัญลักษณ์ ฯลฯ)
* การดำเนินการ `*` ที่รับสององค์ประกอบ `a` และ `b` จาก `M` และส่งกลับองค์ประกอบอื่น `a * b` ใน 'M` เช่นกัน
คุณสมบัติที่การดำเนินการต้องเป็นไปตามนั้นคือ:
* การเชื่อมโยง: `(a * b) * c = a * (b * c)` สำหรับ `a`, `b` และ `c` ทั้งหมดใน `M` ซึ่งหมายความว่าลำดับที่เราดำเนินการนั้นไม่สำคัญ
* ตัวตน: มีองค์ประกอบ `e` ใน `M` โดยที่ `a * e = e * a = a` สำหรับ `a` ทั้งหมดใน ` ม. องค์ประกอบนี้เรียกว่าองค์ประกอบเอกลักษณ์ และทำหน้าที่เป็นองค์ประกอบ "เป็นกลาง" สำหรับการดำเนินการ
* ผกผัน: สำหรับแต่ละองค์ประกอบ `a` ใน `M` มีองค์ประกอบอื่น `b` ใน 'M` ในลักษณะที่ ` ก * ข = ข * ก = อี` องค์ประกอบ `b` นี้เรียกว่าส่วนผกผันของ `a` และจะยกเลิกผลกระทบของ `a` เมื่อรวมกับองค์ประกอบดังกล่าว
ตัวอย่างเช่น เซตของจำนวนเต็มที่มีการดำเนินการบวกจะเกิดเป็น monoid:
* เซต `M ` คือเซตของจำนวนเต็มทั้งหมด
* การดำเนินการ `*` คือการบวก
* องค์ประกอบเอกลักษณ์คือ 0 เพราะ `a + 0 = a` สำหรับจำนวนเต็มใดๆ `a`.
* ค่าผกผันขององค์ประกอบ `a ` คือ `-a` เนื่องจาก `a + (-a) = 0`.
อีกตัวอย่างหนึ่งของ monoid คือเซตของสตริงอักขระทั้งหมดที่มีการต่อข้อมูล:
* เซต `M` คือเซตของทั้งหมด สตริงของอักขระ
* การดำเนินการ `*` คือการต่อข้อมูล
* องค์ประกอบเอกลักษณ์คือสตริงว่าง เนื่องจาก `a + "" = a` สำหรับสตริงใดๆ `a`.
* ค่าผกผันขององค์ประกอบ `a` คือสตริงที่ได้จากการย้อนกลับ `a` เนื่องจาก `a + ("" + a) = a + a = e`.
Monoids ถูกใช้ในหลายสาขาของคณิตศาสตร์และวิทยาการคอมพิวเตอร์ เช่น พีชคณิตนามธรรม ทฤษฎีกลุ่ม และฟังก์ชัน การเขียนโปรแกรม เป็นแนวทางในการอธิบายความสมมาตรและโครงสร้างในวัตถุและระบบทางคณิตศาสตร์ต่างๆ และมีการประยุกต์ใช้งานมากมายในวิทยาการเข้ารหัสลับ ทฤษฎีการเขียนโค้ด และสาขาอื่นๆ ของวิทยาการคอมพิวเตอร์