ฉันจะตรวจสอบวิธีแก้ไขปัญหาของพนักงานขายที่เดินทางในเวลาพหุนามได้อย่างไร


31

ดังนั้นTSP (ปัญหาการเดินทางพนักงานขาย) ปัญหาการตัดสินใจเป็นNP สมบูรณ์

แต่ฉันไม่เข้าใจว่าฉันสามารถตรวจสอบได้อย่างไรว่าวิธีแก้ปัญหาที่กำหนดให้กับ TSP นั้นดีที่สุดในเวลาพหุนามเนื่องจากไม่มีวิธีที่จะหาทางออกที่ดีที่สุดในเวลาพหุนาม (ซึ่งเป็นเพราะปัญหาไม่ได้อยู่ใน P)

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

คำตอบ:


20

จะแม่นยำมากขึ้นเราจะไม่ทราบว่า TSP อยู่ใน{P} เป็นไปได้ว่าจะสามารถแก้ไขได้ในเวลาพหุนามแม้ว่าอาจจะเป็นที่เชื่อกันว่า{} ตอนนี้จำได้ว่ามันหมายความว่าสำหรับปัญหาที่จะ -hard และสมบูรณ์, ดูตัวอย่างของฉันคำตอบที่นี่ ผมเชื่อว่าแหล่งที่มาของความสับสนเกิดขึ้นจากคำจำกัดความ: ภาพปัญหา -hard ไม่จำเป็นต้องอยู่ใน{}PN P N P N P N P N PPPNPNPNPNPNP

ในขณะที่คุณและหน้า Wikipedia ที่คุณเชื่อมโยงรัฐปัญหาการตัดสินใจคือ - สมบูรณ์: เมื่อพิจารณาจากต้นทุนและจำนวนเต็มให้ตัดสินใจว่ามีทัวร์ราคาถูกกว่าหรือไม่ วิธีหนึ่งในการดูปัญหาคือในคือการเห็นว่าได้รับการแก้ปัญหามันง่ายต่อการตรวจสอบในเวลาพหุนามว่าการแก้ปัญหานั้นถูกกว่าหรือไม่ คุณจะทำสิ่งนี้ได้อย่างไร เพียงทำตามทัวร์ได้รับการบันทึกค่าใช้จ่ายรวมของ บริษัท และในที่สุดก็เปรียบเทียบค่าใช้จ่ายทั้งหมดในการxx x N P x xNPxxNPxx


"เพียงติดตามทัวร์ที่ได้รับบันทึกค่าใช้จ่ายทั้งหมดแล้วเปรียบเทียบต้นทุนทั้งหมดกับ x" -> ใช่ แต่มีจำนวนทัวร์เพื่อตรวจสอบจำนวนมาก!
Lazer

2
ฉันแค่ตาดช้าเกินไปดูเหมือนว่า ;-)
Niel de Beaudrap

3
@ เลเซอร์ไม่มีทัวร์เดียวที่จะตรวจสอบ คุณได้รับทัวร์และคุณบันทึกความยาว ถ้าเป็นน้อยกว่าผลผลิตใช่มิฉะนั้นไม่มี x
Juho

"ตัดสินใจว่ามีทัวร์หรือไม่" นี่แน่นอนหมายความว่าเราไม่ได้รับทัวร์ ฉันพลาดอะไรไป
Lazer

3
@Lazer ไม่ในปัญหาที่คุณจะได้รับกราฟถ่วงน้ำหนักและค่าใช้จ่ายเป้าหมาย ใบรับรองคือทัวร์ สำหรับคำอธิบายเพิ่มเติมดูคำตอบของ Niel เช่นเดียวกับในตัวอย่างของ Wiki ในกรณีของ SUBSET-SUM เราไม่ได้รับค่าศูนย์ แต่เราจะได้รับเซตย่อยเฉพาะเป็นใบรับรอง
Juho

34

ปมคือคุณต้องพิจารณาปัญหาการตัดสินใจ :

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

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


3

คุณอาจกำลังคิดถึงปัญหาในการพิจารณาว่าโซลูชันที่กำหนดให้กับ TSP เป็นทางออกที่ดีที่สุดหรือไม่ อย่างไรก็ตามไม่มีคำตอบพหุนามที่รู้จักสำหรับสิ่งนี้ซึ่งหมายความว่าปัญหานี้อยู่ใน NP-hard แต่ไม่จำเป็นต้องสมบูรณ์แบบ NP

ปัญหาการตัดสินใจของ TSP นั้นเกี่ยวกับการพิจารณาว่าน้ำหนักของการแก้ปัญหาใด ๆ ในกราฟGนั้นมีค่าใช้จ่ายมากที่สุดCหรือไม่


5
ขออภัยสำหรับ pedantry แต่ TSP ไม่ใช่ NP-hard เนื่องจากมีทัวร์ตัวอย่างเช่นการเรียงลำดับเป็น P แม้ว่าจะมีn ! การเรียงสับเปลี่ยนที่เป็นไปได้เช่นกัน ช่องว่างการค้นหาที่มีขนาดใหญ่หรือเติบโตอย่างรวดเร็วไม่ได้หมายความถึงความแข็ง O(n!)n!
Juho

@Juho มันเป็นไปได้ที่จะตรวจสอบว่ามีการเรียงลำดับเรียงโดยเพียงแค่การตรวจสอบว่า. อย่างไรก็ตามเพื่อที่จะรู้ว่าบางสิ่งเป็นทางออกที่ดีที่สุดสำหรับ TSP นั้นจำเป็นต้องรู้ว่าค่าใช้จ่ายนั้นเป็นค่าใช้จ่ายขั้นต่ำซึ่งโดยเนื้อแท้จะต้องรู้ค่าใช้จ่ายอื่นทั้งหมด n0<=n1<=...
Casey Kuball

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

7
ทั้งหมดที่ฉันพูดคือช่องว่างการค้นหาขนาดใหญ่ไม่ได้แปลว่าปัญหานั้นยาก แม้ว่าเราจะไม่รู้อัลกอริธึมที่ดีกว่าแรงเดรัจฉานที่แจกแจงความเป็นไปได้ทั้งหมด แต่ก็ไม่ได้หมายความว่ามันเป็นอัลกอริธึมเดียวเท่านั้น การเขียนโปรแกรมแบบไดนามิกคือตัวอย่างที่ดีถึงแม้ที่นี่: อัลกอริทึมถือคาร์พเป็นอัลกอริทึมที่แน่นอนสำหรับการทำงานใน TSP เวลา ขออภัยนี้เป็น arguably เพียง nitpicking แต่ฉันแค่อยากจะเพิ่มการแจ้งเตือน :)O(n22n)
Juho

@Juho จุดดี ฉันได้อัปเดตคำตอบแล้วเพื่อไม่ให้ระบุว่ากำลังดุร้ายเป็นตัวเลือกเดียวอีกต่อไป (เฉพาะที่ไม่มีคำตอบพหุนาม)
Casey Kuball

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.