Questo sito utilizza cookies solo per scopi di autenticazione sul sito e nient'altro. Nessuna informazione personale viene tracciata. Leggi l'informativa sui cookies.
Username: Password: oppure
Algoritmi - Algoritmo che trova il posizionamento di un punto!
Forum - Algoritmi - Algoritmo che trova il posizionamento di un punto!

Avatar
sdbx (Normal User)
Newbie


Messaggi: 3
Iscritto: 06/09/2014

Segnala al moderatore
Postato alle 20:25
Sabato, 06/09/2014
Ciao a tutti, ho una retta in cui sono collocati dei punti X1, X2... Xn fissi su di essa. A questo punto mi danno un numero N. Io devo inserire N nuovi punti sulla retta in modo che la somma totale di tutte le distanze fra ciascuna X e il più vicino nuovo punto inserito sia minima.
Con un esempio è più chiaro:
Dati i punti X1=1; X1=3 X2=20 X3=40; collocati su una retta:

-X0---X1-----------------X2--------------------X3------------>

Ora prendiamo a caso N = 3, devo collocare altri 3 punti in modo che la distanza tra i nuovi 3 punti e quello più lontano tra quelli vecchi sia minima, cioè inserisco 3 nuovi punti alle coordinate:
X4=2; X5=X2=20; X6=X3=40 così la distanza tra i nuovi punti e quelli vecchi è la minima.

Se N fosse stata = 1 allora avrei aggiunto un punto X4 = |X3 - X1|/2 = 19.5 così la distanza massima tra il nuovo punto e quello più lontano è 19.5 ed è il minimo che si possa avere.
Se N fosse stato = 2 allora avrei aggiunto due punti X4 = 10.5 e X5 = 30.5 così la distanza massima tra i nuovi punti e quelli più lontani è 10.5 ed è il minimo che si possa avere (credo XD).
Se N fosse stato = 3 (come scritto prima) allora avrei aggiunto 3 punti X4=2; X5=20; X6=40; così la distanza massima tra i nuovi punti e quelli più lontani è 1 ed è il minimo che si possa avere.
Se N fosse stato = 4 allora avrei aggiunto 4  nuovi nunti esattamente sui vecchi punti così la distanza è minima, quindi X4=X0; X5=X1; X6=X2; X7=X3;

Il mio problema è realizzare un algoritmo che mi inserisca i nuovi punti! Conoscete qualche algoritmo "famoso" che svolge questo compito? se no come lo risolvereste? Help!!!! Non ho idea di come fare!!! :(

Ultima modifica effettuata da sdbx il 06/09/2014 alle 20:28
PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 20:54
Sabato, 06/09/2014
Ho riletto il testo 3 volte e non riesco a capire cosa stai cercando di minimizzare. La tua definizione del problema e' ambigua.

Data una retta con punti X1, X2, ... Xn e dato un numero N, inserire N nuovi punti Y1, Y2, ... Yn in modo che la somma totale delle distanze tra .... ? e il piu' vicino nuovo punto (Y1? Y2? Yn? Tutti? Yn - Y1? Sono Y1, Y2, Yn definiti in maniera che Y1 <= Y2 <= ... <= Yn?) sia minima (eh?)



Il mio blog: https://piero.dev
PM Quote
Avatar
TheDarkJuster (Member)
Guru^2


Messaggi: 1620
Iscritto: 27/09/2013

Segnala al moderatore
Postato alle 21:12
Sabato, 06/09/2014
piero, qui manca la notazione matematica (per le formule) aggiungerla non sarebbe male *.* comunque passando a cose serie..... Come fai ad avere punti alla stessa distanza senza spostare quelli vecchi? mmmmmmmmhhhhh non credo di aver capito la tua domanda. Puoi essere più chiaro?

Ok ho riletto più volte, ma non basta che aggiungi i punti vicini al primo e all' ultimo?

Ultima modifica effettuata da TheDarkJuster il 06/09/2014 alle 21:15
PM Quote
Avatar
sdbx (Normal User)
Newbie


Messaggi: 3
Iscritto: 06/09/2014

Segnala al moderatore
Postato alle 21:59
Sabato, 06/09/2014
Eh lo so scusate è complicato da spiegare! Anche io c'ho messo un po' a capire quello che mi richiedevano! Allora un esempio pratico potrebbe essere:
abbiamo 4 città collegate tra di loro da una linea ferroviaria:
-Milano-------Bologna------------------Roma------------------Catanzaro--->
Supponiamo che Milano è posizionata al KM 0 della ferrovia, Bologna al KM 3, Roma al KM 10 e Catanzaro al KM 20.
X0=0--X1=3-------X2=10----------X4=20--->

Ora dato un numero N di stazioni io devo posizionarle nel modo più corretto.
Se mi dicono che posso costruire una sola stazione la metterò esattamente a metà per cui tra Milano e Catanzaro, Quindi al KM 10;
Se mi dicono che posso costruire 2 stazioni ne costruirò una al KM 5 e una al KM 15;
Se mi dicono che posso costruire 3 stazioni ne costruirò una a Roma una a Catanzaro e una tra Milano e Bologna, in modo che la distanza tra le sazione e le città sia la minore possibile.
Se mi dicono che si possono costruire 4 stazioni ne costruisco una per città.

Quindi in base alle città che ho mi danno il numero di stazioni da costruire, per cui mi occorre sceglie le posizioni delle stazioni in modo tale che la distanza tra le città e le stazioni sia minima.

Spero così di essere stato un po' più chiaro! Il fatto è che non so come tradurlo in matematichese e quindi trirare fuori l'algoritmo che risolve il problema!

Ultima modifica effettuata da sdbx il 06/09/2014 alle 22:06
PM Quote
Avatar
Roby94 (Member)
Guru


Messaggi: 1170
Iscritto: 28/12/2009

Segnala al moderatore
Postato alle 15:00
Domenica, 07/09/2014
Allora se ho capito bene, avendo dei punti fissi su una retta, quindi con delle distanze tra di loro ben definite e avendo la possibilita di inserire una seconda serie di punti tu vorresti porre questi punti tra le singole tratte piu lunghe?

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 18:51
Domenica, 07/09/2014
Testo quotato


Se mi dicono che posso costruire una sola stazione la metterò esattamente a metà per cui tra Milano e Catanzaro, Quindi al KM 10;



E perche' non al KM 9, oppure 8, o 7?

abs(10 - 0) = 10
abs(10 - 3) = 7
abs(10 - 10) = 0
abs(10 - 20) = 10

Tot: 27

abs(9 - 0) = 9
abs(9 - 3) = 6
abs(9 - 10) = 1
abs(9 - 20) = 11

Tot: 27

Ultima modifica effettuata da pierotofy il 07/09/2014 alle 18:52


Il mio blog: https://piero.dev
PM Quote
Avatar
sdbx (Normal User)
Newbie


Messaggi: 3
Iscritto: 06/09/2014

Segnala al moderatore
Postato alle 1:20
Martedì, 09/09/2014
Perchè se metto una stazione al decimo kilometro la distanza massimatra tra la stazione e la città più lontana è 10. Mentre se la metto al nono kilometro la distanza massima tra la stazione e la città più lontana è 11. Io devo fare si che la distanza massima sia la minima.

È un macello!

L'unica idea che mi è venuta è creare tutte le combinazioni possibili delle stazioni sulla linea e memorizzare quella la cui somma delle distanze tra le stazioni e le città è la minima. Ma è estremamente inefficiente.

PM Quote
Avatar
pierotofy (Admin)
Guru^2


Messaggi: 6230
Iscritto: 04/12/2003

Segnala al moderatore
Postato alle 17:39
Martedì, 09/09/2014
Non è ancora chiaro... forse dovresti darci la fonte originale del problema? Sembra che sia un esercizio universitario oppure un problema preso da qualche gara.

Per il caso N = 2, perchè le stazioni sono a 5 e 15?

abs(0 - 5) = 5, abs(0 - 15) = 15 (Min: 5)
abs(3 - 5) = 2, abs(3 - 15) = 12 (Min: 2)
abs(10 - 5) = 5, abs(10 - 15) = 5 (Min: 5)
abs(20 - 5) = 15, abs(20 - 15) = 5 (Min: 5)

Tot: 5 + 2 + 5 + 5 = 17

Perchè non 5 e 20?

abs(0 - 5) = 5, abs(0 - 20) = 15 (Min: 5)
abs(3 - 5) = 2, abs(3 - 20) = 12 (Min: 2)
abs(10 - 5) = 5, abs(10 - 20) = 5 (Min: 5)
abs(20 - 5) = 15, abs(20 - 20) = 0 (Min: 0)

Tot: 5 + 2 + 5 = 12

Postaci la fonte originale del problema, in forma completa.


Il mio blog: https://piero.dev
PM Quote