Homepage  Il progetto dsy.it è l'unofficial support site dei corsi di laurea del Dipartimento di Scienze dell'Informazione e del Dipartimento di Informatica e Comunicazione della Statale di Milano. E' un servizio degli studenti per gli studenti, curato in modo no-profit da un gruppo di essi. I nostri servizi comprendono aree di discussione per ogni Corso di Laurea, un'area download per lo scambio file, una raccolta di link e un motore di ricerca, il supporto agli studenti lavoratori, il forum hosting per Professori e studenti, i blog, e molto altro...
In questa sezione è indicizzato in textonly il contenuto del nostro forum


.dsy:it. .dsy:it. Archive > Didattica > Corsi A - F > Algoritmi e strutture dati
Pages: [1] 2 3 4 5 
[Algoritmi] Progetto "RICHIAMI"
Clicca QUI per vedere il messaggio nel forum
elpampero
E' in uscita il nuovo progetto di algoritmi valido per l'appello dell'8 Febbraio 2005. In bocca al lupo

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

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

wingzero
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:

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

Skilotto83
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'...

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...

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

Jacoposki
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.

Jacoposki
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!

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

elpampero
Come lo creiamo un piano?

mitnik
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 ?

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

Ciao

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

elpampero
Gli automi li gestisci con un albero binario di ricerca?

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.

mitnik
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?

elpampero
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

mitnik
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à.

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

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

Skilotto83
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....

mattcobain
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!!!

mark
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 ?

lino
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.

maurozaninelli
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???

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?

superfabius
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

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

p2p
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.

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'

wingzero
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à.

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

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

p2p
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 :)

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

elpampero
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

elpampero
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

p2p
come stringa, io uso un *char per memorizzarlo

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

p2p
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?

elpampero
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

mitnik
E' una brutta gatta da pelare questa tortuosità.

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

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

faxmaister
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

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

mitnik
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?

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

p2p
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...

mattcobain
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!!!

Skilotto83
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???

p2p
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?

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!!!!!!

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

Polsy
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

mattcobain
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

Jacoposki
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.

Skilotto83
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...

Skilotto83
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..

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!

mattcobain
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!!!

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

p2p
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....

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

Skilotto83
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??

p2p
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:

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.....

p2p
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!

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

ZeroByte
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.

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!!!

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?

p2p
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.

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...

luca8684
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!!

Polsy
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:

Sephirot
grafo da 300 nodi

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!!!

Skilotto83
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...

Skilotto83
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...

p2p
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

p2p
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?

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

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

sarebbe?

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....

p2p
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....

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

..... :-)

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

vlaste
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??

p2p
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

mark
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

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?

luca8684
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.

luca8684
Mi hai anticipato!!
:(

mark
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 :(

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

p2p
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...

mark
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

Powered by: vbHome (lite) v4.1 and vBulletin v2.3.1 - Copyright ©2000 - 2002, Jelsoft Enterprises Limited
Mantained by dsy crew (email) | Collabora con noi | Segnalaci un bug | Archive | Regolamento |Licenze | Thanks | Syndacate