6
ฉันควรใช้อัลกอริธึมอะไรในการเขียนโปรแกรมหุ่นยนต์ทำความสะอาดห้องพัก
สำหรับคำถามนี้สมมติว่าไม่ทราบสิ่งต่อไปนี้: ขนาดและรูปร่างของห้อง ตำแหน่งของหุ่นยนต์ การปรากฏตัวของอุปสรรคใด ๆ นอกจากนี้สมมติว่าสิ่งต่อไปนี้คงที่: ขนาดและรูปร่างของห้อง จำนวนรูปร่างและที่ตั้งของสิ่งกีดขวาง (ถ้ามี) ทั้งหมด และสมมติว่าหุ่นยนต์มีคุณสมบัติดังต่อไปนี้: สามารถเคลื่อนที่ไปข้างหน้าด้วยการเพิ่มหน่วยสัมบูรณ์และหมุนเป็นองศาเท่านั้น นอกจากนี้การดำเนินการที่ย้ายจะกลับเป็นจริงถ้าสำเร็จหรือเท็จหากไม่สามารถย้ายได้เนื่องจากมีสิ่งกีดขวาง แหล่งพลังงานที่ไม่ จำกัด อย่างสมเหตุสมผล (สมมติว่ามันเป็นหุ่นยนต์พลังงานแสงอาทิตย์วางบนสถานีอวกาศที่หันหน้าไปทางดวงอาทิตย์ตลอดเวลาโดยไม่มีเพดาน) ทุกการเคลื่อนไหวและการหมุนจะดำเนินการอย่างแม่นยำทุกครั้ง (ไม่ต้องกังวลกับข้อมูลที่ไม่น่าเชื่อถือ สุดท้ายโปรดพิจารณาคุณสมบัติต่อไปนี้ของสภาพแวดล้อมของหุ่นยนต์: การอยู่บนสถานีอวกาศที่มีเพดานน้อยห้องพักมีความปลอดภัย แต่อยู่ใกล้กับดาวหางที่ผ่านมาอย่างน่าหงุดหงิดดังนั้นฝุ่น (และน้ำแข็ง) จึงถูกทิ้งร้างอย่างต่อเนื่อง ฉันถูกถามคำถามแบบนี้ง่ายกว่ามาก (ห้องเป็นรูปสี่เหลี่ยมผืนผ้าและไม่มีสิ่งกีดขวางคุณจะเคลื่อนไหวอย่างไรเพื่อให้แน่ใจว่าคุณสามารถผ่านทุกส่วนอย่างน้อยหนึ่งครั้ง) และหลังจากฉันเริ่มสงสัยว่าคุณจะเข้าใกล้เรื่องนี้อย่างไรถ้าคุณไม่สามารถ ไม่รับประกันรูปร่างหรือการมีสิ่งกีดขวาง ฉันเริ่มดูสิ่งนี้ด้วยอัลกอริธึมของ Dijkstraแต่ฉันรู้สึกทึ่งที่ได้ยินว่าคนอื่นเข้าหาวิธีนี้ได้อย่างไร (หรือถ้ามีคำตอบที่ยอมรับได้ดีในเรื่องนี้ (Roomba ทำเช่นนั้นได้อย่างไร)