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
 
[ALGORITMI - TORELLI] Progetto "RECINTI"
Clicca QUI per vedere il messaggio nel forum
lino
Domani esce il testo..... speriamo in bene.

Jacoposki
speriamo in bene sì, diobono.

ZeroByte
E' online il testo del progetto!! In bocca al lupo a tutti coloro che devono affrontarlo!!

superfabius
A me sembra molto più semplice del precedente
No?

fixxxer
si, in effetti è moooooolto + semplice

lino
Solo una domanda..... qualcuno di voi potrebbe spiegarmi, sulla base dell'esempio riportato, come si calcola la capienza del recinto?

lino
altra domanda..... alla funzione recinto cosa mettete come paramentri?

Jacoposki
a prima vista direi che recinto prenderà come parametro un array di int... visto che il numero di int non è prefissato mi pare l'unico modo.

Jacoposki
la capienza del recinto boh... sospetto che c'entri qualcosa quel paragrafetto sul determinante della matrice 2x2 ma ci devo ragionare un po' su :)

superfabius
io nn capisco la storia della matrice ....lo calceolerei in altro modo il numer odi punti

superfabius
Originally posted by superfabius
io nn capisco la storia della matrice ....lo calceolerei in altro modo il numer odi punti


capita :D

poi altra roba........

Per quanto riguarda la costruzione del recinto nella prima pagina viene scritto:

"Non verrà mai chiesto di costruire i recinti

R(2, 2, .....) R(0, 3, ....) "

Quindi non ci si deve preoccupare assolutamente della costruzione del recinto o si deve fare un controllo che verifica la correttezza del poligono? :?

Jacoposki
no, questo è come l'altra volta: si suppone un input corretto.

mazob
Ciao
forse la mia domanda non torverà risposta, ma volevo un consiglio, secondo voi è meglio creare 2 o 3 strutture dati?
Io pensavo 3 ma non so come gestire la relazione d'ordinamento stretto tra le specie.
Grazie

lino
A che tipo di struttura dati avete pensato per organizzare gli inserimenti di piante?

mitnik
io sto pensando ad un albero, ma resta comunque difficile come disporre le piante secondo la relazione d'ordine che intercorre tra una e l'altra! bho! non mi sembra banale. Voi che dite??

mitnik
magari si puo trovare qualche cosa sullìordinamento di ordine parziale

superfabius
Io le piante le sparo in una lista ....con l'abero devo fare un sacco di operazioni per ordinarle o inserirle...
la cosa che mi preoccupa è il recinto!!!!!!!!!!!!!!!
Grafo!!!!!!!!!

mazob
io metterei il recinto in una lista magari chiusa

superfabius
Originally posted by mazob
io metterei il recinto in una lista magari chiusa


dopo provo :D

ma la storia delle matrici secondo voi serve?
il mcd sui lati mi serve ok
il determinante potrebbe servirmi va bene

pero' non ho capito quel k> < = 0 come lo devo sfruttare

mitnik
Originally posted by superfabius
Io le piante le sparo in una lista ....


ok! ma il problema rimane l'ordinamento. Ad un certo punto tu devi sapere se per esempio un garofano è < di una rosa. Come fai per questo?

superfabius
Originally posted by mitnik
ok! ma il problema rimane l'ordinamento. Ad un certo punto tu devi sapere se per esempio un garofano è < di una rosa. Come fai per questo?


quando viene stabilita la relazione d'ordine ordino la lista....o se viene stabilita prima come nell'esempio sparo dentro le piante facendo un controllo per ordinarle

Polo
MA voi come risolvete il problema della conta sui punti all-interno del poligono soprattutto quelli hai bordi la storia delle matrici la usate ???

mazob
Scusa, ma come fai ad ordinare tutte le piante sulla relazione d'ordine se sono coppie di valori separati?

mitnik
Originally posted by mazob
Scusa, ma come fai ad ordinare tutte le piante sulla relazione d'ordine se sono coppie di valori separati?


anche secondo me questo è un probelma. Si potrebbero memorizzare in un albero in cui il figlio sx è in relazione mentre quello dx non lo è. Potrebbe andare bene anche se ci potrebbero essere (una volta inseriti tanti elementi) più nodi con lo stesso nome. Mha..

mitnik
è uscita una versione corretta del progetto! sinceramente i cambiamenti a me non dicono molto però ci sono!

Jacoposki
ha cambiato "retta" con "semiretta", mi pare.... mmm già prima non capivo cosa mi stesse dicendo con 'sta storia delle rotazioni, adesso poi che è anche andato a ritoccarlo capisco ancora meno CHE COSA sta cercando di dirmi.... gh.

Col. Kurtz
Originally posted by mazob
Scusa, ma come fai ad ordinare tutte le piante sulla relazione d'ordine se sono coppie di valori separati?


L'ordine viene spiegato nel testo del progetto, in una noticina a pie' pagina (pagina 5).

a = (x1, y1)
b = (x2, y2)

a < b sse (x1 < x2) O (x1 = x2 E y1 < y2).

Non è difficile.

A meno che tu non ti riferisca alle relazioni prese in input, esempio "origano < rosmarino"?

Jacoposki
la noticina di pagina 5 si riferisce ai punti del piano, non alle piante. Anch'io ho problemi a capire come far funzionare la funzione "Minore"... l'altra notte sentivo una vocina che mi diceva "B-Alberi, B-Alberi, B-Alberi...", oggi ho l'impressione che i B-Alberi non c'entrino un'ostia ma potrei sbagliarmi :(

Stanotte pensavo a qualche giochino con le liste... chessò, una lista di tutte le piante indicate come "minori" di un'altra pianta, con puntatori alla pianta rispettivamente indicata come "maggiore", ma non mi pare una struttura sufficientemente organizzata da poter determinare in modo decente se sia possibile o meno aggiungere una nuova relazione d'ordine all'elenco.

Mah. Sigh.

mazob
Originally posted by Col. Kurtz
L'ordine viene spiegato nel testo del progetto, in una noticina a pie' pagina (pagina 5).

a = (x1, y1)
b = (x2, y2)

a < b sse (x1 < x2) O (x1 = x2 E y1 < y2).

Non è difficile.

A meno che tu non ti riferisca alle relazioni prese in input, esempio "origano < rosmarino"?


Io mi riferivo alle relazioni tra specie, anche io pensavo di ordinare le piante per punto.

E per fortuna che è più semplice degli altri ... sono due gg che penso alle strutture dati e non ho ancora la < idea... se continua cosi dovrò abbandonare..

lino
Creare una lista con tutti e soli i nomi nuovi delle piante man mano che vengono insertiti e associare ad ogni nome la lista delle piante in relazione con essa.

es.
begonia<geranio
rosmarino<menta
gardenia<primula
geranio<oleandro

begonia-->geranio-->oleandro
rosmarino-->menta
gardenia-->primula
se viene inserita la relazione oleandro<menta?

Qual' è la struttura che si può usare?

Col. Kurtz
Secondo me c'è qualche cosa alla quale non avete ancora pensato... magari uno degli ultimi argomenti. ;)

eskimo
La struttura dati che più si adatta secondo me è il grafo... sono partito con l'idea di usare un albero: il figlio di un nodo (che rappresenta una pianta) se c'è è perchè c'è una regola inserita che dice che quel nodo è < del padre. Un nodo può avere quanti figli vuole... in modo che siano uguali (cioè la funzione confronta restituisce <> per i fratelli). L'operazione più costosa è quando viene inserita una pianta che si trova esattamente i mezzo fra un padre e un figlio.. in tal caso è un po un casino ma si può fare.
Quello che sballa tutto è quando si inserisce una regola che fa in modo che la stessa pianta abbia due padri... in quel caso si forma il grafo....( a dir la verità è ancora un albero ma è sulla buona strada per fare dei cicli o cmq richiede il link al padre per seguire tutte le regole)

a questo punto sono un po' in difficoltà... altro che progetto più facile!
cmq col.kurtz perchè ci devi far stare sulle spine... su su rivelaci quest'intuizione... :?:)
:)
Paolo

lino
Qualcuno mi spiega per favore come ha fatto a calcolare la capienza del recinto?

superfabius
venite in chat del dsy :D

superfabius
l'unica cosa possibile mi sembra quella di duplicare i dati
no?
tenrere tutte le relazioni legate tra di loro è un casino

Col. Kurtz
Originally posted by eskimo
La struttura dati che più si adatta secondo me è il grafo... sono partito con l'idea di usare un albero: il figlio di un nodo (che rappresenta una pianta) se c'è è perchè c'è una regola inserita che dice che quel nodo è < del padre. Un nodo può avere quanti figli vuole... in modo che siano uguali (cioè la funzione confronta restituisce <> per i fratelli). L'operazione più costosa è quando viene inserita una pianta che si trova esattamente i mezzo fra un padre e un figlio.. in tal caso è un po un casino ma si può fare.
Quello che sballa tutto è quando si inserisce una regola che fa in modo che la stessa pianta abbia due padri... in quel caso si forma il grafo....( a dir la verità è ancora un albero ma è sulla buona strada per fare dei cicli o cmq richiede il link al padre per seguire tutte le regole)

a questo punto sono un po' in difficoltà... altro che progetto più facile!
cmq col.kurtz perchè ci devi far stare sulle spine... su su rivelaci quest'intuizione... :?:)
:)
Paolo


L'intuizione è quella del grafo, ma ti fai troppe seghe mentali :).
Con un grafo "orientato" (lo chiama così il libro in italiano?), è semplice. Cicli non dovrebbe farne, visto che se il nodo A è "minore" del nodo B e il nodo B è "minore" del nodo C, non può essere che il nodo C sia minore del nodo A.

superfabius
Originally posted by Col. Kurtz
L'intuizione è quella del grafo, ma ti fai troppe seghe mentali :).
Con un grafo "orientato" (lo chiama così il libro in italiano?), è semplice. Cicli non dovrebbe farne, visto che se il nodo A è "minore" del nodo B e il nodo B è "minore" del nodo C, non può essere che il nodo C sia minore del nodo A.


si esatto il grafo orientato è l'unica altrimenti con altre struttuure dati si devono duplicare le chiavi e con il grafo orientato non ci sono ambiguità per quanto riguarda le gerarchie di relazioni

edit: e per quanto riguarda la correttezza delle relazioni si fa un controllo sulla formazione di cicli...ovvero quando si forma un ciclo vuol drie che la relazione è sbagliata
:P

re-edit: l'algoritmo che si potrebbe utilizzare è quello di topological sort...c'e' sul libro di algo

alla prossima puntata per il recinto :D

Polo
Ma peri il calcolo dell area voi come fate???

mitnik
Il calcolo dell'area è un problema! anche perchè all'area poi si dovranno aggiungere i punti presenti sui lati del poligono.

eskimo
Per quanto abbia trovato la struttura dati non riesco ancora ad essere tranquillo: come la implementereste? sul libro da due implementazioni, di cui una con le liste ma che cmq usa un array per memorizzare i nodi (come interi)... solo che non è scalabile! usare una lista di liste? mi sembra molto laborioso... ma forse è l'unica! :(
P.

Col. Kurtz
Originally posted by eskimo
Per quanto abbia trovato la struttura dati non riesco ancora ad essere tranquillo: come la implementereste? sul libro da due implementazioni, di cui una con le liste ma che cmq usa un array per memorizzare i nodi (come interi)... solo che non è scalabile! usare una lista di liste? mi sembra molto laborioso... ma forse è l'unica! :(
P.

Beh, un'array lo puoi sempre ri-allocare ;).
Ma la lista di liste dovrebbe andarti bene ugualmente.

superfabius
per trovare i punti interni al recinto a che avete pensato?
scandire i punti da quello piu' a sinistra e creare ogni volta il rettangol omassimo calcolando l'area e poi aumentare o diminure le coordinate di 1 fin oa quando non si arriva a finire al punto + a dx


?!

eskimo
scusa superfabius, potresti rispiegare il tuo metodo?? perchè forse l'hai scritto un po di fretta :pensa:

superfabius
Originally posted by eskimo
scusa superfabius, potresti rispiegare il tuo metodo?? perchè forse l'hai scritto un po di fretta :pensa:


si ho scritto una cagata
:D

bho è un casino sto recinto

eskimo
si infatti neanche io riesco a capire come usare quella ceppa di determinante....sigh....l'unico che mi funzica è il metodo del MCD, che trova i punti toccati da un segmento... ma per l'area (che userei per capire quanti punti ha un recinto all'interno) niente da fare.. è ambiguo, non mi da i punti che ci sono veramente :wall:

superfabius
la cosa che non capisco io è la storia della retta che si sovrappone....

Col. Kurtz
Uffa, anche io mi incasino lì.
Ho praticamente finito ma mi manca la funzione capienza(). :(

superfabius
Non vedo nulla rigurado a un inserimento sbagliato delle piante.
Ad esmpio se nel punto 2, 2 è già stata inserita la pianta X e in input mi arriva

i 2 2 y

devo dare in output qualcosa del tipo "non è possibile inserire la pianta" oppure non faccio nulla?
non mi pare che nell'input dato da lui ci sia una situazione simile

Col. Kurtz
Originally posted by superfabius
Non vedo nulla rigurado a un inserimento sbagliato delle piante.
Ad esmpio se nel punto 2, 2 è già stata inserita la pianta X e in input mi arriva

i 2 2 y

devo dare in output qualcosa del tipo "non è possibile inserire la pianta" oppure non faccio nulla?
non mi pare che nell'input dato da lui ci sia una situazione simile


Non devi fare nulla.
Nel progetto non lo richiede.

Quanto al parallelogramma... ho finito! Ma non ho capito la storia delle rotazioni, e infatti ho trovato un'altra soluzione.

mitnik
ci dai un mano a trovare l'area del poligono?? io ho trovato delle soluzioni teoriche ma anche facendole a mano su carta non mi viene il risultato esatto.

Col. Kurtz
Ogni poligono di n lati è scomponibile in n - 2 triangoli.
L'area di un triangolo a questo punto dovreste saperla calcolare tutti.

mitnik
scusa ma un poligono di n lati non è scomponibile in n triangoli in cui ogni lato è la base di un triangolo?

mitnik
ahh! forse intendi n-2 triangoli se considero le diagonali che partono da un solo vertice.

Col. Kurtz
Originally posted by mitnik
ahh! forse intendi n-2 triangoli se considero le diagonali che partono da un solo vertice.

Esatto. Visto che il testo del progetto ci assicura anche che il recinto non sarà mai un poligono convesso.

superfabius
Domanda idiota:

Le piante non devono necessariamente essere dentro il recinto vero?! E quando stampo le piante le stampo tutte non solo quelle dentro il recinto giusto?E la selezione pero' riguarda solo quelle dentro...

eskimo
si... proprio accussì!

Col. Kurtz
Originally posted by superfabius
Domanda idiota:

Le piante non devono necessariamente essere dentro il recinto vero?! E quando stampo le piante le stampo tutte non solo quelle dentro il recinto giusto?E la selezione pero' riguarda solo quelle dentro...


No, le piante non devono necessariamente essere dentro il recinto.
Ma sul testo del progetto dice di stampare solo quelle nel recinto.

eskimo
grande curtz... hai corretto il mio mess... ho detto di si per fretta...ooops!

Col. Kurtz
Ma è normale ritrovarsi a progetto finito con circa 600 righe di codice? :asd:

wlf3d_it
qualcuno saprebbe darmi qualche suggerimento su come implementare un grafo ORIENTATO.....?


grazie

desaf78
Galloche

desaf78
x eskimo(scrive gatsu04): compa ma quella frase da dove ti è uscita????
xke "a ricinu sulu i paleimmitani"
accusi=cosi

desaf78
Io l'ho fatto tutto il progetto...era facilissimo
(per chi volesse puo' mandarmi il suo codice magari x darvi una mano......)...

Paolopaoli
Ma avete trovato l'algoritmo che "dice" se un punto è fuori o dentro il recinto?

Col. Kurtz
Originally posted by desaf78
Io l'ho fatto tutto il progetto...era facilissimo
(per chi volesse puo' mandarmi il suo codice magari x darvi una mano......)...


Geniale. ;)

Originally posted by Paolopaoli
Ma avete trovato l'algoritmo che "dice" se un punto è fuori o dentro il recinto?
[/B]


Si. Niente di più facile.

Polo
Come avete fatto a capire se un punto è nel recinto io semplicemnete controllando che sia in almeno uno dei n -2 triangoli che compone il poligono ma nn so se è infallibile....

Paolopaoli
Sì. Niente di più facile.


Nel senso che è facile da costruire o da trovare nel libro?

lino
Qualcuno sa dirmi come implementare la funzione capienza?

Col. Kurtz
Originally posted by Paolopaoli
[B]

Nel senso che è facile da costruire o da trovare nel libro?

Nel libro, che io sappia, non c'è.
A occhio e croce mi vengono in mente almeno due modi per risolvere il problema.
Tre se ce ne aggiungiamo uno trigonometrico, ma non penso sia consigliabile usare le funzioni definite in math.h. ;)
Toh, facciamo quattro con la storia del parallelogramma e le aree.

York
Originally posted by Col. Kurtz
Nel libro, che io sappia, non c'è.
A occhio e croce mi vengono in mente almeno due modi per risolvere il problema.
Tre se ce ne aggiungiamo uno trigonometrico, ma non penso sia consigliabile usare le funzioni definite in math.h. ;)
Toh, facciamo quattro con la storia del parallelogramma e le aree.


Illuminaci un pò più dettagliatamente :D

pusio
non riesco a trovare l'algoritmo per vedere se un punto è fuori o dentro il recinto

superfabius
per vedere se un punto è dentro o fuori si deve sfruttare il determinante della matrice.....
il punto che mi viene dato è il punto a,a nel suo esempio mentre un lato scelto ad hoc è il punto 0,0 (a+b ,a+b).
Ora devo calcolare il punto b,b e se il determinante è negativo vuol dire che è orario ovvero è dentro

solo che bisogna scegliere il lato giusto della figura e quello mi sfugge :D

mazob
Domanda:
come si calcola il gdc fra i punti p1 e p2 punti, per sapere il numero di punti presenti sul segmento?
grazie

Piccolomomo
Originally posted by mazob
Domanda:
come si calcola il gdc fra i punti p1 e p2 punti, per sapere il numero di punti presenti sul segmento?
grazie


Guarda per esempio qui
ma devi correggerlo un pochino per calcolare il numero di punti.

karlost
Sono riuscito a fare tutta la parte che riguarda il poligono(recinto) ma sono in serissimi problemi sul come si faccia ad implementare il grafo per la relazione minore, qualcuno gentilmente avrebbe qualche suggerimento oppure potrebbe indirizzarmi su qualche sito web che possa illuminarmi a fare questo grafo.
Grazie 10000000...!

Jericho
Liste di adiacenza... come hai risolto la capienza? :? Io ho usato un metodo alla brutta maniera almeno per pararmi il c... ma è veramente brutto!

mazob
Capienza :
a me la prima capienza di esempio viene corretta 133, ma le altre 2, non vengono una mi da 170 e l'altra 343 anzichè 173 e 341, qualcuno ha avuto lo stesso problema?
Saluti

karlost
http://astronomy.swin.edu.au/~pbour...try/insidepoly/

Jacoposki
c'è qualche modo per stabilire l'aciclicità (o meno) di un grafo a partire dalla rappresentazione con liste di adiacenza o con matrice? O si deve per forza implementarsi una qualche ricerca in profondità?

Jacoposki
boh... più o meno ho finito... che voi sappiate si incazza se gli porto le copie cartacee martedì? non per altro, è che ho ottenuto la prima versione più o meno funzionante un'ora fa...

mazob
C'è qualche anima pia che ha consegnato il progetto con esito posito che vuole postarlo nell'area filez???

Jacoposki
domanda idiota: come faccio a fare il file per fargli leggere i comandi? visto che sono scemo e non c'avevo voglia, finora glieli davo tutti a mano ogni volta che testavo (tanto crashava decisamente presto :D ), ma adesso che arriva quasi in fondo ogni volta è un dramma... ho provato a fare un .bat con i comandi, ma cerca di eseguirli come comandi dos... aiuto grazie :)

Col. Kurtz
Originally posted by mazob
C'è qualche anima pia che ha consegnato il progetto con esito posito che vuole postarlo nell'area filez???

Scaramanzia... lo faccio dopo l'orale.

Col. Kurtz
Originally posted by Jacoposki
domanda idiota: come faccio a fare il file per fargli leggere i comandi? visto che sono scemo e non c'avevo voglia, finora glieli davo tutti a mano ogni volta che testavo (tanto crashava decisamente presto :D ), ma adesso che arriva quasi in fondo ogni volta è un dramma... ho provato a fare un .bat con i comandi, ma cerca di eseguirli come comandi dos... aiuto grazie :)


Metti tutti i comandi su un file:

code:
c < cicuta prezzemolo < prezzemolo cannabis r 0 0 0 4 4 4 4 0 i 2 2 cannabis ... f


nella stessa directory del programma compilato. Facciamo finta che tu abbia chiamato il file in.txt
Poi da shell di dos se sei sotto windows (penso di si, vista la domanda):

-vai nella directory del progetto compilato e scrivi
code:
recinti < in.txt


dove al posto di recinti c'è il nome dell'eseguibile.

Semplice.

Jacoposki
ah non deve essere un bat... ecco dove sbagliavo ^^

grazie :)

Jacoposki
mmm non va... non fa un tubo e dopo un po' da' errore di memoria virtuale in esaurimento. Il bello è che mettendo i comandi a mano gira senza problemi (sbagliando, ma vabbè) e non va in loop da nessuna parte... sigh.

mazob
Ciao
x caso c'è qualche anima "pia" che ha superato l'esame e vuole postare il suo progetto?
in modo capire perchè il mio non funzionasse.
Grazie
Saluti

superfabius
Nella lista di iscrizioni agli esami sul sifa non mi compare ancora l'appello di algoritmi del 1° giugno. Qualcuno si è già iscritto o non sono ancora venute fuori le iscrizioni?

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