38 research outputs found
Hardcoding and dynamic implementation of finite automata
The theoretical complexity of a string recognizer is linear to the length of the string being tested for acceptance. However, for some kind of strings the processing time largely depends on the number of states visited by the recognizer at run-time. Various experiments are conducted in order to compare the time efficiency of both hardcoded and table-driven algorithms when using such strings patterns. The results of the experiments are cross-compared in order to show the efficiency of the hardcoded algorithm over its table-driven counterpart. This help further the investigations on the problem of the dynamic implementation of finite automata. It is shown that we can rely on the history of the states previously visited in the dynamic framework in order to predict the suitable algorithm for acceptance testing
On hardcoding finite state automata processing
In this paper, we present various experiments in hardcoding the transition table of a finite state machine directly into stringrecognizing code. Measurements are provided to show the time efficiency gains by various hardcoded versions over the traditional table-driven approach
On minimizing deterministic tree automata
We present two algorithms for minimizing deterministic frontier-to-root tree automata (dfrtas) and compare them with their string counterparts. The presentation is incremental, starting out from definitions of minimality of automata and state equivalence, in the style of earlier algorithm taxonomies by the authors. The first algorithm is the classical one, initially presented by Brainerd in the 1960s and presented (sometimes imprecisely) in standard texts on tree language theory ever since. The second algorithm is completely new. This algorithm, essentially representing the generalization to ranked trees of the string algorithm presented by Watson and Daciuk, incrementally minimizes a dfrta. As a result, intermediate results of the algorithm can be used to reduce the initial automaton’s size. This makes the algorithm useful in situations where running time is restricted (for example, in real-time applications). We also briefly sketch how a concurrent specification of the algorithm in CSP can be obtained from an existing specification for the dfa case
On minimizing deterministic tree automata
We present two algorithms for minimizing deterministic frontier-to-root tree automata (dfrtas) and compare them with their string counterparts. The presentation is incremental, starting out from definitions of minimality of automata and state equivalence, in the style of earlier algorithm taxonomies by the authors. The first algorithm is the classical one, initially presented by Brainerd in the 1960s and presented (sometimes imprecisely) in standard texts on tree language theory ever since. The second algorithm is completely new. This algorithm, essentially representing the generalization to ranked trees of the string algorithm presented by Watson and Daciuk, incrementally minimizes a dfrta. As a result, intermediate results of the algorithm can be used to reduce the initial automaton’s size. This makes the algorithm useful in situations where running time is restricted (for example, in real-time applications). We also briefly sketch how a concurrent specification of the algorithm in CSP can be obtained from an existing specification for the dfa case
Software engineering team diversity and performance
Reflection on software engineering as a sub-discipline within computer science reveals that it is as much about people and teamwork as it is about technical expertise. It is therefore important that a software engineer is not only competent in software development but also able to work effectively in a team. Based on the scholarly literature we derived a simple model for team composition and used it to guide, without coercion, our students during team formation. This research reports on an investigation into the role of personality diversity within teams of tertiary students taking a course in software engineering. Data collected confirms that both personality diversity in teams as well as competence of teams impacts positively on team performance. In contrast to other studies, our research data does not seek to couple personality with appropriate role allocation in the team; rather, our measurement is in respect of "raw" team diversity alone. In this study the correlation between personality diversity and the success of teams were captured at different stages during the development of a software engineering project tackled by the teams. The same was done with correlation between competence and team success. The personality diversity of the teams showed a strong correlation with team success during the inception phase. This correlation however weakened during the course of the year while the correlation between competence and success started slightly weaker than personality diversity during the inception phase, but grew very strong towards the completion of the team projects. © 2006 SAICSIT
Karl Popper’s critical rationalism in agile software development
Sir Karl Popper’s critical rationalism – a philosophy in the fallibilist tradition of Socrates, Kant and Peirce – is applied systematically to illuminate the values and principles underlying contemporary software development. The two aspects of Popper’s philosophy, the natural and the social, provide a comprehensive and unified philosophical basis for understanding the newly emerged “agile” methodologies. It is argued in the first four sections of the paper – Philosophy of Science, Evolutionary Theory of Knowledge, Metaphysics, and The Open Society – that the agile approach to software development is strongly endorsed by Popper’s philosophy of critical rationalism. In the final section, the relevance of Christopher Alexander’s ideas to agile methodologies and their similarity to Popper’s philosophy is demonstrated
A Word Game Support Tool Case Study
International audienceThis article reports on the approach taken, experience gathered, and results found in building a tool to support the derivation of solutions to a particular kind of word game. This required that techniques had to be derived for simple yet acceptably quick access to a dictionary of natural language words (in the present case, Afrikaans). The main challenge was to access a large corpus of natural language words via a partial match retrieval technique. Other challenges included discovering how to represent such a dictionary in a "semi-compressed" format, thus arriving at a balance that favours search speed but nevertheless derives a savings on storage requirements. In addition, a query language had to be developed that would effectively exploit this access method. The system is designed to support a more intelligent query capability in the future. Acceptable response times were achieved even though an interpretive scripting language, ObjectREXX, was used.Cet article présente la méthode utilisée, l’expérience menée et les résultats obtenus dans le processus de construction d’un outil d'aide à la dérivation des solutions relatives à un type particulier de jeux de mots. Ceci requiert que des techniques soient dérivées pour un accès simple et rapide dans le dictionnaire des mots du langage naturel (l’Afrikaans pour le cas d’espèce). Le gros problème était d’accéder à un large corpus de mots du langage naturel à travers la technique d’identification de mots par extraction partielle. L’autre défi était de représenter un tel dictionnaire sous un format «semi-compressé», permettant ainsi de se trouver dans une situation qui améliore non seulement le temps de recherche dans le dictionnaire, mais aussi l’espace requis pour sa sauvegarde. De plus, un langage de requête, exploitant de façon effective la dite méthode d’accès devait être mise en oeuvre. Le système est conçu de façon à supporter dans le futur des requêtes plus intelligentes. Un temps de réponse acceptable a été obtenu bien qu'un langage interprétatif de Scripting (ObjREXX) ait été utilisé
Quantum leap pattern matching
Quantum leap matching is introduced as a generic pattern matching strategy for the single keyword exact pattern matching problem, that can be used on top of existing Boyer-Moore-style string matching algorithms. The cost of the technique is minimal: an additional shift table (of one dimension, for shifts in the opposite direction to the parent algorithm’s shifts), and the replacement of a simple table lookup assignment statement in the original algorithm with a similar conditional assignment. Together with each of the conventional shift table lookups, the additional shift table is typically also indexed on the text character that is at a distance of z away from the current sliding window. Under conditions that are identified, the returned values from the two shift tables allow a “quantum leap” of distance more than the length of the keyword for the next matching attempt. If the conditions are not met, then there is a fall back is to the traditional shift. Quick Search (by Sunday) is used as a case study to illustrate the technique. The performance of the derived “Quantum Leap Quick Search” algorithm is compared against Quick Search. When searching for shorter patterns over natural language and genomic texts, the technique improves on Quick Search’s time for most values of z. Improvements are also sometimes seen for various values of z on larger patterns. Most interestingly, under best case conditions it performs, on average, at about three times faster than Quick Search
A framework for the dynamic implementation of finite automata for performance enhancement
The aim of this work is to provide a model for the dynamic implementation of finite automata for enhanced performance. Investigations have shown that hardcoded finite automata outperforms the traditional table-driven implementation up to some threshold. Moreover, the kind of string being recognized plays a major role in the overall processing speed of the string recognizer. Various experiments are depicted to show when the advantages of using hardcoding as basis for implementing finite automata (instead of using the classical table-driven approach) become manifest. The model, a dynamic algorithm that combines both hardcoding and table-driven is introduced