User Tools

Site Tools


how_to_use

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
how_to_use [2018/01/24 13:11] adminhow_to_use [2018/03/29 16:54] (current) liyong
Line 8: Line 8:
  
  
-Below we demonstrate how to use our learner to learn the ω-regular language L=a<sup>ω</sup>b<sup>ω</sup>. Please make sure you have all dependent libraries when you use ROLL.+Below we demonstrate how to use our learner to learn the ω-regular language L=a<sup>ω</sup>ab<sup>ω</sup>. Please make sure you have all dependent libraries when you use ROLL.
      
 === Prepare a BA file === === Prepare a BA file ===
Line 16: Line 16:
 a,[0]->[1] a,[0]->[1]
 a,[1]->[1] a,[1]->[1]
-b,[0]->[2]+a,[0]->[2]
 b,[2]->[2] b,[2]->[2]
 [1] [1]
 [2] [2]
 </code> </code>
 +In ROLL, one can create the above Büchi automaton as follows:
 +<code java>
 +// first create an alphabet
 +Alphabet alphabet = new Alphabet();
 +alphabet.addLetter('a');
 +alphabet.addLetter('b');
 +// create an NBA with alphabet
 +NBA target = new NBA(alphabet);
 +target.createState();
 +target.createState();
 +target.createState();
 +        
 +// add transitions for NBA recognizing a^w + ab^w
 +int fst = 0, snd = 1, thd = 2;
 +target.getState(fst).addTransition(alphabet.indexOf('a'), snd);
 +target.getState(fst).addTransition(alphabet.indexOf('a'), thd);
 +target.getState(snd).addTransition(alphabet.indexOf('a'), snd);
 +target.getState(thd).addTransition(alphabet.indexOf('b'), thd);
 +target.setInitial(fst);
 +target.setFinal(snd);
 +target.setFinal(thd);
  
 +</code>
 === Prepare a HANOI file === === Prepare a HANOI file ===
 The input automaton should have only one initial state. The input automaton should have only one initial state.
Line 60: Line 82:
 === Call a learner and specify the BA construction === === Call a learner and specify the BA construction ===
 <code java> <code java>
-// specify FDFA learner, here we use tree-based periodic FDFA learner+// use the under-approximation method to construct a BA from an FDFA 
 +options.approximation = Options.Approximation.UNDER; 
 +// set NBA learner, here we use tree-based syntactic FDFA learner 
 +options.algorithm = Options.Algorithm.SYNTACTIC; 
 +options.structure = Options.Structure.TREE;
 LearnerBase<NBA> learner = null; LearnerBase<NBA> learner = null;
 if(options.algorithm == Options.Algorithm.NBA_LDOLLAR) { if(options.algorithm == Options.Algorithm.NBA_LDOLLAR) {
-       learner = new LearnerNBALDollar(options, nba.getAlphabet(), teacher);+       // input teacher as a membership oracle for the learner 
 +       learner = new LearnerNBALDollar(options, target.getAlphabet(), teacher);
 }else if(options.algorithm == Options.Algorithm.PERIODIC }else if(options.algorithm == Options.Algorithm.PERIODIC
        || options.algorithm == Options.Algorithm.SYNTACTIC        || options.algorithm == Options.Algorithm.SYNTACTIC
        || options.algorithm == Options.Algorithm.RECURRENT) {        || options.algorithm == Options.Algorithm.RECURRENT) {
-       learner = new LearnerNBALOmega(options, nba.getAlphabet(), teacher);+       learner = new LearnerNBALOmega(options, target.getAlphabet(), teacher);
 } else { } else {
        throw new UnsupportedOperationException("Unsupported BA Learner");        throw new UnsupportedOperationException("Unsupported BA Learner");
Line 110: Line 137:
  
 The complete code is the class roll.main.Executor. The complete code is the class roll.main.Executor.
 +
 ===== Acknowledgement ===== ===== Acknowledgement =====
 We use [[http://www.ej-technologies.com/products/jprofiler/overview.html We use [[http://www.ej-technologies.com/products/jprofiler/overview.html
how_to_use.1516770719.txt.gz · Last modified: 2018/01/24 13:11 by admin