Torna indietro   Hardware Upgrade Forum > Software > Programmazione

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.
DJI Romo 2: tante novità lo rendono un robot completo
DJI Romo 2: tante novità lo rendono un robot completo
Romo 2 è la seconda generazione di robot lavapavimenti di DJI, un modello che si caratterizza per la precisione nel sistema di navigazione e per il funzionamento particolarmente silenzioso. Con le modifiche introdotte in questa seconda versione, e un posizionamento di prezzo più allineato alla concorrenza, rappresenta una valida alternativa sul mercato delle soluzioni di pulizia domestica
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'LCD sfida l'OLED
Il primo Sony con retroilluminazione True RGB alla prova del banco di misura e dei contenuti: luminanza enorme, colori accurati in HDR e un antiriflesso molto efficace. I limiti sono due sole HDMI 2.1 e il blooming fuori asse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 17-08-2009, 15:45   #1
agosteeno
Member
 
Iscritto dal: Aug 2009
Messaggi: 119
[C] Calcolo itinerari

Salve a tutti, posto questo messaggio per chiedervi qualche consiglio riguardo un progettino che devo svolgere. Sostanzialmente devo scrivere (in c come da titolo) un modulo che, data un orario, una data, un origine e una destinazione calcoli un (in realta' vari) itinerario che colleghi questi luoghi tramite mezzi pubblici a partire dalla data e dall'orario specificati. Gli orari e le tratte sono contenuti in opportuni file di testo, dal quale il modulo deve attingere per fare i calcoli.
Io pensavo di inizare cercando l'origine considerata tra i vari file e considerare le possibili destinazioni e, contemporaneamente, cercare la destinazione tra i file e considerare le possibili origini. A questo punto, in maniera "ricorsiva" continuare con i risultati di queste operazioni fino a quando non si incontrano origine e destinazione.
Quello che mi rende perplesso e' che il costo puo' essere spropositato sia in termini di memoria che di tempo di elaborazione, anche se i file dai quali attingere fossere piccoli.
Vi ringrazio in anticipo per l'eventuale collaborazione, accetto qualsiasi tipo di consiglio...
agosteeno è offline   Rispondi citando il messaggio o parte di esso
Old 17-08-2009, 19:49   #2
british
Member
 
L'Avatar di british
 
Iscritto dal: Sep 2008
Città: Milano
Messaggi: 126
prova a guardare:

http://en.wikipedia.org/wiki/Dijkstra's_algorithm

http://en.wikipedia.org/wiki/Bellman-Ford_algorithm

potrebbero fare al caso tuo.

ciao!

british
british è offline   Rispondi citando il messaggio o parte di esso
Old 18-08-2009, 10:29   #3
agosteeno
Member
 
Iscritto dal: Aug 2009
Messaggi: 119
Grazie per la risposta. Naturalmente avevo gia' preso in considerazione questi algoritmi. Sopratutto quello di Dijkstra, in quando prevedo di nn avere costi negativi nel grafo, rendendo quindi inutile usare quello di Bellman-Ford.
Il problema che maggiormente mi preoccupa e' il costo computazionale: infatti il programma potenzialmente potrebbe ricevere centinaia se nn migliaia possibili "archi". Infatti potrebbe ricevere il percorso di tutti i treni, i pullman, le navi e gli aerei d'italia. A questo proposito pensavo infatti di fare la ricerca sia dal punto di partenza che, al contrario diciamo, dal punto di origine, in modo da poter bloccare il tutto quando si incrociano i risultati.
Inoltre con Dijkstra trovo i cammini minimi nel grafo, ma nn e' necessariamente questo il criterio che piu' mi interesserebbe. Potrei sia cercare il cammino piu' breve (inteso come orario) che quello con meno scambi, ma potrei anche restituire itinerari simili, senza particolari differenze di costo, giusto per dare un'alternativa (per intenderci: origine Firenze, destinazione alghero: it1: firenze-olbia aereo, olbia-alghero treno... it2: firenze-pisa treno, pisa-alghero aereo).
agosteeno è offline   Rispondi citando il messaggio o parte di esso
Old 18-08-2009, 11:52   #4
WarDuck
Senior Member
 
L'Avatar di WarDuck
 
Iscritto dal: May 2001
Messaggi: 13043
Prova a dare un'occhiata all'algoritmo A*.
WarDuck è offline   Rispondi citando il messaggio o parte di esso
Old 18-08-2009, 14:59   #5
agosteeno
Member
 
Iscritto dal: Aug 2009
Messaggi: 119
Nn mi e' ben chiaro come funziona. In particolare nn ho capito cosa si intende per stima euristica. In pratica mi viene chiesto di stimare la distanza fino alla destinazione. Ma nn riesco a capire come poter implementare questa cosa nel mio problema. Attualmente mi sembra piu' semplice da implementare l'algoritmo di Dijkstra...
agosteeno è offline   Rispondi citando il messaggio o parte di esso
Old 18-08-2009, 20:31   #6
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da agosteeno Guarda i messaggi
Salve a tutti, posto questo messaggio per chiedervi qualche consiglio riguardo un progettino che devo svolgere. Sostanzialmente devo scrivere (in c come da titolo) un modulo che, data un orario, una data, un origine e una destinazione calcoli un (in realta' vari) itinerario che colleghi questi luoghi tramite mezzi pubblici a partire dalla data e dall'orario specificati. Gli orari e le tratte sono contenuti in opportuni file di testo, dal quale il modulo deve attingere per fare i calcoli.
Io pensavo di inizare cercando l'origine considerata tra i vari file e considerare le possibili destinazioni e, contemporaneamente, cercare la destinazione tra i file e considerare le possibili origini. A questo punto, in maniera "ricorsiva" continuare con i risultati di queste operazioni fino a quando non si incontrano origine e destinazione.
Quello che mi rende perplesso e' che il costo puo' essere spropositato sia in termini di memoria che di tempo di elaborazione, anche se i file dai quali attingere fossere piccoli.
Vi ringrazio in anticipo per l'eventuale collaborazione, accetto qualsiasi tipo di consiglio...
Costruisici la matrice delle adiacenze e poi passi tutto a Dijkstra.
Poiche' immagino che tu non sappia cosa siano, ti consiglio di leggere bene, anche solo su Wikipedia, di cosa si tratta.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 20-08-2009, 11:20   #7
agosteeno
Member
 
Iscritto dal: Aug 2009
Messaggi: 119
Mmm. Sostanzialmente era quello che volevo fare io anche se effettivamente nn avevo pensato di metterlo come matrice di adiacenza. Infatti anche se so' di cosa si tratta, nn le ho mai usate in pratica, quindi nn mi e' venuta in mente. Grazie per il consiglio. Inizio a lavorare e se ho altri dubbi vi ricontattero'.
agosteeno è offline   Rispondi citando il messaggio o parte di esso
Old 01-09-2009, 16:13   #8
agosteeno
Member
 
Iscritto dal: Aug 2009
Messaggi: 119
Salve di nuovo a tutti. Siccome alla fine era agosto ed ero in vacanza nn ho piu' fatto nulla. Ora pero' le vacanze sono finite e quindi mi rimetto a lavoro. Ora che ci ho pensato su' un po' meglio, nn posso risolvere il problema con le matrici di adiacenza: infatti la matrice potrebbe risultare troppo grande. Gia' se dovessi considerare solo i treni e tutte le possibili destinazioni risulterebbe dell'ordine delle decine di migliaia... L'unico approccio che mi viene in mente e' di costruire un grafico volta per volta e scegliere in qualche modo come costruire la parte successiva...
agosteeno è offline   Rispondi citando il messaggio o parte di esso
Old 01-09-2009, 21:34   #9
fracarro
Senior Member
 
L'Avatar di fracarro
 
Iscritto dal: Jul 2002
Messaggi: 869
Quote:
Originariamente inviato da agosteeno Guarda i messaggi
Salve di nuovo a tutti. Siccome alla fine era agosto ed ero in vacanza nn ho piu' fatto nulla. Ora pero' le vacanze sono finite e quindi mi rimetto a lavoro. Ora che ci ho pensato su' un po' meglio, nn posso risolvere il problema con le matrici di adiacenza: infatti la matrice potrebbe risultare troppo grande. Gia' se dovessi considerare solo i treni e tutte le possibili destinazioni risulterebbe dell'ordine delle decine di migliaia... L'unico approccio che mi viene in mente e' di costruire un grafico volta per volta e scegliere in qualche modo come costruire la parte successiva...
Riguardo la dimensione della matrice, hai problemi di memoria? Pur avendo milioni di celle non dovrebbe occupare molto spazio in memoria.

L'algoritmo di Dijkstra può essere implementato in diversi modi (la chiave sta nella struttura dati utilizzata per implementare la coda a priorità). Ad ogni modo l'algoritmo è in grado di risolvere in pochi secondi problemi su grafi contenenti anche milioni di nodi.
__________________
Notebook: MBP 15 i7 Retina, (Mid 2014)
fracarro è offline   Rispondi citando il messaggio o parte di esso
Old 01-09-2009, 23:05   #10
agosteeno
Member
 
Iscritto dal: Aug 2009
Messaggi: 119
Ho capito quale era il problema. Io ero convinto di dover scorrere i file con gli orari ogni volta che dovevo effettuare una computazione. Come ben capite in questo modo sarebbe uscito un grafo esageratamente grande ogni volta, specie se si considerano i treni, gli autobus, aerei ecc di tutta italia se nn d'europa!!! In realta' devo "costruire" il grafo una volta per tutte all'avvio e poi usare sempre quello, quasi come fosse un database... ora il problema si riduce di molto. Penso si possa realizzare senza troppi problemi con un algoritmo classico... grazie per l'aiuto cmq...

ah, anche se l'algoritmo usato dovrebbe essere veloce, la struttura uscirebbe molto molto grande... andrebbe ad essere potenzialmente infinita... in ogni caso dovrei anche considerare che queste operazioni nn siano effettuate una alla volta, ma potrebbero essere parecchie contemporaneamente... infatti questo programma e' pensato come il nucleo di un'applicazione web o cose simili, alla quale possono essere fatte tante richieste...

Ultima modifica di agosteeno : 01-09-2009 alle 23:10. Motivo: aggiunta
agosteeno è offline   Rispondi citando il messaggio o parte di esso
Old 02-09-2009, 08:19   #11
banryu79
Senior Member
 
L'Avatar di banryu79
 
Iscritto dal: Oct 2007
Città: Padova
Messaggi: 4131
Quote:
Originariamente inviato da agosteeno Guarda i messaggi
ah, anche se l'algoritmo usato dovrebbe essere veloce, la struttura uscirebbe molto molto grande... andrebbe ad essere potenzialmente infinita... in ogni caso dovrei anche considerare che queste operazioni nn siano effettuate una alla volta, ma potrebbero essere parecchie contemporaneamente... infatti questo programma e' pensato come il nucleo di un'applicazione web o cose simili, alla quale possono essere fatte tante richieste...
Non sono un eseperto, ma rifelttendonci penso siano due cose distinte (l'esecuzione dell' algoritmo con prduzione di un output e la gestione di un servizio che soddisfi richieste da più client).

Cioè io qui vedo un'entità software che è il tuo algoritmo.
Prende un input, elabora, sputa un output.

Poi vedo un'altro strato/entità software, che usa il tuo algoritmo ma il cui scopo è ricevere le richieste dei client e usare la migliore strategia/politica di gestione per rispondere a tutti nel modo più veloce.
Possono esserci diversi modi; sicuramente dovrai gestire l'accodamento delle richieste da soddisfare, ma potrebbe essere anche il caso di eseguire il caching dei risultati già calcolati per non doverli ripetere (con quale criterio non lo so, è tutto da decidere in base al contesto).
__________________

As long as you are basically literate in programming, you should be able to express any logical relationship you understand.
If you don’t understand a logical relationship, you can use the attempt to program it as a means to learn about it.
(Chris Crawford)
banryu79 è offline   Rispondi citando il messaggio o parte di esso
Old 02-09-2009, 08:34   #12
agosteeno
Member
 
Iscritto dal: Aug 2009
Messaggi: 119
mi sono spiegato male... nn devo produrre tutto il lavoro, ma solo il modulo interno diciamo, quello che fa' la computazione vera e propria. Solo che siccome questo verra' usato in maniera intensiva, devo curare particolarmente l'aspetto della velocita' della computazione (e naturalmente anche lo spazio utilizzato)...
agosteeno è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


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...
Geely EX5, un mese al volante: il SUV elettrico cinese che ci ha sorpreso (quasi) senza riserve Geely EX5, un mese al volante: il SUV elettrico ...
Mova Z70 Ultra Roller Complete: motore potente, rullo di lavaggio e l'IA a guidare Mova Z70 Ultra Roller Complete: motore potente, ...
Dopo 23 anni di silenzio, Warcraft 3 spi...
Roblox sfida l'ecosistema gaming: app st...
OpenAI accusata di plagio dai migliori m...
Altro attacco hacker dell'IA: gli agenti...
Stiamo davvero perdendo il controllo del...
Microsoft perde un pilastro: Frank Shaw ...
Diablo V annunciato a sorpresa: il colpo...
Meno di 5 euro per il 5G: l'offerta Kena...
World of Warcraft: Forever è il Classic+...
La Serie A con DAZN e Amazon Prime con l...
Giochi Ubisoft su Steam senza Ubisoft Co...
Miami Beach ha autorizzato la maxi opera...
Apple regala un altro anno di funzioni s...
Alla fine è successo davvero: Vol...
Il meglio di Amazon del weekend in uno s...
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: 13:22.


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