Ejemplo n.º 1
0
        public static void RunTest()
        {
            DirectoryInfo detDir = new DirectoryInfo(pathDet);

            FileInfo[]    detFiles     = detDir.GetFiles("*");
            int           numFiles     = detFiles.Length;
            HashSet <int> detFileNames = new HashSet <int>();

            foreach (var f in detFiles)
            {
                detFileNames.Add(int.Parse(f.Name));
            }

            DirectoryInfo compDir = new DirectoryInfo(pathComp);

            FileInfo[]    compFiles     = compDir.GetFiles("*");
            HashSet <int> compFileNames = new HashSet <int>();

            foreach (var f in compFiles)
            {
                compFileNames.Add(int.Parse(f.Name));
            }

            if (startFile == 1)
            {
                using (System.IO.StreamWriter outfile = new System.IO.StreamWriter(Program.path + Program.timbukFile))
                {
                    outfile.WriteLine("ID, StateCount, RuleCount, CompleteRuleCount, MinStateCount, MinRuleCount, Algo1, Algo2, SFABased");
                }
            }

            for (int fileNum = startFile; fileNum <= maxFile; fileNum++)
            {
                Console.WriteLine(fileNum);
                TreeTransducer detAut = null;
                if (detFileNames.Contains(fileNum))
                {
                    detAut = VataParsing.ParseVataFile(pathDet + fileNum);
                }
                TreeTransducer compAut = null;
                if (compFileNames.Contains(fileNum))
                {
                    compAut = VataParsing.ParseVataFile(pathComp + fileNum);
                }

                Util.RunAllAlgorithms(detAut, compAut, fileNum.ToString(), Program.timbukFile);
            }
        }
Ejemplo n.º 2
0
        public static void SanityCheck()
        {
            DirectoryInfo detDir = new DirectoryInfo(pathDet);

            FileInfo[]    detFiles     = detDir.GetFiles("*");
            int           numFiles     = detFiles.Length;
            HashSet <int> detFileNames = new HashSet <int>();

            foreach (var f in detFiles)
            {
                detFileNames.Add(int.Parse(f.Name));
            }

            DirectoryInfo compDir = new DirectoryInfo(pathComp);

            FileInfo[]    compFiles     = compDir.GetFiles("*");
            HashSet <int> compFileNames = new HashSet <int>();

            foreach (var f in compFiles)
            {
                compFileNames.Add(int.Parse(f.Name));
            }


            for (int fileNum = startFile; fileNum <= numFiles; fileNum++)
            {
                Console.WriteLine(fileNum);
                TreeTransducer detAut = null;
                if (detFileNames.Contains(fileNum))
                {
                    detAut = VataParsing.ParseVataFile(pathDet + fileNum);
                }

                var min1 = detAut.Minimize();
                var min2 = detAut.MinimizeViaSFA();

                Console.WriteLine("StatesMin:");
                Console.WriteLine(detAut.StateCount + " " + min1.StateCount + " " + min2.StateCount);
                Console.WriteLine("TransMin:");
                Console.WriteLine(detAut.RuleCount + " " + min1.RuleCount + " " + min2.RuleCount);

                //if (!min1.Complement().Intersect(min2).IsEmpty)
                //    Console.WriteLine("Should be empty!");
                //if (!min2.Complement().Intersect(min1).IsEmpty)
                //    Console.WriteLine("Should be empty!");
            }
        }
Ejemplo n.º 3
0
        public static void GenerateTests()
        {
            HashSet <Tuple <int, int> > alreadyFound = new HashSet <Tuple <int, int> >();

            DirectoryInfo detDir   = new DirectoryInfo(pathDet);
            int           fileName = detDir.GetFiles().Length + 1;

            foreach (var suff in suffs)
            {
                DirectoryInfo d     = new DirectoryInfo(path + suff + @"\");
                FileInfo[]    Files = d.GetFiles("*");

                foreach (FileInfo file in Files)
                {
                    Console.WriteLine(suff + @"\" + file.Name);
                    var aut = VataParsing.ParseVataFile(path + suff + @"\" + file.Name);
                    if (aut != null)
                    {
                        Console.WriteLine(aut.StateCount + " " + aut.RuleCount);
                        if (aut.StateCount < 301 || aut.RuleCount < 3407)
                        {
                            var stTr = new Tuple <int, int>(aut.StateCount, aut.RuleCount);
                            if (!alreadyFound.Contains(stTr))
                            {
                                alreadyFound.Add(stTr);

                                var tokenSource         = new CancellationTokenSource();
                                CancellationToken token = tokenSource.Token;

                                TreeTransducer detAut = null;

                                var task = Task.Factory.StartNew(() =>
                                {
                                    aut.IsDeterminstic();
                                    detAut = aut.DeterminizeWithoutCompletion().RemoveUselessStates();
                                }, token);

                                if (!task.Wait(Program.timeOut, token))
                                {
                                    Console.WriteLine("The determinization Task timed out!");
                                }
                                else
                                {
                                    var outstring = VataParsing.GetVataFormatString(detAut);
                                    VataParsing.ParseVataFormat(outstring);
                                    using (System.IO.StreamWriter outfile = new System.IO.StreamWriter(pathDet + fileName))
                                    {
                                        outfile.Write(outstring);
                                        fileName++;
                                    }

                                    if (detAut.InputAlphabet.MaxRank < 6 && detAut.RuleCount < 4000)
                                    {
                                        TreeTransducer    completeAut = null;
                                        CancellationToken token2      = tokenSource.Token;
                                        var task2 = Task.Factory.StartNew(() =>
                                        {
                                            completeAut = aut.Determinize();
                                        }, token2);
                                        if (!task2.Wait(Program.timeOut, token2))
                                        {
                                            Console.WriteLine("The completion Task timed out!");
                                        }
                                        else
                                        {
                                            outstring = VataParsing.GetVataFormatString(completeAut);
                                            VataParsing.ParseVataFormat(outstring);
                                            using (System.IO.StreamWriter outfile = new System.IO.StreamWriter(pathComp + (fileName - 1)))
                                            {
                                                outfile.Write(outstring);
                                            }
                                        }
                                    }
                                    else
                                    {
                                        Console.WriteLine(detAut.RuleCount + " rules, skip completion");
                                    }
                                }
                            }
                        }
                    }
                }
            }
        }
Ejemplo n.º 4
0
        public static string FromTimbukToDTAMIN(string pathFN)
        {
            var sta = VataParsing.ParseVataFile(pathFN);

            return(GetDTAMINFormatString(sta));
        }