.dsy:it. Pages (4): [1] 2 3 4 »
Show 150 posts per page

.dsy:it. (http://www.dsy.it/forum/)
- Algoritmi e strutture dati (http://www.dsy.it/forum/forumdisplay.php?forumid=207)
-- [Algoritmi] Progetto "RICHIAMI" (http://www.dsy.it/forum/showthread.php?threadid=17192)


Posted by elpampero on 08-02-2005 07:29:

[Algoritmi] Progetto "RICHIAMI"

E' in uscita il nuovo progetto di algoritmi valido per l'appello dell'8 Febbraio 2005. In bocca al lupo


Posted by wingzero on 08-02-2005 08:35:

Vengono dati 3 giorni in meno rispetto all'appello di Gennaio a quanto sembra :sad:
Il che fa 15gg invece di 18gg disponibili.


Posted by elpampero on 08-02-2005 08:44:

Sì, ho notato anch'io. Speriamo almeno sia più semplice :-)


Posted by wingzero on 08-02-2005 09:22:

Originally posted by elpampero
Sì, ho notato anch'io. Speriamo almeno sia più semplice :-)


Ho letto ora il progetto, il file è online.
A me sembra più difficile di quello di Gennaio. :sad:
Sinceramente speravo in qualcosa di diverso da problemi sugli automi questa volta. :sad:
Provo a scriverlo ma temo di non riuscire a completarlo in tempo e di dover saltare all'appello di Aprile. :sad:


Posted by mitnik on 08-02-2005 10:29:

Da una prima lettura non sembra più semplice, anzi il calcolo delle tortuosità non mi sembra banale. Però vedremo! ciao


Posted by Skilotto83 on 08-02-2005 10:33:

e infatti anche a me nn sembra piu' semplice..direi che è kome il precedente ma on in piu' il calcolo della tortuosita'..che deve essere un bel macello...
speriamo...ora si vedra'...

__________________
"Why, Sir, you find no man at all intellectual who is willing to leave London.
No, Sir, when a man is tired of London, he is tired of life; for there is in London all that life can afford."
(DR SAMUEL JOHNSON 1777)

MSN andrea.poretti(at)hotmail.it


Posted by Skilotto83 on 08-02-2005 11:47:

io mi kiedo poi con quale fottutissima logica decida di dare 4 giorni in meno per un progetto che è molto piu' difficile del precedente...

__________________
"Why, Sir, you find no man at all intellectual who is willing to leave London.
No, Sir, when a man is tired of London, he is tired of life; for there is in London all that life can afford."
(DR SAMUEL JOHNSON 1777)

MSN andrea.poretti(at)hotmail.it


Posted by fdecollibus on 08-02-2005 12:05:

Già, perchè 4 giorni in meno? Perchè diavolo darci 4 giorni in meno?


Posted by Jacoposki on 08-02-2005 12:26:

progetto facile, vedo... esistePercorso e tortuosità già mi mettono in difficoltà al solo pensiero...

ma più che altro davvero si aspettano che nel modo in cui abbiamo fatto il C a lezione noi si sia in grado di fare un progetto del genere? bah.

__________________
Mai sottovalutare l'ampiezza di banda di una station wagon piena di nastri lanciata a tutta velocità lungo l'autostrada. - Andrew S. Tanenbaum - Reti di Calcolatori


Posted by Jacoposki on 08-02-2005 12:37:

tra l'altro, cominciamo bene... qualcuno si ricorda le operazioni per far funzionare gcc? :D

C'era un "gocs - qualcosa" da mettere da qualche parte nel prompt... non ricordo il "qualcosa" e dove andava scritto... nella cartella che contiene il codice? in C:\? Da qualsiasi parte? Nella cartella del compilatore? 'iuto!

__________________
Mai sottovalutare l'ampiezza di banda di una station wagon piena di nastri lanciata a tutta velocità lungo l'autostrada. - Andrew S. Tanenbaum - Reti di Calcolatori


Posted by elpampero on 08-02-2005 13:10:

Gli automi come li organizzate? io direi in un albero binario di ricerca...


Posted by elpampero on 08-02-2005 13:25:

Come lo creiamo un piano?


Posted by mitnik on 08-02-2005 13:50:

il piano direi che è l'ultima cosa da fare nel senso che crei una struttura che contiene gli automi e gii ostacoli e tutto cio che serve. La funzione crea praticamente svuota tutto il contenuto delle strutture ottenendo quindi un "piano" vuoto.

Una domanda: come mai all'istruzione e -10000 6 11 da come output SI ?


Posted by mitnik on 08-02-2005 13:52:

Ho capito, pensavo la stringa -10000 fossa la stringa binaria. (che pirla)

Ciao


Posted by elpampero on 08-02-2005 13:54:

Perchè esiste un percorso libero che l'automa P(11) puo' fare verso il punto(-10000,6)


Posted by elpampero on 08-02-2005 13:55:

Gli automi li gestisci con un albero binario di ricerca?


Posted by mitnik on 08-02-2005 13:58:

io pensavo semplicemente di metterli in una lista, così come gli ostacoli. Non sarà la cosa più efficiente ma sicuramente da implementare è molto semplice.


Posted by mitnik on 08-02-2005 14:01:

bisogna fare attenzione anche al nome dell'automa e al segnale. il testo dice che è una stringa finita ma non dice che è anche limitata superiormente. Con questo voglio dire che non si può memorizzare in un semplice array anche se molto grande. O no?


Posted by elpampero on 08-02-2005 14:05:

Non puoi metterla in un array perchè non sai a priori quanto è grande l'array..devi per forza allocare memoria dinamica...Io comunque metto gli automi in un albero. E' più difficile da implementare ma è sicuramente più efficiente


Posted by mitnik on 08-02-2005 14:09:

Ok allora uso la realloc per l'input, metto gli automi in una lista, gli ostacoli in un' altra lista. Fin qui ok, ora devo capire come calcolare la tortuosità.


Posted by Faquets on 08-02-2005 14:46:

Scusate, qualcuno sa se per il progetto c'e' bisogno di iscriversi al sifa (per il fatto dei registri elettronici)?

__________________
"Io odio questo posto,questo zoo,questa prigione,questa..realtà o come diavolo la chiamate voi,la odio non la sopporto più...l'odore soprattutto"
(Agente Smith, "Matrix")


Posted by elpampero on 08-02-2005 14:49:

Sì, bisogna iscriversi una settimana prima dell'uscita del progetto


Posted by Skilotto83 on 08-02-2005 15:19:

cavolo..ma la storia della tortuosita' è allucinante...
in pratica dalla posizione in cui è l'automa deve fare tutte le possibili combinazioni di movimenti..perchè per evitare l'ostacolo potrebbe dover fare 50 volte a zig zag....
e ogni tentativo che ha successo(cioè l'automa ariva a destinazione senza aver trovato ostacoli)deve essere memorizzato con il num di cambi di direzione(tortuosita')in modo da poter poi scegliere il percorso con minor cambi...
senza dimenticare che prima di tutto cio' deve aver scelto di muovere solo gli automi a distanza minima dalla destinazione...quindi bisogna tener traccia di tutte le distanze di tutti gli automi dalla destinazione...per poi scegliere solo quelli con distanza minore...
La vedo dura....

__________________
"Why, Sir, you find no man at all intellectual who is willing to leave London.
No, Sir, when a man is tired of London, he is tired of life; for there is in London all that life can afford."
(DR SAMUEL JOHNSON 1777)

MSN andrea.poretti(at)hotmail.it


Posted by mattcobain on 08-02-2005 15:31:

Originally posted by Skilotto83
io mi kiedo poi con quale fottutissima logica decida di dare 4 giorni in meno per un progetto che è molto piu' difficile del precedente...


e pensa che se non sbaglio il progetto dell'11 gennaio era già online la sera del 9 gennaio, oppure la mattina del 10 se non ricordo male....

cmq è da tutto il giorno che penso a sto coso e ancora l'unica cosa che ho fatto è una specie di main come i classici che faceva anche a lezione....e poi basta, non saprei proprio da dove cominciare....ogni volta che penso a qualcosa di buono poi mi viene in mente che bisogna tenere conto anche di altre cose e mi perdo tutto il ragionamento....
e soprattutto....non capisco come sia possibile che dopo quel "corso" di laboratorio del prof fiorentini (se corso lo si può chiamare) esca un progetto del genere....considerando che a meno di un mese dalle fine delle lezioni stava ancora spiegando le stringhe!!!!!
mah...

e per fortuna che già avevo un minimo di conoscenze del c e del java....chissà se mi basteranno!!!


Posted by mark on 08-02-2005 15:35:

Originally posted by mitnik
io pensavo semplicemente di metterli in una lista, così come gli ostacoli. Non sarà la cosa più efficiente ma sicuramente da implementare è molto semplice.



magari è meglio usare le strutture ed allocarne 'n' dinamicamente


p.s.
il progetto dura solo per un appello ?

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by lino on 08-02-2005 15:40:

Beh il main è la cosa piu' facile da fare, voi costruite un albero binario di ricerca?Secondo me è la cosa piu efficiente... 2 strutture per automa ed ostacolo.


Posted by maurozaninelli on 08-02-2005 16:08:

Question

scusate la domanda, ma, continuo a vedere proposte relative ad alberi di ricerca binari, ma ancora non riesco a capire quale sia la chave che vorreste usare per l'ordinamento del nodo: il nome comvertito in decimale? tenuto in binario? e se gli automi sono solo due: 01, 0000000001???


Posted by ZeroByte on 08-02-2005 21:58:

Scusate, ma nel testo viene specificato che un passo unitario orizzontale è un segmento della forma {(x,y0) | x0 <= x <= xo + 1}, così come un passo unitario verticale è un segmento della forma {(x0,y) | y0 <= y <= yo + 1}, e che un percorso è una successione di tali movimenti. Dalla forma, intuisco che siano ammessi solo spostamenti nel senso positivo delle ascisse e delle ordinate (ossia spostamenti "verso l'alto" e "verso destra"). Come è possibile che l'automa 11 dell'esempio possa raggiungere la sorgente spostandosi nel verso negativo delle ordinate?


Posted by superfabius on 08-02-2005 22:08:

Originally posted by ZeroByte
Scusate, ma nel testo viene specificato che un passo unitario orizzontale è un segmento della forma {(x,y0) | x0 <= x <= xo + 1}, così come un passo unitario verticale è un segmento della forma {(x0,y) | y0 <= y <= yo + 1}, e che un percorso è una successione di tali movimenti. Dalla forma, intuisco che siano ammessi solo spostamenti nel senso positivo delle ascisse e delle ordinate (ossia spostamenti "verso l'alto" e "verso destra"). Come è possibile che l'automa 11 dell'esempio possa raggiungere la sorgente spostandosi nel verso negativo delle ordinate?


ti dice che x0, y0 sono interi....non specifica interi positivi quindi si possono muovere dove vuoi


Posted by Skilotto83 on 08-02-2005 22:15:

si possono muovere solo in positivo...altrimenti nn vedo dove sia il problema per raggiungere una destinazione..basterebbe girare intorno a tutti gli ostacoli...

__________________
"Why, Sir, you find no man at all intellectual who is willing to leave London.
No, Sir, when a man is tired of London, he is tired of life; for there is in London all that life can afford."
(DR SAMUEL JOHNSON 1777)

MSN andrea.poretti(at)hotmail.it


Posted by p2p on 08-02-2005 22:30:

comunque a proposito del nome dell' automa anch io avevo pensato all' uso della realloc e effettivamente funziona, pero' agli orali scorsi Fiorentini aveva detto che questa soluzione non gli paceva molto e che preferiva usare getchar e scanf in un ciclo.
Pero' se funziona,amen, al limite mi dira' che avrei potuto fare diversamente.


Posted by superfabius on 08-02-2005 22:34:

Bhè ma se fosse come dite voi allora gli automi 10 11 100 101 si sposterebbero tutti in senso negativo. O sbaglio? Il problema di aggirare gli ostacoli è dato dal fatto che gli automi devono fare un percorso pari alla distanza minima. Gli automi considerati hanno infatti distanza 8 e 9 dal punto x e nei percorsi che poi vengono considerati rispettano tale distanza. Invece l'automa 110 ad esempio ha distanza minima 8. Per arrivare a x pero' deve aggirare l'ostacolo prima spostandosi in alto di uno (+1) successivamente a sinistra di 8 (+8) e poi in giu' di 1....va a finire che il percorso che deve fare è lungo 10 caselle...>8 e quindi non puo' spostarsi
io lo intendo cosi'


Posted by wingzero on 08-02-2005 22:45:

Originally posted by superfabius
Bhè ma se fosse come dite voi allora gli automi 10 11 100 101 si sposterebbero tutti in senso negativo. O sbaglio? Il problema di aggirare gli ostacoli è dato dal fatto che gli automi devono fare un percorso pari alla distanza minima. Gli automi considerati hanno infatti distanza 8 e 9 dal punto x e nei percorsi che poi vengono considerati rispettano tale distanza. Invece l'automa 110 ad esempio ha distanza minima 8. Per arrivare a x pero' deve aggirare l'ostacolo prima spostandosi in alto di uno (+1) successivamente a sinistra di 8 (+8) e poi in giu' di 1....va a finire che il percorso che deve fare è lungo 10 caselle...>8 e quindi non puo' spostarsi
io lo intendo cosi'


Non può spostarsi per via della tortuosità, perchè aggirando l'ostacolo deve "ruotare", cioè cambiare direzione ed il percorso minimo è quello con tortuosità 0 ma impossibile per via dell'ostacolo.
101 e 100 raggiungono X e si spostano in direzione negativa. 101 ha più di un percorso per raggiungere X con distanza 8 ma la decisione di quale usare dipende dalla tortuosità.


Posted by elpampero on 09-02-2005 07:28:

Per P2P. Non ti seguo molto sul nome dell'automa...Cosa centra il ciclo?


Posted by elpampero on 09-02-2005 07:30:

Intendi un ciclo while con all'interno uno switch-case?


Posted by p2p on 09-02-2005 08:24:

Originally posted by elpampero
Per P2P. Non ti seguo molto sul nome dell'automa...Cosa centra il ciclo?

fai un

while( c = getchar() != '\n') /*cioe' finchè non si va a capo*/
scanf ("%d",&num)
.... poi qui metti i valori c e num in una struttura

... cioe' continui a leggere da input e memorizzi in una struttura a tua scelta a esempio una lista

PS. Tks LoneWolf :)


Posted by elpampero on 09-02-2005 08:26:

ah ok...Direi poero' che più che per l'intero va fatto per il char...


Posted by elpampero on 09-02-2005 08:32:

Mi sta venendo un altro dubbio: il nome dell'automa lo trattate come intero o come una stringa. Nel caso dell'intero diventa tutto più semplice anche per la creazione della struttura


Posted by elpampero on 09-02-2005 08:32:

Mi sta venendo un altro dubbio: il nome dell'automa lo trattate come intero o come una stringa. Nel caso dell'intero diventa tutto più semplice anche per la creazione della struttura


Posted by p2p on 09-02-2005 08:35:

come stringa, io uso un *char per memorizzarlo


Posted by elpampero on 09-02-2005 08:55:

Perfetto, anch'io uso char* ma nella lettura dello standard input non mi trovo....


Posted by p2p on 09-02-2005 08:58:

scusate ma cosa vuol dire nella prima pagina, qunado dice che un percorso è una successione di passi p1...pk tali che pi η pi+1 contiene un solo punto??
che cè un solo punto tra un passo e l altro?


Posted by elpampero on 09-02-2005 09:03:

E' un modo complicato per dire che quando esegui più passi il punto finale del passo precedente è il punto iniziale del successivo. Cioè sono passi unitari consecutivi


Posted by mitnik on 09-02-2005 09:13:

E' una brutta gatta da pelare questa tortuosità.


Posted by elpampero on 09-02-2005 09:19:

Beati voi che vi preoccupate della tortuosità io sono in difficoltà con lo standard input


Posted by p2p on 09-02-2005 09:44:

idee per il calcolo del percorso libero?? che è qui il cuore di tutto...


Posted by faxmaister on 09-02-2005 09:55:

Originally posted by p2p
idee per il calcolo del percorso libero?? che è qui il cuore di tutto...


Mmm io stavo pensando di prendere spunto dal percorso minimo, controllando poi la presenza di eventuali ostacoli. Nel caso in cui trova un ostacolo mi ricalcolo un cammino minimo dal punto in cui mi trovo alla sorgente e via


Posted by maurozaninelli on 09-02-2005 09:59:

Scusate l'insistenza, ma... se usarte un albero binario di ricerca per memorizzare gli automi, quale chiave utilizzate???


Posted by mitnik on 09-02-2005 10:10:

Io ho risolto con la realloc anche se prima si diceva che fiorenti non l'ha apprezzata, ma sinceramnete creare una lista per contenere un nome di un automa non mi va.

gli ostacoli li metto in una lista

il segnale lo leggo sempre con la realloc.

la funzione posizione è abbastanza semplice.

esistePercorso e tortuosità mi fanno diventare matto; voi avete qualche idea a proposito?


Posted by elpampero on 09-02-2005 10:13:

La chiave dei nodi dell'albero di ricerca è il nome


Posted by p2p on 09-02-2005 10:19:

concordo.. anche se non gli piace funziona quindi io uso realloc (ho fatto una funzione apposita che richiamo ogni volta che devo leggere il nome di un automa, quindi la uso anche per la stampa dei prefissi, per esempio)
strutture: uso un RB-Albero per gli automi perchè è bilanciato... ma soprattutto, anche qui, xchè lo avevo gia' pronto dallo scorso progetto, altrimenti avrei usato un normalissmo albero di ricerca... anche se si puo' sbilanciare una cifra... amen;
uso una lista per gli ostacoli .
per il movimento sto cercando di pensare a qualcosa...


Posted by mattcobain on 09-02-2005 10:42:

ragazzi...una domanda....
io alloco memoria per un puntatore ad una struttura...inizializzo i campi di questa struttura....poi per vedere se funziona li ho stampati a video....e si vede tutto come dovrebbe essere
poi ho usato free per deallocare lo spazio puntato dal puntatore che avevo creato....ho riprovato ad accedere ai campi della struttura che prima era puntata da tale puntatore, e non so perché ma riesco ancora ad accedervi, sia per modificarli, sia per visualizzarli!!!
è normale!?!?
cioè, se uso free quel puntatore non dovrebbe perdere la traccia della struttura che li ho fatto puntare?!!?
mah....la vedo sempre piu grigia!!!


Posted by Skilotto83 on 09-02-2005 10:52:

Originally posted by mitnik


esistePercorso e tortuosità mi fanno diventare matto; voi avete qualche idea a proposito?


premettendo che secondo me non si diskute sul fatto che l'automa si possa muovere solo in positivo...e quindi le ascisse e le ordinate possono solo aumentare(come si vede dal testo dove spiega che x è compreso tra x0 e x0+1)....
Io pensavo a due cicli innestati che aumentano una varibaile in ogni ciclo...
In via teorika...l'automa deve provare sikuramente due mosse sempre....aumentare x e aumentare y....
quando aumentando una delle due arriva a pareggiare il livello di x o y..allora significa che è sulla perpendicolare giusta...aumenta l'altro valore e giunge a destinazione...
se invece incontra un ostaolo in questo percorso..allora le cose si complicano...
perkè se anche tento tutti i possibili movimenti dell'automa(è una mazzata paurosa) e trovo un percorso...poi devo tener traccia di tutti gli altri percorsi andati a segno...cosi' da scegliere quello con tortuosita' minima....
stavo perfino pensando che bisogna usare un algoritmo tipo quello di dijkstra per il calcolo del cammino minimo...tipo la visita in ampiezza o qlks di simile...sto sfasando vero???

__________________
"Why, Sir, you find no man at all intellectual who is willing to leave London.
No, Sir, when a man is tired of London, he is tired of life; for there is in London all that life can afford."
(DR SAMUEL JOHNSON 1777)

MSN andrea.poretti(at)hotmail.it


Posted by p2p on 09-02-2005 11:05:

Originally posted by Skilotto83
premettendo che secondo me non si diskute sul fatto che l'automa si possa muovere solo in positivo...e quindi le ascisse e le ordinate possono solo aumentare(come si vede dal testo dove spiega che x è compreso tra x0 e x0+1)....

e qui scusate ma secondo me cè un errore...
se fosse vero com è possibille che nell esempio a pag.2 l automa 11 e 101 si spostino verso la sorgente?se si dovesse solo aumentare le x e le y non sarebbe possibile, giusto?


Posted by Skilotto83 on 09-02-2005 11:31:

ma allora perchè il 110 e il 111 nn possono ragg X???basta che salgono di un tot, vanno a sx e riscendono...
e perkè 1 nn puo'??? basta che ci gira attorno!!!....nn ha senso!!!!!!

__________________
"Why, Sir, you find no man at all intellectual who is willing to leave London.
No, Sir, when a man is tired of London, he is tired of life; for there is in London all that life can afford."
(DR SAMUEL JOHNSON 1777)

MSN andrea.poretti(at)hotmail.it


Posted by Skilotto83 on 09-02-2005 11:33:

io nn posso calcolare tutte i possibili percorsi anche per aggirare l'ostacolo.....
Altrimenti diventa un massacro!

__________________
"Why, Sir, you find no man at all intellectual who is willing to leave London.
No, Sir, when a man is tired of London, he is tired of life; for there is in London all that life can afford."
(DR SAMUEL JOHNSON 1777)

MSN andrea.poretti(at)hotmail.it


Posted by Polsy on 09-02-2005 12:11:

Originally posted by Skilotto83
io nn posso calcolare tutte i possibili percorsi anche per aggirare l'ostacolo.....
Altrimenti diventa un massacro!


esattamente per questo motivo 1, 111 e 110 non possono raggiungere X
mi sembra di aver capito che il cammino di un automa non dev'essere + lungo della distanza tra l'automa e la sorgente (cioè la distanza tra le x + la distanza tra le y)
per intenderci, immagina di tracciare un rettangolo ke ha come vertici l'automa e la sorgente, il cammino non deve uscire da quel rettangolo


Posted by mattcobain on 09-02-2005 12:18:

Originally posted by Skilotto83
ma allora perchè il 110 e il 111 nn possono ragg X???basta che salgono di un tot, vanno a sx e riscendono...
e perkè 1 nn puo'??? basta che ci gira attorno!!!....nn ha senso!!!!!!


110 e 111 e 1 non possono perché facendo i percorsi alternativi detti da te (salire di un tot, andare a sx e riscendere, oppure aggirare tutto l'ostacolo) raggiungerebbero la sorgente del segnale facendo un percorso più lungo di D (che è la distanza minima, sgombra da ostacoli)
possono raggiungere il segnale solo quegli automi che lo raggiungono con un percorso libero (cioè senza passare sopra gli ostacoli) della stessa lunghezza di D (cioè la distanza sgombra da ostacoli)...e fra questi solo quelli che hanno D più piccola....
infatti, sempre dall'esempio, possono raggiungere il segnale 10 con D=8, 11 con D=8, 100 con D=9 e 101 con D=8....fra questi, quelli con D piu piccola sono 10, 11, 101 (la loro D=8, nessun'altro automa ha una D piu bassa) e quindi ecco spiegato il tuo dubbio....spero di essere stato chiaro


Posted by Jacoposki on 09-02-2005 12:18:

Originally posted by Polsy
per intenderci, immagina di tracciare un rettangolo ke ha come vertici l'automa e la sorgente, il cammino non deve uscire da quel rettangolo


Polsy ha colto il punto, credo... mi sono reso conto di questa cosa stanotte verso le 5 e credo sia piuttosto importante da sapere.

__________________
Mai sottovalutare l'ampiezza di banda di una station wagon piena di nastri lanciata a tutta velocità lungo l'autostrada. - Andrew S. Tanenbaum - Reti di Calcolatori


Posted by Skilotto83 on 09-02-2005 12:33:

infatti l'avevo capito anhe io circa 10min fa...
il pecorso è quello del rettangolo inscitto tra i due vertici che sono dest e pos automa...
ora basta che riesko a dimostrare analitikamente un'ideuzza che ho per la tortuosita' e sono a cavallo...

__________________
"Why, Sir, you find no man at all intellectual who is willing to leave London.
No, Sir, when a man is tired of London, he is tired of life; for there is in London all that life can afford."
(DR SAMUEL JOHNSON 1777)

MSN andrea.poretti(at)hotmail.it


Posted by Skilotto83 on 09-02-2005 12:36:

Originally posted by mattcobain
110 e 111 e 1 non possono perché facendo i percorsi alternativi detti da te (salire di un tot, andare a sx e riscendere, oppure aggirare tutto l'ostacolo) raggiungerebbero la sorgente del segnale facendo un percorso più lungo di D (che è la distanza minima, sgombra da ostacoli)
possono raggiungere il segnale solo quegli automi che lo raggiungono con un percorso libero (cioè senza passare sopra gli ostacoli) della stessa lunghezza di D (cioè la distanza sgombra da ostacoli)...e fra questi solo quelli che hanno D più piccola....
infatti, sempre dall'esempio, possono raggiungere il segnale 10 con D=8, 11 con D=8, 100 con D=9 e 101 con D=8....fra questi, quelli con D piu piccola sono 10, 11, 101 (la loro D=8, nessun'altro automa ha una D piu bassa) e quindi ecco spiegato il tuo dubbio....spero di essere stato chiaro


no..il problema nn è quello...il problema è ke l'atoma 110 si puo' muovere solo in linea retta..anke se forse è la stessa kosa che dici tu...boh..

__________________
"Why, Sir, you find no man at all intellectual who is willing to leave London.
No, Sir, when a man is tired of London, he is tired of life; for there is in London all that life can afford."
(DR SAMUEL JOHNSON 1777)

MSN andrea.poretti(at)hotmail.it


Posted by p2p on 09-02-2005 12:38:

si, ma x il fatto che ho postato prima che mi dite??
com è possibile che ad esempio l automa 11 arrivi alla sorgente se un passo unitario fa incrementare la y???l 11 la raggiinge decrementandolo e non viceversa!


Posted by mattcobain on 09-02-2005 12:45:

Originally posted by p2p
si, ma x il fatto che ho postato prima che mi dite??
com è possibile che ad esempio l automa 11 arrivi alla sorgente se un passo unitario fa incrementare la y???l 11 la raggiinge decrementandolo e non viceversa!


il fatto che il passo unitaio faccia incrementare la y non significa che la y si incrementa è se ne va oltre l'automa 11....puoi vedere il percorso come se parte dalla sorgente, vedi che cmq il percorso alla fine unisce in ogni caso automa e sorgente, considerando solo passi che vanno verso l'alto
cmq, in definitiva, per come il prof ha descritto i passi unitari, non vedo la limitazione che ogni passo deve seguire l'altro in senso incrementale....puoi anche tornare indietro facendo passi di uno e inserendo un altro passo 2 posizioni in negativo piu in la...insomma ,non riesco a spiegartelo però il fatto che x0 e y0 siano interi a scelta non ti limita a fare solo passi o verso l'alto o verso destra....puoi benissimo vederli anche verso il basso e verso sinistra, affiancando i singoli passi nel modo giusto....
che casino ho scritto!!!


Posted by Skilotto83 on 09-02-2005 12:46:

a questo punto credo che la regola che da lui sia generale..avrebbe potuto mettere X0<X<X0 +/- 1....
puo' essere no??

__________________
"Why, Sir, you find no man at all intellectual who is willing to leave London.
No, Sir, when a man is tired of London, he is tired of life; for there is in London all that life can afford."
(DR SAMUEL JOHNSON 1777)

MSN andrea.poretti(at)hotmail.it


Posted by p2p on 09-02-2005 12:49:

Originally posted by mattcobain
il fatto che il passo unitaio faccia incrementare la y non significa che la y si incrementa è se ne va oltre l'automa 11....puoi vedere il percorso come se parte dalla sorgente, vedi che cmq il percorso alla fine unisce in ogni caso automa e sorgente, considerando solo passi che vanno verso l'alto
cmq, in definitiva, per come il prof ha descritto i passi unitari, non vedo la limitazione che ogni passo deve seguire l'altro in senso incrementale....puoi anche tornare indietro facendo passi di uno e inserendo un altro passo 2 posizioni in negativo piu in la...insomma ,non riesco a spiegartelo però il fatto che x0 e y0 siano interi a scelta non ti limita a fare solo passi o verso l'alto o verso destra....puoi benissimo vederli anche verso il basso e verso sinistra, affiancando i singoli passi nel modo giusto....
che casino ho scritto!!!

:? scusa ma non ho capito nulla:?
se un intero è + o - se gli aggiungi 1 vai o verso l alto o verso destra, a seconda se sia la x o la y....


Posted by mattcobain on 09-02-2005 12:51:

vediamo, magari mi spiego meglio
se da un automa non puoi raggiungere la sorgente perché si trova al di sotto o alla sinistra dell'automa stesso (e quindi dovresti muoverti per decrementi secondo il tuo ragionamento) allora in questo caso vedi il percorso come se parta dalla sorgente....
cmq ripeto, non è scritto da nessuna parte che l'automa si muove solo in positivo verso l'alto e verso destra....
se devi scendere vedila come una sequenza di passi, si incrementali per definizione, ma uno successivo all'altro partendo di volta in volta da una x0 (o y0 a seconda del caso) negativa di 2 volte rispetto la precedente....ok, ho fatto ancora casino, non riesco a spiegartelo!!!! :D


Posted by Skilotto83 on 09-02-2005 12:56:

Originally posted by mattcobain
vediamo, magari mi spiego meglio
se da un automa non puoi raggiungere la sorgente perché si trova al di sotto o alla sinistra dell'automa stesso (e quindi dovresti muoverti per decrementi secondo il tuo ragionamento) allora in questo caso vedi il percorso come se parta dalla sorgente....
cmq ripeto, non è scritto da nessuna parte che l'automa si muove solo in positivo verso l'alto e verso destra....
se devi scendere vedila come una sequenza di passi, si incrementali per definizione, ma uno successivo all'altro partendo di volta in volta da una x0 (o y0 a seconda del caso) negativa di 2 volte rispetto la precedente....ok, ho fatto ancora casino, non riesco a spiegartelo!!!! :D


esatto..incrementare una posizione nn è per forza in positivo...
anche da -2 a -3 incrementi di uno..ma in negativo..
kapito??

__________________
"Why, Sir, you find no man at all intellectual who is willing to leave London.
No, Sir, when a man is tired of London, he is tired of life; for there is in London all that life can afford."
(DR SAMUEL JOHNSON 1777)

MSN andrea.poretti(at)hotmail.it


Posted by p2p on 09-02-2005 12:59:

Originally posted by Skilotto83
esatto..incrementare una posizione nn è per forza in positivo...
anche da -2 a -3 incrementi di uno..ma in negativo..
kapito??

si.. capito, pero' se ho y = 11 e incremento ottengo y =12 e mi allonatno dalla sorgente .... boh scusate ma sono duro di capoccia:sad:


Posted by mattcobain on 09-02-2005 13:01:

forse ora ce la faccio....
consideriamo il percorso che collega "11" alla sorgente
il percorso è formato solo da passi unitari verticali...la sequenza potrebbe essere questa:
ricordando che un P.U.V è della forma y0 <= Y <= y0 + 1 con y0 scelto fra i numeri interi...la sequenza di passi che da "11" da arrivare alla sorgente è:
P1 : 10 <= Y <= 11 (quindi y0=10)
P2 : 9 <= Y <= 10 (quindi y0=9)
P3 : 8 <= Y <= 9 (quindi y0=8)
P4 : 7 <= Y <= 8 (quindi y0=7)
...
...
...
P8 : 3 <= Y <= 4 (quindi y0=3)

i passi infatti sono 8 in tutto...e ogni passo ha solo un punto in comune con il successivo (come richiesto da progetto)....
ora spero di essermi spiegato....vedi che il percorso si forma alla fine!!!
il prof ha dato quella definizione "matematica" solo per rappresentare un passo, ma non ha detto che l'automa si muove in quel modo!!! l'automa si muove poi seguendo il percorso finale.....


Posted by p2p on 09-02-2005 13:05:

Originally posted by mattcobain
forse ora ce la faccio....
consideriamo il percorso che collega "11" alla sorgente
il percorso è formato solo da passi unitari verticali...la sequenza potrebbe essere questa:
ricordando che un P.U.V è della forma y0 <= Y <= y0 + 1 con y0 scelto fra i numeri interi...la sequenza di passi che da "11" da arrivare alla sorgente è:
P1 : 10 <= Y <= 11 (quindi y0=10)
P2 : 9 <= Y <= 10 (quindi y0=9)
P3 : 8 <= Y <= 9 (quindi y0=8)
P4 : 7 <= Y <= 8 (quindi y0=7)
...
...
...
P8 : 3 <= Y <= 4 (quindi y0=3)

i passi infatti sono 8 in tutto...e ogni passo ha solo un punto in comune con il successivo (come richiesto da progetto)....
ora spero di essermi spiegato....vedi che il percorso si forma alla fine!!!
il prof ha dato quella definizione "matematica" solo per rappresentare un passo, ma non ha detto che l'automa si muove in quel modo!!! l'automa si muove poi seguendo il percorso finale.....

grande, ho capito, grazie 1000!


Posted by mattcobain on 09-02-2005 13:06:

woooh, ce l'abbiamo fatta! :ola:
;) bella, ora però stacco, simpson e poi dinuovo al lavoro!!!


Posted by ZeroByte on 09-02-2005 13:58:

Dall'esempio del prof. si deduce che sono ammissibili anche i movimenti nel senso negativo delle ascisse e delle ordinate, anche se secondo me al riguardo la spiegazione del prof. lascia molto discutere.


Posted by maurozaninelli on 09-02-2005 14:57:

Forse avete già risolto il problema del cammino minimo tra sorgente ed automa, ma volevo comunque sottoporvi la mia idea:
1. si costruisce un grafo fatto da tutti e soli gli spostamenti ammissibili tra sorgente e automa, in pratica, solo quelli inscritti nel rettangolo che ha per vertici la Sorg. e l'Aut. e senza i punti occupati da eventuali ostacoli.
2. si visita ricorsivamente il grafo alla ricerca di un cammino libero.
3. la condizione d'uscita è: puntatore figlio SX e DX = Null e distanza = Distanza minima.
4. Per la tortuosità si potrebbe pensare ad un ipotesi greedy per la quale, se si arriva ad un nodo come figlio SX, prima si tenta di proseguire verso il suo Filgio SX verso la sorgente, altrimenti, si tenta un'altra strada. Questo dovrebbe contenere la tortuosità...

Cosa ne pensate???

Io mi sono comunque già arenata nella scrittura della ricorsione... se qulcuno ritiene l'idea buona ed ha suggerimenti... grazie.

Se pensate sia sbagliato... grazie per il tempo che mi farete risparmiare!!!


Posted by Polsy on 09-02-2005 15:21:

- ostacolo (x0; y0; x1; y1)
Se i punti nel rettangolo R(x0; y0; x1; y1) non contengono alcun automa, inserisce l’ostacolo rappresentato
da R(x0; y0; x1; y1), altrimenti non compie alcuna operazione.

qualke dubbio:
quando creo l'ostacolo devo assicurarmi ke in quell'area non ci siano automi, dato ke memorizzo gli automi ordinandoli per nome, per vedere se un automa è presente in quell'area come faccio? qualcuno ha un'idea migliore di una ricerca esaustiva? dovrei crearmi un'altra struttura che ordina gli automi per posizione? :shock:
e se in quell'area è presente un altro ostacolo? possono sovrapporsi?


Posted by p2p on 09-02-2005 15:23:

Originally posted by Polsy
- ostacolo (x0; y0; x1; y1)
Se i punti nel rettangolo R(x0; y0; x1; y1) non contengono alcun automa, inserisce l’ostacolo rappresentato
da R(x0; y0; x1; y1), altrimenti non compie alcuna operazione.

qualke dubbio:
quando creo l'ostacolo devo assicurarmi ke in quell'area non ci siano automi, dato ke memorizzo gli automi ordinandoli per nome, per vedere se un automa è presente in quell'area come faccio? qualcuno ha un'idea migliore di una ricerca esaustiva? dovrei crearmi un'altra struttura che ordina gli automi per posizione? :shock:
e se in quell'area è presente un altro ostacolo? possono sovrapporsi?

no, se le coordinate dell' automa non sono chiave devi per forza fare una ricerca completa.
gli ostacoli possono sovrapporsi.


Posted by faxmaister on 09-02-2005 16:18:

la lunghezza del nome....

Ho un problemino con la struct per memorizzare gli automi. Come me lo dichiaro il campo contente il nome? Per ora ho messo un bel char nome[100], ma non va proprio benone eh... se uso un bel char *nome potrebbe andare? Ho paura che mi faccia casino quando alloco dello spazio per aggiungere un'altro automa...


Posted by luca8684 on 09-02-2005 16:56:

Re: la lunghezza del nome....

Originally posted by faxmaister
Ho un problemino con la struct per memorizzare gli automi. Come me lo dichiaro il campo contente il nome? Per ora ho messo un bel char nome[100], ma non va proprio benone eh... se uso un bel char *nome potrebbe andare? Ho paura che mi faccia casino quando alloco dello spazio per aggiungere un'altro automa...


No facendo come hai fatto tu non va bene perchè non sai quanto è grossa la stinga del nome dell'automa!! Devi utilizzare il puntatore così puoi allocare quanta memoria vuoi dinamicamente.
Quindi usa char *nome!!

__________________
{¯`·._)-•°o.O`·._.·´¯`¸·´¯).·´¯`·-> IN DA EEKS <-·´¯`·.(¯`·¸´¯`·._.·´O.o°•–(¯`·._}


Posted by Polsy on 09-02-2005 17:40:

Originally posted by maurozaninelli
Forse avete già risolto il problema del cammino minimo tra sorgente ed automa, ma volevo comunque sottoporvi la mia idea:
1. si costruisce un grafo fatto da tutti e soli gli spostamenti ammissibili tra sorgente e automa, in pratica, solo quelli inscritti nel rettangolo che ha per vertici la Sorg. e l'Aut. e senza i punti occupati da eventuali ostacoli.
2. si visita ricorsivamente il grafo alla ricerca di un cammino libero.
3. la condizione d'uscita è: puntatore figlio SX e DX = Null e distanza = Distanza minima.
4. Per la tortuosità si potrebbe pensare ad un ipotesi greedy per la quale, se si arriva ad un nodo come figlio SX, prima si tenta di proseguire verso il suo Filgio SX verso la sorgente, altrimenti, si tenta un'altra strada. Questo dovrebbe contenere la tortuosità...

Cosa ne pensate???

Io mi sono comunque già arenata nella scrittura della ricorsione... se qulcuno ritiene l'idea buona ed ha suggerimenti... grazie.

Se pensate sia sbagliato... grazie per il tempo che mi farete risparmiare!!!


ci avevo pensato ank'io, il problema è ke per creare quel grafo devi prima di tutto individuare i punti liberi confrontando le coordinate DI OGNI PUNTO con quelle degli ostacoli (e se questi sono memorizzati in una lista auguri...) e poi se io ho l'automa in 1,1 e la sorgente in 10,30 e non ho ostacoli in mezzo dovrei mantenere già un grafo con 300 nodi... :shock:


Posted by Sephirot on 09-02-2005 19:24:

grafo da 300 nodi


Posted by maurozaninelli on 09-02-2005 20:10:

Ma se non conviene usare un grafo, ne quindi una matrice 10x30, come fate seguire e provare i possibili cammini tra due punti??? se avete suggerimenti sono MOLTO ben accetti!!!


Posted by Skilotto83 on 09-02-2005 20:12:

io ci sto pensando da un kasino..
il problema è ke per una ricerca esaustiva bisogna per forza controllare tutte le posizioni del rettangolo che ha vertici in posiz automa e sorgente....è l'uniko modo....
Pero' è un kasino....
se contiamo 10msec per ogni ricerca di nodo se il rettangolo ha lato 1000 x 1000 sono 1000000 di celle...a voi il calcolo di quanto ci vuole per visitare tutte le celle....
l'uniko vantaggio è ke una volta che ho un percorso con tortuosita' 0 o 1 posso fermarmi perkè menoi di cosi' nn si puo' fare...

__________________
"Why, Sir, you find no man at all intellectual who is willing to leave London.
No, Sir, when a man is tired of London, he is tired of life; for there is in London all that life can afford."
(DR SAMUEL JOHNSON 1777)

MSN andrea.poretti(at)hotmail.it


Posted by Skilotto83 on 09-02-2005 20:13:

Originally posted by maurozaninelli
Ma se non conviene usare un grafo, ne quindi una matrice 10x30, come fate seguire e provare i possibili cammini tra due punti??? se avete suggerimenti sono MOLTO ben accetti!!!


sono una cifra di for innestati...come un puntatore che si sposta in tutte le posizioni possibili...

__________________
"Why, Sir, you find no man at all intellectual who is willing to leave London.
No, Sir, when a man is tired of London, he is tired of life; for there is in London all that life can afford."
(DR SAMUEL JOHNSON 1777)

MSN andrea.poretti(at)hotmail.it


Posted by p2p on 09-02-2005 22:27:

Originally posted by Skilotto83
sono una cifra di for innestati...come un puntatore che si sposta in tutte le posizioni possibili...

io ho provato 3 diversi algoritmi ma ancora non sono riuscito a farne uno che funzioni con "tutti" i possibili casi... quindi a parte il grafo credo che non ci siano molte altre soluzioni


Posted by p2p on 10-02-2005 10:15:

scusate, qualcuno è riuscito ad implementare l' idea dei grafi?
come fate a capire quali archi inserire nel grafo?
forse potrei inserire tutti gli archi possibili tra sorgente e automa eliminando i punti coperti da ostacoli.. giusto? pero' come?


Posted by virtual on 10-02-2005 10:30:

Forse dico una stupidata.... ma se si facesse backtrack?


Posted by p2p on 10-02-2005 10:31:

Originally posted by virtual
Forse dico una stupidata.... ma se si facesse backtrack?

sarebbe?


Posted by virtual on 10-02-2005 11:19:

è un po lunghina da spiegare, comunque è l'algoritmo delle mosse del cavallo che ha spiegato a lezione(lo trovi sulle slide).
Praticamente usi una funzione ricorsiva che ogni volta che incontra un ostacolo torna indietro di uno e cambia direzione.
Sto provando a farla... per ora è ancora in fase embrionale ma credo che l'idea ci sia....


Posted by p2p on 10-02-2005 11:42:

Originally posted by virtual
è un po lunghina da spiegare, comunque è l'algoritmo delle mosse del cavallo che ha spiegato a lezione(lo trovi sulle slide).
Praticamente usi una funzione ricorsiva che ogni volta che incontra un ostacolo torna indietro di uno e cambia direzione.
Sto provando a farla... per ora è ancora in fase embrionale ma credo che l'idea ci sia....
ok capiot, su quali slide lo trovo per favore?torelli, fiorentini,aguzzoli?
io stavo cercando di fare una cosa simile, ma ancora ho qualche problema su come stabilire se un automa è bloccato o meno....


Posted by virtual on 10-02-2005 12:11:

Lo trovi sulle slide di aguzzoli, pagina 206 del file lucidi04.pdf
Se ci arrivi prima di me fammi un fischio n'è!

..... :-)


Posted by Granito on 10-02-2005 13:15:

Sto portando avanti anch'io l'idea backtracking. Per adesso sono ancora in fase di adattamento. Comunque dovrebbe essere quella.
Granito.


Posted by vlaste on 10-02-2005 13:27:

Originally posted by elpampero
La chiave dei nodi dell'albero di ricerca è il nome


Ma se il nome è memorizzato in un char*, come si comparano due nomi al fine di posizionarli correttamente nell'albero??


Posted by p2p on 10-02-2005 13:28:

Originally posted by vlaste
Ma se il nome è memorizzato in un char*, come si comparano due nomi al fine di posizionarli correttamente nell'albero??

http://www.mkssoftware.com/docs/man3/strcmp.3.asp


Posted by mark on 10-02-2005 14:13:

Re: Re: la lunghezza del nome....

Originally posted by luca8684
No facendo come hai fatto tu non va bene perchè non sai quanto è grossa la stinga del nome dell'automa!! Devi utilizzare il puntatore così puoi allocare quanta memoria vuoi dinamicamente.
Quindi usa char *nome!!



ma allora cosa intende con:

Ogni automa è identificato univocamente da un nome , che è una stringa finita sull'alfabeto {0,1}

io ho interpretato che i possibili nomi siano

00
01
10
11

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by p2p on 10-02-2005 14:17:

in parole povere il nome puo' essere una sequenza di 1 o 0 lunga quanto si vuole.

puo' essere 1
oppure 0
oppure 10101001010100000010110010101010101010101010000001
1
oppure 11111111111111111111111111111111111111111111
........
capito?


Posted by luca8684 on 10-02-2005 14:19:

Re: Re: Re: la lunghezza del nome....

Originally posted by mark
ma allora cosa intende con:

Ogni automa è identificato univocamente da un nome , che è una stringa finita sull'alfabeto {0,1}

io ho interpretato che i possibili nomi siano

00
01
10
11


Questa frase dice che il nome è una stringa finita formata da 0 e 1, ma non dice quanto deve essere lunga. Facendo come dici tu potrai mettere solamente 4 automi perchè ogni automa ha un nome diverso quindi limiti il numero di automi.

__________________
{¯`·._)-•°o.O`·._.·´¯`¸·´¯).·´¯`·-> IN DA EEKS <-·´¯`·.(¯`·¸´¯`·._.·´O.o°•–(¯`·._}


Posted by luca8684 on 10-02-2005 14:21:

Mi hai anticipato!!
:(

__________________
{¯`·._)-•°o.O`·._.·´¯`¸·´¯).·´¯`·-> IN DA EEKS <-·´¯`·.(¯`·¸´¯`·._.·´O.o°•–(¯`·._}


Posted by mark on 10-02-2005 14:22:

Originally posted by p2p
in parole povere il nome puo' essere una sequenza di 1 o 0 lunga quanto si vuole.

puo' essere 1
oppure 0
oppure 10101001010100000010110010101010101010101010000001
1
oppure 11111111111111111111111111111111111111111111
........
capito?



peccato, la fscanf() era comodissima :(

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by mark on 10-02-2005 14:46:

a questa stregua, quando si legge una stringa dal file, è meglio allocare un buffer dinamicamente per ogni parametro, o no ?

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by p2p on 10-02-2005 14:55:

Originally posted by mark
a questa stregua, quando si legge una stringa dal file, è meglio allocare un buffer dinamicamente per ogni parametro, o no ?

quale file? devi leggere da tastiera...


Posted by mark on 10-02-2005 15:06:

Originally posted by p2p
quale file? devi leggere da tastiera...


da tastiera ?

ma tutte le coordinate degli ostacoli e degli atomi etc... vengono inseriti a mano da chi testerà il nostro programma ?

io sto lavorando con i file


cavolo, non ditemi che sto lavorando per niente

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by luca8684 on 10-02-2005 15:12:

Originally posted by mark
da tastiera ?

ma tutte le coordinate degli ostacoli e degli atomi etc... vengono inseriti a mano da chi testerà il nostro programma ?

io sto lavorando con i file


cavolo, non ditemi che sto lavorando per niente


non usare i file leggi da tastiera, cos' se dopo vuoi leggere da file basta fare la redirezione e leggi comunque da file per non riscrivere tutto ogni volta

__________________
{¯`·._)-•°o.O`·._.·´¯`¸·´¯).·´¯`·-> IN DA EEKS <-·´¯`·.(¯`·¸´¯`·._.·´O.o°•–(¯`·._}


Posted by mark on 10-02-2005 15:24:

Originally posted by luca8684
non usare i file leggi da tastiera, cos' se dopo vuoi leggere da file basta fare la redirezione e leggi comunque da file per non riscrivere tutto ogni volta



allora non ho capito una mazza.....

per capire; viene digitato da tastiera ad esempio:

o -8 5 -2 2

ed io non faccio(cioè visualizzo) nulla ** sino a quando non leggo il carattere 'f' ?


** in realtà faccio la mia chiamata al mio qualcosa ma non si dire qui a cosa :)

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by Granito on 10-02-2005 15:25:

Scusate la domande. Usando delle liste per l'inserimento degli automi e degli ostacoli, secondo voi c'è un modo per implementare la procedura tortuosità senza usare l'algoritmo di backtracking che di suo visita alberi?
Grazie mille a chi risponderà!
Granito

__________________
Statistica non è un esame, ma un accanimento terapeutico...staccatemi la spina!!!


Posted by wingzero on 10-02-2005 16:32:

Stavo riguardando la griglia/mappa d'esempio data dal professore.
E non so se mi sbaglio io a leggerla.. ma , l'automa 101 secondo le regole del progetto non dovrebbe stare fermo ?

Allora. 110 non si può spostare verso il segnale X perchè il percorso minimo con tortuosità 0 verso X è bloccato dall'ostacolo e quindi non può raggiungerlo spostandosi direttamente a sinistra.

Per 101.. viene detto che sceglie il percorso di lunghezza 8 con tortuosità 2 , due cambi di direzione.
Tuttavia, 101 se non vi fosse lo stesso ostacolo che impedisce a 110 di raggiungere X raggiungerebbe il segnale medesimo sempre con 8 mosse ed 1 solo cambio direzione, o no? in basso di tre, a sinistra di 5 , no ? e quindi il cambio di direzione minimo sarebbe 1 e quindi non dovrebbe scegliere nessuno degli altri percorsi minimi sempre di lunghezza 8 ma con tortuosità 2 che gli fanno raggiungere il segnale X, giusto ?

Per 110 il percorso a distanza minima è bloccato dall'ostacolo e mi sta bene. Ma per 101 ci sono più percorsi di lunghezza 8 e diversa tortuosità che lo collegano ad X.

Infatti 101 potrebbe raggiungere X sempre con 1 solo cambio direzione , tortuosità 1, spostandosi a sinistra di 5 ed in basso di 8 .. giusto ?

Quindi perchè sull'esempio c'è scritto che può muoversi con tortuosità 2 e distanza 8 ?

Sbaglio io a leggere o c'è un errore ?

Probabilmente sbaglio io, devo solo considerare i percorsi minimi liberi e quindi anche la tortuosità degli stessi ?
E quindi 110 se avesse avuto un altro percorso verso X ma libero senza ostacoli di medesima lunghezza e maggiore tortuosità lo avrebbe scelto così come ha fatto 101 ?


Posted by p2p on 10-02-2005 16:40:

Originally posted by Granito
Scusate la domande. Usando delle liste per l'inserimento degli automi e degli ostacoli, secondo voi c'è un modo per implementare la procedura tortuosità senza usare l'algoritmo di backtracking che di suo visita alberi?
Grazie mille a chi risponderà!
Granito

backtracking funziona "come" se stesse visitando un albero, ma non è che devi usarlo solo con gli alberi, basta che gli passi i punti adiacenti per continuare la ricorsione, almeno io sto cercando di farlo cosi'


Posted by Jacoposki on 10-02-2005 16:44:

diomio.... sentite, cercate di capirmi, io ho appena finito di seguire il corso di programmazione (primo anno) e ho ancora la testa che pensa in Java... non è che in questi giorni trovo al silab qualcuno di voi che possa darmi una mano sulle cose più futili del C? sigh sigh

__________________
Mai sottovalutare l'ampiezza di banda di una station wagon piena di nastri lanciata a tutta velocità lungo l'autostrada. - Andrew S. Tanenbaum - Reti di Calcolatori


Posted by wingzero on 10-02-2005 17:15:

Originally posted by p2p
backtracking funziona "come" se stesse visitando un albero, ma non è che devi usarlo solo con gli alberi, basta che gli passi i punti adiacenti per continuare la ricorsione, almeno io sto cercando di farlo cosi'


Ma allora non c'è già il DFS (Depth First Search) per i grafi che fa già la stessa cosa di suo ?


Posted by mattcobain on 10-02-2005 17:28:

backtracking, dfs?!?!
....ma fiorentini quando mai ha pronunciato (non dico nemmeno spiegato) queste cose!?!?!?


Posted by p2p on 10-02-2005 17:29:

il problema che si presentava con i grafi era che bisogna memorizzare nel grafo tutti i punto compresi nel rettangolo tra automa e sorgente, generando un grafo anche molto grande... quindi si cercava di fare qualcosa di alternativo... solo che ti dico, con il backtracking non è che sia cosi facile come sembra perchè inanzitutto se dentro alla funzione di backtracking si fa un ciclo per vedere se il punto è un ostacolo o meno(la checkpos del prof) bisogna considerare che le coordinate a partite dalla x e la y dell automa, potrebbero aver bisogno di essere incrementate o decrementate a seconda di dove si trova l automa rispetto la sorgente, e gia' qui un doppio for puo' coprire solo uno dei 4 casi.. non so se mi sono spiegato... insomma ci sono un po' di problematiche...
se qualcuno volesse dire come sta facendo....


Posted by p2p on 10-02-2005 17:29:

Originally posted by mattcobain
backtracking, dfs?!?!
....ma fiorentini quando mai ha pronunciato (non dico nemmeno spiegato) queste cose!?!?!?

MAII!!!


Posted by wingzero on 10-02-2005 18:42:

Sto ancora riguardando il testo del progetto...
Prima ho capito di essermi sbagliato ad interpretare le specifiche a quanto sembra su come devono muoversi questi automi e l'ho detto nel post.

Ora però, o è troppo tempo che lo rileggo.. tuttavia..

sull'esempio di input.. sbaglio anche questa volta o l'utente non immette alcun comando per il segnale fino alla fine ?
Io non lo vedo nella lista dei comandi.
Allora se non c'è, come faccio a calcolarmi i comandi e e t per esistePercorso e tortuosità ?

Se non viene immesso un segnale prima, come posso calcolare percorsi liberi e tortuosità ? E' tutto lì il problema.. ma se i segnali vengono immessi alla fine di tutti i comandi in input .. l'esempio sbaglio anche questa volta o semplicemente è impossibile che funzioni così ?

Io non leggo nessun comando s fino alla fine dei comandi in input...


Posted by wingzero on 10-02-2005 18:48:

Originally posted by wingzero
Sto ancora riguardando il testo del progetto...
Prima ho capito di essermi sbagliato ad interpretare le specifiche a quanto sembra su come devono muoversi questi automi e l'ho detto nel post.

Ora però, o è troppo tempo che lo rileggo.. tuttavia..

sull'esempio di input.. sbaglio anche questa volta o l'utente non immette alcun comando per il segnale fino alla fine ?
Io non lo vedo nella lista dei comandi.
Allora se non c'è, come faccio a calcolarmi i comandi e e t per esistePercorso e tortuosità ?

Se non viene immesso un segnale prima, come posso calcolare percorsi liberi e tortuosità ? E' tutto lì il problema.. ma se i segnali vengono immessi alla fine di tutti i comandi in input .. l'esempio sbaglio anche questa volta o semplicemente è impossibile che funzioni così ?

Io non leggo nessun comando s fino alla fine dei comandi in input...


Mmmh... forse mi sono risbagliato io a leggere.. :cool:

Vabbè. Ho capito che esistePercorso e tortuosità funzionano comunque perchè calcolano su coordinate immesse che possono essere solo potenziali per un eventuale comando segnale. Questo credo sia giusto.
Poi il comando segnale fa effettivamente spostare gli automi che si spostano.

Il tutto così diventa più caotico da programmare ad occhio..

Ok, spero di aver chiarito eventuali dubbi ad altri oltre che a me stesso, ma il testo mi è apparso criptico in più punti, sinceramente. :-o


Posted by Jacoposki on 11-02-2005 01:43:

mah, a logica è:

- arriva il segnale
- vedo la posizione da cui arriva
- prendo gli automi interessati
- per ognuno di questi controllo esistePercorso
- se esistePercorso cambio la posizione degli automi con la posizione da cui arriva il segnale

Mi pare che la tortuosità non contribuisca a determinare se gli automi si muovono o meno... si muovono solo se esiste un percorso di lunghezza minima, la tortuosità è un punto a parte... nessuno ci chiede di dire quale percorso segue l'automa per spostarsi, mi pare.

Comunque rinnovo il disperato appello... nessuno passa o passerebbe al silab in questi giorni a parlare un po' di questo progetto? <;-(

__________________
Mai sottovalutare l'ampiezza di banda di una station wagon piena di nastri lanciata a tutta velocità lungo l'autostrada. - Andrew S. Tanenbaum - Reti di Calcolatori


Posted by wingzero on 11-02-2005 09:09:

Originally posted by Jacoposki
mah, a logica è:

- arriva il segnale
- vedo la posizione da cui arriva
- prendo gli automi interessati
- per ognuno di questi controllo esistePercorso
- se esistePercorso cambio la posizione degli automi con la posizione da cui arriva il segnale

Mi pare che la tortuosità non contribuisca a determinare se gli automi si muovono o meno... si muovono solo se esiste un percorso di lunghezza minima, la tortuosità è un punto a parte... nessuno ci chiede di dire quale percorso segue l'automa per spostarsi, mi pare.

Comunque rinnovo il disperato appello... nessuno passa o passerebbe al silab in questi giorni a parlare un po' di questo progetto? <;-(



Riguardo la tortuosità.. rileggi la definizione perchè c'è scritto chiaramente che l'automa fra i percorsi liberi deve scegliere quello a tortuosità minore (minor numero di cambi direzione).
Io avevo all'inizio pensato ad una restrizione al riguardo un pò diversa, poi ho capito che non voleva quello, tuttavia la tortuosità è comunque un parametro necessario per scegliere quale percorso far seguire all'automa.


Posted by p2p on 11-02-2005 09:59:

ragazzi, io dopo un po' di elucubrazioni sono giunto alla conclusione che "forse" il breadth-first search è la cosa piu' fattibile, perchè:
1) individua qualsiasi punto raggiungibile dalla sorgente(e quindi basta controllare se uno dei nostri automi è posizionato nei punti trovati dall' algoritmo,e poi si eseguono i controlli riguardanti le distanze);
2)il backtracking mi sembra un casino e non sono ancora riuscito ad implementarlo decentemente.

aspetti negativi:
1)bisogna costruire un grafo con tutti i punti compresi tra i vari automi e la sorgente cercando di eliminare i punti doppi, ovviamente.... anche qui non che sia poi cosi uno spreco di risorse xchè se devi vedere tutti i percorsi possibili non hai molte altre scelte.
2)bisogna fare una cifra di confronti... per vedere i punti, per vedere se gli automi ricadono nei punti, per gli ostacoli, ecc...

problema: come tengo traccia dei cambi di direzione???non saprei...

vorrei qualche commento da parte di chi si sta spaccando il cervello come me...
:)

voi che ne dite? cosa state facendo?


Posted by luca8684 on 11-02-2005 10:06:

:alsono: :alsono: :alsono: :alsono: :alsono: :? :? :? :? :pccrash: :pccrash: :pccrash:

__________________
{¯`·._)-•°o.O`·._.·´¯`¸·´¯).·´¯`·-> IN DA EEKS <-·´¯`·.(¯`·¸´¯`·._.·´O.o°•–(¯`·._}


Posted by mark on 11-02-2005 10:21:

mi spiegate cosa intende con l'output


SI
4
NO
-1
etc.. ?

grazie 1000

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by mark on 11-02-2005 10:24:

pardon, trovato; mi era sfuggito

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by Jacoposki on 11-02-2005 11:32:

Originally posted by wingzero
Riguardo la tortuosità.. rileggi la definizione perchè c'è scritto chiaramente che l'automa fra i percorsi liberi deve scegliere quello a tortuosità minore (minor numero di cambi direzione).
Io avevo all'inizio pensato ad una restrizione al riguardo un pò diversa, poi ho capito che non voleva quello, tuttavia la tortuosità è comunque un parametro necessario per scegliere quale percorso far seguire all'automa.


Scusami se insisto... ma nessuno ci chiede di dire quale percorso segue l'automa. Il metodo tortuosità restituisce solo la tortuosità minima sui percorsi liberi, ma il movimento dell'automa consiste solo nel cambiare le variabili che indicano la posizione dell'automa se esiste un percorso libero di lunghezza minima.

....


proprio nessuno al silab, eh? :(

__________________
Mai sottovalutare l'ampiezza di banda di una station wagon piena di nastri lanciata a tutta velocità lungo l'autostrada. - Andrew S. Tanenbaum - Reti di Calcolatori


Posted by mark on 11-02-2005 13:27:

scusate ma non ho capito come lavora esistePercorso()

Il testo del progetto recita: se esiste un percorso libero di lunghezza D(P(n) , (x,y))

cosa vuol dire ?


altra particolarità: ma il programma dovrà generare l'output solo quando viene inserito il carattere 'f' ??

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by wingzero on 11-02-2005 14:38:

Originally posted by mark
scusate ma non ho capito come lavora esistePercorso()

Il testo del progetto recita: se esiste un percorso libero di lunghezza D(P(n) , (x,y))

cosa vuol dire ?


altra particolarità: ma il programma dovrà generare l'output solo quando viene inserito il carattere 'f' ??


Spero non intenda quello altrimenti tener traccia di tutto l'history dei comandi e di ciò che fanno sulle strutture dati diventa una cosa assurda. Già è difficilissimo gestire il tutto in maniera dinamica su un mondo quadrato di signed int 32bit in C...


Posted by mark on 11-02-2005 14:51:

Originally posted by wingzero
Spero non intenda quello altrimenti tener traccia di tutto l'history dei comandi e di ciò che fanno sulle strutture dati diventa una cosa assurda. Già è difficilissimo gestire il tutto in maniera dinamica su un mondo quadrato di signed int 32bit in C...



io ho inteso che l'output viene generato nel momento in cui si digita 'f'

a mio avviso, prima non avrebbe molto senso

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by wingzero on 11-02-2005 15:04:

Originally posted by mark
io ho inteso che l'output viene generato nel momento in cui si digita 'f'

a mio avviso, prima non avrebbe molto senso


Io non credo sia come dici tu, perchè sul comando f viene solo detto che termina il programma. Se fosse come dici tu il professore avrebbero dovuto scrivere per il comando qualcosa del tipo : "Termina l'esecuzione del programma e genera l'output eseguendo tutti i comandi inseriti dall'utente nell'ordine dato".
O qualcosa del genere.
Visto che per il comando f viene solo detto che termina il programma, significa solo che interrompe il codice e torna al sistema operativo/prompt dei comandi.


Posted by p2p on 11-02-2005 15:09:

non si stampa alla fine. l esecuzione di ogni comando è immediata x cui se un comando deve stampare stampa se no esegue le se operazioni e basta, la f serve solo per uscire dal programma, in pratica nel tuo ciclo

case 'f':
/* Fine del programma. */
return 0;
break;


Posted by mark on 11-02-2005 15:28:

ma l'input non avviene riga per riga completa ?

esempio:

o 10 -5 8 12

non penso che uno si deve aspettare una cosa del tipo:

digitare un comando: o

e poi....

inserire le coordinate dell'ostacolo (x1,y1,x2,y2):

etc.....


in questo modo l'input sarebbe interminabile

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by p2p on 11-02-2005 15:39:

Originally posted by mark
ma l'input non avviene riga per riga completa ?

esempio:

o 10 -5 8 12

non penso che uno si deve aspettare una cosa del tipo:

digitare un comando: o

e poi....

inserire le coordinate dell'ostacolo (x1,y1,x2,y2):

etc.....


in questo modo l'input sarebbe interminabile

scusa , ma certo che se il comando o deve prendere dei parametri glieli devi dare subito, se non come fa ad andare in esecuzione??
leggi l esempio:
c //invio --> esecuzione del comando c;
o 12 12 12 12 // invio --> esecuzione del comando crea_ostacolo
ecc ecc

capito?


Posted by mark on 11-02-2005 15:49:

Originally posted by p2p
scusa , ma certo che se il comando o deve prendere dei parametri glieli devi dare subito, se non come fa ad andare in esecuzione??
leggi l esempio:
c //invio --> esecuzione del comando c;
o 12 12 12 12 // invio --> esecuzione del comando crea_ostacolo
ecc ecc

capito?



scusa ma non ci stiamo capendo

io posso tranquillamente digitare:

o 12 -8 15 67

e sapere gia dove memorizzare la linea di comando che farà qualche cosa, nel caso sopra costruire un ostacolo.

Tu invece, sembra che mi stai dicendo che un utente dovra vedere una cosa del tipo:

Menu principale

0) "c" per inizializzare
1) digita "o" per inserire un ostacolo
2) digita "a" per inserire un automa
3) ..........
n) "f" per terminare il programma

dopo aver scelto "a" ad esempio mostri il messagio che ti chiede di inserire i parametri per gli automi, del tipo:


inserire ora (a, b, alfa) separati da uno spazio:

quindi uno inserisce i 3 dati e si ritorna al menu principale


è così che intendi ?

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by p2p on 11-02-2005 15:53:

no
intendo che i comandi devono essere inseriti ed eseguiti subito.non si deve stampare niente a parte esistePercorso che deve stampare o Si o NO e tortuosita'


Posted by mark on 11-02-2005 16:39:

allora intendi una sorta di interprete tipo:

c:\digita una comando:

che rimane attivo ed elabora al volo sino a quando gli passi il carattere 'f'

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by Skilotto83 on 11-02-2005 20:01:

ma ke problemi sono???
la scanf o quel cazzius ke avete usato legge direttamente i caratteri e li passa alla funzione che vi serve...quando mandi invio esegue la funzione...se la funzione stampa qlks allora bene, altrimenti nulla...

__________________
"Why, Sir, you find no man at all intellectual who is willing to leave London.
No, Sir, when a man is tired of London, he is tired of life; for there is in London all that life can afford."
(DR SAMUEL JOHNSON 1777)

MSN andrea.poretti(at)hotmail.it


Posted by mark on 11-02-2005 22:33:

ok, è tutto chiarito :)

__________________
Non ti perdere di coraggio se ti tocca lavorare molto e raccogliere poco.....


Posted by Jacoposki on 12-02-2005 10:44:

sarà tutto chiarito... ma possibile che nessuno abbia bisogno di uno con cui lavorare, da prendere a calci e da cui farsi prendere a calci a mo' di sprone al lavoro?

Io da solo 'sto progetto non lo riesco a fare... insisto: nessuno nessuno nessuno al silab? ;(

__________________
Mai sottovalutare l'ampiezza di banda di una station wagon piena di nastri lanciata a tutta velocità lungo l'autostrada. - Andrew S. Tanenbaum - Reti di Calcolatori


Posted by elpampero on 13-02-2005 09:41:

A quanto ho capito siamo fermi tutti allo stesso punto.
Direi però di orientarci verso questi tre algoritmi:
Kruskal
Prim
Dijkstra
In particolare l'ultimo è per la determinazione dei cammini minimi.
Torelli aveva chiaramente detto "QUESTI TRE ALGORITMI NON SARANNO CHIESTI ALL'ORALE MA SARANNO UTILI PER IL PROGETTO"!!!!!!!


Posted by Polsy on 13-02-2005 12:35:

ragazzi, qui il problema non è trovare il cammino minimo visto ke se poniamo come condizione ke l'automa si debba spostare sempre e solo verso la sorgente, se esiste un cammino allora quello è già minimo, e vale esattamente la distanza tra l'automa e la sorgente (intesa come differenza tra le y + differenza tra le x)
il problema è trovare la tortuosità minore, ke tra l'altro (mi è venuta l'illuminazione ieri sera) non significa trovare il cammino con tortuosità minore
mi spiego meglio: ho sclerato per 3-4 giorni sulla storia dei cammini perkè tentavo di trovare il singolo cammino con tortuosità minore di tutte e poi contarne la tortuosità, e poi mi sono accorta ke mi interessava solo la tortuosità, non lo specifico cammino ke me la facesse ottenere
per cui credo ke un modo di risolvere la questione sarebbe crearmi una matrice di valori ke mi rappresenta l'ideale rettangolo tra l'automa e la sorgente (con opportuni flag se la cella in questione è occupata) e tenere una variabile int tor in cui alla fine avrò la tortuosità minore di tutte
faccio un algoritmo di backtracking calcolando ricorsivamente TUTTI i percorsi possibili su quella matrice (tenendo conto in una variabile temp ad ogni passo della tortuosità che ho raggiunto nel cammino corrente fino a quella cella) e ogni volta ke arrivo nella cella della sorgente se tor è vuota (metterò un valore convenzionale tipo -1) oppure se temp<tor allora assegno a tor il valore di temp
e vado avanti fino alla fine, quando ho esaurito tutti i cammini tor conterrà il valore della tortuosità del cammino ottimale, anke se alla fine non ho la + pallida idea di quale sia questo cammino :)

lo so provare tutti i cammini possibili non è bello in termini di tempo, ma x ora questa è stata l'unica idea ke ho avuto x cui funziona la storia delle tortuosità, suggerimenti e consigli a proposito sono ovviamente ben accetti :)


Posted by fdecollibus on 13-02-2005 12:35:

scusate ragazzi, una cosa un po' più bassa.... come si fa il valore assoluto in c? E se ho allocato dinamicamente un array, come faccio a sapere quando è finito?


Posted by holylaw on 13-02-2005 12:43:

prova a fare una cosa del genere:
valore_assoluto_di_x= (x<0) ? -x : x;

__________________
La mia epoca ed io non siamo fatti l'uno per l'altro:questo è chiaro. Ma è da vedere chi di noi due vincerà il processo di fronte al tribunale dei posteri.
AV MJØDEN VART DU VIS OG KLOK, SÅ DREKKA MER!!!!
Le persone sagge parlano perché hanno qualcosa da dire.
Le persone sciocche perché hanno da dire qualcosa.


Posted by wingzero on 13-02-2005 12:49:

Originally posted by Polsy
ragazzi, qui il problema non è trovare il cammino minimo visto ke se poniamo come condizione ke l'automa si debba spostare sempre e solo verso la sorgente, se esiste un cammino allora quello è già minimo, e vale esattamente la distanza tra l'automa e la sorgente (intesa come differenza tra le y + differenza tra le x)
il problema è trovare la tortuosità minore, ke tra l'altro (mi è venuta l'illuminazione ieri sera) non significa trovare il cammino con tortuosità minore
mi spiego meglio: ho sclerato per 3-4 giorni sulla storia dei cammini perkè tentavo di trovare il singolo cammino con tortuosità minore di tutte e poi contarne la tortuosità, e poi mi sono accorta ke mi interessava solo la tortuosità, non lo specifico cammino ke me la facesse ottenere


Dal testo del progetto :

Quando un automa si sposta sceglie, fra
i percorsi a distanza minima, quello meno tortuoso. Ad esempio, 11 può andare direttamente in X con un percorso di tortuosità 0, l'unico percorso per 10 ha tortuosità 1 mentre la minima tortuosità di un percorso per 101 è 2.



Si richiede di implementare una struttura dati effciente che permetta di eseguire le operazioni seguenti
(si tenga presente che la minima porzione rettangolare di piano contenente tutti gli automi e tutti gli
ostacoli può essere molto grande rispetto al numero di automi e ostacoli presenti, quindi non è sicuramente
efficiente rappresentare il piano mediante una matrice).



Quindi sbagli a leggere quanto chiede il professore da quel che leggo io. Lui chiede chiaramente di trovare fra tutti i percorsi liberi a distanza minima quello meno tortuoso che sarà quello che l'automa dovrà scegliere (e se quelli a distanza minima sono bloccati da ostacoli non deve muoversi se ho letto bene gli esempi) Per come è il testo e come sono gli esempi è facile sbagliarsi e cercare scorciatoie per semplificare il problema, tuttavia non è semplificabile.
E l'uso di matrici estese lo sconsiglia, quindi potrebbe anche non accettare soluzioni di forza bruta di quel genere.


Posted by Polsy on 13-02-2005 13:02:

Originally posted by wingzero
Dal testo del progetto :







Quindi sbagli a leggere quanto chiede il professore da quel che leggo io. Lui chiede chiaramente di trovare fra tutti i percorsi liberi a distanza minima quello meno tortuoso che sarà quello che l'automa dovrà scegliere (e se quelli a distanza minima sono bloccati da ostacoli non deve muoversi se ho letto bene gli esempi) Per come è il testo e come sono gli esempi è facile sbagliarsi e cercare scorciatoie per semplificare il problema, tuttavia non è semplificabile.
E l'uso di matrici estese lo sconsiglia, quindi potrebbe anche non accettare soluzioni di forza bruta di quel genere.


hmm...potremmo andare al ricevimento di aguzzoli e chiedere
a) se nelle specifiche del progetto viene richiesto anke qual'è il singolo percorso con tortuosità minima (io ho assunto ke non fosse richiesto primo perkè non fa parte dell'output ma sembra solo una conoscenza di "supporto" x il calcolo delle tortuosità, secondo perkè potrebbero esserci + cammini con tortuosità minima, x cui avrei bisogno di un criterio x scegliere uno rispetto all'altro)
b) se è accettabile come tempi fare un brute force sui cammini

quand'è il ricevimento di aguzzoli?


Posted by fdecollibus on 13-02-2005 13:05:

Mercoledì 15-16


Posted by wingzero on 13-02-2005 13:06:

Originally posted by Polsy
ragazzi, qui il problema non è trovare il cammino minimo visto ke se poniamo come condizione ke l'automa si debba spostare sempre e solo verso la sorgente, se esiste un cammino allora quello è già minimo, e vale esattamente la distanza tra l'automa e la sorgente (intesa come differenza tra le y + differenza tra le x)


Scusa ma quello che hai scritto qui è impossibile. Guarda bene gli esempi, l'automa 101 ha più di un cammino da distanza 8, di cui quello più diretto (in basso di 3 e sinistra di 5) è inaccessibile perchè c'è l'ostacolo...
L'automa 110 ha il cammino minimo con tortuosità 0 e distanza 8 (a sinistra di 8) ostruito dal medesimo ostacolo che blocca 101 e qualsiasi altro percorso libero ha maggiore tortuosità (quindi non andrebbe scelto) e maggiore distanza (quindi non deve muoversi anche se ha un cammino libero che è minimo fra quelli disponibili).
Per 101 il discorso è diverso perchè ci sono più cammini minimi con 8 di distanza come quello ostruito dall'ostacolo.
Insomma, è un bel problema creare un algoritmo funzionante per tenere conto di tutto quello che viene richiesto e non c'è una soluzione semplice per risolvere il problema.


Posted by wingzero on 13-02-2005 13:23:

Originally posted by holylaw
prova a fare una cosa del genere:
valore_assoluto_di_x= (x<0) ? -x : x;


stdlib.h dell' ANSI C standard contiene la funzione abs() che ritorna il valore assoluto di un intero.


Posted by Polsy on 13-02-2005 13:30:

Originally posted by wingzero
Scusa ma quello che hai scritto qui è impossibile. Guarda bene gli esempi, l'automa 101 ha più di un cammino da distanza 8, di cui quello più diretto (in basso di 3 e sinistra di 5) è inaccessibile perchè c'è l'ostacolo...
L'automa 110 ha il cammino minimo con tortuosità 0 e distanza 8 (a sinistra di 8) ostruito dal medesimo ostacolo che blocca 101 e qualsiasi altro percorso libero ha maggiore tortuosità (quindi non andrebbe scelto) e maggiore distanza (quindi non deve muoversi anche se ha un cammino libero che è minimo fra quelli disponibili).
Per 101 il discorso è diverso perchè ci sono più cammini minimi con 8 di distanza come quello ostruito dall'ostacolo.
Insomma, è un bel problema creare un algoritmo funzionante per tenere conto di tutto quello che viene richiesto e non c'è una soluzione semplice per risolvere il problema.

scusa ma quello ke hai scritto non contraddice la mia tesi, anzi
110 come unico cammino avrebbe quello in linea retta, cioè l'unico cammino tracciabile all'interno dell'ipotetico "rettangolo" (ke in questo caso è un segmento) tra l'automa e la sorgente
tutti i presunti percorsi che hanno lunghezza maggiore presuppongono ke tu esca da questo rettangolo e/o ti allontani dalla sorgente rispetto al passo precedente, x cui non sono da considerare come cammini
se il percorso è un cammino invece, la sua lunghezza è x forza uguale alla distanza tra l'automa e la sorgente, x cui tutti i cammini esistenti hanno lunghezza uguale, ecco perkè non si deve parlare di cammino minimo


Posted by wingzero on 13-02-2005 13:34:

Originally posted by Polsy
se il percorso è un cammino invece, la sua lunghezza è x forza uguale alla distanza tra l'automa e la sorgente, x cui tutti i cammini esistenti hanno lunghezza uguale, ecco perkè non si deve parlare di cammino minimo


Dico solo questo, sbagli. La lunghezza dipende da quale fra le combinazioni degli spostamenti possibili viene scelta (combinazioni che cambiano in base agli ostacoli sulla mappa poi). Per quell'automa con più distanze minime uguali è solo perchè è un caso particolare.


Posted by Polsy on 13-02-2005 13:51:

Originally posted by wingzero
Dico solo questo, sbagli. La lunghezza dipende da quale fra le combinazioni degli spostamenti possibili viene scelta (combinazioni che cambiano in base agli ostacoli sulla mappa poi).

scusa, se tu poni come condizione ke ti puoi muovere solo in direzione della sorgente e mettiamo caso ke l'automa sia nel punto 0,0 e la sorgente nel punto 5,7
pongo come condizione ke l'automa si muova solo in direzione della sorgente, quindi scelgo come 2 uniche direzioni possibili la destra e l'alto
l'automa dovrà in totale fare 5 passi a dx e 7 in alto qualsiasi percorso scelga
te lo dimostro x assurdo
se facesse un percorso + breve allora avrei 3 casi: o ha fatto meno di 5 passi a dx o ha fatto meno di 7 passi in alto, o entrambe le cose, in ognuno del 3 casi è sempre un po' a sx e/o un po' in basso rispetto alla sorgente (= non l'ha raggiunta)
se facesse un percorso + lungo allora avrei 2 casi:
-ha fatto + di 5 passi a dx--> deve farne almeno 1 a sx per arrivare sull'ascissa della sorgente --> impossibile x ipotesi
-ha fatto + di 7 passi in alto--> deve farne almeno uno in basso x arrivare sull'ordinata della sorgente --> impossibile x ipotesi

di conseguenza per qualsiasi percorso esistente l'automa compie 5 passi a dx e 7 in alto, quindi 12 passi in totale
il realtà quello ke cambia non è il numero di passi, ma l'ordine


Posted by elpampero on 13-02-2005 14:05:

Scusate ma mi sto perdendo.
Prima accennavo a 3 algoritmi come idea. In effetti è vero che a noi non interessa il cammino minimo (in quanto la distanza minima è una sola).
Partiamo dall'inizio: tutti i punti appartenenti al rettangolo inscritto tra l'automa e il punto di arrivo fanno parte di un grafo orientato...


Posted by elpampero on 13-02-2005 14:10:

Prima domanda: come lo costruiamo un grafo?


Posted by wingzero on 13-02-2005 14:11:

Originally posted by elpampero
Scusate ma mi sto perdendo.
Prima accennavo a 3 algoritmi come idea. In effetti è vero che a noi non interessa il cammino minimo (in quanto la distanza minima è una sola).
Partiamo dall'inizio: tutti i punti appartenenti al rettangolo inscritto tra l'automa e il punto di arrivo fanno parte di un grafo orientato...


E' il testo del progetto che resta ambiguo ma è il cammino minimo ciò che interessa. Altrimenti Dijkstra ed il digrafo neanche li dovresti prendere in considerazione in pratica.


Posted by p2p on 13-02-2005 14:16:

avevo gia' accennato ai grafi qualche post fa... io dicevo di costruirne uno che contenesse tutti i punti dei rettangoli tra la sorgente e i vari automi,ovviamente bisogna tirar via i punti doppi, poi bisogna eliminare i punti che fanno parte di ostacoli e alla fine si usa una vista in ampiezza.


Posted by elpampero on 13-02-2005 14:17:

Forse mi sono espresso male. Noi non dobbiamo trovare il cammino minimo tra i due punti in quanto tale cammino è banalmente data da |x0-x1|+|y0-y1|. Quindi lo visita del nostro grafo non serve per trovare questa distanza rispetto ad altre (in quanto sappiamo già quanto debba essere) ma serve per capire se esite un percorso


Posted by p2p on 13-02-2005 14:19:

Originally posted by elpampero
Forse mi sono espresso male. Noi non dobbiamo trovare il cammino minimo tra i due punti in quanto tale cammino è banalmente data da |x0-x1|+|y0-y1|. Quindi lo visita del nostro grafo non serve per trovare questa distanza rispetto ad altre (in quanto sappiamo già quanto debba essere) ma serve per capire se esite un percorso

esatto, serve per sapere se esiste un percorso, xo' bisogna tenere anche una variabile che mi indichi la tortuosita'.


All times are GMT. The time now is 21:15. Pages (4): [1] 2 3 4 »
Show all 482 posts from this thread on one page

Powered by: vBulletin Version 2.3.1
Copyright © Jelsoft Enterprises Limited 2000 - 2002.