Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce
REDMI Note 17 Pro porta in fascia media una batteria da 8.340 mAh con ricarica HyperCharge a 67W, un display AMOLED da 6,83 pollici capace di picchi di luminosità molto elevati e una struttura certificata TÜV SÜD contro cadute e infiltrazioni d'acqua, il tutto racchiuso in una scocca da 223 grammi. Lo abbiamo provato per diversi giorni tra fotocamera, prestazioni, autonomia e prezzo sul mercato italiano
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema
Insta360 Luna Ultra integra un sensore da 1 pollice 8K, ottiche Leica e triplo chip IA. Tra schermo OLED rimovibile, workflow I-Log a 10 bit e stabilizzazione a tre assi, analizziamo le doti tecniche di una gimbal camera pensata per i professionisti
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa
Marvel's Wolverine porta Logan in un'avventura inedita, violenta e fortemente narrativa, costruita attorno alla sua natura di combattente e al difficile rapporto con il proprio passato. Insomniac Games punta su combattimenti spettacolari, progressione e personalizzazione, inserendo l'azione in un mondo segnato dalla persecuzione dei mutanti. Un viaggio intenso, che alterna mattanza, esplorazione e momenti sorprendentemente emotivi.
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 10-03-2012, 15:15   #1
guylmaster
Senior Member
 
L'Avatar di guylmaster
 
Iscritto dal: Aug 2002
Messaggi: 2518
[Java - Algoritmico] Calcolare tragitto

Salve a tutti,
ormai sapete già che mi sto barcamenando su un algoritmo per la ricostruzione di rotte navali avendo delle rilevazioni sulla mappa.

Le rilevazioni che ho sono un punto sulla mappa (latitudine e longitudine), l'orario della rilevazioni e la velocità. Prendendo due rilevazioni, basandomi anche sulla velocità nei due punti so stimarmi una lunghezza massima che bisogna percorrere per andare da una rilevazione all'altra.

Il problema è qui, fino ad ora cercavo il primo percorso che arrivasse a destinazione non superando questa lunghezza massima (lmax) . Perfarlo facevo una visita in ampiezza, ogni cella che visitavo decremento lmax ed inserivo cella ed lmax in una lista di nodi visitati in modo da non ripassare sempre sugli stessi nodi. Se arrivavo a lmax < 0 senza raggiungere la destinazione facevo un backtrack, altrimenti se raggiungevo la destinazione (anche se non nel percorso minimo, ma comunque con una lunghezza < lmax) mi andava bene e l'algoritmo terminava.

Questa lista dei nodi visitati la utilizzavo a questa maniera: Immaginatevi una mappa, ogni cella ha 8 vicini (tranne quelle sui bordi), da questi 8 vicini prendo solo quelli che o non risultano nella lista dei vicini visitati o se risultano sono stato inseriti con un lmax minor di quello attuale e quindi sono stati visitati prima di un backtrack e quindi sono ancora disponibili.

Fin qui tutto bene, adesso ci è stato detto di aggiungere un'altra clausola, ovvero non devo semplicemente raggiungere la destinazione entro una determinata lmax, quindi con un percorso non troppo lungo, ma devo raggiungerla con una distanza che si avvicina di molto a questa lmax (tipo non più piccola del 5%), e quindi bisogna evitare di fare percorsi troppo lunghi.

A questo punto non so più come fare. Se faccio un backtrack anche quando sono arrivato troppo velocemente alla fine tutto il meccanismo della lista dei vicini non funziona più.

In breve: Come posso fare avendo una mappa di celle, ogni cella con 8 vicini (di cui non tutti navigabili perché magari alcuni sono zone di terra), a costruirmi una traiettoria tra due celle che non sia ne più lunga di una data lmax ne più corta di un tot% ?

Perché di algoritmi in rete riesco a trovare tutte cose riguardanti ai percorsi minimi, ma non mi risulta (magari esistono ma mi sfuggono) che qualcuno si sia posto il problema dei percorsi "non troppo corti"

P.S: Il mio attuale algoritmo è una variante dell'A*, che ovviamente non prevede minimamente la possibilità di non arrivare troppo presto a destinazione
http://it.wikipedia.org/wiki/A*

Vi ringrazio in anticipo,
guylmaster.
guylmaster è offline   Rispondi citando il messaggio o parte di esso
Old 11-03-2012, 10:57   #2
PGI-Bis
Senior Member
 
L'Avatar di PGI-Bis
 
Iscritto dal: Nov 2004
Città: Tra Verona e Mantova
Messaggi: 4553
Una soluzione è certamente questa:

trovi il percorso più breve e se è troppo breve elimini dalla mappa una delle celle di quel percorso e lo ricalcoli.

E' meno facile da scrivere che da descrivere perchè quello che devi fare più passaggi: elimina una cella, ricacoli, se non va bene riattivi la cella eliminata e ne scegli un'altra, ricacoli e via così. Se arrivi ad aver testato tutte le celle senza aver trovato il percorso corretto allora dovrai rifare il tutto eliminandone due, poi tre poi quattro e via dicendo.

Funziona di certo perchè la condizione che determina l'eccessiva "brevità" del percorso è l'attraversamento di una o più celle: impediscilo e avrai la possibilità di calcolare un percorso più lungo.

Richiede però un sacco di conti. Un modo per mitigare questa richiesta è calcolare una distanza media tra le celle. Se sei in grado di stimare il numero di celle che dovrai attraversare per raggiungere la destinazione allora puoi decidere di accettare o meno un attraversamento durante la costruzione del percorso in base allo scostamento che la distanza tra la cella da scegliere e quella precedente ha rispetto alla distanza media.

Vale a dire che se la distanza ottimale è di 1 km e sai che le celle da attraversare saranno circa 10 allora la distanza tra le singole celle del percorso dovrebbe essere di 100 metri.

Io parto dalla cella P e tra le opzioni possibili per raggiungere la destinazione scelgo quella cella C adiacente a P la cui distanza da P più si avvicina a quei cento metri. Ricalcolo la distanza media tra le celle tenendo conto che PC è 90 o 100 o magari anche 50 e so il prossimo passo potrà essere di 105 o 150 o 75 metri.

E' solo un'euristica (la possibilità che ci azzecchi sempre dipende dalla distribuzione dello spazio tra le celle) ma potrebbe aiutare.
__________________
Uilliam Scecspir ti fa un baffo? Gioffri Cioser era uno straccione? E allora blogga anche tu, in inglese come me!
PGI-Bis è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
Insta360 Luna Ultra: la potenza del sensore da 1 pollice incontra la portabilità estrema Insta360 Luna Ultra: la potenza del sensore da 1...
Marvel's Wolverine, la recensione: Logan torna protagonista in un'avventura brutale e intensa Marvel's Wolverine, la recensione: Logan torna p...
DJI Romo 2: tante novità lo rendono un robot completo DJI Romo 2: tante novità lo rendono un ro...
Sony Bravia 9 II: il True RGB alla prova, dove l'LCD sfida l'OLED Sony Bravia 9 II: il True RGB alla prova, dove l...
La Camera USA presenta il conto: i data ...
Non solo EV, ma anche IA: Panasonic inau...
iPhone Duo, il debutto del pieghevole di...
Atlas 960E SuperPoD, la risposta di Huaw...
IA militare e nucleare: esperti USA e ci...
Dieci mini-reattori nucleari in Europa d...
CONTROL Resonant su PC: Path Tracing, Ra...
ColorOS 17 arriva su circa 90 dispositiv...
GTA VI, il multiplayer potrebbe debuttar...
Aggiornamento KB5002914 rompe Excel: ecc...
Processo Huawei a Brooklyn: l'FBI mostra...
WhatsApp introduce nuovi temi per le cha...
NVIDIA, Google e Emerald AI uniscono le ...
iPhone 18 Pro Max, il test sulla vapor c...
Fine estate in giardino: le proposte sco...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 22:36.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v