Skip to content

Concepts and algorithms

Joxean edited this page Jan 3, 2018 · 9 revisions

In this wiki page I will try to explain with my own words (or shamelessly ripping out definitions from people that actually know how to explain) some concepts used in the wiki.

  • Control Flow Graph. From [wikipedia](Control Flow Graph): A control flow graph (CFG) in computer science is a representation, using graph notation, of all paths that might be traversed through a program during its execution. The control flow graph is due to Frances E. Allen, who notes that Reese T. Prosser used boolean connectivity matrices for flow analysis before.
  • Call Graph. From wikipedia: A call graph (also known as a call multigraph) is a control flow graph, which represents calling relationships between subroutines in a computer program. Each node represents a procedure and each edge (f, g) indicates that procedure f calls procedure g. Thus, a cycle in the graph indicates recursive procedure calls.
  • Fuzzy Hash. A hash that uses fuzzy logic to match groups of elements. In opposite to, for example, a cryptographic hash that tries to match unequivocally a single element.
  • Fuzzy Graph Hash. The output "hash" of a function using fuzzy logic that consumes graphs. See fuzzy hash.
  • Small Primes Product. TBC.
  • MD-Index. TBC.
  • Mnemonic. From wikipedia: A symbolic name for a single executable machine language instruction.
  • Topological Sort: From wikipedia: A topological sort or topological ordering of a directed graph is a linear ordering of its vertices such that for every directed edge uv from vertex u to vertex v, u comes before v in the ordering. For instance, the vertices of the graph may represent tasks to be performed, and the edges may represent constraints that one task must be performed before another; in this application, a topological ordering is just a valid sequence for the tasks.
  • Tarjan's strongly connected components algorithm: From wikipedia: Tarjan's algorithm is an algorithm in graph theory for finding the strongly connected components of a graph. It runs in linear time, matching the time bound for alternative methods including Kosaraju's algorithm and the path-based strong component algorithm. Tarjan's Algorithm is named for its inventor, Robert Tarjan.
  • Cyclomatic complexity: From wikipedia: Cyclomatic complexity is a software metric (measurement), used to indicate the complexity of a program. It is a quantitative measure of the number of linearly independent paths through a program's source code. It was developed by Thomas J. McCabe, Sr. in 1976.
  • Connected Components: From wikipedia: In graph theory, a connected component (or just component) of an undirected graph is a subgraph in which any two vertices are connected to each other by paths, and which is connected to no additional vertices in the supergraph. For example, the graph shown in the illustration has three connected components. A vertex with no incident edges is itself a connected component. A graph that is itself connected has exactly one connected component, consisting of the whole graph.
  • Directed Graph: From wikipedia: In mathematics, and more specifically in graph theory, a directed graph (or digraph) is a graph that is a set of vertices connected by edges, where the edges have a direction associated with them.