Sab 24 Agosto, 15:46:27 - 2019

Autore Topic: Homework3  (Letto 8229 volte)

0 Utenti e 1 Visitatore stanno visualizzando questo topic.

Offline vinkia

  • Guru
  • Professore Associato
  • *****
  • Post: 696
  • FeedBack: +70/-30
  • http://teamend.altervista.org/chi-siamo
    • Mostra profilo
    • TeamEnd applicazioni per Android e non solo...
Re: Homework3
« Risposta #30 il: Dom 12 Dicembre, 15:45:37 - 2010 »
secondo voi come è possibile che il metodo java

g.getProduzioni().containsAll(produzioni)

restituisca false, anche se tutti gli elementi di (produzioni) sono contenuti in(g.getProduzioni)????

Sto diventando matto ho messo delle stampe delle due liste e sono ok!!!ma il risultato di containsAll è errato!!!

Cerco di farvi capire meglio, la riga:

System.out.println("Io devo essere true, poichè "+g.getProduzioni()+" contiene tutti"+produzioni+"pero io sono:"+g.getProduzioni().containsAll(produzioni));

stampa le due liste, ma poi mi dice false, anche se la grammatica contiene gli elementi della lista di produzione!


mi sono risposto da solo, il metodo contains va ad usare equals, quindi non controlla se sono uguali, ma controlla gli indirizzi.

Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori. Cerca solo di essere migliore di te stesso.

http://teamend.altervista.org/chi-siamo

Offline vinkia

  • Guru
  • Professore Associato
  • *****
  • Post: 696
  • FeedBack: +70/-30
  • http://teamend.altervista.org/chi-siamo
    • Mostra profilo
    • TeamEnd applicazioni per Android e non solo...
Re: Homework3
« Risposta #31 il: Dom 12 Dicembre, 13:46:45 - 2010 »
...e tre!
Sul sito http://www.dis.uniroma1.it/~fiii/laboratorio.html il terzo homework.
Buon lavoro a tutti

Professore, ma non sarebbe possibile avere un esempio di main sul metodo verifica???
E' una domanda un po sfacciata, ma purtroppo noto che molti di noi hanno problemi col ricercare tutte le possibili casistiche che dobbiamo affrontare... :-\
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori. Cerca solo di essere migliore di te stesso.

http://teamend.altervista.org/chi-siamo

Offline lelinolino

  • Guru
  • Professore Ordinario
  • *****
  • Post: 766
  • FeedBack: +81/-28
    • Mostra profilo
    • LeleWorlds
Re: Homework3
« Risposta #32 il: Dom 12 Dicembre, 21:40:28 - 2010 »
Professore, ma non sarebbe possibile avere un esempio di main sul metodo verifica???
E' una domanda un po sfacciata, ma purtroppo noto che molti di noi hanno problemi col ricercare tutte le possibili casistiche che dobbiamo affrontare... :-\

parole sante!!!
magari se ci da un qualcosa dove testare intanto i nostri programmi come fece per il primo homework!!
gliene saremmo molto grati!
Thanks in anticipo! :)

Offline Stefano Millozzi

  • Prof
  • Studente di Dottorato
  • ******
  • Post: 242
  • FeedBack: +29/-51
    • Mostra profilo
Re: Homework3
« Risposta #33 il: Lun 13 Dicembre, 09:26:14 - 2010 »
scusate un attimo, vorrei cmq riallacciarmi alla domanda di lelinolino: il metodo verifcaDerivazione prende come parametro una grammatica, una lista di produzioni e una stringa.... ma se l'obiettivo e` verificare che la sequenza di produzioni generi la stringa, la grammatica non serve a nulla! quindi dobbiamo verificare anche che le produzioni appartengano alla grammatica? o forse solo che il primo non terminale di sinistra sia l'assioma di quella grammatica?
Si puo' assumere che le produzioni appartengono alla grammatica.
La verifica che deve essere fatta riguarda solo se la sequenza di produzioni fornite applicate una dopo l'altra, generano o meno la stringa passata.

Offline Stefano Millozzi

  • Prof
  • Studente di Dottorato
  • ******
  • Post: 242
  • FeedBack: +29/-51
    • Mostra profilo
Re: Homework3
« Risposta #34 il: Lun 13 Dicembre, 09:29:40 - 2010 »

Codice: [Seleziona]
public List<Produzione> riconosceInput(Grammatica g, String input)
c'è scritto "Controlla se la stringa input appartiene al linguaggio generato dalla grammatica g. In caso positivo restituisce la sequenza di produzioni applicate (dall'assioma alla produzione terminale), mentre se la stringa non e' riconosciuta dalla grammatica ritorna null." Quello che mi chiedo, e che le chiedo, è se dobbiamo inserire anche l'assioma nella lista delle produzioni, perché in caso affermativo come faccio a inserire l'assioma nella lista, visto che l'assioma è una stringa e che la lista delle produzioni può contenere, appunto, solo oggetti di tipo "Produzione"?

Occorre restituire tutte le produzioni che devono essere applicate x generare la stringa specificata.
Ovviamente la prima produzione deve essere quella contenente l'assioma (x definizione) ma non l'assioma solo!

Offline Stefano Millozzi

  • Prof
  • Studente di Dottorato
  • ******
  • Post: 242
  • FeedBack: +29/-51
    • Mostra profilo
Re: Homework3
« Risposta #35 il: Lun 13 Dicembre, 09:33:01 - 2010 »
secondo voi come è possibile che il metodo java

g.getProduzioni().containsAll(produzioni)

restituisca false, anche se tutti gli elementi di (produzioni) sono contenuti in(g.getProduzioni)????

Sto diventando matto ho messo delle stampe delle due liste e sono ok!!!ma il risultato di containsAll è errato!!!

Cerco di farvi capire meglio, la riga:

System.out.println("Io devo essere true, poichè "+g.getProduzioni()+" contiene tutti"+produzioni+"pero io sono:"+g.getProduzioni().containsAll(produzioni));

stampa le due liste, ma poi mi dice false, anche se la grammatica contiene gli elementi della lista di produzione!



Nella classe Produzioni non e' stato ridefinito il metodo equals e hashcode quindi  vengono utilizzati quelli di default.
Per questo motivo due produzioni sono uguali (equas()==true) se sono lo stesso oggetto (operatore ==).
Quindi se restiuisce false vuol dire che produzioni e' una lista di produzioni non identica come oggetti ma magari solo nei valori...

Offline Stefano Millozzi

  • Prof
  • Studente di Dottorato
  • ******
  • Post: 242
  • FeedBack: +29/-51
    • Mostra profilo
Re: Homework3
« Risposta #36 il: Lun 13 Dicembre, 09:34:28 - 2010 »
Professore, ma non sarebbe possibile avere un esempio di main sul metodo verifica???
E' una domanda un po sfacciata, ma purtroppo noto che molti di noi hanno problemi col ricercare tutte le possibili casistiche che dobbiamo affrontare... :-\

Nessun esempio questa volta. Tutti questi argomenti sono stati affrontati nella parte di Modelli e sicuramente avete incontrato molti esempi su cui lavorare. In questo caso l'homework nn richiede solo abilita' di programmazione ma anche conoscenze teoriche!

Offline Cacciatore88

  • Studente di Dottorato
  • ***
  • Post: 149
  • FeedBack: +9/-6
    • Mostra profilo
Re: Homework3
« Risposta #37 il: Lun 13 Dicembre, 13:01:39 - 2010 »
Avrei una domanda: se una produzione ha come simbolo terminale un carattere vuoto, e quindi espande solo un simbolo non terminale, che valore va assegnato al simbolo terminale? La carattere vuoto?

Offline Stefano Millozzi

  • Prof
  • Studente di Dottorato
  • ******
  • Post: 242
  • FeedBack: +29/-51
    • Mostra profilo
Re: Homework3
« Risposta #38 il: Lun 13 Dicembre, 13:17:42 - 2010 »
Non possono esistere caratteri vuoti!
Al tipo char non puo' essere assegnato null.

Offline spin

  • Ricercatore
  • ****
  • Post: 274
  • FeedBack: +3/-6
    • Mostra profilo
Re: Homework3
« Risposta #39 il: Lun 13 Dicembre, 13:23:17 - 2010 »

è tutto abbastanza chiaro a parte credo la presenza del parametro grammatica g nel metodo verifica. In effetti sembra superfluo, in quanto la lista delle produzioni è gia sufficiente per riconoscere la stringa. Dobbiamo verificare anche che tutte le produzioni della lista appartengono alla grammatica o che altro? Nella spiegazione del metodo nn è chiaro

Offline ikki

  • Studente
  • *
  • Post: 5
  • FeedBack: +0/-1
    • Mostra profilo
Re: Homework3
« Risposta #40 il: Lun 13 Dicembre, 13:32:05 - 2010 »
Domanda per il tutor.

C'è qualche vincolo sull'efficienza tipo quello imposto sull'Homework1?

Offline Cacciatore88

  • Studente di Dottorato
  • ***
  • Post: 149
  • FeedBack: +9/-6
    • Mostra profilo
Re: Homework3
« Risposta #41 il: Lun 13 Dicembre, 13:35:08 - 2010 »
Non possono esistere caratteri vuoti!
Al tipo char non puo' essere assegnato null.

Scusate, non avevo letto che erano ammesse solo produzioni del tipo A->aB ed A->a e pensavo che potevano esserci produzioni del tipo A->B. Scusate per la svista.





Offline Stefano Millozzi

  • Prof
  • Studente di Dottorato
  • ******
  • Post: 242
  • FeedBack: +29/-51
    • Mostra profilo
Re: Homework3
« Risposta #42 il: Lun 13 Dicembre, 15:56:15 - 2010 »
Domanda per il tutor.

C'è qualche vincolo sull'efficienza tipo quello imposto sull'Homework1?

l'implementazione deve essere ragionevole.
Per il metodo riconosceInput(...) mi aspetto che al massimo che si debbano scorrere tutte le produzioni della grammatica per ogni simbolo dell'input mentre per verificaDerivazione() dovrebbe essere sufficiente scorrere una sola volta le produzioni fornite in input. A questo ovviamente si aggiungono costi costanti per controlli vari.

In ogni caso, su stringhe fino a qualche centinaio di caratteri mi aspetto tempi di risposta dell'ordine di qualche millisecondo.
Il timeout complessivo sara' comunque sempre fissato a 5000 ms.

Offline vinkia

  • Guru
  • Professore Associato
  • *****
  • Post: 696
  • FeedBack: +70/-30
  • http://teamend.altervista.org/chi-siamo
    • Mostra profilo
    • TeamEnd applicazioni per Android e non solo...
Re: Homework3
« Risposta #43 il: Lun 13 Dicembre, 18:08:09 - 2010 »
Avrei una domanda: se una produzione ha come simbolo terminale un carattere vuoto, e quindi espande solo un simbolo non terminale, che valore va assegnato al simbolo terminale? La carattere vuoto?

Non succede perchè le grammatiche non contengono epsilon produzioni, quindi il simbolo terminale non è mai vuoto! ;)
Non preoccuparti solo di essere migliore dei tuoi contemporanei o dei tuoi predecessori. Cerca solo di essere migliore di te stesso.

http://teamend.altervista.org/chi-siamo

Offline lelinolino

  • Guru
  • Professore Ordinario
  • *****
  • Post: 766
  • FeedBack: +81/-28
    • Mostra profilo
    • LeleWorlds
Re: Homework3
« Risposta #44 il: Lun 13 Dicembre, 18:12:55 - 2010 »
Citazione
Ovviamente la prima produzione deve essere quella contenente l'assioma (x definizione) ma non l'assioma solo!

prof, volevo chiederle cosa intendeva dire con "l'assioma solo!"

Grazie!