Le isole di collegamento con i pontoni NP sono complete?


10

Ho un problema nella mia mente, penso che sia un problema NPC ma non so come dimostrarlo.

Ecco il problema:

Ci sono k isole in un lago molto grande e ci sono n pontoni a forma di ventaglio. Quei pontoni hanno le stesse dimensioni ma hanno direzioni iniziali diverse e si trovano in posizioni originali diverse nel lago. I pontoni possono ruotare liberamente attorno al suo centro di massa e nessun costo associato alla rotazione.

Ora dobbiamo spostare quei pontoni in modo che tutte le isole del lago possano essere collegate. Possiamo garantire che il numero di pontoni è sufficiente per collegare tutte le isole.

[Nota]: non possiamo riutilizzare i pontoni !!

Il compito è quello di trovare la soluzione che abbia la distanza totale minima dei pontoni mobili al fine di collegare tutte le isole. La distanza di spostamento di un pontone può essere calcolata come distanza tra il centro della posizione originale della massa e la sua posizione dispiegata.

Per chiarire, ho disegnato una figura del genere. Supponiamo di avere 3 isole A, B e C. Si trovano da qualche parte nel lago. E ho diversi pantoon a forma di ventaglio. Ora la soluzione è trovare una somma minima della distanza mobile per collegare A, B e C, mostrata nella parte inferiore della figura. Spero che aiuti a capire il problema. :)

inserisci qui la descrizione dell'immagine

Sembra che il problema sia un NPC, ma non so dimostrarlo. Qualcuno può aiutarmi in questo?


@vsaxena No, non credo che la soluzione finale sia una linea retta, a volte se già forma un arco ma non abbiamo bisogno di spostarne nessuno. La maggior parte dei casi, una linea retta sarà buona, ma man mano che i pontoni diventano più densi, la soluzione potrebbe non essere una linea retta. La figura è solo un esempio. :)

1
Sembra molto vicino a Steiner Tree. In uno spazio metrico, molte tecniche per risolvere il lavoro su entrambi. en.wikipedia.org/wiki/…
Nicholas Mancuso

@NicholasMancuso i ponti sono da nodo a nodo, quindi non è un classico albero di Steiner in cui il ponte collega più nodi. Ci sono molti problemi nel layout VLSI che hanno caratteristiche simili.
VSOverFlow

1
@vsaxena: il problema non è specificato. Supponiamo che io abbia tre isole A, B, C in un triangolo equilatero e che i pontoni inizialmente formino una forma a Y collegata con le isole alle estremità. Non fare nulla è una soluzione valida o i pontoni devono essere spostati ulteriormente? Se questa soluzione non è valida, cosa costituisce esattamente una configurazione valida dei pontoni?
JeffE,

1
@vsaxena: E mentre ci siamo, le isole sono solo punti, o cerchi, o qualche forma più complicata specificata nell'input? I pontoni sono segmenti di linea, o ellissi o qualche altra forma? Tutte le isole hanno le stesse dimensioni e forma o possono essere diverse? Tutti i pontoni hanno le stesse dimensioni e forma o possono essere diversi?
JeffE,

Risposte:


1

Primo: questo non è il problema del commesso viaggiatore. Il TSP richiede l'identificazione di un ciclo hamiltoniano di peso minimo; questo ciclo non richiede affatto un ciclo né un percorso di peso minimo. Richiede una costruzione a costo minimo di una serie di bordi di collegamento, in cui il costo di costruzione si basa sullo spostamento dei pontoni.

Secondo: questo non è il problema dell'albero spanning peso minimo. Vedi sopra-- abbiamo bisogno di una costruzione a costo minimo non di identificazione del peso minimo.

Terzo: sembra che il percorso costruito sarà un albero spanning, ma non necessariamente di peso minimo. L'alternativa è che sarebbe un albero spanning più alcuni spigoli aggiuntivi risultanti in un ciclo; ma se iniziamo in una configurazione senza spigoli, allora ogni spigolo ha qualche costo positivo e possiamo sempre trovare un albero di spanning di peso inferiore semplicemente non costruendo i bordi extra.

Quarto: dici che i pontoni ruotano liberamente; Presumo che ciò significhi che nessun costo è associato alla rotazione dei pontoni. Tuttavia, non specifichi su cosa ruotano i pontoni: i loro punti? I loro centri di massa? Qualche punto interno? (Se ci fosse un punto esterno, avremmo costruzioni a peso zero, sì?)

Questo è un po 'sottile, perché se ruotiamo di 90 gradi attorno a un punto interno, diciamo, il centro di massa, qual è il costo? Niente, perché è una rotazione? Qualche importo finito perché il punto è stato spostato? Ora dobbiamo anche conoscere la dimensione dei pontoni.

Quinto: si presume che entrambi i pontoni e le isole siano entrambi incorporati nel piano euclideo?


Grazie per la tua risposta. La rotazione è attorno al centro di massa e nessun costo associato alla rotazione, solo il movimento comporta un costo. Sì, entrambi i pontoni e le isole sono incorporati nel piano euclideo. Modificherò il post per chiarirlo.

Non sono d'accordo sul fatto che questo non è essenzialmente il TSP. L'intero palo è avvolto attorno all'asse in termini terminologici, ma il fatto è che se uno ha tracciato una linea tra ciascun pontone e ogni potenziale posizione del pontone e ha calcolato la distanza di ciascuna linea in modo che sia peso, quindi con l'eccezione del punto finale che ritorna al punto iniziale, il grafico che si forma sembra quasi esattamente (a un tee) come il TSP. Un pontone o una posizione finale è un nodo nel grafico e i pesi sono costituiti dalle distanze. Il ciclo hamiltoniano significa SOLO che finisce dove è iniziato.

2
Questa non è una risposta, ma una serie di commenti.
Raffaello

1

Dopo aver visto i nuovi diagrammi, vedo che potresti aver bisogno di più pontoni per attraversare le isole. Detto questo, potresti avvicinarti molto a una soluzione del problema di Steiner Tree trasformando i nodi in isole e creando una collezione sufficientemente diversificata di pontoni con piccoli archi. Wikipedia afferma che esiste effettivamente un PTAS per il problema dell'albero di Steiner, quindi non posso dire immediatamente che questo lo rende NP-completo. Tuttavia, guardando i dettagli dell'albero di Steiner potresti ottenere una buona soluzione approssimativa o mostrare che il problema è NP-Complete.


Quello che stai descrivendo è un algoritmo approssimativo per arrivare a una soluzione quasi ottimale. Tuttavia, come si fa a verificare che la soluzione sia ottimale?

Penso che il vero problema sia che sono necessari più pontoni per attraversare le isole, il che fa sembrare un albero di Steiner. Dai un'occhiata a Branch and Bound per come passare da un limite inferiore (ad esempio generato trascurando un vincolo) a una soluzione ottimale nota.
mcdowella,

2
@mcdowella Non è un albero di Steiner poiché ogni pontone può apparire in un solo ponte; è un sistema punto a punto. Inoltre, poiché la funzione di costo è il movimento dei pontoni, è possibile avere un caso in cui il ponte è formato in archi ampi che hanno ancora un costo inferiore rispetto alla soluzione in linea retta.
VSOverFlow

Questo non può essere il vero steiner da un'altra prospettiva. NON POSSIAMO AGGIUNGERE PUNTI solo per soddisfare le nostre esigenze.
trumpetlicks,

1
Se le giunzioni a Y sono consentite, questo è difficile almeno quanto il problema dell'albero di Steiner, perché qualsiasi problema dell'albero di Steiner può essere trasformato in uno di questi - basta creare molti pontoni e metterli così lontano dalle isole che non lo fa importa davvero quale pontone usi dove. Quindi, se potessi risolverlo, potresti risolvere il problema dell'albero di Steiner: per questo argomento non importa che ci siano alcune configurazioni di pontoni che non causano problemi all'albero di Steiner. Se le giunzioni a Y non sono consentite, dobbiamo sapere esattamente quali sono le regole. I percorsi si incrociano all'incrocio?
mcdowella,

0

Dopo il disegno, questo è ancora un problema NPC. Anche se riduciamo il problema a ciascun pontone, possiamo assumere 1 di n posizioni (ovvero linee di connessione note. Per ottenere la risposta ottimale, dovremmo provare ogni pontone in ciascuna posizione, aggiungendo la loro distanza per arrivare a quelle posizioni ripetitive ciascuna tempo e confronto con tutti gli altri. se ogni pontone deve essere testato in ogni posizione, allora ci sono n! combinazioni che devono essere testate.

Ho scelto di modificare le immagini del poster originale con alcune aggiunte per mostrare le idee grafiche dietro questo problema.

L'immagine seguente mostra tutti i pontoni (meno 2 per renderlo più semplice) in diversi colori, con tutte le possibili posizioni finali del pontone in ROSSO. Ho tracciato solo le linee tra 3 pontoni e tutte le posizioni finali, ma si potrebbe vedere quanto questo sia PAZZO.

Diciamo che solo per il gusto di farlo, scegliamo che il pontone turchese venga posizionato nella posizione finale più vicina ad esso come primo passo (anche se DAL TSP sappiamo che alla fine potrebbe non essere ottimale).

Di seguito vediamo esattamente che, il pontone e la distanza (aka distanza percorsa ponderata) dovranno viaggiare.

inserisci qui la descrizione dell'immagine

Da qui può essere creato un nodo virtuale con le due posizioni finali accanto alla posizione appena posizionata. Distanza dal nodo impostato e i due nodi adiacenti all'interno del nodo virtuale hanno una distanza di spostamento virtuale di 0.

Di seguito vediamo il nodo virtuale creato con TUTTI i potenziali pesi della distanza da percorrere che possono essere posizionati lì.

inserisci qui la descrizione dell'immagine

Vedendo come ciò continuerebbe e come la soluzione più ottimale (vista più volte con il TSP) non sarà sempre scegliendo la distanza più breve per ogni scelta, dovremmo testare essenzialmente tutti i percorsi per tutti i nodi / nodi virtuali.

Alla fine il primo nodo del problema (TSP) potrebbe essere uno qualsiasi dei potenziali punti del pontone finale, e le linee tracciate da quella sono le distanze da quell'endpoint a tutti gli altri pontoni. tutti gli altri nodi in seguito diventano nodi virtuali come ho illustrato con le loro linee che si staccano come distanze / pesi da tutti i rimanenti pontoni, e così via e così via. Come questo problema grafico NON È ESATTAMENTE il problema del commesso viaggiatore senza il requisito LAST JUMP del ciclo hamiltoniano è al di là di me. Per avere la risposta esatta è necessario testare tutti i percorsi attraverso il grafico.


1
A prescindere dal fatto che si tratti di un modello ragionevole del problema dichiarato o di un modello TSP, non è così che funzionano le riduzioni di NP. Non mostri che il tuo problema target può essere inquadrato come un'istanza di un problema NPC. È necessario mostrare che un'istanza di un problema NPC può essere inquadrata come problema di destinazione.

3
Sembra che la tua comprensione della complessità sia profondamente imperfetta. La dimensione dello spazio di ricerca non è la stessa della complessità computazionale. Esistono molti problemi che possono essere risolti senza forzare brutalmente la questione, ovvero senza controllare ogni elemento dello spazio della soluzione. L'ordinamento è stato un esempio. Oppure prendi Vertex Cover, un altro problema NP completo: può essere risolto nel tempo peggioreO(1.3n) , quindi chiaramente senza controllare ogni sottoinsieme di nodi.
Raffaello

2
Oh caro. Se ti sei preso la briga di leggere il mio commento e il link che ho fornito, hai imparato che l'algoritmo di riferimento è esatto (lo dimostrano) e quindi contraddice la tua comprensione. Nota che la tua opinione suggerisce che P! = NP - questa è ancora una domanda aperta. Quindi no, non l'hai capito, scusa. (Anche se fosse vero che i problemi NP-completi non potevano essere risolti meglio che ingenuamente, il ragionamento che usi sarebbe sbagliato.)
Raffaello

2
@trumpetlicks: non c'è contraddizione. L'algoritmo Raphael fa riferimento a risolve la copertura del vertice NP-hard esattamente in tempo, che è esponenziale in , ma non per enumerazione della forza bruta. Ancora più importante, tuttavia, "NP-complete" non significa "Non riesco a vedere come risolverlo in meno di tempo esponenziale". nO(1.3n)n
JeffE,

3
@JeffE: In altre parole, questa risposta dimostra solo che il problema è probabilmente NP-completo.
Tsuyoshi Ito,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.