J'ai un problème dans mon esprit, je pense que c'est un problème de PNJ mais je ne sais pas comment le prouver.
Voici le problème:
Il y a k îles dans un lac très grand, et il y a n pontons en forme d' éventail. Ces pontons sont de la même taille mais ont des directions initiales différentes et sont dans des positions originales différentes dans le lac. Les pontons peuvent tourner librement autour de son centre de masse, sans aucun coût associé à la rotation.
Maintenant, nous devons déplacer ces pontons afin que toutes les îles du lac puissent être connectées. Nous pouvons garantir que le nombre de pontons est suffisant pour relier toutes les îles.
[Note]: Nous ne pouvons pas réutiliser les pontons !!
La tâche est de trouver la solution ayant la distance totale minimale des pontons en mouvement afin de connecter toutes les îles. La distance de déplacement d'un ponton peut être calculée comme la distance entre la position d'origine du centre de masse et sa position déployée.
Pour être clair, j'ai dessiné un tel chiffre. Supposons que nous ayons 3 îles A, B et C. Elles sont situées quelque part dans le lac. Et j'ai plusieurs pantalons en forme d'éventail. Maintenant, la solution consiste à trouver une somme minimale de distance de déplacement pour connecter A, B et C, indiquée dans la partie inférieure de la figure. J'espère que cela vous aidera à comprendre le problème. :)
Il semble que le problème soit un PNJ, mais je ne sais pas le prouver. Quelqu'un peut-il m'aider à ce sujet?
la source
Réponses:
Premièrement: ce n'est pas le problème du voyageur de commerce. Le TSP nécessite l'identification d'un cycle hamiltonien de poids minimal; ce cycle ne nécessite pas de cycle, ni même de parcours de poids minimal. Il nécessite une construction à coût minimal d'un ensemble de bords de connexion, où le coût de construction est basé sur le déplacement des pontons.
Deuxièmement: ce n'est pas le problème de l'arbre couvrant de poids minimal. Voir ci-dessus - nous avons besoin d'une construction à coût minimal et non d'une identification de poids minimale.
Troisièmement: Il semble que le chemin construit sera un arbre couvrant, mais pas nécessairement un poids minimal. L'alternative est qu'il s'agirait d'un arbre couvrant plus quelques arêtes supplémentaires résultant en un cycle; mais si nous commençons dans une configuration sans arêtes, chaque arête a un coût positif et nous pouvons toujours trouver un arbre couvrant de poids inférieur en ne construisant simplement pas les arêtes supplémentaires.
Quatrièmement: vous dites que les pontons tournent librement; Je suppose que cela signifie qu'aucun frais n'est associé à la rotation des pontons. Cependant, vous ne précisez pas sur quoi tournent les pontons: leurs points? Leurs centres de masse? Un point interne? (S'il y avait un point externe, alors nous aurions des constructions de poids nul, oui?)
C'est un peu subtil, car si nous tournons de 90 degrés autour d'un point interne, disons le centre de masse, quel est le coût? Rien, parce que c'est une rotation? Une certaine quantité finie parce que le point a bougé? Maintenant, nous devons également connaître la taille des pontons.
Cinquièmement: on suppose que les pontons et les îles sont tous deux intégrés dans le plan euclidien?
la source
Après avoir regardé les nouveaux diagrammes, je constate que vous pourriez avoir besoin de plusieurs pontons pour traverser les îles. Cela étant, vous pouvez vous rapprocher très près d'une solution au problème de l' arbre de Steiner en transformant les nœuds en îles et en créant une collection suffisamment diversifiée de pontons avec de petits arcs. Wikipedia dit qu'il existe en fait un PTAS pour le problème de l'arbre Steiner, donc je ne peux pas dire immédiatement que cela le rend NP-complet. Cependant, en regardant les détails de l'arbre Steiner, vous pouvez soit obtenir une bonne solution approximative, soit montrer que le problème est NP-Complete.
la source
Après le dessin, il s'agit toujours d'un problème de PNJ. Même si nous réduisons le problème à chaque ponton, nous pouvons prendre 1 position sur n (c.-à-d. Des lignes de connexion connues. Pour obtenir la réponse la plus optimale, nous devons essayer chaque ponton dans chaque position, en ajoutant leur distance pour atteindre chacune de ces positions respectives. temps et en se comparant à tous les autres. Si chaque ponton doit être testé dans chaque position, alors il n'y a pas de combinaisons à tester.
Ive a choisi de modifier les images de l'affiche originale avec quelques ajouts pour montrer les idées de graphique derrière ce problème.
L'image ci-dessous montre tous les pontons (moins 2 pour le simplifier) de couleurs différentes, avec tous les emplacements potentiels d'extrémité de ponton en ROUGE. Je n'ai tracé que les lignes entre 3 pontons et tous les emplacements finaux, mais on pouvait voir comment cela pouvait être fou.
Disons que juste pour le plaisir, nous choisissons que le ponton turquoise soit placé à l'emplacement final le plus proche comme première étape (bien que DEPUIS LE TSP, nous savons que cela peut ne pas être optimal à la fin).
Ci-dessous, nous voyons exactement cela, le ponton et la distance (aka distance de déplacement pondérée) qu'il devra parcourir.
De là, un nœud virtuel avec les deux emplacements d'extrémité à côté de l'emplacement qui vient d'être placé peut être créé. La distance du nœud défini et les deux nœuds adjacents au sein du nœud virtuel ont une distance de déplacement virtuelle de 0.
Ci-dessous, nous voyons le nœud virtuel créé avec TOUS les poids de distance de déplacement potentiels qui peuvent y être placés.
Pour voir comment cela continuerait et comment la solution la plus optimale (comme on l'a vu plusieurs fois avec le TSP) ne serait pas toujours en choisissant la distance la plus courte pour chaque choix, il faudrait tester essentiellement tous les chemins pour tous les nœuds / nœuds virtuels.
En fin de compte, le premier nœud du problème (TSP) pourrait être n'importe lequel des points de ponton d'extrémité potentiels, et les lignes qui en sont tirées sont les distances de ce point d'extrémité à tous les autres pontons. tous les autres nœuds deviennent ensuite des nœuds virtuels comme je l'ai représenté avec leurs lignes se détachant comme les distances / poids à tous les pontons restants, et ainsi de suite. Comment ce problème de graphique n'est PAS EXACTEMENT le problème des vendeurs itinérants sans l'exigence LAST JUMP du cycle hamiltonien me dépasse. Afin d'avoir la réponse exacte, il faut tester tous les chemins à travers le graphique.
la source