Là kết nối các đảo với pontoons NP-hoàn thành?


10

Tôi có một vấn đề trong tâm trí của tôi, tôi nghĩ đó là một vấn đề NPC nhưng tôi không biết làm thế nào để chứng minh nó.

Đây là vấn đề:

k đảo trong một hồ rất lớn, và có n pontoons hình quạt. Những con pontoons này có cùng kích thước nhưng có hướng ban đầu khác nhau và ở những vị trí ban đầu khác nhau trong hồ. Các pontoons có thể xoay tự do xung quanh tâm khối lượng của nó, và không có chi phí liên quan đến xoay.

Bây giờ chúng ta cần di chuyển những pontoons đó để tất cả các đảo trong hồ có thể được kết nối. Chúng tôi có thể đảm bảo số lượng pontoons đủ để kết nối tất cả các đảo.

[Lưu ý]: Chúng tôi không thể sử dụng lại pontoons !!

Nhiệm vụ là tìm ra giải pháp có tổng khoảng cách tối thiểu của các pontoons di chuyển để làm cho tất cả các đảo được kết nối. Khoảng cách di chuyển một phao có thể được tính bằng khoảng cách giữa vị trí ban đầu của khối lượng và vị trí được triển khai.

Để làm cho nó rõ ràng, tôi đã vẽ một con số như vậy. Giả sử chúng ta có 3 hòn đảo A, B và C. Chúng nằm ở đâu đó trong hồ. Và tôi có một vài cái quần lót hình quạt. Bây giờ giải pháp là tìm tổng cộng khoảng cách di chuyển tối thiểu để kết nối A, B và C, được hiển thị ở phần dưới cùng của hình. Hy vọng nó sẽ giúp hiểu vấn đề. :)

nhập mô tả hình ảnh ở đây

Có vẻ như vấn đề là một NPC, nhưng tôi không biết phải chứng minh điều đó. có ai có thể giúp tôi trong việc này không?


@vsaxena Không, tôi không nghĩ giải pháp cuối cùng là một đường thẳng, đôi khi nếu đã tạo thành một vòm nhưng chúng ta không cần phải di chuyển bất kỳ trong số chúng. Hầu hết các trường hợp, một đường thẳng sẽ tốt, nhưng khi pontoons ngày càng dày đặc, giải pháp có thể không phải là một đường thẳng. Con số chỉ là một ví dụ. :)

1
Có vẻ rất gần với Cây Steiner. Trong một không gian số liệu, nhiều kỹ thuật để giải quyết công việc trên cả hai. vi.wikipedia.org/wiki/ Kẻ
Nicholas Mancuso

@NicholasMancuso các cây cầu là nút đến nút nên nó không phải là cây Steiner cổ điển nơi cây cầu kết nối nhiều nút. Có nhiều vấn đề trong cách bố trí VLSI có đặc điểm tương tự.
VSOverFlow

1
@vsaxena: Vấn đề chưa được xác định rõ. Giả sử tôi có ba hòn đảo A, B, C trong một tam giác đều, và pontoons ban đầu tạo thành hình chữ Y được kết nối với các đảo ở hai đầu. Là không làm gì là một giải pháp hợp lệ, hoặc các pontoons phải được di chuyển xa hơn? Nếu giải pháp này không hợp lệ, vậy thì chính xác cấu thành một cấu hình hợp lệ của pontoons là gì?
JeffE

1
@vsaxena: Và trong khi chúng ta ở đó, các đảo chỉ là các điểm, hoặc các vòng tròn, hoặc một số hình dạng phức tạp hơn được chỉ định trong đầu vào? Là các phân đoạn dòng pontoons, hoặc elip, hoặc một số hình dạng khác? Có phải tất cả các đảo có cùng kích thước và hình dạng, hoặc chúng có thể khác nhau? Có phải tất cả các pontoons có cùng kích thước và hình dạng, hoặc có thể khác nhau?
JeffE

Câu trả lời:


1

Thứ nhất: Đây không phải là vấn đề nhân viên bán hàng du lịch. TSP yêu cầu xác định chu trình Hamilton trọng lượng tối thiểu; chu trình này không yêu cầu một chu kỳ, hoặc thậm chí là một con đường trọng lượng tối thiểu nào cả. Nó đòi hỏi một chi phí xây dựng tối thiểu của một tập hợp các cạnh, trong đó chi phí xây dựng dựa trên việc di chuyển các pontoons xung quanh.

Thứ hai: Đây không phải là vấn đề cây kéo dài trọng lượng tối thiểu. Xem ở trên-- chúng tôi yêu cầu một chi phí xây dựng tối thiểu không xác định trọng lượng tối thiểu.

Thứ ba: Dường như con đường được xây dựng sẽ là một cây bao trùm, nhưng không nhất thiết là một trọng lượng tối thiểu. Thay thế là nó sẽ là một cây bao trùm cộng với một số cạnh bổ sung dẫn đến một chu kỳ; nhưng nếu chúng ta bắt đầu trong một cấu hình không có cạnh, thì mọi cạnh đều có một số chi phí dương và chúng ta luôn có thể tìm thấy một cây bao trùm có trọng lượng thấp hơn bằng cách đơn giản là không xây dựng các cạnh phụ.

Thứ tư: Bạn nói pontoons xoay tự do; Tôi cho rằng điều đó có nghĩa là không có chi phí liên quan đến việc xoay pontoons. Tuy nhiên, bạn không chỉ định pontoons xoay về cái gì: Điểm của chúng? Trung tâm đại chúng của họ? Bất kỳ điểm nội bộ? (Nếu có bất kỳ điểm bên ngoài nào, thì chúng ta sẽ có cấu trúc không trọng lượng, vâng?)

Đây là một chút tinh tế, bởi vì nếu chúng ta xoay 90 độ về một điểm nội bộ, giả sử, trung tâm của khối lượng, chi phí là gì? Không có gì, vì đó là một vòng quay? Một số lượng hữu hạn vì điểm di chuyển? Bây giờ chúng ta cũng cần biết kích thước của pontoons.

Thứ năm: Người ta giả định cả pontoons và các đảo đều được nhúng vào mặt phẳng Euclide?


Cảm ơn bạn đã trả lời. Xoay là xung quanh trung tâm của khối lượng và không có chi phí liên quan đến xoay, chỉ có chuyển động liên quan đến chi phí. Vâng, cả pontoons và các đảo đều được nhúng trong mặt phẳng Euclide. Tôi sẽ sửa đổi bài viết để làm cho nó rõ ràng.

Tôi không đồng ý rằng đây không phải là TSP. Toàn bộ bài này được bao quanh trục trong thuật ngữ, nhưng thực tế của vấn đề là nếu người ta vẽ một đường thẳng giữa mỗi pontoon và mỗi vị trí pontoon cuối tiềm năng, và tính khoảng cách của mỗi dòng là trọng số của nó, thì ngoại trừ của điểm cuối quay trở lại điểm bắt đầu, biểu đồ được hình thành trông gần như chính xác (với một tee) như TSP. Một cầu phao hoặc một vị trí kết thúc là một nút trong biểu đồ và các trọng số được tạo bởi các khoảng cách. Chu kỳ hamilton CHỈ có nghĩa là nó kết thúc ở nơi nó bắt đầu.

2
Đây không phải là một câu trả lời, mà là một loạt các ý kiến.
Raphael

1

Sau khi nhìn vào các sơ đồ mới, tôi thấy rằng bạn có thể cần nhiều pontoons để vượt qua giữa các đảo. Do đó, bạn có thể tiến gần đến một giải pháp cho vấn đề Steiner Tree bằng cách biến các nút thành đảo và tạo ra một bộ sưu tập pontoons đủ đa dạng với các cung nhỏ. Wikipedia nói rằng trên thực tế có một PTAS cho vấn đề cây Steiner, vì vậy tôi không thể nói ngay rằng điều này làm cho nó hoàn thành NP. Tuy nhiên, nhìn vào các chi tiết của cây Steiner có thể giúp bạn có được một giải pháp gần đúng hoặc cho thấy vấn đề là NP-Complete.


Những gì bạn đang mô tả là một thuật toán gần đúng để đi đến một giải pháp gần tối ưu. Tuy nhiên, làm thế nào để bạn thậm chí xác minh rằng giải pháp là tối ưu?

Tôi nghĩ vấn đề thực sự là bạn cần nhiều pontoons để băng qua giữa các hòn đảo, điều này làm cho nó trông rất giống cây Steiner. Hãy xem Branch and Bound để biết cách đi từ giới hạn dưới (ví dụ được tạo bằng cách bỏ qua một ràng buộc) đến một giải pháp tối ưu đã biết.
mcdowella

2
@mcdowella Nó không phải là cây Steiner vì mỗi cây phao chỉ có thể xuất hiện trong một cây cầu; nó là một hệ thống điểm tới điểm. Hơn nữa vì hàm chi phí là chuyển động của pontoons, bạn có thể gặp trường hợp cây cầu được hình thành trong các cung rộng mà vẫn có chi phí thấp hơn giải pháp đường thẳng ..
VSOverFlow

Điều này có thể không thể là steiner từ một quan điểm khác. CHÚNG TÔI KHÔNG THỂ THÊM ĐIỂM chỉ để phù hợp với nhu cầu của chúng tôi.
kèn

1
Nếu các mối nối Y được cho phép thì điều này ít nhất cũng khó như vấn đề về cây Steiner, bởi vì bất kỳ vấn đề nào về cây Steiner đều có thể biến thành một trong số đó - chỉ cần tạo ra rất nhiều pontoons và đặt chúng cách xa các đảo mà nó không thực sự quan trọng mà bạn sử dụng pontoon ở đâu. Sau đó, nếu bạn có thể giải quyết vấn đề này, bạn có thể giải quyết vấn đề về cây Steiner: đối với lập luận này, không có vấn đề gì về việc có một số cấu hình của pontoons không dẫn đến các vấn đề về cây Steiner. Nếu các mối nối Y không cho phép chúng ta cần biết chính xác các quy tắc là gì. Các con đường cắt nhau ở ngã ba?
mcdowella

0

Sau bản vẽ, Đây vẫn là một vấn đề NPC. Ngay cả khi chúng tôi cắt vấn đề xuống từng pontoon có thể đảm nhận 1 trong số n vị trí (nghĩa là các đường kết nối đã biết. Để có câu trả lời tối ưu nhất, chúng tôi sẽ phải thử từng pontoon ở mỗi vị trí, thêm khoảng cách của chúng để đến các vị trí lặp lại đó thời gian và so sánh với tất cả những người khác. Nếu mỗi pontoon phải được kiểm tra ở mỗi vị trí, thì có n! sự kết hợp cần phải được kiểm tra.

Ive đã chọn chỉnh sửa hình ảnh của người đăng ban đầu với một số bổ sung để hiển thị các ý tưởng biểu đồ đằng sau vấn đề này.

Hình ảnh dưới đây cho thấy tất cả (trừ 2 để đơn giản hơn) pontoons với các màu khác nhau, với tất cả các vị trí cuối phao tiềm năng ở ĐỎ. Tôi chỉ vẽ các đường giữa 3 pontoons và tất cả các vị trí cuối, nhưng người ta có thể thấy CRAZY này có thể nhận được như thế nào.

Nói rằng chỉ vì cái quái quỷ đó, chúng tôi chọn cho pontoon màu ngọc lam được đặt ở vị trí cuối gần nó nhất là bước đầu tiên (mặc dù TỪ TSP chúng tôi biết rằng cuối cùng có thể không tối ưu).

Dưới đây chúng ta thấy chính xác rằng, phao và khoảng cách (còn gọi là khoảng cách di chuyển có trọng số) nó sẽ phải di chuyển.

nhập mô tả hình ảnh ở đây

Từ đây, một nút ảo với hai vị trí cuối bên cạnh vị trí vừa đặt có thể được tạo. Khoảng cách từ nút đặt và hai nút liền kề trong nút ảo có khoảng cách di chuyển ảo là 0.

Dưới đây chúng ta thấy nút ảo được tạo với TẤT CẢ trọng lượng khoảng cách di chuyển có thể được đặt ở đó.

nhập mô tả hình ảnh ở đây

Xem cách điều này sẽ tiếp tục và cách giải pháp tối ưu nhất (như đã thấy nhiều lần với TSP) sẽ không phải luôn luôn bằng cách chọn khoảng cách ngắn nhất cho mọi lựa chọn, chúng tôi sẽ phải kiểm tra tất cả các đường dẫn cho tất cả các nút / nút ảo.

Cuối cùng, nút đầu tiên của vấn đề (TSP) có thể là bất kỳ một trong những điểm pontoon cuối tiềm năng và các đường được rút ra từ đó là khoảng cách từ điểm cuối đó đến tất cả các pontoons khác. tất cả các nút khác sau đó trở thành các nút ảo như tôi đã mô tả với các dòng của chúng xuất hiện dưới dạng khoảng cách / trọng lượng cho tất cả các pontoons còn lại, v.v. Làm thế nào vấn đề đồ thị này KHÔNG CHÍNH XÁC vấn đề nhân viên bán hàng du lịch mà không có yêu cầu LUM JUMP từ chu kỳ hamiltonian vượt quá tôi. Để có câu trả lời chính xác, người ta phải kiểm tra tất cả các đường dẫn qua biểu đồ.


1
Bỏ qua một bên cho dù đây là một mô hình hợp lý của vấn đề đã nêu hay liệu đây có thực sự là một mô hình TSP hay không, đây không phải là cách giảm NP hoạt động. Bạn không cho thấy rằng vấn đề mục tiêu của bạn có thể được đóng khung như là một ví dụ của vấn đề NPC. Bạn cần chỉ ra rằng một trường hợp của một vấn đề NPC có thể được đóng khung như là vấn đề mục tiêu của bạn.


2
Trời ơi. Nếu bạn đã bận tâm đọc bình luận của tôi và liên kết tôi cung cấp, bạn đã biết rằng thuật toán được tham chiếu là chính xác (họ chứng minh điều đó) và do đó mâu thuẫn với sự hiểu biết của bạn. Lưu ý rằng ý kiến ​​của bạn cho thấy P! = NP - đây vẫn là một câu hỏi mở. Vì vậy, không, bạn đã không hiểu điều này, xin lỗi. (Ngay cả khi sự thật là các vấn đề hoàn thành NP có thể được giải quyết không tốt hơn một cách ngây thơ, lý do bạn sử dụng sẽ sai.)
Raphael

2
O(1.3n)n

3
@JeffE: Nói cách khác, câu trả lời này chỉ chứng minh rằng vấn đề có lẽ là hoàn toàn NP.
Tsuyoshi Ito
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.