Archived
1
Fork 0

Worked on sep seqs.

This commit is contained in:
Joshua Moerman 2018-09-19 16:56:48 +02:00
parent 56f14e8ce2
commit 99f78937a2
5 changed files with 221 additions and 1 deletions

137
content/esm.table Normal file
View file

@ -0,0 +1,137 @@
states Hopcroft Moore
546 0.05548176 0.05162218
547 0.065968448 0.374567635
571 0.151784094 2.562025297
610 0.161709531 2.923059564
612 0.162847423 2.949833339
616 0.16393522 2.979295117
634 0.169730862 3.136451995
644 0.171697908 3.205603966
646 0.173519053 3.247711454
664 0.174829094 3.303879469
674 0.176219619 3.404398614
704 0.18026932 3.772591464
723 0.176796323 4.025279554
724 0.176144222 4.041852225
727 0.177380196 4.078740205
750 0.184511916 4.376803632
752 0.184925295 4.39675801
755 0.18608039 4.427337413
779 0.191979151 4.696313345
796 0.19801254 4.906009044
808 0.199559131 4.969958634
816 0.202306127 5.06486171
820 0.203567904 5.11139433
826 0.206071634 5.194849765
849 0.217511686 5.553222482
851 0.220003201 5.5797187
881 0.226420016 5.94774453
951 0.235091864 6.33370116
952 0.234470623 6.357592105
976 0.243413677 6.785026456
998 0.247111407 7.115376566
1022 0.254264636 7.475588529
1028 0.253825238 7.676966117
1031 0.253552779 7.655207879
1032 0.253959583 7.687817395
1036 0.256927602 7.753280811
1038 0.256454243 7.785150879
1044 0.2676729 7.914658705
1048 0.268592945 7.993362548
1090 0.280256629 8.571307839
1096 0.283057389 8.72110485
1104 0.285299766 8.860082549
1172 0.30334844 9.682438227
1182 0.308970132 9.785819737
1222 0.323826492 10.508031711
1230 0.325670362 10.670810609
1242 0.331428484 10.796530463
1248 0.32975737 10.897072507
1262 0.33353854 11.303006909
1268 0.338205563 11.351776371
1460 0.371807782 13.490904423
1466 0.372692439 13.528562317
1486 0.380183351 14.004736754
1492 0.382841945 14.188868672
1495 0.382159405 14.265695125
1513 0.388669725 14.900034072
1516 0.390405231 14.81499996
1518 0.390463274 14.944426519
1522 0.392151819 14.915203734
1524 0.393186661 14.961747551
1526 0.394158427 15.037075056
1573 0.408168072 16.133197125
1598 0.416766067 16.678992988
1660 0.44328243 18.142114009
1665 0.444965405 18.25355816
1666 0.444720035 18.28403416
1667 0.446062015 18.284690403
1668 0.446125714 18.329058714
1670 0.446133206 18.572377324
1672 0.446952057 18.695455536
1708 0.456918651 18.790907562
1712 0.458244796 18.905278887
1720 0.461813708 19.17002062
1728 0.465456384 19.392921399
1736 0.46909665 19.581211756
1738 0.469009293 19.63986836
1739 0.470088086 19.654523832
1745 0.472925164 19.834706477
1747 0.476427047 19.882721961
1756 0.477945503 20.126510562
1776 0.48555338 21.050697212
1779 0.487291725 20.769860328
1785 0.487422511 20.95968171
1792 0.490868025 21.171034734
1799 0.495984897 21.381192056
1829 0.500577054 22.305283908
1835 0.501130431 22.349754728
1841 0.499636037 22.458577516
1853 0.502867922 22.789015879
1857 0.503177778 22.824136936
1863 0.506992088 22.968349427
1869 0.511573083 23.149349308
1870 0.510409209 23.185619132
1891 0.51604806 23.597859463
1915 0.52134704 23.854239145
1927 0.526302999 24.077963239
1935 0.529154809 24.256248614
1951 0.533841463 24.888246072
1972 0.537198755 25.293137881
1978 0.538614268 25.390662904
2032 0.565800375 26.03466246
2053 0.559773001 26.420268108
2101 0.569853806 27.579091597
2125 0.575521253 28.225772617
2137 0.57871672 28.277690829
2155 0.581133036 28.500376699
2158 0.582197362 28.494612045
2167 0.584903052 28.531839432
2170 0.588296814 28.575386555
2172 0.588168789 28.727190877
2202 0.601001684 29.645737322
2214 0.607209659 30.433077486
2218 0.610239584 30.515088605
2224 0.612489408 30.80970033
2228 0.609919931 30.970134524
2246 0.616805458 30.836588838
2364 0.688856681 36.422097475
2382 0.699198195 37.22853454
2386 0.699697687 37.399438633
2390 0.696379643 37.491589119
2448 0.722756074 40.559368969
2822 0.892213459 56.246352395
2894 0.925655807 58.298946257
2902 0.930451456 58.91838622
2908 0.934032602 59.191770267
2915 0.939078333 59.149010129
3042 0.979294733 63.624004421
3109 1.008006854 66.701448478
3164 1.030117558 69.210002572
3172 1.028983357 68.766214254
3326 1.06337783 72.518414203
3364 1.080085845 75.032993864
3368 1.081815962 74.785882543
3380 1.086156479 75.969527635
3406 1.095992942 76.987838799
3410 1.11796171 79.799157453

15
content/hopcroft_a.table Normal file
View file

@ -0,0 +1,15 @@
states Hopcroft Moore
4 0.000004394 0.000008367
8 0.000007727 0.000020106
16 0.000014457 0.000052275
32 0.000030602 0.000155723
64 0.000072037 0.000509607
128 0.000193457 0.001816708
256 0.000563881 0.00676876
512 0.00145047 0.026100461
1024 0.003533843 0.101946121
2048 0.008529486 0.407693
4096 0.021424756 1.64542877
8192 0.051799602 6.570335332
16384 0.12096594 26.285563125
32768 0.295170838 106.794193669

15
content/hopcroft_b.table Normal file
View file

@ -0,0 +1,15 @@
states Hopcroft Moore
4 0.000004181 0.00000485
8 0.000007397 0.000012002
16 0.000013752 0.000030596
32 0.000027895 0.000084655
64 0.000061301 0.000258466
128 0.000149001 0.00085492
256 0.000390771 0.003013328
512 0.000959998 0.011248316
1024 0.002402636 0.043437952
2048 0.005954948 0.1706022
4096 0.015253576 0.684592527
8192 0.035884835 2.758716619
16384 0.082455912 11.050600273
32768 0.194492715 43.719043747

View file

@ -647,9 +647,60 @@ This can be done in $\bigO(n^2)$ time using a trie data structure.
\stopsection \stopsection
\startsection
[title={Experimental Results}]
\todo{ga verder bij \tt 732} We have implemented \in{Algorithms}[alg:increase-k, alg:increase-k-v3] in Go, and we have compared their running time on two sets of FSMs.
\footnote{Available at \todo{https://gitlab.science.ru.nl/rick/partition/}.}
The first set is from \cite{Smeenk}, where FSMs for embedded control software were automatically constructed.
These FSMs are of increasing size, varying from 546 to 3~410 states, with 78 inputs and up to 151 outputs.
The second set is inferred from \citet[Hopcroft1971], where two classes of finite automata, $A$ and $B$, are described that serve as a worst case for \in{Algorithms}[alg:increase-k, alg:increase-k-v3] respectively.
The FSMs that we have constructed for these automata have 1 input, 2 outputs, and $2^2$~--~$2^{15}$ states.
The running times in seconds on an Intel Core i5-2500 are plotted in \in{Figure}[fig:results].
We note that different slopes imply different complexity classes, since both axes have a logarithmic scale.
\startplacefigure
[title={Running time in seconds of \in{Algorithm}[alg:increase-k] (grey) and \in{Algorithm}[alg:increase-k-v3] (black).},
reference=fig:results]
\startcombination[2*1]
{\starttikzpicture
\startloglogaxis[width=0.5\textwidth, xtick={500, 1000, 2000, 3000}, xticklabels={500, 1000, 2000, 3000}]
\addplot[color=darkgray] table[x=states, y=Moore] {esm.table};
\addplot[color=black] table[x=states, y=Hopcroft] {esm.table};
\stoploglogaxis
\stoptikzpicture} {(a) Embedded control software.}
{\starttikzpicture
\startloglogaxis[width=0.5\textwidth, xtick={4, 64, 2048, 32768}, xticklabels={$2^2$, $2^6$, $2^{11}$, $2^{15}$}]
\addplot[color=darkgray, dashed] table[x=states, y=Moore] {hopcroft_b.table};
\addplot[color=black, dashed] table[x=states, y=Hopcroft] {hopcroft_b.table};
\addplot[color=darkgray] table[x=states, y=Moore] {hopcroft_a.table};
\addplot[color=black] table[x=states, y=Hopcroft] {hopcroft_a.table};
\stoploglogaxis
\stoptikzpicture} {(b) Class $A$ (dashed) and class $B$ (solid).}
\stopcombination
\stopplacefigure
\stopsection
\startsection
[title={Conclusion}]
In this paper we have described an efficient algorithm for constructing a set of minimal-length sequences that pairwise distinguish all states of a finite state machine.
By extending Hopcroft's minimisation algorithm, we are able to construct such sequences in $\bigO(m \log n)$ for a machine with $m$ transitions and $n$ states.
This improves on the traditional $\bigO(mn)$ method that is based on the classic algorithm by Moore.
As an upshot, the sequences obtained form a characterisation set and a separating family, which play a crucial in conformance testing.
Two key observations were required for a correct adaptation of Hopcroft's algorithm.
First, it is required to perform splits in order of the length of their associated sequences.
This guarantees minimality of the obtained separating sequences.
Second, it is required to consider nodes as a candidate before any one of its children are considered as a candidate.
This order follows naturally from the construction of a splitting tree.
Experimental results show that our algorithm outperforms the classic approach for both worst-case finite state machines and models of embedded control software.
Applications of minimal separating sequences such as the ones described by \citet[dorofeeva2010fsm, Smeenk] therefore show that our algorithm is useful in practice.
\stopsection
\referencesifcomponent \referencesifcomponent
\stopchapter \stopchapter
\stopcomponent \stopcomponent

View file

@ -3,6 +3,8 @@
\usemodule[tikz] \usemodule[tikz]
\usetikzlibrary[automata, arrows, positioning, matrix, fit, decorations.pathreplacing] \usetikzlibrary[automata, arrows, positioning, matrix, fit, decorations.pathreplacing]
\usemodule[pgfplots]
% defaults % defaults
\tikzset{node distance=2cm} % 'shorten >=2pt' only for automata \tikzset{node distance=2cm} % 'shorten >=2pt' only for automata