Global Information Lookup Global Information

Essential complexity information


Essential complexity is a numerical measure defined by Thomas J. McCabe, Sr., in his highly cited, 1976 paper better known for introducing cyclomatic complexity. McCabe defined essential complexity as the cyclomatic complexity of the reduced CFG (control-flow graph) after iteratively replacing (reducing) all structured programming control structures, i.e. those having a single entry point and a single exit point (for example if-then-else and while loops) with placeholder single statements.[1]: 317 [2]: 80 

McCabe's reduction process is intended to simulate the conceptual replacement of control structures (and actual statements they contain) with subroutine calls, hence the requirement for the control structures to have a single entry and a single exit point.[1]: 317  (Nowadays a process like this would fall under the umbrella term of refactoring.) All structured programs evidently have an essential complexity of 1 as defined by McCabe because they can all be iteratively reduced to a single call to a top-level subroutine.[1]: 318  As McCabe explains in his paper, his essential complexity metric was designed to provide a measure of how far off this ideal (of being completely structured) a given program was.[1]: 317  Thus greater than 1 essential complexity numbers, which can only be obtained for non-structured programs, indicate that they are further away from the structured programming ideal.[1]: 317 

To avoid confusion between various notions of reducibility to structured programs, it's important to note that McCabe's paper briefly discusses and then operates in the context of a 1973 paper by S. Rao Kosaraju, which gave a refinement (or alternative view) of the structured program theorem. The seminal 1966 paper of Böhm and Jacopini showed that all programs can be [re]written using only structured programming constructs, (aka the D structures: sequence, if-then-else, and while-loop), however, in transforming a random program into a structured program additional variables may need to be introduced (and used in the tests) and some code may be duplicated.[3]

In their paper, Böhm and Jacopini conjectured, but did not prove that it was necessary to introduce such additional variables for certain kinds of non-structured programs in order to transform them into structured programs.[4]: 236  An example of program (that we now know) does require such additional variables is a loop with two conditional exits inside it. In order to address the conjecture of Böhm and Jacopini, Kosaraju defined a more restrictive notion of program reduction than the Turing equivalence used by Böhm and Jacopini. Essentially, Kosaraju's notion of reduction imposes, besides the obvious requirement that the two programs must compute the same value (or not finish) given the same inputs, that the two programs must use the same primitive actions and predicates, the latter understood as expressions used in the conditionals. Because of these restrictions, Kosaraju's reduction does not allow the introduction of additional variables; assigning to these variables would create new primitive actions and testing their values would change the predicates used in the conditionals. Using this more restrictive notion of reduction, Kosaraju proved Böhm and Jacopini's conjecture, namely that a loop with two exits cannot be transformed into a structured program without introducing additional variables, but went further and proved that programs containing multi-level breaks (from loops) form a hierarchy, such that one can always find a program with multi-level breaks of depth n that cannot be reduced to a program of multi-level breaks with depth less than n, again without introducing additional variables.[4][5]

McCabe notes in his paper that in view of Kosaraju's results, he intended to find a way to capture the essential properties of non-structured programs in terms of their control-flow graphs.[1]: 315  He proceeds by first identifying the control-flow graphs corresponding to the smallest non-structured programs (these include branching into a loop, branching out of a loop, and their if-then-else counterparts) which he uses to formulate a theorem analogous to Kuratowski's theorem, and thereafter he introduces his notion of essential complexity in order to give a scale answer ("measure of the structuredness of a program" in his words) rather than a yes/no answer to the question of whether a program's control-flow graph is structured or not.[1]: 315  Finally, the notion of reduction used by McCabe to shrink the CFG is not the same as Kosaraju's notion of reducing flowcharts. The reduction defined on the CFG does not know or care about the program's inputs, it is simply a graph transformation.[6]

For example, the following C program fragment has an essential complexity of 1, because the inner if statement and the for can be reduced, i.e. it is a structured program.

   for (i = 0; i < 3; i++) {
      if (a[i] == 0) b[i] += 2;
   }

The following C program fragment has an essential complexity of four; its CFG is irreducible. The program finds the first row of z which is all zero and puts that index in i; if there is none, it puts -1 in i.

   for (i = 0; i < m; i++) {
      for (j = 0; j < n; j++) {
         if (z[i][j] != 0)
            goto non_zero;
      }
      goto found;
non_zero:
   }
   i = -1;
found:

The idea of CFG reducibility by successive collapses of sub-graphs (ultimately to a single node for well-behaved CFGs) is also used in modern compiler optimization. However the notion from structured programming of single-entry and single-exit control structure is replaced with that of natural loop, which is defined as a "single-entry, multiple-exit loop, with only a single branch back to the entry from within it". The areas of the CFG that cannot be reduced to natural loops are called improper regions; these regions end up having a fairly simple definition: multiple-entry, strongly connected components of the CFG. The simplest improper region is thus a loop with two entry points. Multiple exits do not cause analysis problems in modern compilers. Improper regions (multiple-entries into loops) do cause additional difficulties in optimizing code.[7]

  1. ^ a b c d e f g McCabe (December 1976). "A Complexity Measure". IEEE Transactions on Software Engineering (4): 308–320. doi:10.1109/tse.1976.233837. S2CID 9116234.
  2. ^ http://www.mccabe.com/pdf/mccabe-nist235r.pdf [bare URL PDF]
  3. ^ David Anthony Watt; William Findlay (2004). Programming language design concepts. John Wiley & Sons. p. 228. ISBN 978-0-470-85320-7.
  4. ^ a b S. Rao Kosaraju (December 1974). "Analysis of structured programs". Journal of Computer and System Sciences. 9 (3): 232–255. doi:10.1016/S0022-0000(74)80043-7.
  5. ^ For more modern treatment of the same results see: Kozen, The Böhm–Jacopini Theorem is False, Propositionally
  6. ^ McCabe footnotes the two definitions of on pages 315 and 317.
  7. ^ Steven S. Muchnick (1997). Advanced Compiler Design Implementation. Morgan Kaufmann. pp. 196–197 and 215. ISBN 978-1-55860-320-2.

and 22 Related for: Essential complexity information

Request time (Page generated in 0.8688 seconds.)

Essential complexity

Last Update:

better known for introducing cyclomatic complexity. McCabe defined essential complexity as the cyclomatic complexity of the reduced CFG (control-flow graph)...

Word Count : 1133

Cyclomatic complexity

Last Update:

Cyclomatic complexity is a software metric used to indicate the complexity of a program. It is a quantitative measure of the number of linearly independent...

Word Count : 2912

No Silver Bullet

Last Update:

different types of complexity: accidental complexity and essential complexity. This is related to Aristotle's classification. Accidental complexity relates to...

Word Count : 699

Programming complexity

Last Update:

needed] Domain-driven design can help minimize accidental complexity. Essential complexity is caused by the characteristics of the problem to be solved...

Word Count : 913

Leaky abstraction

Last Update:

usage of git. Abstraction inversion Dependency inversion principle Essential complexity Modular programming Separation of concerns Seibel, Peter (1 November...

Word Count : 736

Essentialism

Last Update:

Essentialism is the view that objects have a set of attributes that are necessary to their identity. In early Western thought, Platonic idealism held that...

Word Count : 4896

Parameterized complexity

Last Update:

In computer science, parameterized complexity is a branch of computational complexity theory that focuses on classifying computational problems according...

Word Count : 2682

Irreducible complexity

Last Update:

Irreducible complexity (IC) is the argument that certain biological systems with multiple interacting parts would not function if one of the parts were...

Word Count : 14635

Essential Video Coding

Last Update:

MPEG-5 Essential Video Coding (EVC), standardized as ISO/IEC 23094-1, is a video compression standard that has been completed in April 2020 by decision...

Word Count : 693

Quantum complexity theory

Last Update:

Quantum complexity theory is the subfield of computational complexity theory that deals with complexity classes defined using quantum computers, a computational...

Word Count : 3628

Communication complexity

Last Update:

In theoretical computer science, communication complexity studies the amount of communication required to solve a problem when the input to the problem...

Word Count : 6728

Structured program theorem

Last Update:

the ideal of being a structured program; McCabe called his measure essential complexity. McCabe's characterization of the forbidden graphs for structured...

Word Count : 2826

Emergence

Last Update:

Defining structure and detecting the emergence of complexity in nature are inherently subjective, though essential, scientific activities. Despite the difficulties...

Word Count : 4973

Elegance

Last Update:

which means the number and complexity of hypotheses, and parsimony (ontological simplicity), which is the number and complexity of things postulated. In...

Word Count : 650

Probabilistically checkable proof

Last Update:

of the proof using randomness in an essential way. Probabilistically checkable proofs give rise to many complexity classes depending on the number of queries...

Word Count : 1237

Project management

Last Update:

for project management to be effective. Complexity can be: Structural complexity (also known as detail complexity, or complicatedness), i.e. consisting...

Word Count : 8917

LCEVC

Last Update:

Low Complexity Enhancement Video Coding (LCEVC) is a ISO/IEC video coding standard developed by the Moving Picture Experts Group (MPEG) under the project...

Word Count : 1047

Cyber Essentials

Last Update:

Cyber Essentials is integrated into the organisation's information risk management. The cost for the Plus accreditation is dependent on the complexity of...

Word Count : 1016

Mathematical model

Last Update:

its essential idea being that among models with roughly equal predictive power, the simplest one is the most desirable. While added complexity usually...

Word Count : 4679

Soil

Last Update:

processes, which include weathering with associated erosion. Given its complexity and strong internal connectedness, soil ecologists regard soil as an ecosystem...

Word Count : 22580

Ecology

Last Update:

S2CID 40349801. Loehle, C. (2004). "Challenges of ecological complexity". Ecological Complexity. 1 (1): 3–6. doi:10.1016/j.ecocom.2003.09.001. Odum, E. P...

Word Count : 21345

Classical element

Last Update:

fire, and (later) aether which were proposed to explain the nature and complexity of all matter in terms of simpler substances. Ancient cultures in Greece...

Word Count : 4260

PDF Search Engine © AllGlobal.net