บ้านอยู่ในหรือนอกรั้วกันแน่

บ้านอยู่ในหรือนอกรั้วกันแน่

ครอบครัวหนึ่งปลูกบ้านอยู่กลางทุ่งกว้าง และต้องการสร้างรั้วล้อมรอบบ้านให้มิดชิด แต่ถ้าความที่ทุ่งมันกว้างไปหน่อยจนที่เหลือ รั้วก็เลยออกมาเป็นรูปร่างตามเส้นสีดำอย่างที่เห็นในรูป

บ้านควรจะอยู่ในรั้วถูกไหมฮะ เพื่อความปลอดภัย แต่คำถามคือ บ้านอยู่ในรั้วหรือนอกรั้วกันแน่

ถ้าคุณลองไล่ดี ๆ คุณจะพบว่าไม่ บ้านไม่ได้อยู่ในรั้ว และคนจากข้างนอกสามารถเดินเข้ามาถึงบ้านหลังนั้นได้สบาย ๆ เลย

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

คำถามคือ มีวิธีที่ดีกว่าการเทสีไหม

ก่อนจะไปถึงตรงนั้น เราต้องแน่ใจก่อนว่ารั้วที่สร้างขึ้นมานั้นจะแบ่งพื้นที่ออกเป็นสองส่วนเสมอหรือไม่ เพราะถ้าไม่ การพูดว่าในรั้วกับน้องรั้วก็จะไม่มีความหมาย

พูดประโยคนี้ใหม่ให้เป็นชัดเจนขึ้นว่า

ถ้าคุณวาดเส้นปิดเส้นหนึ่งบนกระดาษ โดยเส้นนั้นไม่ตัดตัวเองเลย มันจะแบ่งกระดาษออกเป็นสองส่วนแน่นอน

หรือพูดให้รัดกุมกว่านั้นอีกคือ

ให้ C เป็นเส้นโค้งปิดที่ไม่ตัดตัวเองในระนาบ แล้วระนาบที่ลบ C ออกจะมีส่วนประกอบที่เชื่อมต่อกันสองส่วนพอดี โดยที่ C เป็นขอบเขตของทั้งสองส่วนนี้

สิ่งนี้ฟังดูเหมือนจะจริงอย่างไม่มีข้อสงสัย สร้างวาดเส้นโค้งปิดขึ้นมา มันก็น่าจะต้องแบ่งพื้นที่เป็นสองส่วนสิ แต่กลายเป็นว่าข้อเท็จจริงนี้กลับพิสูจน์ยากกว่าที่คิด

ในปี 1887 Camille Jordan นักคณิตศาสตร์ชาวฝรั่งเศส ได้พิสูจน์ข้อความนี้ไว้ในหนังสือ Cours d'analyse de l'École Polytechnique และทำให้มันถูกเรียกว่าในภายหลังว่า Jordan Curve Theorem

Jordan ให้บทพิสูจน์ว่า เส้นโค้งปิดที่ไม่ตัดตัวเองจะแบ่งระนาบออกเป็นสองส่วน ปัญหาคือ บทพิสูจน์ของเขาไม่รัดกุมพอตามมาตรฐานสมัยใหม่ จนเมื่อต้นศตวรรษที่ 20 มีการแก้ไขพิสูจน์หลายครั้ง มีนักคณิตศาสตร์หลายคนมาช่วยทำให้บทพิสูจน์ของทฤษฎีนี้รัดกุมขึ้น

โอเค ตอนนี้แน่ใจแล้วว่ารั้วบ้านที่สร้างขึ้นจะแบ่งพื้นที่ออกได้เป็นสองส่วน ดังนั้นเรามีในรั้วและนอกรั้วชัดเจนเสมอ แล้วเราจะรู้ได้ยังไงว่าตรงที่เราอยู่เนี่ย มันในหรือนอกกันแน่

หนึ่งในวิธีที่มีชื่อเสียงเรียกว่า ray casting algorithm ซึ่งคือการลากเส้นรังสีออกจากจุดที่เราสนใจ ในกรณีของเราคือบ้าน ออกไปให้ไกลที่สุด จนแน่ใจว่าตรงนั้นคือนอกรั้วแล้วแน่ ๆ

ยิงออกไปทางไหนก็ได้ฮะ แค่ยิงให้ไกลพอ แล้วนับว่าผ่านรั้วกี่ครั้ง

จะเห็นว่า บางเส้นก็ลากตัด 4 จุด บางเส้นตัด 6 จุด บางเส้นตัด 8 จุด

ตัวเลขอาจจะไม่ตรงกัน แต่มันจะเป็นเลขคู่ทั้งหมด

ray casting algorithm บอกว่าถ้าตัดเป็นจำนวนคู่จุด แปลว่าคุณอยู่ข้างนอก แต่ถ้าตัดเป็นจำนวนคี่จุด แปลว่าคุณอยู่ข้างใน แค่นี้เอง ง่ายมาก คุณลองไปจิ้มจุดอื่นแล้วลากออกมาดูก็ได้ ว่ามันเป็นแบบนั้นจริงหรือเปล่า

การถามว่าจุดใดจุดหนึ่งอยู่ข้างในหรือข้างนอกนั้นถูกเอาไปใช้แก้ปัญหาในโลกจริงหลายอย่าง เช่นการเช็คว่าพิกัดนี้อยู่ในเขตจังหวัด ตัวละครอยู่ในโซนไหน ตรวจว่าพิกัดของโดรนยังอยู่ในเขตปลอดภัยไหม และอะไรอีกมากมาย

ปัญหานี้จะซับซ้อนขึ้นไปอีกเมื่อเรายอมให้เส้นโค้งตัดกับตัวเองได้ เพราะคำว่าข้างในและข้างนอกจะเริ่มกำกวม

ลองนึกถึงรูปเลขแปด เส้นมันปิดก็จริง แต่มีจุดตัดกลางรูป ถ้าเรายิงเส้นออกไปแล้วนับจำนวนครั้งที่ตัด ขึ้นอยู่กับว่าคุณนิยามอะไรเป็นขอบเขต บางบริเวณอาจถูกเส้นล้อมรอบสองรอบ ในขณะที่บางบริเวณถูกล้อมรอบเพียงรอบเดียว

คำถามจึงไม่ใช่แค่ตัดกี่ครั้ง แต่คือเรากำลังนับแบบไหนกันแน่

เมื่อศึกษาลึกเข้าไป คุณจะเจอสิ่งที่เรียกว่า winding number ซึ่งคือแทนที่จะนับแค่จำนวนครั้ง เรานับทิศทางการล้อมรอบของเส้นด้วย ถ้าเส้นโค้งพันรอบจุดหลายรอบ ค่า winding number จะสะท้อนจำนวนรอบนั้น วิธีนี้แยกกรณีซ้อนทับซับซ้อนได้ละเอียดกว่า และใช้มากในคอมพิวเตอร์กราฟิกระดับลึกและเรขาคณิตเชิงคำนวณ

ที่มาภาพ: https://en.wikipedia.org/wiki/Winding_number

เมื่อเส้นตัดตัวเองได้ ระนาบอาจถูกแบ่งเป็นหลายบริเวณ ไม่ใช่แค่สองบริเวณแบบใน Jordan Curve Theorem อีกต่อไป โครงสร้างจะคล้ายกราฟระนาบที่มีหลายหน้า แต่ละหน้าคือบริเวณหนึ่งที่มีความเป็นข้างนอกและข้างในต่างกัน

ดังนั้นคำถามที่ว่าจุด ๆ หนึ่งอยู่ข้างในหรือข้างนอกกันแน่ที่ฟังดูง่ายมาก จึงค่อย ๆ พาเราไปสู่ปัญหาที่ซับซ้อน และไปสู่คณิตศาสตร์ที่ลึกอย่างคาดไม่ถึง


และเช่นเดิม ใครที่อยากสนับสนุนเพจเว็บไซต์ของเรา ให้ผลิตคอนเทนต์คณิตศาสตร์แบบนี้ต่อไป ก็สามารถสมัครเป็นสมาชิกรายเดือนได้โดยกดปุ่ม 'สมัครสมาชิก' ได้เลยนะฮะ

เอกสารอ้างอิง
https://webhomes.maths.ed.ac.uk/~v1ranick/jordan/jordan.pdf
https://www.math.stonybrook.edu/~bishop/classes/math401.F09/HalesDefense.pdf
https://kennycason.com/posts/2017-04-11-ray-casting.html
https://dl.acm.org/doi/10.1145/2396761.2396880
https://plus.maths.org/winding-numbers-topography-and-topology-ii
https://web.archive.org/web/20130126163405/http://geomalgorithms.com/a03-_inclusion.html