ปัญหาเส้นทางเป็นปัญหาพื้นฐานในทฤษฎีความซับซ้อนทางคอมพิวเตอร์ที่เกี่ยวข้องกับการค้นหาเส้นทางระหว่างจุดยอดสองจุดในกราฟ จากกราฟ G = (V, E) และจุดยอด XNUMX จุด s และ t เป้าหมายคือการระบุว่ามีเส้นทางจาก s ถึง t ใน G หรือไม่
ในการแก้ปัญหาเส้นทาง วิธีหนึ่งคือการใช้อัลกอริทึมการทำเครื่องหมาย อัลกอริทึมการทำเครื่องหมายเป็นเทคนิคที่ง่ายและมีประสิทธิภาพที่สามารถใช้เพื่อระบุว่ามีเส้นทางอยู่ระหว่างจุดยอดสองจุดในกราฟหรือไม่
อัลกอริทึมทำงานดังนี้:
1. เริ่มต้นด้วยการทำเครื่องหมายจุดยอดเริ่มต้น s ตามที่เข้าชม
2. สำหรับจุดยอด v แต่ละจุดที่อยู่ติดกับ s ให้ทำเครื่องหมาย v ว่าเยี่ยมชมแล้วเพิ่มลงในคิว
3. ในขณะที่คิวไม่ว่างเปล่า ให้ทำซ้ำขั้นตอนต่อไปนี้:
ก. ลบจุดสุดยอด u ออกจากคิว
ข. ถ้า u เป็นจุดยอดเป้าหมาย t แสดงว่าพบเส้นทางจาก s ถึง t
ค. มิฉะนั้น สำหรับจุดยอด v แต่ละจุดที่อยู่ติดกับ u ที่ยังไม่เคยเข้าชม ให้ทำเครื่องหมาย v ว่าเยี่ยมชมแล้วเพิ่มลงในคิว
อัลกอริทึมการทำเครื่องหมายใช้กลยุทธ์การค้นหาแบบกว้างก่อน (BFS) เพื่อสำรวจกราฟและทำเครื่องหมายจุดยอดเมื่อเข้าชม การทำเช่นนี้จะช่วยให้มั่นใจได้ว่าทุกจุดยอดที่สามารถเข้าถึงได้จากจุดยอดเริ่มต้นนั้นได้รับการเยี่ยมชม ทำให้อัลกอริทึมสามารถระบุได้ว่ามีเส้นทางอยู่ระหว่างจุดยอดเริ่มต้นและเป้าหมายหรือไม่
ความซับซ้อนของเวลาของอัลกอริทึมการมาร์กคือ O(|V| + |E|) โดยที่ |V| คือจำนวนจุดยอดในกราฟและ |E| คือจำนวนขอบ นี่เป็นเพราะอัลกอริทึมเยี่ยมชมแต่ละจุดยอดและขอบแต่ละครั้ง ในแง่ของทฤษฎีความซับซ้อนทางคอมพิวเตอร์ อัลกอริทึมการทำเครื่องหมายเป็นของคลาส P ซึ่งแสดงถึงปัญหาที่สามารถแก้ไขได้ในเวลาพหุนาม
ต่อไปนี้คือตัวอย่างเพื่ออธิบายการประยุกต์ใช้อัลกอริทึมการทำเครื่องหมาย:
พิจารณากราฟต่อไปนี้:
A --- B --- C | | D --- E --- F
สมมติว่าเราต้องการตรวจสอบว่ามีเส้นทางจากจุดยอด A ไปยังจุดยอด F หรือไม่ เราสามารถใช้อัลกอริทึมการทำเครื่องหมายดังนี้:
1. เริ่มด้วยการทำเครื่องหมายจุดสุดยอด A เมื่อเข้าชม
2. เพิ่มจุดยอด A ลงในคิว
3. ลบจุดยอด A ออกจากคิว
4. ทำเครื่องหมายที่จุดยอด B ว่าเข้าชมแล้วเพิ่มลงในคิว
5. ลบจุดสุดยอด B ออกจากคิว
6. ทำเครื่องหมายจุดยอด C ว่าเข้าชมแล้วเพิ่มลงในคิว
7. ลบจุดยอด C ออกจากคิว
8. ทำเครื่องหมายจุดยอด D ว่าเข้าชมแล้วเพิ่มลงในคิว
9. ลบจุดยอด D ออกจากคิว
10. ทำเครื่องหมายจุดยอด E ว่าเข้าชมแล้วเพิ่มลงในคิว
11. ลบจุดยอด E ออกจากคิว
12. ทำเครื่องหมายจุดสุดยอด F ว่าเข้าชมแล้ว
13. เนื่องจากจุดยอด F เป็นจุดยอดเป้าหมาย จึงพบเส้นทางจาก A ถึง F
ในตัวอย่างนี้ อัลกอริทึมการทำเครื่องหมายกำหนดได้สำเร็จว่ามีเส้นทางจากจุดยอด A ไปยังจุดยอด F
ปัญหาเส้นทางในทฤษฎีความซับซ้อนทางการคำนวณเกี่ยวข้องกับการค้นหาเส้นทางระหว่างจุดยอดสองจุดในกราฟ อัลกอริทึมการทำเครื่องหมายเป็นเทคนิคที่ง่ายและมีประสิทธิภาพที่สามารถใช้เพื่อแก้ปัญหานี้ได้โดยดำเนินการผ่านการค้นหาแบบกว้างก่อนและทำเครื่องหมายจุดยอดเมื่อเยี่ยมชม อัลกอริทึมมีความซับซ้อนของเวลาเป็น O(|V| + |E|) และอยู่ในคลาส P
คำถามและคำตอบล่าสุดอื่น ๆ เกี่ยวกับ ความซับซ้อน:
- คลาส PSPACE ไม่เท่ากับคลาส EXPSPACE หรือไม่
- คลาสความซับซ้อน P เป็นส่วนย่อยของคลาส PSPACE หรือไม่
- เราสามารถพิสูจน์ได้ว่าคลาส Np และ P เหมือนกันหรือไม่โดยการค้นหาคำตอบพหุนามที่มีประสิทธิภาพสำหรับปัญหา NP ที่สมบูรณ์บน TM ที่กำหนดขึ้น
- คลาส NP สามารถเท่ากับคลาส EXPTIME ได้หรือไม่
- มีปัญหาใน PSPACE ที่ไม่มีอัลกอริทึม NP ที่รู้จักหรือไม่
- ปัญหา SAT สามารถเป็นปัญหาที่สมบูรณ์ของ NP ได้หรือไม่
- ปัญหาอาจอยู่ในคลาสความซับซ้อนของ NP ได้หรือไม่ หากมีเครื่องทัวริงที่ไม่สามารถกำหนดได้ซึ่งจะแก้ไขในเวลาพหุนาม
- NP คือคลาสของภาษาที่มีตัวตรวจสอบเวลาพหุนาม
- P และ NP เป็นคลาสความซับซ้อนเดียวกันจริงหรือ
- ทุกบริบทเป็นภาษาฟรีในคลาสความซับซ้อน P หรือไม่
ดูคำถามและคำตอบเพิ่มเติมในความซับซ้อน