เกาะเชื่อมต่อกับโป๊ะ NP-complete หรือไม่?


10

ฉันมีปัญหาในใจฉันคิดว่ามันเป็นปัญหาของ NPC แต่ฉันไม่รู้จะพิสูจน์มันได้อย่างไร

นี่คือปัญหา:

มีkหมู่เกาะในทะเลสาบที่ใหญ่มากมีและn ทุ่นพัดลมรูป โป๊ะเหล่านั้นมีขนาดเท่ากัน แต่มีทิศทางเริ่มต้นแตกต่างกันและอยู่ในตำแหน่งดั้งเดิมต่างกันในทะเลสาบ ทุ่นสามารถหมุนได้อย่างอิสระรอบจุดศูนย์กลางมวลและไม่มีค่าใช้จ่ายที่เกี่ยวข้องกับการหมุน

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

[หมายเหตุ]: เราไม่สามารถนำทุ่นกลับมาใช้ซ้ำได้ !!

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

เพื่อให้ชัดเจนฉันได้วาดรูปดังกล่าว สมมติว่าเรามี 3 เกาะ A, B และ C พวกเขาอยู่ที่ไหนสักแห่งในทะเลสาบ และฉันมี pantoons รูปพัดหลายอัน ตอนนี้ทางออกคือการหาผลรวมระยะทางเคลื่อนที่ขั้นต่ำสุดเพื่อเชื่อมต่อ A, B และ C ซึ่งแสดงในส่วนล่างของรูป หวังว่ามันจะช่วยให้เข้าใจปัญหา :)

ป้อนคำอธิบายรูปภาพที่นี่

ดูเหมือนว่าปัญหาจะเป็น NPC แต่ฉันไม่รู้จะพิสูจน์มัน ใครสามารถช่วยฉันในเรื่องนี้?


@ vsaxena ไม่ฉันไม่คิดว่าทางออกสุดท้ายเป็นเส้นตรงบางครั้งถ้าเป็นรูปโค้งแล้ว แต่เราไม่ต้องการย้ายใด ๆ เลย กรณีส่วนใหญ่เป็นเส้นตรงจะดี แต่เมื่อทุ่นเริ่มหนาแน่นการแก้ปัญหาอาจไม่ใช่เส้นตรง รูปเป็นเพียงตัวอย่าง :)

1
ดูเหมือนว่าใกล้กับต้น Steiner ในพื้นที่เมตริกหลายเทคนิคในการแก้ปัญหาการทำงานทั้งสองอย่าง en.wikipedia.org/wiki/…
Nicholas Mancuso

@NicholasMancuso บริดจ์เป็นโหนดไปยังโหนดดังนั้นจึงไม่ใช่ต้นไม้ Steiner แบบคลาสสิกที่สะพานเชื่อมต่อหลายโหนด มีปัญหามากมายในโครงร่าง VLSI ซึ่งมีลักษณะคล้ายกัน
VSOverFlow

1
@vsaxena: ปัญหาไม่ได้รับการระบุ สมมติว่าฉันมีสามเกาะ A, B, C ในรูปสามเหลี่ยมด้านเท่าและทุ่นเริ่มต้นรูปร่าง Y เชื่อมต่อกับเกาะที่ปลาย ไม่ได้ทำสิ่งใดที่เป็นวิธีแก้ปัญหาที่ถูกต้องหรือจะต้องย้ายทุ่นไปต่ออีกหรือไม่? หากแก้ปัญหานี้ไม่ถูกต้องแล้วสิ่งที่ได้อย่างแม่นยำถือว่าการกำหนดค่าที่ถูกต้องของทุ่นหรือไม่
JeffE

1
@ vsaxena: และในขณะที่เราอยู่ที่นั่นเกาะเหล่านี้เป็นเพียงแค่จุดหรือวงกลมหรือรูปร่างที่ซับซ้อนยิ่งขึ้นที่ระบุไว้ในอินพุตหรือไม่ ส่วนของเส้นโป๊ะหรือจุดไข่ปลาหรือรูปร่างอื่น ๆ เกาะทั้งหมดมีขนาดและรูปร่างเท่ากันหรือแตกต่างกันหรือไม่? โป๊ะทั้งหมดมีขนาดและรูปร่างเท่ากันหรือไม่
JeffE

คำตอบ:


1

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

ประการที่สอง: นี่ไม่ใช่ปัญหาทรีถ่วงน้ำหนักขั้นต่ำ ดูด้านบน - เราต้องการการสร้างต้นทุนที่น้อยที่สุดไม่ใช่การระบุน้ำหนักขั้นต่ำ

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

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

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

ที่ห้า: หนึ่งถือว่าทั้งโป๊ะและหมู่เกาะทั้งสองฝังอยู่ในระนาบยูคลิด?


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

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

2
นี่ไม่ใช่คำตอบ แต่เป็นชุดของความคิดเห็น
กราฟิลส์

1

หลังจากดูไดอะแกรมใหม่แล้วฉันเห็นว่าคุณอาจต้องใช้ทุ่นหลายอันเพื่อข้ามระหว่างเกาะต่างๆ ระบุว่าคุณสามารถเข้าใกล้ทางออกของปัญหาSteiner Tree ได้โดยเปลี่ยนโหนดให้เป็นเกาะและสร้างคอลเลกชันทุ่นที่มีความหลากหลายและมีโค้งขนาดเล็กเพียงพอ Wikipedia กล่าวว่าในความเป็นจริงแล้ว PTAS สำหรับปัญหาต้นไม้ Steiner ดังนั้นฉันไม่สามารถพูดได้ทันทีว่านี่ทำให้ NP สมบูรณ์ อย่างไรก็ตามการดูรายละเอียดของต้นไม้ Steiner อาจช่วยให้คุณมีวิธีแก้ปัญหาโดยประมาณที่ดีหรือแสดงว่าปัญหานั้นเกิดจากปัญหา NP-Complete


สิ่งที่คุณอธิบายคืออัลกอริทึมโดยประมาณเพื่อไปยังโซลูชันที่เหมาะสมที่สุด อย่างไรก็ตามคุณจะยืนยันได้อย่างไรว่าวิธีการแก้ปัญหานั้นดีที่สุด?

ฉันคิดว่าปัญหาที่แท้จริงคือคุณต้องใช้ทุ่นหลายตัวเพื่อข้ามระหว่างเกาะซึ่งทำให้มันดูเหมือนต้นไม้สทิเนอร์ ดูที่Branch และ Boundเพื่อดูวิธีการเปลี่ยนจากขอบเขตล่าง (เช่นสร้างโดยการละเลยข้อ จำกัด ) ไปยังโซลูชันที่เหมาะสมที่สุดที่รู้จัก
mcdowella

2
@mcdowella มันไม่ได้เป็นต้นไม้ Steiner เพราะโป๊ะแต่ละสามารถปรากฏในสะพานเดียวเท่านั้น มันเป็นระบบจุดต่อจุด นอกจากนี้เนื่องจากฟังก์ชั่นค่าใช้จ่ายคือการเคลื่อนไหวของทุ่นคุณสามารถมีกรณีที่สะพานถูกสร้างขึ้นในส่วนโค้งที่กว้างซึ่งยังคงมีต้นทุนที่ต่ำกว่าวิธีการแก้ปัญหาเส้นตรง ..
VSOverFlow

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

1
หากอนุญาตให้ใช้จุดแยก Y ได้อย่างน้อยก็ยากเท่ากับปัญหาต้นไม้ Steiner เพราะปัญหาต้นไม้ Steiner สามารถเปลี่ยนเป็นหนึ่งในสิ่งเหล่านี้ - เพียงสร้างทุ่นมากมายและวางให้ห่างจากเกาะที่มันไม่ได้ ไม่ว่าคุณจะใช้โป๊ะขนาดไหน ถ้าคุณสามารถแก้ปัญหานี้ได้คุณสามารถแก้ปัญหาต้นไม้ Steiner ได้: สำหรับการโต้แย้งนี้มันไม่สำคัญว่ามีการกำหนดค่าของทุ่นที่ไม่ส่งผลให้เกิดปัญหาต้นไม้ Steiner ถ้าทางแยก Y ไม่อนุญาตให้เราต้องรู้ว่ากฎคืออะไร เส้นทางข้ามที่ทางแยกหรือไม่
mcdowella

0

หลังจากการวาดภาพนี่เป็นปัญหาของ NPC แม้ว่าเราจะตัดปัญหาลงไปในโป๊ะแต่ละตำแหน่งก็สามารถสันนิษฐานได้ว่า 1 ตำแหน่งจาก n ตำแหน่ง (เช่นสายเชื่อมต่อที่รู้จักกันเพื่อให้ได้คำตอบที่ดีที่สุดเราจะต้องลองโป๊ะแต่ละตำแหน่งในแต่ละตำแหน่งเพิ่มระยะทางเพื่อไปยังตำแหน่ง เวลาและการเปรียบเทียบกับคนอื่น ๆ หากโป๊ะแต่ละอันจะต้องถูกทดสอบในแต่ละตำแหน่งดังนั้นจะต้องมีการรวมกันของ n!

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

ภาพด้านล่างแสดงโป๊ะทั้งหมด (ลบ 2 เพื่อทำให้ง่ายขึ้น) เป็นสีที่แตกต่างกันโดยมีจุดสิ้นสุดโป๊ะที่มีศักยภาพทั้งหมดเป็นสีแดง ฉันวาดเส้นระหว่าง 3 ทุ่นและที่สิ้นสุดเท่านั้น แต่ใคร ๆ ก็เห็นว่า CRAZY นี้จะได้รับได้อย่างไร

พูดได้ว่าสำหรับจุดแข็งของมันเราเลือกให้โป๊ะสีเทอร์ควอยส์วางไว้ที่ตำแหน่งสุดท้ายใกล้เคียงกับมันเป็นขั้นตอนแรก (แม้ว่าจาก TSP เรารู้ว่านี่อาจไม่เหมาะสมที่สุด)

ด้านล่างเราจะเห็นว่าโป๊ะและระยะทาง (หรือที่รู้จักในการเดินทางไกล) จะต้องเดินทาง

ป้อนคำอธิบายรูปภาพที่นี่

จากที่นี่โหนดเสมือนที่มีสองตำแหน่งปลายทางถัดจากตำแหน่งที่เพิ่งวางอาจถูกสร้างขึ้น ระยะทางจากโหนดที่ตั้งค่าและสองโหนดที่อยู่ติดกันภายในโหนดเสมือนมีระยะการเดินทางเสมือน 0

ด้านล่างเราจะเห็นโหนดเสมือนที่สร้างขึ้นด้วยน้ำหนักระยะทางในการเดินทางที่เป็นไปได้ทั้งหมดที่สามารถวางไว้ได้

ป้อนคำอธิบายรูปภาพที่นี่

มาดูกันว่าสิ่งนี้จะดำเนินต่อไปอย่างไรและวิธีการแก้ปัญหาที่ดีที่สุด (เท่าที่เห็นด้วย TSP) จะไม่อยู่เสมอโดยการเลือกระยะทางที่สั้นที่สุดสำหรับทุกตัวเลือกเราจะต้องทดสอบเส้นทางทั้งหมดสำหรับโหนด / โหนดเสมือนทั้งหมด

ในตอนท้ายโหนดแรกของปัญหา (TSP) อาจเป็นหนึ่งในจุดสิ้นสุดโป๊ะที่มีศักยภาพและเส้นที่ลากจากนั้นคือระยะทางจากจุดปลายทางนั้นไปยังโป๊ะอื่นทั้งหมด หลังจากนั้นโหนดอื่น ๆ ทั้งหมดจะกลายเป็นโหนดเสมือนในขณะที่ฉันวาดภาพด้วยเส้นของมันออกมาเป็นระยะทาง / น้ำหนักกับโป๊ะที่เหลือทั้งหมดและต่อไปเรื่อย ๆ ปัญหากราฟนี้ไม่ใช่ปัญหาของพนักงานขายที่เดินทางโดยไม่ต้องมีข้อกำหนด LAST JUMP จากวัฏจักร hamiltonian เกินกว่าฉัน เพื่อให้มีคำตอบที่ถูกต้องเราจะต้องทดสอบเส้นทางทั้งหมดผ่านกราฟ


1
ทิ้งไว้ไม่ว่าจะเป็นรูปแบบที่สมเหตุสมผลของปัญหาที่ระบุไว้หรือว่านี่เป็นรูปแบบ TSP จริงหรือไม่นี่ไม่ใช่วิธีการลดปัญหา NP คุณไม่แสดงว่าปัญหาเป้าหมายของคุณสามารถถูกกำหนดกรอบเป็นตัวอย่างของปัญหา NPC คุณต้องแสดงให้เห็นว่าอินสแตนซ์ของปัญหา NPC สามารถกำหนดกรอบเป็นปัญหาเป้าหมายของคุณได้


2
โอ้ที่รัก หากคุณใส่ใจที่จะอ่านความคิดเห็นของฉันและลิงก์ที่ฉันให้ไว้คุณได้เรียนรู้ว่าอัลกอริทึมที่อ้างอิงนั้นถูกต้อง (พวกเขาพิสูจน์แล้ว) ดังนั้นจึงขัดแย้งกับความเข้าใจของคุณ โปรดทราบว่าความคิดเห็นของคุณแสดงให้เห็นว่า P! = NP - นี่ยังเป็นคำถามเปิด ไม่เลยคุณไม่เข้าใจเรื่องนี้ขอโทษ (แม้ว่าจะเป็นความจริงที่ว่าปัญหาที่สมบูรณ์แบบของ NP สามารถแก้ไขได้ไม่ดีกว่าไร้เดียงสาเหตุผลที่คุณใช้จะผิด)
Raphael

2
O(1.3n)n

3
@JeffE: ในคำอื่น ๆ คำตอบนี้พิสูจน์ให้เห็นว่าปัญหาที่เกิดขึ้นอาจจะเป็น istically NP-complete
Tsuyoshi Ito
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.