V I S U A L I Z Z A D I S C U S S I O N E |
Arden_Oldman |
Inserito il - 20/01/2010 : 16:23:23 Salve a tutti, vorrei porvi una questione: non mi è chiaro quando, nelle specifiche algebriche, bisogna usare la composizione come nel seguente caso: per esempio nelle specifche algebriche del dizionario applicando l'osservazione "delete(d',k')" al costruttore di d' "insert(d,k,i)" dove d è il dizionario, k la chiave, i l'elemento, il risultato sarà: "if k=k' then d else insert(delete(d,k'),k,i)". nel caso di k diverso da k' (ramo else) abbiamo "invertito" le operazioni applicando la "insert" sulla "delete". Quando occorre fare ciò? |
18 U L T I M E R I S P O S T E (in alto le più recenti) |
savy |
Inserito il - 11/02/2010 : 11:30:22 Citazione: Messaggio inserito da savy
secondo voi sono corrette le seguenti specifiche algebriche del dato astratto Albero?
firstChild(v,t') apllicato al costruttore insfirtssubtree(u,t,s)
if v=u then false else if isin(v,t) then if leaf(v,t) then error else firstchild(v,t) else if isin(v,s) then if leaf(v,s) then error else firstchild(v,s)
finefratelli(v,t') applicato al costruttore insfirtssubtree(u,t,s)
if v = root(t) then true else if isin(v,t) then finefratelli(v,t) else if isin(v,s) then finefratelli(v,s)
succFratello(v,t') applicato al costruttore insfirtssubtree(u,t,s)
if v = root(t) then error else if isin(v,t) AND not finefratelli(v,t) then succFratello(v,t) else if isin(v,s) AND not finefratelli(v,s) then succFratello(v,s)
cancSottoalbero(v,t') applicato al costruttore insfirtssubtree(u,t,s)
if v=u AND v=root(t) then newTree() else if isin(v,t) then cancSottoalbero(v,t) else if isin(v,s) then cancSottoalbero(v,s)
insSottoalbero(v,t',t'') applicato al costruttore insfirtssubtree(u,t,s) come l'avete svolto???
nessuno mi può aiutare? |
Arden_Oldman |
Inserito il - 10/02/2010 : 11:56:40 Citazione: Messaggio inserito da savy
secondo voi sono corrette le seguenti specifiche algebriche del dato astratto Albero?
firstChild(v,t') apllicato al costruttore insfirtssubtree(u,t,s)
if v=u then false else if isin(v,t) then if leaf(v,t) then error else firstchild(v,t) else if isin(v,s) then if leaf(v,s) then error else firstchild(v,s)
finefratelli(v,t') applicato al costruttore insfirtssubtree(u,t,s)
if v = root(t) then true else if isin(v,t) then finefratelli(v,t) else if isin(v,s) then finefratelli(v,s)
succFratello(v,t') applicato al costruttore insfirtssubtree(u,t,s)
if v = root(t) then error else if isin(v,t) AND not finefratelli(v,t) then succFratello(v,t) else if isin(v,s) AND not finefratelli(v,s) then succFratello(v,s)
cancSottoalbero(v,t') applicato al costruttore insfirtssubtree(u,t,s)
if v=u AND v=root(t) then newTree() else if isin(v,t) then cancSottoalbero(v,t) else if isin(v,s) then cancSottoalbero(v,s)
insSottoalbero(v,t',t'') applicato al costruttore insfirtssubtree(u,t,s) come l'avete svolto???
anche io vorrei saperlo, c'è qualcuno che le ha fatte? |
savy |
Inserito il - 09/02/2010 : 12:35:38 secondo voi sono corrette le seguenti specifiche algebriche del dato astratto Albero?
firstChild(v,t') apllicato al costruttore insfirtssubtree(u,t,s)
if v=u then false else if isin(v,t) then if leaf(v,t) then error else firstchild(v,t) else if isin(v,s) then if leaf(v,s) then error else firstchild(v,s)
finefratelli(v,t') applicato al costruttore insfirtssubtree(u,t,s)
if v = root(t) then true else if isin(v,t) then finefratelli(v,t) else if isin(v,s) then finefratelli(v,s)
succFratello(v,t') applicato al costruttore insfirtssubtree(u,t,s)
if v = root(t) then error else if isin(v,t) AND not finefratelli(v,t) then succFratello(v,t) else if isin(v,s) AND not finefratelli(v,s) then succFratello(v,s)
cancSottoalbero(v,t') applicato al costruttore insfirtssubtree(u,t,s)
if v=u AND v=root(t) then newTree() else if isin(v,t) then cancSottoalbero(v,t) else if isin(v,s) then cancSottoalbero(v,s)
insSottoalbero(v,t',t'') applicato al costruttore insfirtssubtree(u,t,s) come l'avete svolto??? |
@llegr@ |
Inserito il - 31/01/2010 : 11:24:17 gli operatori logici si possono usare... in quanto alla correttezza degli operatori ...be' si dovrebbe andare il mercol nello studio del prof |
cicci89 |
Inserito il - 29/01/2010 : 18:15:18 ti scrivo come ho fatto io alcuni operatori :)
valore(aggSerie(i,s), s', int) = if (s = s') then error else valore(i, s', int)
valore(aggValore(i,s,r), s', int) = if ((s = s') and lunghSerie(aggValore(i,s,r),s') = int) then r else valore(i,s',int)
lunghSerie(aggSerie(i,s), s') = if (s = s') then 0 else lunghSerie(i,s')
lungSerie(aggValore(i,s,r), s') = if (s = s') then 1+lunghSerie(i,s',r) else lunghSerie(i,s')
ps: si possono usare gli operatori logici and, or e not negli if? |
cicci89 |
Inserito il - 29/01/2010 : 17:06:52 appunto, io non vedo nelle specifiche algebriche una ricerca di un massimo o un test per vedere se la serie è crescente, ci sono solo delle chiamate ricorsive... mi spiego meglio:
questo è quello che tu hai scritto su valore:
Valore(aggiungiValore(I,S,a), S',intpos)= if S'=S then valore(aggiungiValore(I,S,a), S, intpos) else valore (I,S',intpos)
Valore(aggiungiSerie(I,S), S',intpos)= if S'=S then error else valore(I,S',intpos)
ora se chiami valore(aggiungiValore ....) avrai che verrà chiamato di nuovo valore nel ramo then, e lo stesso nel ramo else (se richiami valore evidentemente c'è ricorsività)
mettiamo che si arriva nella situazione che viene richiamato valore(aggiungiSerie ...)... in questo caso o si richiama ancora valore o si va in errore... quindi alla fine valore darà sempre error, perchè è l'unico passo base...
lo stesso vale per massimo e crescente...
|
@llegr@ |
Inserito il - 29/01/2010 : 09:26:41 Citazione: Messaggio inserito da cicci89
visto che sono ricorsivi, dovrebbero avere dei passi base se no non si fermano mai...
ma non sono convinta di quanto dici, sopratt non vedo la ricorsivita'. valore e' una semplice lettura (come leggielem) anche se di un elem di tipo reale e non int massimo ricerca il massimo tra elem gia' presenti in Si idem per crescente che deve valutare se tutti gli elem a1<=a2<=a3<=...<=an
infatti le loro specifiche assiomat semantiche sono: valore (I,S,j)=a pre: I= S1,...Sm m>=1 S=Si=a1...aj...an n>=1 e 1<=i<=m post: a=aj massimo(I,S)=a pre: I= S1,...Sm m>=1 S=Si=a1...an n>=1 e 1<=i<=m post: a=aj aj>=ak con j 1<=j<=n per ogni k dove 1<=k<=n crescente(I,S)=b pre: I= S1,...Sm m>=1 S=Si=a1...an n>=1 e 1<=i<=m post: b=vero se a1<=a2<=a3<=...<=an; b=falso altrimenti.
|
cicci89 |
Inserito il - 28/01/2010 : 11:44:06 visto che sono ricorsivi, dovrebbero avere dei passi base se no non si fermano mai... |
@llegr@ |
Inserito il - 28/01/2010 : 10:22:43 naturalm gli ultimi 3 (valore massimo e crescente) erano di aggiungiSerie non aggiungiValore...maledetto copia-incolla |
@llegr@ |
Inserito il - 28/01/2010 : 10:20:41 Citazione: Messaggio inserito da cicci89
secondo me non va massimo, crescente e valore non hanno dei passi base, daranno sempre error.... :)
cosa intendi per passi base?? |
cicci89 |
Inserito il - 27/01/2010 : 23:45:56 secondo me non va massimo, crescente e valore non hanno dei passi base, daranno sempre error.... :) |
@llegr@ |
Inserito il - 27/01/2010 : 19:43:37 Citazione: Messaggio inserito da cicci89
per le specifiche algebriche come avete fatto?
Innanzitutto, come costruttori di I' ci sono: creaIstogramma(), aggiungiValore (I,S,a) e aggiungiSerie (I,S). come osservazioni: lunghSerie (I',S'), valore(I',S'),massimo(I',S'), crescente(I',S') Nella colonna di creaIstogramma sono tutti error quindi corrispondono le specifiche di restrizione Le altre sono:
lunghSerie(aggiungiValore(I,S,a), S')= if S'=S then lunghSerie(aggiungiValore(I,S,a), S) else lunghSerie(I,S')
Valore(aggiungiValore(I,S,a), S',intpos)= if S'=S then valore(aggiungiValore(I,S,a), S, intpos) else valore (I,S',intpos)
massimo(aggiungiValore(I,S,a), S')= if S'=S then massimo(aggiungiValore(I,S,a), S) else massimo(I,S')
crescente(aggiungiValore(I,S,a), S')= if S'=S then crescente(aggiungiValore(I,S,a), S) else crescxente(I,S')
lunghSerie(aggiungiSerie(I,S), S')= if S'=S then 0 else lunghSerie(I,S')
Valore(aggiungiValore(I,S,a), S',intpos)= if S'=S then error else valore(I,S',intpos)
massimo(aggiungiValore(I,S,a), S')= if S'=S then error else massimo(I,S')
crescente(aggiungiValore(I,S,a), S')= if S'=S then errori else crescente(I,S')
Naturalmente si tratta di esercitazione personale e per tale non esente da eventuali errori
|
cicci89 |
Inserito il - 27/01/2010 : 16:27:10 per le specifiche algebriche come avete fatto? |
cassiosteel |
Inserito il - 22/01/2010 : 16:27:35 Io l'ho rappresentato l'istogramma come una sequenza di serie <S1,S2,...,Sn> e le serie come una serie di valori reali <r1,r2,...,rn>, credo che vadano bene entrambe le risoluzioni |
savy |
Inserito il - 21/01/2010 : 18:37:02 http://www.di.uniba.it/~malerba/courses/asd/exams/Scritto20090611.pdf come avete sviluppato la specifica semantica assiomatica? io ho rappresentato l'istogramma come un insieme di serie, ed ogni serie come una sequenza di reali. ad esempio l'operatore AggiungiValore(ist,serie,reale)=ist' l'ho svolto così: Pre: ist != insiemeVuoto, serie=<r1,r2,..,ri> con i>=0 Post: serie' = <r1,r2,...,ri,r> ist'=ist - {serie}U{serie'} |
supernova87 |
Inserito il - 21/01/2010 : 18:28:33 sisi. |
Arden_Oldman |
Inserito il - 20/01/2010 : 19:27:41 Grazie per la risposta. Quindi in questo caso con "elementi diversi" ti riferisci a k diverso da k' (ramo else)? |
supernova87 |
Inserito il - 20/01/2010 : 18:58:51 bisogna fare ciò quando l'inserimento e l'eliminazione sono due operazioni applicate rispettivamente a due elementi diversi. in questo caso l'ordine non è rilevante |
|
|