Exploration in Algorithm Engineering: Modeling Algorithms
According to some algorithmicists, algorithmics traditionally uses algorithm theory, which stems from mathematics. The growing need for innovative algorithms has caused increasing gaps between theory and practice. Originally, this motivated the development of algorithm engineering, which is viewed as experimental techniques related to software engineering. Currently, algorithm engineering is a methodology for algorithmic research that combines theory with implementation and experimentation in order to produce better algorithms with high practical impact. Still, researchers have questioned whether the notion of algorithms can be defined in a fully generable way and discussed what kinds of entities algorithms actually are. They have also struggled to maintain a view that formulates algorithms mathematically (e.g., Turing machines and finite-state machines [FSMs]) while adapting a more applied view. Answering the question of what algorithms have practical applications in software specifications in particular, this paper proposes a diagrammatical definition of an algorithm based on a new modeling machine called a thinging machine (TM). The machine has five actions (e.g., create, process, release, transfer, and receive) that can form a network of machines. The paper explores the application of the definition in Turing machines and FSMs. The results point to the fact that the proposed definition can serve as a middle-ground representation of algorithms, a definition which is between formal specification and the commonly used informal definition (e.g., set of instructions).
READ FULL TEXT