У мене є проблема в думці, я думаю, що це проблема NPC, але я не знаю, як це довести.
Ось проблема:
У дуже великому озері є k островів, і є п вентиляторних понтонів. Ці понтони мають однаковий розмір, але мають різні початкові напрямки і знаходяться в різних оригінальних положеннях в озері. Понтони можуть вільно обертатися навколо його центру мас, і це не пов’язано з витратами, пов'язаними з обертанням.
Тепер нам потрібно перемістити ті понтони, щоб усі острови в озері могли бути з'єднані. Ми можемо гарантувати, що кількість понтонів достатня для з'єднання всіх островів.
[Примітка]: Ми не можемо повторно використовувати понтони !!
Завдання полягає в тому, щоб знайти рішення, що має мінімальну загальну відстань рухомих понтонів, щоб зробити з'єднання всіх островів. Відстань переміщення одного понтона може бути обчислена як відстань між центром вихідного положення маси та його розгорнутим положенням.
Щоб було зрозуміло, я намалював таку фігуру. Припустимо, у нас є 3 острови A, B і C. Вони розташовані десь в озері. А у мене кілька віялоподібних пантонів. Тепер рішення - знайти підсумок мінімальної відстані, що рухається, щоб з'єднати A, B і C, показане в нижній частині рисунка. Сподіваюся, це допоможе зрозуміти проблему. :)
Здається, що проблема є NPC, але я не знаю, щоб це довести. Хтось може мені в цьому допомогти?